よくよく考えてみたらやはりPIC12F675(8PIN)での7セグメント表示は可能だ。前回はPIC12F675のシリアル通信ポートを例題通り(GPIO4、GPIO5)としていたが、この通信のポートはGPIO5が入力ポートとして動いている。GPIO4は出力ポートという具合だ。ということでGPOI3の入力ポートとしてしか動かせないのをシリアル通信の入力ポートであるGPIO5と入れ替えればよいのだ。早速ブレッドボード上の回路を組みなおした。XC8でのソフトウェアの方はserial2400.cのコード中のGPIO5をGPIO3に書き換える。GPIO5は出力ポートにしGPIO3は限定入力ポートとして下記のように定義書き換えをします。
--------------------------------------------
#define TxData  GPIO4
#define RxData  GPIO5 -> #define RxData  GPIO3
#define INIT_PORT  TRISIO = 0b00101001 -> #define INIT_PORT  TRISIO = 0b00001000
--------------------------------------------
後はmain.cのTRISIO をGPIO3だけ入力設定にする。serial2400.cと同じだ。GPIO3以外は出力ポートだ。
TRISIO = 0b00001000;
ついでに電源投入時に全出力ポートに出力してLEDが点灯するようにコード4つ付け足した。
GPIO0 = 1;
GPIO1 = 1;
GPIO2 = 1;
GPIO5 = 1;
他はswith構文中の出力の設定GPIO3を全てGPIO5に書き換える。
以上で完成です。万歳!!
PIC12F675でのシリアル通信での7セグメントの表示はポートなど不足しておらず、全く問題なくできるということです。
実際にパソコンのTERA-TARMから0から9までキーインプットした時の動作時の動画です。
あきらめずに限定しているところがないかとか、見直し、確認はする必要がある。特に他のサンプルを応用展開して作る場合は動作部分をそのまま利用するため、今回の様なポート等の問題が起き易い訳だ。
とにかく思ったようにちゃんと動作すると、こんな些細なことでも気分が良いものだ!