51单片机波特率公式
//-----------------------------------------------------//查询波特率是否加倍
TimerTH = 256 - (Focs/(384*2400));
TimerTL = 256 - (Focs/(384*2400));
P0 = TimerTH;请问为何这样算出来的值不是0xF4 而是 0x74呢?
如果直接用公式笔算是0xf4,但进过单片就就是0x74了?为何? 本帖最后由 lmserver 于 2012-10-9 04:11 编辑
编译器会自动转换类型
256=0X100,是双字节,如果编译器把它转为单字节就是0X00
试下这样写:
TimerTH = 255 - (Focs/(384*2400))+1;
F:1111和7:0111的差别就知道问题在哪里了 lmserver 发表于 2012-10-9 04:10 static/image/common/back.gif
编译器会自动转换类型
256=0X100,是双字节,如果编译器把它转为单字节就是0X00
试下这样写:
其实我建立一个数组也可以解决问题就是不明白怎么回事,
谢谢你,大侠应该说的对,我试试 dingshidong214 发表于 2012-10-9 09:19 static/image/common/back.gif
F:1111和7:0111的差别就知道问题在哪里了
HI,能详细点吗?F :157就是7,这个能分析出什么问题呢?请赐教啊 lmserver 发表于 2012-10-9 04:10 static/image/common/back.gif
编译器会自动转换类型
256=0X100,是双字节,如果编译器把它转为单字节就是0X00
试下这样写:
//-----------------------------------------------------
TimerTH = 256 - (Focs/(384*getUsersetbaudrate())) | 0x80;
TimerTL = 256 - (Focs/(384*getUsersetbaudrate())) | 0x80;
//-----------------------------------------------------
P0 = TimerTH;这样就么有问题了。 | 0x80,
TimerTH = 255 - (Focs/(384*getUsersetbaudrate())) +1;
这样写才对.
页:
[1]