51 MCU计数器和定时器之间的本质区别及其应用方
作者:admin | 发布时间:2019-05-30 11:37 | 浏览次数:

在51单片机的学习过程中,我们经常发现中断,计数器/定时器和串口是学习单片机的难点。对于初学者来说,这些部分的内容很难理解。但是,我个人觉得这些部分是MCU学习的重点。如果您在学期课程或自学中不理解这些部分,则意味着您尚未掌握51个MCU,更不用说MCU的开发了。我们都知道,在完成的MCU项目中,有很多基于这些部分。万年历基于计时器。警报主要是中断。在线通信主要基于串口。

51单片机计数器和定时器的本质区别及应用方法

在这些部件中,计数器/定时器很容易让初学者感到困惑。我将结合自己的学习经历来讨论这个问题。

计数器和计时器的本质是相同的。它们都计算MCU中产生的脉冲,除了计数器是MCU的外部触发脉冲。定时器是内部振荡器在晶体振荡器触发下产生的脉冲。当脉冲间隔相同时,计数器和定时器是一个概念。

定时器和计数器都有溢出概念,所以溢出的是什么。我们可以从一个小的常识来获得答案。当一个碗放在水龙头下面取水时,一会儿后,一碗水就会溢出并溢出。出于同样的原因,假设水龙头中的水滴入碗中,总会有一滴水导致碗中的水溢出。溢出在碗中的水被浪费,但在微控制器的定时计数器中溢出将导致中断。

在计时器计数器中,我们有一个名为capacity的概念,它是最大计数。

模式0是2的13次幂,

模式1是2的16次幂,

模式2是2的8次幂,

将水滴与脉冲进行比较,并且导致碗中的水溢出的最后一滴水是计时器计数器溢出的最后一个脉冲。

在各种MCU书籍中,当引入定时计数器时,计算初始值。计数的初始值是多少?在这里,我们仍然假设一个下降碗。假设前一百滴水可以溢出碗中的水,我们知道碗的容量为100.

实施例1,如何用10滴水使碗溢出?我可以想象,如果你拿一个空碗来取水,你仍然有100滴水溢出,但如果我们拿一个已经有水的碗,我们不需要100滴。在这一点上,我们可以看出,如果允许10滴水溢出碗中的水,那么必须在碗中放入90滴水。在定时计数器中,这90个滴是我们称之为初始值的。

示例2,我们如何使用单片机对车间内的100件产品进行计数并进行自动包装?我们可以使用计数器来计数100并在中断中执行自动包装器。

这里有3个初始计数,假设:

模式0:计数初始值=8192(2到13的幂) - 100=8092.

模式1:计数初始值=65536(2到16次幂) - 100=65436.

根据获得的初始值,然后将其转换为十六进制,可以计算或计时。计时器初始值的计算方法将在后面说明。

相关文章: