vesion2012 发表于 2012-1-16 19:58:13

stc89c52rc 串口发送程序不行!请问怎么回事?

while(1)
                {
                           ES=0;
                          
                                   TI=0;
                                   SBUF=0x56;
                                while(!TI);
                                  
                                  
                                //ES=1;
                        delayms(500);
                }


        }
}

以上是主程序。。
下面是串口初始化程序

/****************************
UART
***************************/
voidInit_uart(void)
{

    SCON= 0x50;                /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload      */
    TH1   = 0xfd;               
//        TL1          = 0xf9;
    TR1   = 1;               
    TI    = 0;                  
//       EA=1; //
//   ES=1; //

}

我明明发送的是0x56 但是收到的却是如下所示的数据。。。。。从串口工具上收到的。。

B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6

请问各们大虾。是什么原因???
我的电脑串口是没有问题的。。

CK345 发表于 2012-1-16 21:06:38

波特率对吗
查查

Wolf_commander 发表于 2012-1-16 21:29:08

对照使用的晶振查看波特率是否正确

Lavind 发表于 2012-1-16 21:42:59

为啥TH1和TL1的初值不同??
假设晶振是11.0592M,TH1=0FDH的话,波特率是9600
如果不对,要么初值算错了,要么晶振有问题。

vesion2012 发表于 2012-1-19 22:37:24

晶振是12Mhz的。。TH1=0xfd   发送一个OX00   串口调试工具上显示是0x80!!!

rgwan 发表于 2012-1-23 20:47:03

换11.0592m晶体。给th0和tl0全给fd。就行啦

vesion2012 发表于 2012-1-29 18:31:03

谢谢。楼上大哥

marshallemon 发表于 2012-1-29 18:39:57

SBUF=0x56;
while(!TI);
TI=0;
delayms(500);

lsd123 发表于 2012-2-8 14:54:03

纯属路过,,学学知识
页: [1]
查看完整版本: stc89c52rc 串口发送程序不行!请问怎么回事?