Chinaunix首页 | 论坛 | 博客
  • 博客访问: 610539
  • 博文数量: 262
  • 博客积分: 8433
  • 博客等级: 中将
  • 技术积分: 2141
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 09:37
文章分类

全部博文(262)

文章存档

2012年(1)

2011年(168)

2010年(92)

2009年(1)

分类: C/C++

2010-12-15 21:01:29

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

1.晶振12M

12MHz121MHz,也就是说一秒=1000000次机器周期。10ms=10000 机器周期。

65536-10000=55536(d8f0)

TH0=0xd8TL0=0xf0

2.晶振11.0592M

11.0592MHz12921600Hz,就是一秒921600机器周期10ms=9216机器周期

65536-9216=56320(dc00)

TH0=0xdcTL0=0x00

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

1.晶振12M

12MHz121MHz,也就是说一秒=1000000次机器周期。50ms=50000 机器周期。

65536-50000=15536(3cb0)

TH0=0x3cTL0=0xb0

2.晶振11.0592M

11.0592MHz12921600Hz,就是一秒921600机器周期50ms=46080机器周期

65536-46080=19456(4c00)

TH0=0x4cTL0=0x00

三。使用说明

12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出
最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。

开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。


阅读(863) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~