51单片机发串口数据总是不正确,为何?求助
小弟是单片机新手,最近做一个工程,要在初始化的同时把一串数据发给上位机,但是我程序写出来后,用串口调试助手接受串口数据,得到的数据和我发送的数据始终不一样,而且也看不出什么规律
我用的单片机是AT89C51,晶振11.0592MHz,初始化程序如下:
void init()//初始化
{
EA=1;//中断模式开
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//波特率是9600
TL1=0xfd;
TR1=1;
SCON=0x40;
PCON&=0x7F;
SBUF=0x2F;
while(TI==0);
TI=0;
SBUF=0x5F;
while(TI==0);
TI=0;
SBUF=0x5A;
while(TI==0);
TI=0;
SBUF=0x52;
while(TI==0);
TI=0;
SBUF=0x0D;
while(TI==0);
TI=0;
delay(5000);
}
但是用串口调试助手接收的数据却是:68 50 A9 AB 1E,不管发送多少次都是这组一样的数据
请各位高手指教一下,多谢了
[解决办法]
查看寄存器设置
查看波特率设置
检查硬件连接
[解决办法]
我把楼主的程序在我的STC89C54上跑了下 一切正常
这说明程序是对的,我觉得可能是波特率的问题 1)你检查下自己的晶振是否确实是11.0592M
2)确认下你的串口助手波特率也是9600
要是还不行 那我就不得而知了