プッシュ・スイッチの押下を読み込むテストをしてみた。
環境
PIC : PIC12F675
Compiler : mikroBASIC Pro version 5.40
Writer : PICKit3 + Handmade Adapter + PICKit3 Programmer
OS : Windows7 Pro 64BIT
せっかく4pinをプルアップして、リセットの体験用にプッシュ・スイッチもつけたから、MCLRをDisabledにしてリセット用としてではなく入力用に使ってみるための手抜きプログラムだ。
回路は何にも変えずに試せるのが何となく楽した気分。
新しく加わったのは
if GPIO.3 = 0 then
「GP3から入力があったら…」という処理だ。
program LED+PSW_001
‘ Declarations section
main:
‘ Main program
dim tm as word
tm = 1000
CMCON = %00000111 ‘ Comparater is not Use
TRISIO = %00101000 ‘ GP0,1,2,4 is OUT
ANSEL = %00000000 ‘ A/D is not Use
mLoop:
GPIO = %00111110 ‘ GP0 = Low, Other = High
Vdelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
GPIO = %00111101 ‘ GP1 = Low, Other = High
vDelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
GPIO = %00111011 ‘ GP2 = Low, Other = High
vDelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
GPIO = %00101111 ‘ GP4 = Low, Other = High
vDelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
GPIO = %00111011 ‘ GP2 = Low, Other = High
vDelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
GPIO = %00111101 ‘ GP1 = Low, Other = High
vDelay_ms(tm) ‘ 1000mS Wait
if (GPIO.3 = 0) and (tm = 1000) then
tm = 100
end if
goto mLoop
end.
GP3(4pin)につながってるスイッチが押されると1000msだったLEDの点滅の間隔を100msにする。
同じ処理がたくさん書いてあるのは、スイッチを押したとき、タイミングによっては5秒も待たなきゃ反映されないから、じれったくて入れたもの。
スイッチを押したら、それ以後確かに点滅が速くなった。
待たされずにすぐに反映されるようにするにはどうするんだろう?