目次>5章 第2ステップ(色々な実験)>(9)RB0/INT割込みを使う
RB0/INT割込みを使う
− 人が近づいたら明かりを点ける −
- PIC16F84Aには4つの割込み機能があります。
・TMR0オーバフロー割込み
・RB0/INT割込み(外部割込み)
・PORTB変化割込み
・データEEPROMライト完了割込み
今回は、RB0/INT割込みを使って見ます。
実験回路 | |||||||||
・ |
今回作成する回路図です。 RA0,RA1にはLEDを接続します。RA0のLEDは高輝度タイプとしました。高輝度LEDと直列に接続する抵抗は、電流が20mA以下となるものを選択して下さい。
新たに必要なパーツは、高輝度LEDです。今回は、日亜化学の「NSPW500BS」を使用しました。
ブレッドボードに組み込んだ状態です。
| ||||||||
プログラムの作成 | |||||||||
基本的な仕様は、(8)人が近づいたら明かりを点けると同じですが、RB0/INT割込みを使う事とひとの動きが無い時は、SLEEP命令で省電力モードにする点が異なります。
・RB0/INTポートにNaPiOnを接続し、ひとの動きがあったらRB0/INT割込みを発生
以下はメインルーチンのフローです。
napionフラグは、RB0/INT割込み処理で1にします。 RB0/INT割込みで使うレジスタについては、RB0/INT割込みを使うためのレジスタを参照して下さい。
以下は、割込み処理のフローです。 TMR0割込み処理では、(8)人が近づいたら明かりを点ける」と同じで、10秒経過時にflag10sをセットします。 RB0/INT割込み処理では、RA0(高輝度LED)をONにしてnapionフラグを1にします。
| |||||||||
プログラム全体 | |||||||||
上記の処理を組み込んだプログラムはこちらです。 メモ帳などのテキストエディタに取り込んで、NAPION2.ASMという名で保存し、MPLABでアセンブル&PICライタでPICに書き込んで動かしてみて下さい。
|