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

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

2012-05-20 
51单片机发串口数据总是不正确,为何?求助小弟是单片机新手,最近做一个工程,要在初始化的同时把一串数据发

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
要是还不行 那我就不得而知了

热点排行