void adc_init(void)
{
ADCSRA = 0x00;//禁用ADC
ADMUX = 0x03;
ACSR = 0x80; //禁用模拟比较器
ADCSRB = 0x00;
ADCSRA = 0x83;
}
uint read_adc(void)
{
uint temp = 0;
ADCSRA |= (1 << ADSC); //使能AD转换,第一次转换,结果丢弃
while((ADCSRA & (1 << ADIF)) == 0); //等待AD转换结束
ADCSRA |= (1 << ADIF); //ADIF写1用来清除ADIF,规格书上要求的
ADCSRA |= (1 << ADSC); //使能AD转换,第二次转换,结果保留
while((ADCSRA & (1 << ADIF)) == 0); //等待AD转换结束
ADCSRA |= (1 << ADIF);
temp = ADCL;
temp |= (int)(ADCH << 8);
return temp;
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』