void interrupt_uart() interrupt 4
{
if(RI)
{
// TI=1;
revcom[count]=SBUF; //接收到的字符存放
RI=0; //手动清零
if(revcom[count]=='@'){
count=0;
revcom[count]='@';
}
count++;
if(count==4)
{
if(cmpstr(StartCom,revcom,4)==0)bstart=1;//开始
else if(cmpstr(StopCom,revcom,4)==0)bstart=0;
else if(cmpstr(Ch1,revcom,4)==0)ichannel=1;
else if(cmpstr(Ch2,revcom,4)==0)ichannel=2;
else if (cmpstr(Ch3,revcom,4)==0)ichannel=3;
count=0;
}
SBUF=revcom[count];
// TI=0;
}
}
上述代码中必须有 SBUF=revcom[count];才能正常判断bstart,ichannel;如果没有SBUF=revcom[count]这一行 就不能判断,请问这是什么原因,如何不发送,只接收能? |