51单片机中中断服务程序占用时间不?

比如想计数器计数10个周期,在中断程序设置加1至10。
如果这样会占用时间的话如何保证实时性?尽量不用中断服务程序,改用查询等待吗?
打错了,是计时器不是计数器。
还有就是能否在中断程序中关闭计时器

在某种意思上,中断更具有实时性,中断处理是根据程序段的大小花费时间的,中断程序段如果比定时时间还长,那个这个定时在主程序里失去意义了;比如中断定时为10个机器周期,而中断程序段需要执行11个机器周期,那么意味着紧着的中断程序失去了理论的实时性;CPU无法在设计的要求下执行指令,所以,一般情况下,要考虑程序段是否能在中断定时时间内完成;若能完成,那么使用非自动赋值时也存在时间差异,两个高低8位的赋值语句也将至少浪费两个机器(还需要放在中断的最前面),所以要求时间较为精确时,一定要使用自动装载方式,若是使用非中断方式,C语言程序是无法保证的,要使用汇编,一个一个指令进行计算。

而所谓的查询等待,CPU在这个时间段内就执行累加或自减计数,不做任何工作,这个时间就被白白的浪费了;

中断程序中可以关闭定时器的,在主程序里设置一个变量,不断地查询这个变量是否为要关闭定时器的值,而中断程序可以为这个变量赋值。
如:...while(1)
{ if(a==1){TR0=0;ET0=0;EA=0;}}
interrupt 1
{i++;if(i==1000)a=1;}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-07
需要占用时间,时间的长短 由 中断服务程序 的长短有关。
第2个回答  2009-02-24
中断程序是肯定要占用时间的,在中断中可以关闭定时器的;
一般可以在中断中做计数,累加,设置标志位,到主循环里面查询比较好,
当然主要是看你要求的时间精度以及允许的误差了,如果不是特别高的话也是没太大影响的,我用t1技术,t0定时,可以测65000HZ内的频率,误差不查过50,反正可以达到我的频率测量效果了
第3个回答  2009-02-23
如果要保证实时性,那就要对每条指令的执行时间相当的了解,只有这样才能够准确地进行时间的设定;
如果改用查询等待,则在计时时会占用主程序的时间,而利用计时器的中断程序则可以和主程序同时进行,可以让单片机的效率更高,当然用查询也是可以的,只是单片机此时需要占用主程序段的时间;
在中断程序中和主程序中是一样的,均可以对计时器进行关闭和开启操作。
第4个回答  2009-02-23
答:你的意思是定时10个周期,每一个周期中断一次,在中断程序里加1 至10吗?
那么加到10以后呢?接下来干什么?接下来的程序也在中断程序里吗?照你的程序,不会影响计时时间,只是在加到10以后,执行下一步工作时要多一些中断程序用去的时间。这是因为中断程序在执行加够10以后的程序时,前几句程序已经用一些时间。像这个在一般的设计中都不考虑。
中断函数不影响定时器的工作,定时器是完全独立的。
可以在中断程序中关闭定时器。本回答被提问者采纳