单片机定时器的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:05:55
如果用T0定时器定时,并使用T0定时器中断,在程序中(包括中断子程序)不关闭定时器,那么请问:定时器是在CPU运行中断子程序时继续定时,还是在中断子程序运行完后再开始定时?
初学单片机,希望高手指点指点!

你这个问题,我来详细回答吧。

首先肯定的是:定时器不关,一直会运行下去。但是它的初始值已经变为0了,所以如果你不想关定时器,就必须重新给初值就可以了。
比如100ms定时器,6M晶振的情况下:
中断服务程序开始就加上:
MOV TL0,#0B0H
MOV TH0,#3CH
如果你想更精确点
ORL TL0,#0B0H
MOV TH0,#3CH
因为你的中断来临了,它会走几步的,用ORL可以更精确的捕捉这几步的。

如果你想关中断,那之后再开的时候,就要提前加上赋初值语句。

定时器开了就一直运行,不管你的程序执行到那,除非把它关了.

定时器关了就不计时了,不管你的程序执行到那,除非把它开了.

SETB TR0 开T0
SETB TR1 开T1

CLR TR0 关T0
CLR TR1 关T1

定时器打开就会一直运行。

avr吗? 中断后继续计时,但要看是什么中断,才能判断T0溢出是否会引发中断.
SIGNAL和INTERRUPT是不同的