首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

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

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

热点排行