各位大虾们!我想用128内部的AD转换器,但是我测试了一下发现,前面设置都是正确的,用万用表测了一下AREF脚,电压是2.52V,基本正确,后来我在转换结束标志位设定了一个LED闪烁,发现LED一直都在闪烁,这就说明AD一直都在转换当中,没有停下!所以我恳请各位大侠能帮我答疑一下!程序代码如下: void init_adc() { ADCSR=0X00; //设置ADC前,禁止ADC ADMUX=BIT(REFS1)|BIT(REFS0); //设置ADC内置参考电压为2.56V的片内基准电源 ADMUX|=BIT(ADLAR); //ADC转换结果左对齐,直接取ADCH的8位数据 ADCSR=BIT(ADEN)|BIT(ADPS1)|BIT(ADPS0)|BIT(ADPS2); //ADC使能,128分频 }
unsigned char get_adcdata(void) { unsigned char volt; // ADMUX=BIT(MUX0)|BIT(MUX1)|BIT(MUX2)|BIT(MUX3); //选择通道3,电池电压通道 ADMUX|=0; ADCSR|=BIT(ADSC); //启动单次ADC转换 while (!(ADCSR&BIT(ADIF))) //等待转换结束 { PORTD &= ~BIT(0); delay_ms(100); PORTD |= BIT(0); delay_ms(100); } ADCSR&=~(BIT(ADIF)); //清楚ADIF位 volt=ADCH; return volt; } |