单片机定时/计数器问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:09:46
单片机定时或计数时,假如溢出,比如是T1,则TF1置1,假如我不把TF1清零,计数器能否继续计数.假如能,当再一次溢出时,TF1是否变为零?
请问如果不清零,即TF1=1,能否继续计数或计时?

不把TF1清零,计数器仍然不断计数,除非你把它停了CLR TR1.

TF1这个标记,中断响应后就自动清掉了,当然你可以人工清掉,

如果不响应这个中断,也不人为清掉,它就不会消失,那么下一个中断生时,它依然是1,不会为0.

溢出,则TF1置1。
如果是中断方式,进入中断程序后,TF1自动被清零;
如果是查询方式,则TF1必须用指令清零,如果不进行清零,它永远是1,和再次溢出无关。
-------------------
无论TF1=1 或 TF1=0,都不影响继续计数或计时;
影响继续计数或计时的只有TR1。

1、在中断情况下,溢出后TF1置一,单片机会进入中断服务程序,然后会自动将TF1清零的,然后执行完中断服务程序后,退出继续定时。在89S52中对于T2就不会自动清除中断标志,此时你要在中断服务程序中自己清零,否则单片机会持续中断(出来后发现还有中断标志又进入中断服务程序,无限循环)。TO,T1对于自动重装设置的,在中断程序执行过程中T0 T1实际上已经开始了下一轮的计数了,此时如果中断服务程序执行时间太长可能刚一出来又中断了。
2、在关闭中断后,采用查询方式的话,就要用指令自己清零了。

只要是溢出,无论是第一次溢出还是再一次溢出则TF1就置1。
中断方式,TF1由硬件自动被清零。
查询方式,TF1用指令清零。

如果是做定时器用,除了TF2一定需要手动清零外,TF0,TF1在中断后都会自动清0的,TF不被清零的结果是当前中断服务程序返回后,执行1条中断断口的下1条指令后,立刻又进入该定时器中断.

TF标志对计数器/定时器的启动和停止没有任何影响,而是反过来被影响.
如果是做计数器用,可以无视TF的状态,若计数器溢出,会自动返回到0,可随时读取TH1和TL1的数值.