LCDとSWの動作
ICは通常でLCDのコントロールをしている。ここにSWを追加して「押されたか」をチエックするプログラムです。サブルーチンで[KEY_SW]をコールし、SWが押されていれば[FLAG 0]をセットして戻る。
戻って来たら、FLAGをチエックしてセットされていればその処理をする。
ここでは[VFO]を逆にして、0.5秒の待ち時間を取りSWの上がるのを待つ。そのまま押されていれば、再度ループが回り[VFO]が逆にされLCDの表示が変る。押し続ければ次々に表示が変る。
ここでカウンタを付け3秒(6回)押し続けたら、何か別の処理をするなどの処置も考えられる。
このアイデアは「チャリンコ・コンピュタから頂き」のもの!メカ的には
IC端子からLCDへ行く所に抵抗を入れ、SWに接続し片方は0Vにする。SOFTでプルアップされているので通常のチエックでは[1]となるがSWが押されていれば[0]となるので分かる。ここで使う抵抗はLCDが無ければ4.7KΩで動作するが、付いている時には3.3KΩとなった。実際にはこれより少し低めの2.7KΩを使います。
LCD-E(Enable)端子は[0]にしておくと作動しないので必要なら、端子をクリヤする。通常の私のプログラムは[0]になっているので考えずにそのまま使っています。
MAIN PROGRAM ;------------------------------------------------ call KEY_SW ;check SW1 btfss FLAG,0 ;bit0=SW1 goto PASS ;not FLAG call TIME05S ; comf VFO,F bcf FLAG,0 ;FLAG clr PASS ;------------------------------------------------ KEY_SW BSF STATUS,RP0 ;Bank1 bsf TRISB,2 ;RB2 input(1) BCF STATUS,RP0 ;Bank0 call TIME07M ;0.7mSec btfss PORTB,2 ;KEY1 check bsf FLAG,0 ;KEY data(bit0) ; BSF STATUS,RP0 ;Bank1 bcf TRISB,2 ;RB2 output BCF STATUS,RP0 ;Bank0 return2007/APR/7
もどる [MAIN MENU]