プッシュ・スイッチを押したことを感知するプログラムを作ってみた。
環境
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秒間隔まで短くなったらスイッチを押しても間隔は変わらない。