飘摇~风 发表于 2013-5-10 16:51:46

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

写了一个串口接收字符串的程序 但在下完程序第一次的时候接收的数据会乱码出现错误以后就会正常 求各位大侠知道下原因?以及解决方案代码如下
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;
                                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=a;                            //以字符9作为字符串发送结束的标志
                if(a=='9')
                {
               
                        flag=1;
                }
               
               
        }
    ES = 1;
}

who_ma 发表于 2013-5-10 16:55:59

波特率不同?

i_kkyu 发表于 2013-5-10 16:58:56

“下完程序第一次的时候接收的数据会乱码”
掉电重启有这个问题么?

i_kkyu 发表于 2013-5-10 17:00:50

或者复位之后,也会有个乱码?
程序刚开始执行,初始化阶段 加一句: RI = 0;   

飘摇~风 发表于 2013-5-10 17:11:16

i_kkyu 发表于 2013-5-10 16:58 static/image/common/back.gif
“下完程序第一次的时候接收的数据会乱码”
掉电重启有这个问题么?

没有 只是刚下载玩程序 第一次发送会有这个问题以后就都没事儿了 或者下完之后复位一下 也没问题

飘摇~风 发表于 2013-5-10 17:11:55

i_kkyu 发表于 2013-5-10 17:00 static/image/common/back.gif
或者复位之后,也会有个乱码?
程序刚开始执行,初始化阶段 加一句: RI = 0;   
...

好的 多谢 我去试试

飘摇~风 发表于 2013-5-10 17:18:52

飘摇~风 发表于 2013-5-10 17:11 static/image/common/back.gif
好的 多谢 我去试试

还是不行{:cry:}

zhxzhx 发表于 2013-5-10 21:25:26

ES=0;
ES=1;
都去掉,
Main开头加一个 TI=0;

tongdayusu 发表于 2013-5-10 21:29:37

楼上。好巧啊。两只可爱的狸猫。
页: [1]
查看完整版本: 串口接收数据第一个会不对 求原因