请问哪位能仔细的讲一下51系列单片机定时器定时计算时间的公式或方法

如题所述

这是我个人学习时的一点心得,我感觉应该是一个比较清楚的版本了。虽然有快一年没有学习单片机了,但是想起这些知识还是颇感熟悉。

首先你需要明白一个等价条件和一些基本理论知识,这既是学习后面的前提,同时也是基础。(以下内容仅指单片机而言,并且晶振频率是11.0592MHz)CPU内部每经过一个机器周期(即一定的时间间隔),定时器就自动加一;反之,定时器每自动加一,就表示CPU内部经过了一个机器周期(可以类比我们使用的电子表)。二者在大多数情况下是等价的,而只有在讨论纯概念范畴时二者才是不一样的(哲学用语)。因此要想设置定时器,关键是要知道一个机器周期的大小(即时间间隔):一个机器周期=12个时钟周期=12个振荡周期=12个晶振周期=12个节拍,而一个振荡周期或者是一个晶振周期则等于晶振频率的倒数即1/fosc,由此可知一个机器周期=12/fosc。以本例来说,一个机器周期=0.000001085s,也就是1.085us。因此当我们知道了需要定时的时间之后(比如定时50ms),即知道了包含多少个机器周期之后(50ms/1.085us=46083),我们就知道了应该往定时器的计数寄存器中写多大的初值(即写入(65536-46083));同样,当我们在看到定时器的计数寄存器当中的数值后(比如(65536-46083)/256中的46083——其实是在程序中看到的),也就知道了定时一次的时间是多少(即用46083*1.085us=50ms)。
温馨提示:答案为网友推荐,仅供参考