打印

串口通信为何出错?

[复制链接]
1749|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2012-2-29 23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ningling_21 于 2012-3-1 15:50 编辑

代码如下:
while(1)
{
if(flag_rece_end==1)      //接收一帧完成?
  {
   
   
   flag_rece_end=0;  
        
    Time[0]=rece_buff[7];//假设数据都合法
                                    //年月,星期,日,时分秒
    Time[1]=rece_buff[6];
    Time[2]=rece_buff[5];
    Time[3]=rece_buff[4];;//日期
    Time[4]=rece_buff[3];;//星期
    Time[5]=rece_buff[2];;
    Time[6]=rece_buff[1];
  
    I2C_Puts(0xa2,0x02,7,Time);//更新RTC时间
      
   
   
  }
}
/////////////////////////////////////////////////////////////////////////////////////////////
void Init_uart(void) interrupt 4
{
EA=0;
if(RI==1)
{
  rece_buff[rece_cnt]=SBUF;
  rece_cnt++;                         //接收个数加1
  if(rece_cnt==(rece_buff[0]))  //接收完成?
  {
     flag_rece_end=1;    //接收一帧完成标志
  }
  else
  {
    flag_uart=1;
  }
  RI=0;
  LED1=~LED1;  
}
else if(TI==1)
{
     TI=0;
  flag_send=0;    //发送完成
}

EA=1;
}

MCU=STC89C58;
问题:上位机发送数据串:如:08 01 02 03 04 05 06 07(第一字节代表数据串长度)
单片机总收不完一帧,导致MCU系统上时间无法更新...

相关帖子

沙发
杨立业yly| | 2012-3-3 11:24 | 只看该作者
你把EA=0;h和EA=1;去了试一下。我是这样理解的,收完第一个字节进入中断后你把总中断关了,下边的数据就收不到了 ,同样你也发送不出去。不知道我说的对不对,请大家拍砖。

使用特权

评论回复
板凳
ningling_21|  楼主 | 2012-3-3 12:55 | 只看该作者
你把EA=0;h和EA=1;去了试一下。我是这样理解的,收完第一个字节进入中断后你把总中断关了,下边的数据就收不到了 ,同样你也发送不出去。不知道我说的对不对,请大家拍砖。 ...
杨立业yly 发表于 2012-3-3 11:24


退出中断时已经开中断,以后的数据怎么会发不出去?

使用特权

评论回复
地板
ghpzhu| | 2012-3-3 13:19 | 只看该作者
EA = 0期间,串口通讯发送过来的bits就接受不到了...

使用特权

评论回复
5
ningling_21|  楼主 | 2012-3-3 15:34 | 只看该作者
EA = 0期间,串口通讯发送过来的bits就接受不到了...
ghpzhu 发表于 2012-3-3 13:19


EA=0;是在收到数据之后,且应该不影响下一个字节的接收,因为中断里的时间不长,波特率9600足够处理的完...

使用特权

评论回复
6
yesful| | 2012-3-3 20:43 | 只看该作者
rece_cnt是全局变量?及时清零了没有?

使用特权

评论回复
7
杨立业yly| | 2012-3-3 21:59 | 只看该作者
5# ningling_21
9600bps是数据的传输速率,不是处理速度吧?

使用特权

评论回复
8
ningling_21|  楼主 | 2012-3-4 08:40 | 只看该作者
5# ningling_21  
9600bps是数据的传输速率,不是处理速度吧?
杨立业yly 发表于 2012-3-3 21:59


在9600波特率,接收一个字节需1毫秒左右时间,这么长时间还处理不完保存一字节数据吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5013

主题

17735

帖子

51

粉丝