定时器中断

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:57:20
我在程序中设置中断时间为10ms,在中断中执行一段程序,如果中断中执行的这段程序的时间超过10ms,或者接近10ms,会出现什么情况??是不是产生了死机现象,就是还没有退出中断后又进入了中断??
另外,在中断中执行的程序时间占中断时间的比例是多少好呢??
不知道我的理解是否正确??请大家帮忙详细解释一下,谢谢!!
void main()
{
TMOD=0x01;// 定时器0,工作在模式1方式
TR0=1;
ET0=1;
EA=1;
while(1)
{;}
}
void timer0() interrupt 1 using 0 // 定时器0中断
{
TH0 = (65535-10000)/256; // 10ms
TL0 = (65535-10000)%256;

调用子函数部分;
}
我想问的是:如果“调用子函数部分”程序执行时间大于10ms,会出现什么情况?另外,“调用子函数部分”程序的执行时间是否只要小于10ms程序就可以正常运行呢??“调用子函数部分”的执行时间是否是越短越好呢??

你中断服务程序有10MS? 你是不是加了延时啊 要不就是你写的代码很长,
你的定时器是设成带重装的吗
如果带 你进入中断服务程序后先暂停定时器 结束中断前再打开
如果不带 你就把重新赋值的语句写到结束中断前

中断时间是10MS 是指从定时器开始计时到中断响应为止,并不是从中断响应到中断结束

应该不会出现你说的还没出中断又入中断的情况!因为中断发生后,CPU会停止当前运行的所有工作而去执行中断程序,等中断结束后又从断点处执行!就是当中断没执行完的话,定时器的中断标志一直是置1的状态~定时器不会计时!
我也不很肯定,明天我测下再告诉你吧~~