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

snow830917 2012-05-18 09:35:54
小弟是单片机新手,最近做一个工程,要在初始化的同时把一串数据发给上位机,但是我程序写出来后,用串口调试助手接受串口数据,得到的数据和我发送的数据始终不一样,而且也看不出什么规律

我用的单片机是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,不管发送多少次都是这组一样的数据

请各位高手指教一下,多谢了
...全文
1482 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aydf1 2012-05-22
  • 打赏
  • 举报
回复
恭喜恭喜~
snow830917 2012-05-20
  • 打赏
  • 举报
回复
问题解决了,是max232焊接的问题……多谢大家指点了
danagedan 2012-05-20
  • 打赏
  • 举报
回复
恭喜恭喜~
xiangye 2012-05-18
  • 打赏
  • 举报
回复
以我的经验,首先改改波特率
aydf1 2012-05-18
  • 打赏
  • 举报
回复
发送的每个数字间加个1ms延时试试
dsoyy 2012-05-18
  • 打赏
  • 举报
回复
查看寄存器设置
查看波特率设置
检查硬件连接
snow830917 2012-05-18
  • 打赏
  • 举报
回复
0x40是不允许接受数据,我之前用过0x50,也是一样的状况
lbing7 2012-05-18
  • 打赏
  • 举报
回复
SCON=0x40;

确认这个的值
御猫 2012-05-18
  • 打赏
  • 举报
回复
串口通信主要是波特率,好好查查吧。
danagedan 2012-05-18
  • 打赏
  • 举报
回复
我把楼主的程序在我的STC89C54上跑了下 一切正常
这说明程序是对的,我觉得可能是波特率的问题 1)你检查下自己的晶振是否确实是11.0592M
2)确认下你的串口助手波特率也是9600
要是还不行 那我就不得而知了

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧