当前位置: 代码迷 >> 单片机 >> 51单片机发串口数据总是不正确,为何
  详细解决方案

51单片机发串口数据总是不正确,为何

热度:9   发布时间:2016-04-28 15:57:58.0
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
要是还不行 那我就不得而知了
  相关解决方案