HOME  >>  LED電子工作集 > PICマイコンとC言語の勉強  P-4 Lチカ ボタンを押すと3回転点灯

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アダプタから供給しています。