串口每次多返回一个字符,求解

2019-07-15 22:51发布

一个很基本的串口程序
功能:给单片机发6个字符,然后让它返回这6个字符
出现2个问题‘
1,第一次用串口发送时,只返回4个字符(也许与程序没关系)
2,每次返回的字符多了另一个。如发送123456,却返回的是1234565

程序如下,希望大家能帮忙 ,谢谢

#include <reg52.h>     
#define uchar unsigned char
#define uint unsigned int
unsigned char flag=0,i;
uchar  temp[6];
uchar  num=0 ;
int j ;
void init()            //串口初始化
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{  
  if(flag==6)      //收到6个字符后,执行
  {
      ES=0;        //关中断,既发送时不计入中断
   i=0;
while(temp[i]!='')  //为什么用这种方式会多返回一个字符5,结束符?
{     
   SBUF=temp[i];
   while(!ti);
    TI=0;
    i++;   
   }  
      ES=1;
   flag=0;
  }  
}
}
void ser() interrupt 4      
{
if(RI)     //只有当接收时,才执行以下程序★★★★★
{
RI=0;  
temp[flag]=SBUF; //接受到的字符存到数组中
flag++;
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。