gdmgb520 发表于 2013-3-4 09:27:05

请教大家NXP P89V51RD2 串口波特率问题


51的串口时钟来自于Timer1,根据书上的说明计算公式应该如下:
如果PCON.SMOD=0,则:
TH1 = 256 - ((Crystal / 384) / Baud)
如果PCON.SMOD=1,则:
TH1 = 256 - ((Crystal / 192) / Baud)

而P89v51rd2数据手册中关于串口模式2波特率的说明如下:
The baud rate is programmable to either 1/16 or 1/32 of the CPU clock frequency, as determined by the SMOD1 bit in PCON.
手册中再也没有其他关于波特率的说明。

而实际编程时发现,晶振使用18.432MHz,设置PCON.SMOD1=0,TH1=251时,串口波特率为19200;而设置PCON.SMOD1=1,TH1=251时,串口波特率既不是19200也不是9600。

疑惑,按照上面的计算公式,应该是SMOD=1时波特率为19200,SMOD=0时波特率为9600才对啊?即便是P89v51rd2单片机本身特殊,在SMOD=0时波特率为19200,那大概猜测应该在SMOD=1时波特率为9600啊?

望用过P89V51RD2的朋友指点,谢谢!

WXF_mabg 发表于 2013-3-4 09:31:51

SCON = 0x50 ; /* work mode 8-bit variable bp ''MODE1 */
        /* T2CON */
        TCLK = 1 ; /* timer2 为uart波特率发生器 */
        RCLK = 1 ;
        TR2 = 1 ;
        EXEN2 = 0 ;
        T2MOD = 0x00 ; /* timer2 work mode BPS generator */

        /* reload value */
        RCAP2H = 0XFF ;
        RCAP2L = 0XB2 ; /* 24MHZ   9600BPS */

        ES0 = 1 ;/* enbale interrupt */

WXF_mabg 发表于 2013-3-4 09:32:28

自己用的24M 9600bps 其他的没有太详细考究

gdmgb520 发表于 2013-3-4 11:56:43

WXF_mabg 发表于 2013-3-4 09:32 static/image/common/back.gif
自己用的24M 9600bps 其他的没有太详细考究

谢谢

是什么单片机?P89V51RD2?

WXF_mabg 发表于 2013-3-4 13:09:26

是的单片机一样
页: [1]
查看完整版本: 请教大家NXP P89V51RD2 串口波特率问题