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,規(guī)格書上要求的 ADCSRA |= (1 << ADSC); //使能AD轉換,第二次轉換,結果保留 while((ADCSRA & (1 << ADIF)) == 0); //等待AD轉換結束 ADCSRA |= (1 << ADIF); temp = ADCL; temp |= (int)(ADCH << 8); return temp; }
|