haohaojiuhao0729 2021-06-16 19:58 采纳率: 0%
浏览 70

串口接收数据,如何只把SBUF中的第一个字节给Data

unsigned char Recive()     
{
    unsigned char  date;
    while(RI == 0);
        RI = 0;
    date = SBUF;
    return date;

}
 

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-17 01:46
    关注

    参考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寄存器中的第一个字节,并返回给调用者。

    评论

报告相同问题?