« 「天文屋のためのマイコン入門」スイッチ検出プログラム | トップページ | 「天文屋のためのマイコン入門」3モードをさらに発展 »

2014年7月25日 (金)

「天文屋のためのマイコン入門」3モードへの拡張

前回までのプログラムでは次のような動作でした。プッシュスイッチを押すたびにモード0とモード1が入れ替わり、モード0の場合はLEDを消灯、モード1の場合はLEDを点灯するというプログラムでした。

今回はこれを拡張し、新たにモード2を追加します。各モードの動作は次の通りです。

モード0 LED消灯
モード1 LED点灯
モード2 LED点滅(1秒間隔)

1407250

プログラムは追加部分だけ説明します。まずは、MODE_CHANGEの部分です。

1407251

MODEをインクリメントする部分は同じですが、今度はモード2の次は3なってしまいますので、0に戻す必要があります。そのためビット1とビット0を調べて両方とも1の場合、つまり3の場合0にします。

次に、CONTINUEの部分ですが、秒数をカウントする部分を追加します。秒数カウントはLEDを点滅させるために必要です。

1407252_2

1/32秒間隔の割込み処理の度にTIME_COUNTをインクリメントします。そしてそれが32になったら、つまり32を減算して0になったら、今度はSECONDをインクリメントし、TIME_COUNTをクリアします。この繰り返しでSECONDは秒数をカウントします。

2番目の赤枠の部分は、モード2が追加になったので、そのための追加です。その下のGOTO MODE_2も追加です。

3番目の赤枠はモード2の動作の追加です。SECONDが奇数か偶数かを、最下位ビットが0か1かで判断しています。奇数ならLEDを消灯させ、偶数なら点灯させます。これによりLEDが点滅します。

|

« 「天文屋のためのマイコン入門」スイッチ検出プログラム | トップページ | 「天文屋のためのマイコン入門」3モードをさらに発展 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 「天文屋のためのマイコン入門」スイッチ検出プログラム | トップページ | 「天文屋のためのマイコン入門」3モードをさらに発展 »