|
PIC16F877を有効に使っていくためには、ソフトの工夫のみでなく、ハードウェアの機能も有効に使うことで、使いよいシステムとすることができます。今回は、外部発振器を使うことで、時計の計時に便利な1秒の割り込みを作り出すことにしました。この割り込みは、SLEEPからの復帰条件にもなっているために、CPUを停止させておいて、クロックのカウントのときだけCPUを動作させることが出来ます。このようにすると、ほとんどの時間、電力を使用しないので、低消費電力とすることができます。 タイマー1(TMR1)は、クロックソースとして、外部発振器を選択することができるので、適当な間隔で割り込みを発生させることが出来ます。この割り込みは、SLEEPからの復帰条件にもなっているので、普段はSLEEP状態にしておき、割り込みの発生したときだけ処理することが出来ます。このようにすると、低消費電力で動作させることが出来ます。 32.768kHzの周波数は、16ビットカウンタであるTMR1をフリーランとすると、2秒に一回の割り込みになります。割り込みのたびに、TMR1Hに0x80を設定することで、1秒間隔にすることが可能です。 この、1秒の割り込みを使って、時:分:秒のカウンタをカウントアップするようにしました。メインプログラムでは、この時刻を読み出すことで、現在の時刻を知ることができるようになります。 サンプルプログラムでは、時刻を液晶に表示します。スイッチ(RA0に接続し、ローレベルでオンになる)を押すと、時刻をリセットします。 さらに工夫すると、電源オフにする代わりに、SLEEPとすることで、その間も、時計の計時を続けることができるようになります。そのときには、外部に接続される液晶などは、CPUでオフにしてやる必要があります。 プログラムは下記ホームページからダウンロードできます。 「趣味のホームページ」−「16F877ライブラリークロック」 http://homepage2.nifty.com/sfukuda/page050.html |
| << 前記事(2009/01/06) | トップへ | 後記事(2009/01/08)>> |
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2009/01/06) | トップへ | 後記事(2009/01/08)>> |