PIC16F84A + SC1602BS + XC8 という組み合わせでLCDの表示ができたのだから、PIC16F88でもすぐにできるはずだ。
その根拠は以下の通り。
つまり、88は84Aの上位互換PICなのだ。
なので、そのままの回路で88に載せかえるだけですぐにLCDへの表示ができるはずだ。
と、素人である私は思うが、そうはうまくいかないのが、より高機能なPICを使う場合の落とし穴だ。
まず、
ANSEL = 0b00000000;
が必要になる。
ユーザーからすると上位の機能であると考えがちなA/D変換が、初期設定になっているからだ。
明示的に設定しないと、Digital I/Oで用いたいのに、うんともすんともいわないという結果になる。
で、もうひとつが、
#pragma config LVP = OFF
// Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
よくわからないが、これがONだと動かなかった。
ONにしておくと、
#pragma config LVP = ON
// Low-Voltage Programming Enable bit (RB3/PGM pin has PGM function, Low-Voltage Programming enabled)
RB3がそのために使われてしまうのだそうだ。
ん、RB3はLCDの表示には使ってないんだけどなあ…。
一応写真を撮ったが、PICの型番が写らないので84Aとの違いは見た目ではわからない。
ちなみに、PIC16F648Aもピン配置が同じなのでまったく同じ回路で使うことができる。