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;
}
凭经验该的,你试试看吧,红色的就是我做了修改
|