在研究微控制器时,我们发现许多功能都是通过中断实现的。
在解释中断之前,我已经以沸水为例,今天,我将解释分配计时器初始值的方法。
一个8位定时器最多可以计数2到256的8次幂,而一个16位定时器最多可以计数2到65536的16次幂。
由于单片机的定时器是递增的,因此最大值减去计时值就是初始值,例如:最大值是100,我们只需要38,我们应该做什么,因为它是增量的,所以我们只需要在62点钟开始计时。
以Proteus仿真为例,简要说明计时器的初始值。
用proteus构建的电路图如下,晶体振荡器为12M,P2.0每10ms翻转一次,即P2.0的输出频率为100HZ。
这里使用一个16位定时器。
单片机定时器0的最大计数为65536。
晶体振荡器为12M,单片机的一个机器周期为1us。
当定时器0在模式1下工作时,最大定时为65.536ms。
计时器的计时时间T =(65536-X),单位为us;定时器初始值X = 65536-T;假设计时时间T = 10ms = 10000us,则计时器初始值X = 65536-10000 = 55536us,也就是计时器0从55536开始并递增到65536为10ms,因此55536是计时器的初始值55536转换为十六进制为0Xd8f0,因此计时器的初始值:TH0 = 0XD8; THL = 0XF0;用途虚拟示波器捕获的波形如下:免责声明:本文的内容经21ic授权后发布,版权归原作者所有。
该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!