PIC16F687に7セグLEDをつないで回路をつくりました。
C3とC4が制御出来ずにはまりました。C3に出力しようとしても無反応。C4に出力するとC3とC4がhighになってしまいました。
しばらくはまりましたが、データシートにこんな記述を発見。
Note : The ANSEL (11Eh) and ANSELH (11Fh) registers must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read ‘0’.
inputについては書いてありますがoutputについては特に書いてありませんが、ANSELとANSELHをセットしなければいけないようです。さらにCM2CON0とCM2CON1もセットしないと出力できませんでした。結果次のようなコードで無事に動きました。
CCS-Cコンパイラを使っています。
プログラムの冒頭部分で
#byte ANSEL = 0x11E #byte ANSELH = 0x11F #byte CM2CON0 =0x11A #byte CM2CON1 =0x11B
main関数の中で
set_tris_c(0x00); CM2CON0 = 0x00; CM2CON1 = 0x00; ANSEL = 0x00; ANSELH = 0x00;
とりあえずこれでいけるようです。
参考にさせていただいたサイトは
http://www.robotsfx.com/robot/robohow/RoboHow43/RoboHow43.html
でした。