各位大蝦們!我想用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;
}
| 歡迎光臨 (http://www.denmoz.com/bbs/) | Powered by Discuz! X3.1 |