C8051的Silicon Laboratories IDE问题!!

[复制链接]
6206|11
 楼主| jt4117 发表于 2008-11-28 14:13 | 显示全部楼层 |阅读模式
#define  Band       19200
#define  T1Clk      4915200 
#define  Band2      (Band*2)
#define  T1Counter  (T1Clk/Band2)
为什么 算出来 T1Counter  = 4Bh
实际应该是 80h啊。 怎么回事啊??
 楼主| jt4117 发表于 2008-11-28 14:18 | 显示全部楼层

用他来定义串口波特率!!

写TH1 = 0x80就没问题。 
写TH1 = 0xff - T1Counter + 1;就不行这是怎么回事呢??
哪位知道问题所在? 请指教啊!! 
 楼主| jt4117 发表于 2008-11-28 14:26 | 显示全部楼层

难道是我的#define用法不对??

isbit 发表于 2008-11-28 16:22 | 显示全部楼层

hehe,他们的历程定义我也没看明白!

5880527 发表于 2008-11-28 16:39 | 显示全部楼层

能通讯就行了,管它的例子是不是对的

我也碰到过这个问题,后来自己试出来的初始值和它给的参考值差很多
 楼主| jt4117 发表于 2008-11-28 17:20 | 显示全部楼层

是他的编译器不行啊!!

直接#define T1Counter  4159200/38400就可以
或者
#define  Band       192
#define  T1Clk      49152 
#define  Band2      (Band*2)
#define  T1Counter  (T1Clk/Band2)
把位数缩短就没问题  
isbit 发表于 2008-11-28 17:55 | 显示全部楼层
isbit 发表于 2008-11-28 17:57 | 显示全部楼层

我以前好像也碰到过,具体既不清楚了!

反正我是自己算出来的!
没用他的历程的设置方法!
本来想有空分析一下!
 时间一长我就忘记了!
 楼主| jt4117 发表于 2008-11-29 09:50 | 显示全部楼层

用keil仿真也是一样的问题!!


  
ayb_ice 发表于 2008-11-29 10:10 | 显示全部楼层

这是因为计算溢出的原因

#define  Band       19200ul
就可以了。
winloop 发表于 2008-11-29 11:31 | 显示全部楼层

他的IDE是个垃圾

还是用KEIL吧
ayb_ice 发表于 2008-11-29 12:37 | 显示全部楼层

这个和IDE没有关系

标准的C编译器都是这样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

234

主题

2897

帖子

1

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