单片机中的定时器计算

一.单片机的定时原理

通过每一个机器周期,就加一,通过数1的方式进行计时。

二.基本概念

1.晶振:又称晶体振荡器,是数字电路“心脏”,是电子元件中不可或缺的频率元件,对于数字电路系统,晶振的好还直接影响系统的稳定性。

2.时钟周期:将晶振的频率的倒数定义为时钟周期,在一个时钟周期内,CPU完成一个基础动作,对于更小的时钟周期,意味着CPU有更好的性能,更高的工作效率。

3.机器周期:将时钟周期的6倍或者12倍定义为一个机器周期,具体的设定需要通过人为进行控制

三.每一次“加1”经过的时间是多少

当晶振频率是11.0592MHz的时候,等于11059.2KHz = 11059200Hz

机器周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 11059200 秒 = 12 000 000 / 11059200 微秒 = 1.085 微秒

也就是说对于11.0592Mhz的晶振,其机器周期就是1.085微秒

四.实际案例

案例:通过单片机设定一个10ms的定时器

在51单片机中,定时器相关的寄存器有如下的部分

符号含义
TL0(Timer Low0)定时器0的低8位寄存器
TH0(Timer HIgh0)定时器0的高8位寄存器

根据上表,可以知道共16位的寄存器可以数2^16次,就是65536次,而每次计数一下,就会耗费1.085微秒,因此当计数超过65535时,定时器寄存器就会爆表,也就是经过65535*1.085=71,105.475us=71.104575ms之后就会爆表,通常可以理解为经过71ms之后就会爆表。

对于10ms而要,首先可以计算出10ms定时定时器需要数多少次,设需要数x次,则

x=(10*1000)/1.085=9216

设定时器的初始值为y,则

y=65536-9216=56320

将56320转化成16进制数,通过计算可以知道16#DC00,因此TH = DC ;TL = 00

也就是说需要计数9612次,就可以认为经过了10ms,这时,我们可以用71ms减去10ms的次数,就可以知道定时开始计数的初始值,这个值就是y值

五.小结

单片机定时器的原理就是通过计算出所定时间需要计数的次数x,通过65536减去x,算出定时器所需的初始值,然后将初始值转化成16进制,填入TH与TL寄存器中,然后通过读取定时器溢出标志位,就可以知道定时器的定时状态。

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值