| 前へ | 目次 | 目次 |
| 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版のトップページへ | ||||||||||
| トップページへ |
| 広告 | 花 万馬券 | 無料レンタルサーバー ブログ blog | |