Translate

2009年12月2日水曜日

スイッチ(1) if文でスイッチ入力

[ 実験 MikroC Pro PIC16F84A_SW_LED_0001]
[(1)active low のスイッチに、active highのLED(1)]


RA1のスイッチ(SW1)を押した時、RB3のLED1を点灯させなさい。















すべてのピンは入出力設定ビット (TRIS レジスタ) を備えています。
TRISA ビットがセット(=1) されると、そのビットに対応する PORTA ピンが入力となり、出力ドライバがハイインピーダンスモードになります。
TRISA ビットをクリア(=0) されると、そのビットに対応する PORTA ピンが出力となり、出力ラッチの内容がピンに出力されます。
--- Data Sheet より ---



つまり、プログラミングする時、TRISレジスタを”1”または”0”にすることでI/Oポートを入力(Input)にするか出力(Output)にするかが決まります。

スイッチは、入力(Input)なのでTRISレジスタを”1”にします。
LEDは、出力(Output)なのでTRISレジスタを”0”にします。




TRISA = 0x06; // RA1,RA2=input 他=output
TRISB = 0x00; // RB0-7=output








if(PORTA.F1 == 0)もし、RA1が0(Low:0V)の時、
Active Lowなのでスイッチを押している時

PORTB.F3 = 1;RB3が1(High:5V)の時、LED1はGND(0V)に繋がっていますので
電流が流れてLED1は点灯します。

elseそれ以外の時は

PORTB.F3 = 0;RB3が0(Low:0V)の時、LED1はGND(0V)に繋がっていますので
電流は流れませんからLED1は点灯しません。







if(PORTA.F1 == 1)もし、RA1が1(High:5V)の時、
Active Lowなのでスイッチを押していない時







if(PORTA.F1 != 1)
もし、RA1が1(High:5V)でない時
RA1が0(Low:0V)の時








if(PORTA.F1 != 0)
もし、RA1が0(Low:0V)でない時
RA1が1(High:5V)の時


スイッチは、基本的に
if(条件式)~else~
を使います。


他にもありますが、次回にします。



LEDのアノード(+)側に抵抗を半田付けしています。





スイッチを押しています。


オレンジ色のコードが5V
緑色のコードが、GNDで0V
4番ピン(MCLR)を5Vに繋がないと誤動作します。
(PIC16F88,PIC16F628Aに慣れるとよく忘れてしまいます。)



mikroC PRO for PIC

0 件のコメント:

コメントを投稿