本帖最后由 selfstudy 于 2011-7-21 17:30 编辑
使用ATMEGA16片内ADC0,可是仿真时AD结果不变化。调试很长时间也未发现错在哪里,请指教。
显示程序没有问题的。AD 转换的寄存器设置按照手册来的。
可是就是没有反应,AD 是一个固定值。
//ad 模块
uint AD_Result(void)
{uint data;
DDRA &=~_BV(PA0);//输入方式
PORTA&=~_BV(PA0);//不带上拉电阻
ADMUX=0x00;//右对齐,通道1,外接参考信号//0 0 AREF, 内部Vref 关闭
ADCSRA|=_BV(7) ;//ad使能
ADCSRA|=_BV(6);//启动AD转换
while(!( ADCSRA & _BV(4)));
data=ADCL;
data=data+ADCH*256;
return data;
}
//main 中的 while循环
while(1)
{
LCD_Show_Num_New(0,0,AD_Result);//显示数字
i++;
_delay_ms(100);//
if (i>3000) i=0;
LCD_Show_Num_New(0,1,i);//显示循环次数
} |