
HOME >> LED電子工作集 > PICマイコンとC言語の勉強 P-3 Lチカ 回転点灯
■ はじめに
今、PICマイコンとC言語の勉強に挑戦している。 そのいきさつは、鉄道模型工作実験室 の別室ブログ 「レイアウトに速度計を設置しよう」 ( 2019/2/22 )にて紹介しているので参照ください。
その第一歩として、Lチカから勉強を始めたので忘備録として記録しておこう。 今回は回転点灯作動だ。
/***************************************************
* PIC-Lesson その3
* 2019/2/23
* PIC12F683、 MPLAB X 、XC8
**************************************************/
( 途中省略 )
void main() {
OSCCON = 0x70;
ANSEL = 0x00;
CMCON0 = 0x07;
TRISIO = 0x28;
while (1) {
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-3 Lチカ 回転点灯
参考にした回路とプログラムは、今回もマツルのWEBサイトの資料・技術情報 サイトの中の、「初めてのPICマイコン」です。
回路はLEDを増やしています。

プログラムを右に示す。 マルツさんのプログラムでは、多くのLEDを一括して簡単に制御している記述が紹介されています。 それは、
GPIO = 0x04 ;
の例のように、GPIOレジスタの各ビットを一括して指定する方法です。 LED個別に点灯を指示する場合には、
GPIO2 = 1 ; あるいは、 GP2 = 1 ;
のように、レジスタのビットを指定して0か1を設定するのですが、上記の様に一括して指定する方法も有ることを勉強しました。 どのビットを点灯させるのかを決め、それを1または0の2進数として表します。 そしてこれを16進数にして指定しているのです。 勿論2進数のままでもOKの様です。
また、個別のビットを指定する GPIO2 = 1 ; あるいは、GP2 = 1 ; の記述ですが、小生の場合、 GPIO2 = 1ではエラーとなってしまったので、GP2 = 1 の記述を使いました。 先回の報告を参照。 参考にしている書籍類でも、両方の記述がありますね。 しかし、一括指定の場合は GPIO にする必要がありました。 理解出来たようでも有り、混乱したままでもあります。 超初心者には、まだウロウロの状態ですね。
■ 動作状態
動作状態を動画で紹介します。
電源は5ボルトのACアダプタから供給しています。