HOME >> LED電子工作集 > PICマイコンとC言語の勉強 P-4 Lチカ ボタンを押すと3回転点灯
■ はじめに
今、PICマイコンとC言語の勉強に挑戦している。 そのいきさつは、鉄道模型工作実験室 の別室ブログ 「レイアウトに速度計を設置しよう」 ( 2019/2/22 )にて紹介しているので参照ください。
Lチカから勉強を始めたので忘備録として記録しておこう。 今回は while 関数と for 関数を使って回転点灯を3回実施するプログラムを作った。
/*************************************************** * PIC-Lesson その4 * 2019/2/24 * PIC12F683、 MPLAB X 、XC8 **************************************************/ ( 途中省略 ) void main() { OSCCON = 0x70; //クロック周波数8MHz ANSEL = 0x00; //すべてデジタルに設定 CMCON0 = 0x07; //コンパレータ無効化 TRISIO = 0b001000; //GP3を入力に、他は出力 while(1) { while(GP3 ==1) //ボタンを待つ GPIO = 0x01; for (i=1; i<=3; ++i) //3回回転させる { GPIO = 0x01; __delay_ms(300); GPIO = 0x02; __delay_ms(300); GPIO = 0x04; __delay_ms(300); GPIO = 0x10; __delay_ms(300); GPIO = 0x20; __delay_ms(300); } } }
■ P-4 Lチカ ボタンを押すと3回転点灯
今回もマツルのWEBサイトの資料・技術情報 サイトの中の、「初めてのPICマイコン」を参考にして、 while 関数と for 関数を使ってみる。
回路は先回と同じで、押しボタンを押すとLED列が3回回転するようにした。
押しボタンのチェックは while 関数 を使って状態を検知する。
while(GP3 ==1) //ボタンを待つ
GPIO = 0x01;
LEDは一つだけ点灯させて待機状態を示しておく。 また、3回回転点灯させるために for 関数を使用した。
for (i=1; i<=3; ++i) //3回回転させる
{ ・・・・・・・・・・・;
}
プログラムを右に示す。 また、装置の様子を下に示す。
◆ 気が付いた事
先回、 GPIO = 0x04 と GP2 = 1 との記述方法について混乱していた。 今回、その違いを自分なりに理解することが出来た。 正しいかどうかは定かではないが・・・・・・・・・・・・・。
PIC12F683 のカタログを見ると、上記の様に記載されいます。 出力ポートのレジスタ名は、GPIO で、そのレジスタ内のビット名が GP2 と記されています。 このことは、 レジスタ名のGPIO を使った場合はすべてのビットの状態を記述する必要があり、ビット名の GP2を使った場合は、High か Low か、即ち、1か0を指定する必要があるのだ。 このことを理解すると、自分なりにすっきりと理解することが出来たのである。
■ 動作状態
動作状態を動画で紹介します。
電源は5ボルトのACアダプタから供給しています。