给个我做的函数你,前面先转换空转换4次才准,不知道什么原因,我也是想到以前用HOLTEK 单片机有这个问题就这样的
uint16_t adc_convert ( uint8_t ch) // analog channel , 0--8, 8 channel is bandgap
{
uint16_t adc_temp;
uint16_t adc_sum;
uint8_t i;
adc_sum = 0;
ADCCON0 &= 0xF0;
ADCCON0 |= ch;
for(i = 0; i < 4; i++)
{
ADCF = 0;
ADCS = 1;
while(ADCF == 0);
}
//---------------------------------------
for(i = 0; i < 8;i++)
{
adc_temp = 0;
ADCS = 1;
while(ADCF == 0);
adc_temp = ADCRH;
adc_temp <<= 4;
adc_temp |= ( ADCRL & 0x0F);
adc_sum += adc_temp;
}
adc_sum >>= 3; // /8
return adc_sum;
}
|