欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 03:14:53 责任编辑: Author_N1

 

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 有可视化配置软件 生成代码加入到你工程中就可以使用
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:53
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20053/
本文WWW.DOC100.NET DOC100.NET版权所有。