Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

外部割込みを使ってみた

プッシュ・スイッチを押したことを感知するプログラムを作ってみた。

環境
PIC : PIC12F675
Compiler : mikroBASIC Pro version 5.40
Writer : PICKit3 + Handmade Adapter + PICKit3 Programmer
OS : Windows7 Pro 64BIT

回路

プログラム

ANSEL = %00000000 ‘ Configure AN pins as digital I/O
CMCON = %10100111 ‘ Turn off comparators
IOC = %00000100 ‘ Interrupt pin GP2(=1)
OPTION_REG = %00110000 ‘ TMR0<-GP2, H->L
TRISIO = %00001100 ‘ GP0,1,4,5 is IN (GP3 is always OUT)
結局、この5行あたりが動作の肝なわけだが、ANSELとCMCONはもう定番というか、A/D変換を使わず、コンパレータを使わなければ、決まり文句的な行のようだ。
今回新たな登場は、
IOC = %00000100 ‘ Interrupt pin GP2(=1)
で、外部割込みに使うものを1に設定する。
ここではPIC12F675を用い、5pinにプッシュ・スイッチをつないだので、GP2を使うことになるからこの設定だ。
OPTION_REG = %00110000 ‘ TMR0<-GP2, H->L
いまひとつ良く分かってないが、内部クロックでなくGP2からの入力をタイマー0でカウントし、この際にH->Lでカウントするという設定だ。

4つのLEDが交互に点滅を繰り返す。
初めは1.5秒間隔。
スイッチを押す毎に点滅間隔が短くなる。
0.1秒間隔まで短くなったらスイッチを押しても間隔は変わらない。

このエントリーをはてなブックマークに追加

Posted under: mikroBasic


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.