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轉(zhuǎn)換,第一次轉(zhuǎn)換,結(jié)果丟棄 while((ADCSRA & (1 << ADIF)) == 0); //等待AD轉(zhuǎn)換結(jié)束 ADCSRA |= (1 << ADIF); //ADIF寫(xiě)1用來(lái)清除ADIF,規(guī)格書(shū)上要求的 ADCSRA |= (1 << ADSC); //使能AD轉(zhuǎn)換,第二次轉(zhuǎn)換,結(jié)果保留 while((ADCSRA & (1 << ADIF)) == 0); //等待AD轉(zhuǎn)換結(jié)束 ADCSRA |= (1 << ADIF); temp = ADCL; temp |= (int)(ADCH << 8); return temp; }
|