单片机定时器_51单片机的定时器如何计算初值?

440386241d0148cb0f77986e32d7b541.png 在学习单片机的时候,我们发现很多功能都是通过中断来实现的。之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法。8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次方为65536。由于单片机的定时器是递加式的,所以最大值减去所要定时的值就是初值,举例如下: 98f2aa8dbdd61e3f9b5e69c371ef35bb.png 最大值为100,我们只需要38,怎么办呢,由于是递加的,我们只需要在62时开始计时就可以了。

以proteus仿真为例简单讲解定时器赋初值

用proteus搭建的电路图如下,晶振为12M,P2.0每10ms翻转一次,即P2.0输出的频率为100HZ。 c8239e64f5f731652b4aa9e3bbbbed55.png 这里使用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; ea740e2f196ada965a51fa0e4d28245a.png
用虚拟示波器抓到的波形如下: 9a478faab90cc06fe33538df2abf4015.png e89bd11ab96d0519cbb3742577479d8e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值