高手请进,网上的一篇**大家看看这个定时器这样设置是

[复制链接]
 楼主| lwg998 发表于 2007-3-20 20:36 | 显示全部楼层 |阅读模式

 定时时间(us) TH1 TL1   
  50000       76   0   
  48077       82  236  
  46296       89   86  
  44643       95   73  
… … … … …
  12500       211  0   


标准51芯片晶振是11.0592M。
ayb_ice 发表于 2007-3-21 08:19 | 显示全部楼层

随便说说

  菜鸟都知道怎么计算,还用什么高手,多看看书。
  65536-50000/(12/11.0592)= xxxxx
 楼主| lwg998 发表于 2007-3-21 09:42 | 显示全部楼层

呵呵,你好

 65536-50000/(12/11.0592)= 14318.894

那么TH1和 TL1   分别是多少?如何计算的?谢谢
ayb_ice 发表于 2007-3-21 10:04 | 显示全部楼层

你真是菜鸟

你真会算65536-50000/(12/11.0592)= 14318.894

65536-50000/(12/11.0592)= 19456 = 0x4C00
TH1 = 0x4C = 76
Tl1 = 0x00
 
 楼主| lwg998 发表于 2007-3-21 12:33 | 显示全部楼层

呵呵

 楼主| lwg998 发表于 2007-3-21 13:22 | 显示全部楼层

刚才输错了,应该是这样的

65536-50000/(12/11.0592)= 19456 = 0x4C00

 65536-50000/(12/11.0592)
=65536-50000/1.085069
=65536-46080
=19456
=0x4c00
TH1 = 0x4C = 76
Tl1 = 0x00

这是50MS的

网上还有另一种表示:
TH0 = (65536-5000)/256;  //  TH0 = -5000/256;
TL0 = (65536-5000)%256;  //  TL0 = -5000%256;
这是5mS的(标准51运行于12MHZ),

以上的50MS的是否也可以用这种方法表示呢。
如下:
TH0 = (65536-50000)/256;  //  TH0 = -50000/256;
TL0 = (65536-50000)%256;  //  TL0 = -50000%256;

不知是否正确
如果是这样的话那么:
TH0 = 60;
TL0 = 176;

这个结果和前面的不一致???
 楼主| lwg998 发表于 2007-3-21 13:40 | 显示全部楼层

有个地方忽略了,前面的是11.0592M 后面的是12M

计算方法上可能错了
以上的50MS的是否也可以用这种方法表示呢。
如下:
TH0 = (65536-50000)/256;  //  TH0 = -50000/256;
TL0 = (65536-50000)%256;  //  TL0 = -50000%256;

不知是否正确
如果是这样的话那么:
TH0 = 60;
TL0 = 176;

这个结果和前面的不一致???

用这个方法表示应该是这样的
TH0 = (65536-TIME*1000.0*OSC/12)/256;        
TL0 = (65536-(unsigned )(TIME*1000.0*OSC/12))%256;

OSC = 晶振频率 单位M
TIME = 定时时间 单位ms 

以上TH0 = (65536-TIME*1000.0*OSC/12)/256;
是否该是这样:TH0 = (65536-TIME*1000.0*(OSC/12))/256;
才是正确的
 楼主| lwg998 发表于 2007-3-21 15:04 | 显示全部楼层

最后的结论是:TH0 = (65536-TIME*1000.0/(12/OSC))/256;

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

本版积分规则

13

主题

143

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

13

主题

143

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部