78K0班(2005/09/03) 16ビットタイマ割込み

NECエレクトロニクス社から、モニターレポート提出について連絡がありましたね。10月末が締切りです。私はもともとバンクメモリで遊んでみたかったのですが、予想していたのとちょっと違うので、何をするか考え中です。


前回の続きで、16ビットタイマをポーリングではなく、割込みで使ってみました。主要部を抜粋すると、こんなかんじ。16ビットタイマ00割込みを使うために、TMMK000で割込みマスクを解除します。割込み優先度はTMPR000で低優先度を指定しています。

もともとタイマ50割込みの中でダイナミック点灯処理を行っていました。が、その処理が結構重いのと、タイマ50より16ビットタイマ000の方が割込み優先度が低いので、タイマ000割込みを受け付けられやすくするために、タイマ50割込みでは要求を出すだけで処理自体はメインループに移しました。

        PRM00 = 0b00000010;
        CRC00 = 0;
        CR000 = 3905;
        TOC00 = 0;
        TMIF000 = 0;
        TMMK000 = 0;
        TMPR000 = 1;

        vramInit();

        EI();

        TCE50 = 1; /* ダイナミック点灯タイマスタート */
        TMC00 = 0b00001100; /* スクロールタイマスタート */

        for (;;) {
                CMP10 = P4 & 0xe0;
                outputNextLine();
        }
}

__interrupt void
inttm000() {
        P5.4 ^= 1; /* P5.4は点滅 */
        requestVramScroll();
}

LEDマトリクス制御は一段落かな〜


ホーム 特殊工作室 78K0班