串口接收数据第一个会不对 求原因

2020-01-30 13:37发布

写了一个串口接收字符串的程序 但在下完程序第一次的时候接收的数据会乱码  出现错误  以后就会正常 求各位大侠知道下原因?以及解决方案  代码如下
void main()
{
        uchar i;
        flag=0;
        count=0;
        SBUF=0x00;
        init();
        while(1)
        {
                if(flag==1)
                {
                        ES=0;
                        for(i=0;i<count;i++)
                        {
                                SBUF=table[i];
                                while(!TI);
                                TI=0;
                        }
                        ES=1;
                        flag=0;
                        count=0;
                }
               
        }
       
}
void serial (void) interrupt 4 using 2//串口接收中断函数,接收字符串
{         
        uchar a;
    ES = 0;
       
    if(RI)
    {   
                RI = 0;   
                a=SBUF;
                table[count++]=a;                            //以字符9作为字符串发送结束的标志
                if(a=='9')
                {
               
                        flag=1;
                }
               
               
        }
    ES = 1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。