前へ | 目次 | 目次 |
LEDを1秒ごとに、順番に点滅させる(タイマーA) | ||||||||||
ここでは、タイマーAの時計タイムベース機能を用いて、 LEDを1秒ごとに点滅させるプログラムを考えてみましょう。 P50に接続されているLEDを点滅させるものとします。
| ||||||||||
タイマーAの使い方 | ||||||||||
DI 3664.hの中で #define DI asm("orc.b #0xc0,ccr") と定義されています。 割り込みを禁止するために使います。 今の場合、タイマーAオーバーフロー割込みを利用するので、 設定の際には必ず割り込みを禁止してから行います。 TA.TMA.BYTE=0x18 タイマーAには、インターバルタイマーと時計用タイムベースという二つの機能があります。 時計用タイムベースには32.768kHzの水晶発信器が必要ですが、 AKI-H8/3664 QFP版マイコンモジュールには、 この発信器が組み込まれており、 そのままで時計用タイムベース機能が利用できます。 時計タイムベースでは、 オーバーフロー周期として、1s、0.5s、0.25s、31.25msの4種類が利用できます。 時計タイムベースの設定は、 タイマーモードレジスタA(TMA)で行います。 以下に、時計タイムベースの場合のビットごとの機能を示しておきます。
IRR1.BIT.IRRTA=0 IRR1.BIT.IRRTAは、 タイマーA割込み要求フラグです。 タイマーAがオーバーフローしたときに、 1に設定されます。 0に初期化しておきます。 IENR1.BIT.IENTA=1 IENR1.BIT.IENTAは、 タイマーA割込み要求イネーブルです。 これを1に設定すると、タイマーAのオーバーフロー割込み要求が 利用可能になります。 EI 3664.hの中で #define EI asm("andc.b #0x3f,ccr") と定義されています。 割り込みを許可するために使います。 int_timera 3664.hの中で extern void int_timera (void) asm ("_int_timera") __attribute__((interrupt_handler)); と定義されています。 タイマーAのオーバーフロー割込みが起こった時に呼び出されます。 ここに、必要な処理をプログラムすることになります。 | ||||||||||
タイマーAの使い方(時計タイムベース)のまとめ | ||||||||||
| ||||||||||
やってみよう | ||||||||||
| ||||||||||
2003/05/12(Mon) | ||||||||||
AKI-H8/3664 QFP版のトップページへ | ||||||||||
トップページへ |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||