单片机 -定时/计数器的初始化编程及应用

定时/计数器的编程

1.根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式。
2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。
3.根据需求,开放定时/计数器中断选项
4.设置 TCON,通过 TR0 置 1 来让定时器开始计数。
5.等待定时时间到,如果查询处理编写查询程序判断溢出标志,溢出标志等于1,如果中断方式处理,编写中断服务程序。

计算如何用定时器定时时间

我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。
使用16位定时/计数器

  • 定时方式
    在这里插入图片描述
    在这里插入图片描述
  • 计数方式
    在这里插入图片描述
    在这里插入图片描述
实例1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小结:使用定时/计数器的步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实例2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)

方式2,采用8位计数器,TLx。可自动重装载计数初值(TLx溢出后, THx→TLx);没有装载计数初值的延误,方式2定时精度相对较高。
在这里插入图片描述
在这里插入图片描述

  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值