使用16F883,ADC采集CH10和CH12两个通道。CH10通道值正常,CH12值比实际值大概高出一倍。请问会是什么原因造成的。
void ADC_init(void)
{
ADCON0 = 0xB1; //clock:FOSC/32; CH:12; ADON:off
ADCON1 = 0x80; //ADFM:right; VREF-:Vss; Vref+:VCC
ANSELH = 0x14;
TRISB |= 0x03; //RB0,RB1 is input
}
unsigned int ADC_Data(void)
{
unsigned int result;
PIR1bits.ADIF = 0; //clear ADIF
ADCON0bits.GO_nDONE = 1; //start ADC
while(ADCON0bits.GO_nDONE == 1);
result =(unsigned int)((ADRESH<<8) + ADRESL) ;
return result;
}
使用MPLAB X IDE v3.05+XC8编译 |