51单片机波特率公式

2020-02-03 10:13发布

  1.         //-----------------------------------------------------
  2.         //查询波特率是否加倍
  3.              TimerTH = 256 - (Focs/(384*2400));
  4.              TimerTL = 256 - (Focs/(384*2400));
  5.              P0 = TimerTH;
复制代码请问为何这样算出来的值不是0xF4 而是 0x74呢?
如果直接用公式笔算是0xf4,但进过单片就就是0x74了?为何?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
lmserver
1楼-- · 2020-02-03 15:40
本帖最后由 lmserver 于 2012-10-9 04:11 编辑

编译器会自动转换类型
256=0X100,是双字节,如果编译器把它转为单字节就是0X00
试下这样写:
    TimerTH = 255 - (Focs/(384*2400))+1;
           
dingshidong214
2楼-- · 2020-02-03 20:20
F:1111和7:0111的差别就知道问题在哪里了
HeP028
3楼-- · 2020-02-04 02:00
 精彩回答 2  元偷偷看……
HeP028
4楼-- · 2020-02-04 06:26
dingshidong214 发表于 2012-10-9 09:19
F:1111和7:0111的差别就知道问题在哪里了

HI,能详细点吗?F :15  7就是7,这个能分析出什么问题呢?请赐教啊
HeP028
5楼-- · 2020-02-04 07:51
lmserver 发表于 2012-10-9 04:10
编译器会自动转换类型
256=0X100,是双字节,如果编译器把它转为单字节就是0X00
试下这样写:
  1. //-----------------------------------------------------
  2.            TimerTH = 256 - (Focs/(384*getUsersetbaudrate())) | 0x80;
  3.            TimerTL = 256 - (Focs/(384*getUsersetbaudrate())) | 0x80;
  4.         //-----------------------------------------------------
  5.         P0 = TimerTH;
复制代码这样就么有问题了。 | 0x80,
lmserver
6楼-- · 2020-02-04 11:05
TimerTH = 255 - (Focs/(384*getUsersetbaudrate())) +1;
这样写才对.

一周热门 更多>