在研究微控制器时,我们发现许多功能都是通过中断实现的。
我还给出了一个开水的例子来解释中断。
我今天不会谈论中断。
我将解释如何为计时器分配初始值。
一个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;虚拟示波器捕获的波形如下:不同型号,系列单片机的定时器的配置方法基本相同,可以用51个单片机的配置方法进行类比。
免责声明:本文内容经21ic授权后发布,版权归原作者所有。
该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!