微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机定时器初值的计算举例说明

51单片机定时器初值的计算举例说明

时间:10-02 整理:3721RD 点击:

更多51单片机定时器知识请进入专题:http://bbs.elecfans.com/topic-dingshiqi.html

一。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
  十进制数是怎么来的?
  6MHz 一个机器周期 12/6 = 2us
  定时1ms  计数初值x
(2^16-x)*2us  = 1000us
x = 2^16 - 500 ,TH,TL 可置 -500
12MHz 一个机器周期 12/12 = 1us
12MHz 一个机器周期 12/12 = 1us
定时50ms  计数初值x
(2^16-x)*1us  = 50000us
x = 2^16 - 50000 ,TH,TL 可置 -500
定时器  计内部晶振频率
计数器  计外部输入CPU脚上的脉冲个数  P3.4(T0)  P3.5(T1) 负跳变加一
当晶振为6MHz时,最高计数频率500KHz




单片机定时器


单片机上课时的内容,很简单!

讲的很好

谢谢分享,真的谢谢

精!

感谢小编分享。

  1. 菜鸟表示看的糊涂,求精简

复制代码

  1. [code]略吊

复制代码

真的略吊[/code]

学习...

32.768晶振,请找  唐辉电子,天天现货。月吞吐量高达一亿只。

唐辉电子,深耕晶振行业15年,非常专业,行业公认!

唐辉电子 官网上,有很多晶振使用、搭配、常见故障分析等方面的技术文档,欢迎分享。

真诚地希望和各位研发工程师长期互动、交友、携手进步。












谢谢

谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top