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

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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
who_ma
1楼-- · 2020-01-30 16:58
波特率不同?
i_kkyu
2楼-- · 2020-01-30 21:02
“下完程序第一次的时候接收的数据会乱码”
掉电重启有这个问题么?
i_kkyu
3楼-- · 2020-01-30 21:48
 精彩回答 2  元偷偷看……
飘摇~风
4楼-- · 2020-01-30 23:32
i_kkyu 发表于 2013-5-10 16:58
“下完程序第一次的时候接收的数据会乱码”
掉电重启有这个问题么?

没有 只是刚下载玩程序 第一次发送会有这个问题  以后就都没事儿了 或者下完之后复位一下 也没问题
飘摇~风
5楼-- · 2020-01-31 02:50
i_kkyu 发表于 2013-5-10 17:00
或者复位之后,也会有个乱码?
程序刚开始执行,初始化阶段 加一句: RI = 0;   
...

好的 多谢 我去试试
飘摇~风
6楼-- · 2020-01-31 06:46
飘摇~风 发表于 2013-5-10 17:11
好的 多谢 我去试试

还是不行

一周热门 更多>