在学习单片机的时候,我发现很多功能都是通过中断实现的。 以前也举出烧水的例子说明了中断,但今天就设定计时器初始值的方法进行说明。 8位计时器的最大hmddt计数2的8次方是256,16位计时器的最大hmddt计数2的16次方是65536。 因为单片机的计时器是递增式的,所以最大值减去期望的定时后的值就是初始值。 示例如下所示。
最大值是100,我们只需要38。 我该怎么办? 因为是递归的,所以62点计时就可以了。
以proteus模拟为例简单说明计时器初始值
用proteus构建的电路图如下,石英振动为12M,P2.0每10毫秒翻转一次。 也就是说,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,所以5536是计时器的初始值,55536被转换为16进制数,为0Xd8f0
TH0=0XD8;
THL=0XF0;
用虚拟示波器捕捉的波形如下所示。
只需支付硬件成本的STM32单片机学习板正在募集资金,价格为129元。 该学习板包括: GPIO APP应用、RS232通信、RS485通信、CAN总线通信、USB通信、IIC总线、SPI总线、JTAG在线调试、SW在线调试、ISP自动下载、RTC实时详情请通过微信号进行确认。
本阅读号致力于共享单片机、ARM等嵌入式软硬件的设计经验,秉承“人人电子设计经验的bqdxs”的理念,不孤单成功之路,我们一起努力。
公众号: micropoint8。 嵌入式学习网络振兴网: www.picmcu.com