AVR单片机mega16,采用外部8M晶振。我用片内的adc对模拟信号采样,怎么影响了我单片机的工作速度?

比方说我原来1ms延时函数在用adc功能的情况下变成了5ms左右。
我的adc中断程序中就把adc转化值付给两个变量,没有别的语句。
我的熔丝位设置都没有问题。
我的中断程序是;
#pragma interrupt_handler adc_isr:15
void adc_isr(void)
{
adcl=ADCL;
adch=ADCH;
SREG|=BIT(7);
}
adc工作方式是:
ADMUX=0X66;//01100110b;
ADCSRA=0XEF;//11101111b;
SFIOR=0X00;
我用数码管动态显示四位数字时就能看出问题。当打开adc时,数码管就一位一位的显示,而不打adc时,数码管正常显示四位。

如果是指令型的延时程序,一般而言,中断程序只会加长延时程序的时间。
如果延时程序的时间由定时器控制,中断程序执行时间较长的话,也会延长延时程序的时间,你是缩短了,估计是ADC中断中,改变了定时器的参数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-07
你用外部晶振时 ,编译器的设置参数也要改,不然他系统的延时函数会跟你自己的延时函数不同
第2个回答  2013-06-07

ADC中断程序中没有保护好现场追问

什么意思啊

相似回答