当ブログをご覧いただき、ありがとうございます。
ご注意事項:
記載内容には、十分注意しておりますが、勘違い、記憶違い、理解不足、思い込み等が無いとは限りませんので、申し訳ありませんが、 記載内容の正確性は保障致しません(出来ません)。
従いまして、このブログの内容を参考にする事に起因して生じる、または 生じた、いかなる事態にも、当方は何の責任も取れませんので、 参考にされる場合は、自己責任にてお願い致します。
このブログのC言語に関する説明には、PICで電子工作するのに必要な事柄以外(私のレベルで)は出てきません、出てこないことの方が多いと思いますので、ご了承願います。

LEDを2個点灯させる。

前回までで、LEDを点灯させることができました。

今回は、黄色のLEDを追加して、赤色LEDと黄色LEDを点灯させる。

 

f:id:higonohimajin:20210302172052j:plain

黄色のLEDを追加配線いたしました。

f:id:higonohimajin:20210302172229p:plain

回路図は、上のようになります、18番ピン(RA1)に、追加のLEDを繋ぎました。

 

f:id:higonohimajin:20210303082601p:plain


プログラムは、上のように変更しました、ここで、注意することがあります。

前回のプログラムには無かった、CMCON=0x07; という命令が追加されています、この命令が必要なことを解説します。

まず、PIC16F627Aのピン配置図を確認します。

f:id:higonohimajin:20210214170658j:plain

f:id:higonohimajin:20210303085111p:plain

最初に赤色LEDをPICに接続したのは、RB5(11番ピン)でしたが、黄色LEDを接続したのは、RA1/AN1(18番ピン)でした、18番ピンには、RA1とAN1の2つの名前が書いてあります、これは、18番ピンはRA1とAN1の2つの用途に使うと言う事です、

上の表から、RA1は入出力ピン用途で、AN1はアナログコンパレーターの入力ピン用途だと言う事が分かります(TABLE 3-2参照)。

18番ピンをRA1とAN1の2つの用途に同時に使えませんので、18番ピンの用途に応じRA1とAN1どちらかに切り替える必要がありますが、それを指定するのがCMCONレジスタです。

このように、PICは多機能なので、各ピンはいくつかの機能で兼用されており、プログラムにあたり、PICの説明書を良く読んで、各ピンのどの機能を使うかにより、プログラムを適正に書かねばなりません(下は、PICの説明書、MICROCHIPのHPからダウンロード)。

f:id:higonohimajin:20210214170521j:plain

 

では、CMCONレジスタですが、左下1Fh番地にあります。 

f:id:higonohimajin:20210303085441p:plain

この表では、一番下に書いてあります。

f:id:higonohimajin:20210303085607p:plain

下の表は、CMCONレジスタの内容です。

f:id:higonohimajin:20210303085727p:plain

下の表は、上の表のbit2-0 CM2:CM0 Comparator Mode セッティングの一覧です。

f:id:higonohimajin:20210303085918p:plain

では、CMCON = 0x07;という命令になる解説をします。

まず、TEBLE 4-3 を見ます、CMCONレジスタは1Fh番地一番下にあります。

そのCMCONレジスタの各ビットの設定方法が REGISTER 10-1 に書かれています。

18番ピンの用途に応じRA1とAN1どちらかに切り替えるには、bit2-0 CM2:CM0 Comparator Mode セッティング で行います。

ここで、TEBLE 4-3 を見ますと、CMCONレジスタの欄の右から2番目に 0000 0000 と書かれています、このマスから上にたどって表の項目を見ると、Value on POR Reset 

になっています、これは、CMCONレジスタValue on POR Reset (電源投入時の初期値)は、0000 0000 つまり、CMCON = 0x00だと言う事です。

今回は18番ピンは入出力ピンとして使うので、コンパレーターは使わない設定にします、FIGURE 10-1 を見ますと、コンパレーターを使わない設定は、一番上の右側のComparator Off の欄になり、CM2/CM0 = 111 と書かれております、そこで、REGISTER 10-1 を見て、下位3ビットに111をいれ、その他のビットは、コンパレーターを使わないので設定値は関係なくなるので、初期値の0のままとすると、CMCON = 0000 0111 となるので、16進数に変換して、CMCON = 0x07;命令をプログラムに記述することになります。

今回の黄色LEDは、RA1に接続したので、ポートAを操作します、コンパイルすると無事完了しましたので、PIC16F627Aに焼きます。

 

f:id:higonohimajin:20210302174333p:plain

はい、無事ビルド終了し、PICに焼けました。

早速、PICをブレッドボードに移して、動作を確認しました。

 

f:id:higonohimajin:20210303100229j:plain

 youtu.be

これで、LEDを点灯させるという目標は達成しました。

しかし、確かに、赤色LEDと黄色LEDが点灯していますが、本当にプログラムで制御されて、点灯しているのかわからないですね。

 

そこで、LEDの点灯が、作ったプログラムで制御されているのが分かるように、

次の目標は、LEDを点滅させることにします、いわゆるLEDチカチカです。

 

今回は、ここまで。