单片机中关于中断的问题

在书中看到这样一句话:“一般我们在中断服务程序中不要写过多的处理语句,因为如果语句过多,中断服务程序中的代码还未执行完毕,而下一次中断又来临,这样我们就会丢失这次中断,当单片机循环执行代码时,这种丢失累计出现,程序便完全乱套"

这句话是不是说明了在产生了中断执行中断服务程序时,外部独立的装置还是照样在运行,比如说一个计时器计时溢出后而产生中断了,这时启动了中断程序,而计时器清零后立刻又开始计时,甚至在中断程序还未处理完时就于中断程序并行执行了。
我觉得这样理解才能解释书中的这句话,不知我错了没?如果没错,计时器溢出时TF标志会变成1从而引发中断,那是不是在处理器进入中断程序时就立刻将TF置0了呢?

还有个问题,程序在执行的同时,计时器也在计时,虽说计时器是独立的模块,但我不知道会不会因为程序的执行而影响计时器的精度?

第1个回答  2011-11-17
你的理解没有错,中断是在你的主程序开始运行时同时进行的,并且定时器、计数器或者是外部中断都是独立工作的,当定时器溢出时,TF由硬件自动置1,并且向cpu发送中断请求,当cpu响应中断时,TF又由硬件自动清0.。并且不管定时器溢不溢出,它都会不断计数,因此在响应完中断程序时,需要对定时器重新装初值。
定时器的计数脉冲有二个来源,一个是通过INT0或INT1引脚输入的外部脉冲源;另一个是系统时钟振荡器的十二分频后送来的即一个机器周期。因此不会影响计时器的精度。。。
第2个回答  2011-11-15
1.在进入中断程序时,先将TF清零;
2.中断程序要简短,尽量不要和主程序调用相同的函数;
3.程序的执行会影响的计时器的精度,因此在用计时器精确计时时,要考虑中断执行的代码所消耗的时间,在计数器的初值中给于补偿。追问

在进入中断程序时,先将TF清零~也就是说TF一清零之后,计时器就开始计时,是与中断程序并行运行的?

追答

没有清不清TF,计时器都会工作,是和中断程序并行的。计时器的工作只受自身的控制字控制。清TF是为了防止同一个中断被反复执行。

本回答被提问者采纳
第3个回答  2011-11-14
你的理解正确,计时器独立工作,其计数精度不受程序执行影响。
相似回答