找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2450|回复: 0
打印 上一主题 下一主题
收起左侧

单片机定时器初值计算

[复制链接]
跳转到指定楼层
楼主
ID:456580 发表于 2020-5-16 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

最近在学单片机定时器初值的计算方法,下面大概列出来12MHz晶振与11.0592MHz两种不同晶振的区别,用10ms和50ms的计算方法,希望能帮助到大家,有问题可以评论区提问


一、10MS定时器初值的计算:

          1.晶振12M


             12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。
              65536-10000=55536(d8f0)  
              TH0=0xd8,TL0=0xf0  
        2.晶振11.0592M


              11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
              65536-9216=56320(dc00)   
              TH0=0xdc,TL0=0x00


  二、50MS定时器初值的计算:   

       1.晶振12M
             12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。   


             65536-50000=15536(3cb0)


             TH0=0x3c,TL0=0xb0


       2.晶振11.0592M


            11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。


            65536-46080=19456(4c00)

              
  TH0=0x4c,TL0=0x00



三、使用说明

            以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。   开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。  
             对12MHz  1个机器周期 1us  12/fosc = 1us


             方式0  13位定时器最大时间间隔  = 2^13 = 8.192ms


             方式1  16位定时器最大时间间隔  = 2^16 = 65.536ms


             方式2  8位定时器最大时间间隔  = 2^8 = 0.256ms =256 us  定时5ms,计算计时器初值  M = 2^K-X*Fosc/12  12MHz 方式0: K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78         THx = 0CH,TLx = 78H,
              方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78        THx = ECH,TLx = 78H,   


             50ms 12MHz   THx = 3CH,TLx = B0H,         10ms       THx = D8H,TLx = F0H,


            方式2: 最大时间 2^8Fosc/12 = 0.256ms  

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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