[AVR单片机] avr 485串口通信无法接收数据

[复制链接]
3721|2
 楼主| giant_bird 发表于 2013-5-19 17:26 | 显示全部楼层 |阅读模式
代码如下:
unsigned char USART_DataRCV(unsigned char *s)
{   
     int i=0;
     while (!(UCSR0A & (1<<RXC0)));   /*等待接受数据*/

     while(*s)
    {
        s[i]=UDR0;
        if(s[i] == '\0' || s[i] == NULL)
              break;
        delay_us(500);
        i++;
    }
    Receiveflag = 1;  //置标志位

     return Receiveflag;
}

/*函数的功能是:当串口接收到数据后,每次PC向单片机发送3个十六进制数,单片机就将收到的数据返给PC端*/
void myReceive()   
{
     if(USART_DataRCV(Data))   //已经定义了全局变量unsigned char  Data[4];
    {
           Receiveflag = 0;
           usartsend(Data,strlen(Data));
          delay_ms(500);
      }
}

编译没有问题。但是现在PC端接收不到数据。用的是ICCAVR编译器。如果是单片机预定义向PC端发送数据是可以的,但是就是接收以后发送不行。
实在是玩不转它了。跪求高手或者不高手帮忙解决一下。
 楼主| giant_bird 发表于 2013-5-19 19:23 | 显示全部楼层
自己顶一下。  虚心求指点啊
huangxz 发表于 2013-5-19 21:17 | 显示全部楼层
giant_bird 发表于 2013-5-19 19:23
自己顶一下。  虚心求指点啊

接收程序是有问题的,应该没次读UDR之前都要判断RXC

评分

参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部