| 
 
| 本人第一次用AVR,有一个问题请教大虾们,如下程序: AD采样程序
 
 uint8 Adc_Get8(uint8 ch){
 uint8 adc_temp;
 ADMUX|=ch;                                                                        /* start*/
 _delay_us(5);
 BitSet(ADCSRA,BIT6);     //启动AD
 _delay_us(5);
 //while(BitTst(ADCSRA,BIT6));
 loop_until_bit_is_set(ADCSRA,ADIF); //方法1 等待AD转换结束
 ADCSRA|=(1<<ADIF); //写1清除标志位
 adc_temp=ADCH;
 
 return adc_temp;
 }
 
 初始化程序:
 void SYS_INIT(void){
 PORTE=0x0;
 DDRE=0x02;
 PORTF=0x0;
 DDRF=0x0;//0xe0;
 TIMSK=(1 << TOIE0);      //定时器设置125us
 TIFR=(1 << TOV0);
 TCNT0=6;
 TCCR0=0x02;
 
 ADMUX=0x21;//0x20;//参考电压VREF,左对齐
 ADCSRA=0x87;//此寄存器使能AD,并设定AD时钟
 
 
 }
 在主程序隔4MS调用一次AD采样,为什么总是与实测结果偏差5-8个ad值左右叫呢,搞了好几天了,用其它单片机都不会,AVR更应该不会才对的
 | 
 |