[ 実験 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 件のコメント:
コメントを投稿