51单片机串口接收不定长数据

2020-01-13 18:37发布

请教大神,单片机串口如何接收不定长数据啊 ,比如 0x01+0x03+len+data0....datan CRC_H  CRC_L 写了一下午没啥成果
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
32条回答
hongguan
2020-01-17 05:40
void ComInINT(void) interrupt 4 //using 1  //串口接收-中断函数
{   
        uchar xdata comm_dat[65];  //串口接收
        uchar dat,i;
       
    if(RI)
    {
        RI=0;
        dat=SBUF;
                                switch (step)
                                {
                                        case 1:
                                        {
                                                Count=0;
                                                if(dat=='/')step=2;
                                                else step=1;
                                        }
                                        break;

                                        case 2:
                                        {
                                                comm_dat[Count]=dat;
                                                if(comm_dat[Count]==0x0d)step=3;
                                                else step=2; Count++;                                         
                                                if(Count>64){Count=0;step=2;}
                                        }
                                        break;
                                        case 3:
                                        {                                                                               
                                                    for(i=0;i<Count;i++)chs[i]=comm_dat[i];
                                                    for(i=0;i<64;i++)comm_dat[i]=0;
                                                read_flag=1; step=0; dat=0;
                                        }
                                        break;
                                       
                                        default:{}break;
                                }                                                               
    }
    if(TI)
                        {TI = 0;busy = 0;}
}

一周热门 更多>