串口接收到的数据不正确

xiezhongjun123   2007-3-20 22:43 楼主
我用串口调试助手发00 01 02 03,但接收到的是A0 B0 A4 C0等一些乱码,请教各位大侠!!

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

#include
#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=SBUF;
  }

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


回复评论 (28)

一:强烈要求中断接收
二:先注意一下波特率,寄存器的值最用好芯片手册给出的推荐值
三:不知道你的后面几个接入的信号怎么到位的?
点赞  2007-3-20 23:34
1、把发送和接收完全分开来调!
2、注意波特率。
点赞  2007-3-21 08:27
for(i=0;i<10;i++)    //接收数据
  {
    while(RI==0);
       RI=0;
    astring=SBUF;
  }
是不是应该
    while(RI==0);
    astring=SBUF;
       RI=0;
不好意思,没怎么搞过,随便说说
点赞  2007-3-21 11:08
哎,改了波特率还是接收不正确!,我再继续努力的调试!
串口是否能接收一串ASCII码字符?也就是两个字符中间是否可以没有空格?
例如我发送ASCII码字符串  $%$%&*  串口能否接收到?
点赞  2007-3-21 16:16
用示波器,
点赞  2007-3-22 07:38
你要是初次接触通讯看看你的晶振和你通讯数率的匹配!这个我碰到的初学者好几个了。
点赞  2007-3-27 12:17
呵呵
强烈建议用中断来...
点赞  2007-3-27 12:58
用中断接收,把波特率设置正确,这两天比较关键
点赞  2007-3-30 17:58
1. 简易的通讯使用中断方式比较可靠;
2. 对于通讯的数据,可以用示波器查出来;
3. 发送数据和接收数据过程中,可以适当的加一些delay来避免数据冲突;
4. RAM允许的情况下最好定义接收数组和发送数组,把接收和发送的数据分开;
5. 注意控制寄存器的赋值。
点赞  2007-4-2 00:53
回复人:lbing7(楼主,别再给我非专家分!谢谢合作) ( 五级(中级)) 信誉:100         2007-3-20 23:34:04         得分:0
?        

一:强烈要求中断接收
二:先注意一下波特率,寄存器的值最用好芯片手册给出的推荐值
三:不知道你的后面几个接入的信号怎么到位的?
Top
        回复人:shen_guang_wu(单片机爱好者) ( 三级(初级)) 信誉:100         2007-3-21 8:27:13         得分:0
?        

1、把发送和接收完全分开来调!
2、注意波特率。
点赞  2007-4-2 16:38
注意波特率
点赞  2007-4-3 15:51
根据晶振频率计算你的波特率。
单片机的Rx和Tx不要直接连RS232.........估计你不会犯这样的错误。

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

你的问题是调试方法问题,过几年就有经验了,都是这么走过来的,多努力啊。
点赞  2007-4-3 17:39
中断!!!
注意波特率、校验。
点赞  2007-4-8 11:08
串口助手的用十六进制发送你选了没有,没有选的是肯定不对的
点赞  2007-4-23 13:05
BAUDRATE
点赞  2007-4-23 19:16
波特率
点赞  2007-5-7 20:59
16进制打钩,然后发送字符中间不要空格。
点赞  2007-5-8 20:41
我也是只能MCU->PC,
PC->MCU不能:有时乱码,有时只能接受1B,有时一个也收不到(都没有RI置位)

顶啊,同志们...
点赞  2007-7-6 21:27
MAX232外围的电容是不是用的太大了。
点赞  2007-7-6 23:42
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复