PIC16F88のAN4のアナログ/デジタル変換について教えてください
PIC16F88のAN4のアナログ/デジタル変換について教えてください?
PIC16F88にて以下のピンアサインでCCS社のCコンパイラで作成しました。AN2の温度AN3の湿度は正常にLCDに表示するのですがAN4の電圧がAN3の湿度の変化に追従してくるんです。ピンアサインが間違っているのか、PIC16F88に制限があるのか英語の説明書見てもチンプンかんぷんで。どなたかよろしくご教授お願いします。(現在AN4の電圧測定はオープン状態で0.245V 湿度計を触ると0.443vに変化します)
RB7(13ピン) LCD DB7(14ピン)
RB6(12ピン) LCD DB6(13ピン)
RB5(11ピン) LCD DB5(12ピン)
RB4(10ピン) LCD DB4(11ピン)
RB2(8ピン) LCD RS (4ピン)
RB3(9ピン) LCD STB (6ピン)
LCD R/W(5ピン)→GND
LCD VSS(1ピン)→GND ****LCDタイプによりVSSとVDDが逆****
LCD VDD(2ピン)→+5V ****LCDタイプによりVSSとVDDが逆****
RA2(1ピン)AN2 LMC662CN 温度電圧入力
RA3(2ピン)AN3 LMC662CN 湿度電圧入力
RA4(3ピン)AN4 電圧測定
RA0(17ピン) 右SW(B_sw) MAX and MIN クリア
RA1(18ピン) 左SW (A_sw) MAX and MIN and 電圧 表示
関係ありそうなプログラム抜粋
#include <16f88.h>
#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP,NOBROWNOUT,
#device ADC=10 //アナログ/デジタル変換10ビットモード
#use delay(clock=4000000) //4Mzクロック
#use fast_io(b) //ポートB出力設定
途中省略
set_adc_channel(2); //A/D変換チャンネル設定
delay_us(116); //変換にかかる時間96μs+19.72μs
ondo = read_adc(); //A/D変換レジスタリードしondoへ
ondo = (ondo * 50.0) / 1024; //ondo値を実数に変換
途中省略
set_adc_channel(3); //A/D変換チャンネル設定
delay_us(116); //変換にかかる時間96μs+19.72μs
shitsudo = read_adc(); //A/D変換レジスタリードしshitsudoへ
shitsudo = (shitsudo * 100.0) / 1024; //shitsudo値を実数に変換
途中省略
set_adc_channel(4); //A/D変換チャンネル設定
delay_us(116); //変換にかかる時間96μs+19.72μs+α
v = read_adc(); //A/D変換レジスタリードしvへ
v = (v * 0.5) / 1024; //v値を実数に変換
途中省略
main()
{
////////////////////////温度計湿度計電圧計の設定///////////////////
setup_adc_ports(sAN2 | sAN3 | sAN4 | VSS_VDD); //アナログポート設定
setup_adc(ADC_CLOCK_DIV_32); //アナログ変換クロック設定