标题: 单片机串口中断,具体不知道如何描述 [打印本页]

作者: 搬哪去啊    时间: 2021-1-30 12:13
标题: 单片机串口中断,具体不知道如何描述
这端代码是啥意思呀,好像是GPS和GSM数据接收,但是具体不知道如何描述。

void uart_int(void) interrupt 4 using 1                //串口接收中断函数         
{
    if(RI)
    {
        uchar ch;
        RI = 0;
        ch = SBUF;
        if (GPS_rx_flag == 0)
        {
            if ((ch == 'O') && (gsm_rev_okflag == 0))  //如果收到字符'$',便开始接收
            {
                gsm_rev_start = 1;
            }
            if (gsm_rev_start)
            {
                if (ch == 'K')
                {
                    gsm_rev_okflag = 1;
                    gsm_rev_start = 0;
                }
            }
        }
        else
        {
            if ((ch == '$') && (gps_flag == 0))  //如果收到字符'$',便开始接收
            {
                rev_start = 1;
                rev_stop  = 0;
            }
            if (rev_start == 1)  //标志位为1,开始接收
            {
                RX1_Buffer[num++] = ch;  //字符存到数组中
                if (ch == '\n')         //如果接收到换行
                {
                    RX1_Buffer[num] = '\0';
                    rev_start = 0;
                    rev_stop  = 1;
                    gps_flag = 1;
                    num = 0;
                }
            }
        }
    }
    if(TI)
    {
        TI = 0;
        busy = 0;
    }
}


作者: Crazy·    时间: 2021-2-3 17:29
串口接收部分的,那些判断语句应该都是跟通讯协议有关系




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1