这段程序如下:
void receive(uchar idata *data_buffer)
{
uchar i;
do{
while(RI==0);RI=0;
}while(SBUF^0xAA!=0); //接收发送方的联络信号0xAA
SBUF=0xBB; //接收到联络信号0xAA,则发送联络信号0xBB
while(TI==0);TI=0;
while(1)
{ cheak_sum=0;
for(i=0;i<10;i++){ //用for循环接收10Bytes数据
data_buffer[i]=SBUF; //接收1Byte数据
cheak_sum+=data_buffer[i];} //计算校验和
while(RI==0);RI=0; //接收10Bytes数据后,继续接收校验和
if((SBUF^cheak_sum==0)
{SBUF=0x00;break;}
else
{SBUF=0xFF;while(TI==0);TI=0;}
}
}
疑问是,用for循环接收10字节数据的过程,为什么RI不清零? |