Sahara's WebLog

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

プッシュ・スイッチの押下を読み込んでみた

プッシュ・スイッチの押下を読み込むテストをしてみた。

環境
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秒も待たなきゃ反映されないから、じれったくて入れたもの。
スイッチを押したら、それ以後確かに点滅が速くなった。
待たされずにすぐに反映されるようにするにはどうするんだろう?

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

Posted under: mikroBasic


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.