「天文屋のためのマイコン入門」3モードへの拡張
前回までのプログラムでは次のような動作でした。プッシュスイッチを押すたびにモード0とモード1が入れ替わり、モード0の場合はLEDを消灯、モード1の場合はLEDを点灯するというプログラムでした。
今回はこれを拡張し、新たにモード2を追加します。各モードの動作は次の通りです。
モード0 LED消灯
モード1 LED点灯
モード2 LED点滅(1秒間隔)
プログラムは追加部分だけ説明します。まずは、MODE_CHANGEの部分です。
MODEをインクリメントする部分は同じですが、今度はモード2の次は3なってしまいますので、0に戻す必要があります。そのためビット1とビット0を調べて両方とも1の場合、つまり3の場合0にします。
次に、CONTINUEの部分ですが、秒数をカウントする部分を追加します。秒数カウントはLEDを点滅させるために必要です。
1/32秒間隔の割込み処理の度にTIME_COUNTをインクリメントします。そしてそれが32になったら、つまり32を減算して0になったら、今度はSECONDをインクリメントし、TIME_COUNTをクリアします。この繰り返しでSECONDは秒数をカウントします。
2番目の赤枠の部分は、モード2が追加になったので、そのための追加です。その下のGOTO MODE_2も追加です。
3番目の赤枠はモード2の動作の追加です。SECONDが奇数か偶数かを、最下位ビットが0か1かで判断しています。奇数ならLEDを消灯させ、偶数なら点灯させます。これによりLEDが点滅します。
| 固定リンク
コメント