关于ATMEGA48 ADC显示问题
M48在ADC转换的时候,能读取数据而且在数码管上能显示值,但是显示时间要1分多钟,也就是这么长时间数码管刷新一次,大虾帮忙看看哪里出问题了?不开总中断,直接在串口函数里填数据数码管300毫秒刷新一次,显示正常。/****************************************************************
主函数
*****************************************************************/
int main(void)
{
Port_init(); //端口初始化
ADMUX |= (1 << REFS0)|(1 << MUX0); // AVCC基准 ADC1通道
ADCSRA |= (1 << ADEN)|(1 << ADIE)|(1 << ADATE)|(1 << ADPS1)|(1 << ADPS0);
// ADC使能;ADC中断使能;自动触发模式;8分频;
sei(); // 开总中断
ADCSRA |= (1 << ADSC); // ADC开始转换
while(1)
{
Delay(5);
uint ReadADC(); // 读取ADC的值
uint i,Dat1,Dat2,Dat3;
i = ReadADC();
Dat1 = i / 100 % 10; // 取百位
Dat2 = i / 10 % 10; // 取十位
Dat3 = i % 10; // 取个位
Send_byte(tab); // 串口发送数码管显示百位
Send_byte(tab); // .........十位
Send_byte(tab); // .....个位
Send_byte(0xd1); // ...LED灯
Delay(3000); // 延时300ms
}
也就是说执行完一次while(1)要一分钟时间。 大概因为楼主使能了ADC中断,但是没有处理ADC中断
页:
[1]