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

串口接收到的数据不正确,该怎么解决

2012-02-08 
串口接收到的数据不正确我用串口调试助手发00010203,但接收到的是A0B0A4C0等一些乱码,请教各位大侠!!我的

串口接收到的数据不正确
我用串口调试助手发00   01   02   03,但接收到的是A0   B0   A4   C0等一些乱码,请教各位大侠!!

我的程序是C写的,用keil编译

#include   <at89x51.h>
#define   uint   unsigned   int
#define   uchar   unsigned   char

uint   i=0;
uchar   data   astring[10];

void   main()
{
    TMOD=0x20;       //初始化串口
    TL1=0xfd;
    TH1=0xfd;
    SCON=0xd8;
    PCON=0x80                                                                                                                   ;
    TR1=1;

    for(i=0;i <10;i++)         //接收数据
    {
        while(RI==0);
              RI=0;  
        astring[i]=SBUF;  
    }

  for(i=0;i <10;i++)             //发送数据
  {
      SBUF=astring[i];
      while(TI==0);
        TI=0;
    }
  TR1=0;
}




[解决办法]
根据晶振频率计算你的波特率。
单片机的Rx和Tx不要直接连RS232.........估计你不会犯这样的错误。

可以一步一步找出原因:
单片机复位后先让它发送一个字母,比如“A”,以便测试你的发送是否正确,注意不要采用断电/上电的方式使单片机复位,这样的话PC会首先收到一个乱码;只要用一把镊子连一下复位端脚就可以了。
发送正确了,才可以继续测试你的接收。

你的问题是调试方法问题,过几年就有经验了,都是这么走过来的,多努力啊。
[解决办法]
看你的设置:
1、你选择了串行工作方式3,它是11位的,1起始位、9数据位、1停止位,你串口助手设置得对吗
2、波特率对吗,用的晶振是多少,算错没有?
3、接线对吗,这看似简单,呵呵
4、用中断,把书看看
希望对你有所帮助

热点排行