unsigned char Recive()
{
unsigned char date;
while(RI == 0);
RI = 0;
date = SBUF;
return date;
}
参考GPT和自己的思路:
根据你的问题,如果你只想接收串口数据中的第一个字节,可以在while循环之前添加一个if语句,判断SBUF寄存器是否已经有数据,并且只取出第一个字节。修改后的代码如下所示:
unsigned char Recive()
{
unsigned char date;
while(RI == 0);
RI = 0;
if(SBUF & 0x01) // 判断 SBUF 中是否有数据,并且只取出第一个字节
{
date = SBUF & 0xff;
}
return date;
}
通过这样的修改,只有串口接收到数据时,才会取出SBUF寄存器中的第一个字节,并返回给调用者。