找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4603|回复: 0
收起左侧

定时器计数初值的计数方法

[复制链接]
ID:108615 发表于 2016-3-13 02:32 | 显示全部楼层 |阅读模式
    经常看到一些单片机教材上给定时器的赋值是这样写的TH0=(65536-50000)/256;TL0=(65536-50000)%256;为什么要这样写呢?
    如12M的晶振要产生50ms的定时的话应怎么设置呢?
    一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12(一个机器周期产生一个计数)。12M的晶振1S产生 12M * 1/12 = 1M = 1000000个机器周期,50ms的话需要0.05 * 1000000 = 50000个机器周期。定时器在工作方式1时是16位的计数结构,最大计数值为2的16次方,即是65536。所以计数初值为(65536-50000),然后通过/256跟%256分别把高8位和低8位放进相应的寄存器。
    有些教材写成TH0=~(50000/256);TL0=~(50000%256),这个是通过取反的方法得出相应的数,道理是一样的。                                                                                                                    
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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