c8051f340单片机串口通讯的一段小程序中的一部分,新手不明白什么意思,希望高手能一行行指点下

while(1)
{ while(RI0==0);
a=SBUF0;
RI0=0;
if(a!='\0')
{ SBUF0=a;
while(TI0==0);
TI0=0;
a='\0';
}
}
}

while(1) //循环
{
while(RI0==0); //RI0=0表示未收到数据,则一直等待,直到收到数据,即RI0=1
a=SBUF0; //SBUF0是收发寄存器。即:收到的数据是存在它里面,所以令a=SBUF0,即将收到的数取到a里面
RI0=0; //清除收到数据标识
if(a!='\0') //所收到的数据有效
{
SBUF0=a; //再将收到的数据发送出去 如上面所述,SBUF0很好玩,收时是收到它里面,发时也是发到它里面。
while(TI0==0); //TI0是发送是否成功的标识。TI0为0,表示发送未完成,等待,直到发送完成。
TI0=0; //清除发送完成标志
a='\0'; //将a清空
}
}追问

你好我想问一下,在SBUF0=a部分,是表示已经发送成功了么?这时TI0是不是应该等于1?那下面的while(TI0==0);
TI0=0;
a='\0'还有意义么?多谢指教,不知道能不能加个好友,以后方便聊!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-15
while(1) //循环
{ while(RI0==0); //若RI0=0则无限循环下去,RI0=1(成功接收到数据RI0置1)则跳出循环
a=SBUF0; //将SBUF0的数据赋给a
RI0=0; //将RI0置0
if(a!='\0') //判断a是否为空
{ SBUF0=a; //将a的值传给SBUF0
while(TI0==0); //判断TI0是否为零
TI0=0; //若TI0=1(数据成功传输)将TI0置0
a='\0'; //将a清空
}
}
}
相似回答