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