void init_adc(int n)
{
DDRA &=~ ((1<<0)|(1<<1)); //模擬量輸入管腳PA1設置為輸入
ADMUX |= (1<<6)|(1<<5)|(1<<n); //參考電壓選擇AVCC PA15 ,轉換結果左對齊,精度只有8位,請注意!!!!!
ADCSRA |= (1<<7)|(1<<5)|(1<<2)|(1<<1) ; //自動觸發使能, 64分頻,ADC使能
SFIOR &=~ ((1<<2)|(1<<1)|(1<<0));
ADCSRA |= (1<<6) ; //開始轉換
}
void get_information(void)///獲取ADC信息
{
unsigned char i=0,a=0;
DDRA=0x00;
PORTA=0x00;
for(i=0;i<2;i++) //讀取兩路路adc
{
init_adc(i); //換路初始化
while((ADCSRA&(1<< 6)));//判斷是否轉換完成
adcinit[ i]=ADCH; //adc暫寄存數
adc[ i]=datapro(adcinit,i); //將adc轉化后的結果存入數組
nop();nop();nop();nop();nop();//
nop();nop();nop();nop();nop();//在 ADSC 置位后的一個 ADC時鐘周期就可以選擇新的模擬輸入通道了
}
DDRA=0x00;
PORTA=0x00;
}
憑經驗該的,你試試看吧,紅色的就是我做了修改
|