读书人

C8051串口波特率设置有关问题

发布时间: 2013-10-15 16:47:37 作者: rapoo

C8051串口波特率设置问题
晶振频率22.1184M,想得到115200的波特率,端口方面是这样设的:

P0MDIN = 0x3F;
P0MDOUT = 0x18;
P0SKIP = 0xC8;
XBR0 = 0x01;
XBR1 = 0x40

晶振的设置如下:

OSCXCN = 0x67;// External 22.1184M Oscillator
for (i = 0; i < 3000; i++);
while ((OSCXCN & 0x80) == 0);
CLKMUL = 0x02;
CLKSEL = 0x01;
OSCICN = 0x03;

时钟部分这样设置的

TMOD = 0x21;
CKCON = 0x10;
TH1 = 0xF8;

波特率我是这样算的,参考C8051F340的data sheet, UART0波特率 115200: = [(22118400/12)/(256 - 0xF8)]/2

但是用51波特率计算器来计算的时候,看到它要用倍频,初始值要设成0xFF,请问究竟哪种方法是对的?

[解决办法]
波特率太高了,理论上是没问题的,不知道C8051能行吗?
[解决办法]

引用:
波特率高的话会带来什么问题吗?

波特率高会造成传输丢失数据
[解决办法]
晶振都是有误差的,低波特率下偏点没关系,高了的话影响很大
115200下一位8.6805555555555555us
22.1184MHZ下一个周期0.54253472222222222222222222222222us
加倍的话计数个数为8.6805555555555555555*2/0.54253472222222222222222222222222
=32.

不加倍是16,楼主加倍算得8
我怎么加倍算出了32

反正FF是不对的

还有参考楼上的,51的话波特率不要太高,因为晶振的生产是有误差的,波特率越高影响越大

[解决办法]
C8051 有可视化配置软件 生成代码加入到你工程中就可以使用

读书人网 >单片机

热点推荐