演習のLEDの章でLEDを点滅させるプログラムを作成しましたが、LEDへの出力を切り替えるときにfor文による空ループを使用し適当な待ち時間を作りました。
IO.PDR3.BYTE = 0x05;
for( i = 0; i < 10000; i++);
IO.PDR3.BYTE = 0X0A;
for( i = 0; i < 10000; i++);
このような空ループでは、マイコンが1ステップあたりに使用する時間と、どの命令が何ステップ使うかを調べ計算しなければ待ち時間がどのくらいのになるかわかりません。
前々回の演習ではタイマZを使用してモータ駆動用のPWMを出力しました。このときはタイマカウンタとジェネラルレジスタA,Dのコンペアマッチで端子出力を変化させました。今回はタイマB1を使用して、タイマB1のタイマカウンタB1(TCB1)のオーバフローで割り込みを発生させて、その割り込み回数で一定周期を作ってみましょう。
今回の開発環境は前回のINT_sampleを流用します。
LEDを点灯させる演習で行ったLEDを交互に点滅させるプログラム(図1)を改良してきちんと1秒ごとに点灯パターンを切り替えるプログラムを作成してみましょう
図1