新萤火虫论坛

 找回密码
 注册
查看: 1473|回复: 0

制作一个通用定时器的方法步骤

[复制链接]
发表于 2015-7-3 15:32:41 | 显示全部楼层 |阅读模式
了解了定时器相关的寄存器,那么我们下面就来做一个爱师通用小定时器,巩固一下我们学到的内容。我们这节课的程序先使用定时器0,在使用定时器的时候,需要以下几个步骤:

  第一步:设置特殊功能寄存器TMOD,配置好工作模式;

  第二步:设置计数寄存器TH0和TL0的初值;

  第三步:设置TCON,通过打开TR0位来让定时器开始计数。

  第四步:判断TCON寄存器的TF0位,监测定时器溢出情况。

  写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是11.0592M,时钟周期就是1/11059200,机器周期就是12/11059200,我们假如要定时20ms,就是0.02秒,要经过x个机器周期得到0.02秒,我们来算一下x*12/11059200=0.02,得到x= 18432。那么我们现在16位的定时器溢出值是65536,我们可以这样,先给TH0和TL0一个初值,让他们经过18432个机器周期后刚好溢出,溢出后我们可以通过检测TF0位得知,就刚好是0.02秒。这个初值y = 65536 - 18432 = 47104,转成16进制就是0xB800,那么就是TH0 = 0xB8,TL0 = 0x00。

  那0.02秒我们已经定时出来了,细心的同学会发现,我们如果初值直接给一个0x0000,一直到65536溢出,定时器定时值最大也就是71ms左右,那么我们想定时更长时间怎么办呢?用你小学学过的逻辑,倍数关系就可以解决此问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|萤火虫

GMT++8, 2024-11-24 04:11 , Processed in 0.241042 second(s), 6 queries , File On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表