[讨论] 关于串口通讯丢数问题的解决

aiwenzx   2008-12-17 09:38 楼主
问题:51单片机在与电脑软件通讯的过程中,通讯了100多次 多200多次的时候会出现丢数的情况
原帖地址:https://bbs.eeworld.com.cn/thread-70030-1-5.html

解决办法:实际上数并没有丢 只是可能电路有时候不稳 造成了波特率的波动 导致了同步有点问题
原来的单片机程序:
void main()
{

    P1=0xff;
    main_init();
    init_8253();
    serial_init();

    while(1)
    {
        if(state >=3 )                     //state代表接收的字节数                 问题就出在这个判断上,有时候就会发生            
          {                                                                                            state<3的情况,就是我所说的丢数,其实数并有丢
             ……                                                                                   我觉得从理论上讲能通讯一次成功就通讯N次,
                                                                                                      因为同一个循环……事实证明我错了……      
            }
     }
}


后来一直想为啥,在网上找了N久,终于发现有个类似的,于是在if之前多加了
for(timeout=0;timeout<800;timeout++); 就好了

把经历写出来,可能问题很简单,我很菜鸟,不过还是希望和大家分享……

[ 本帖最后由 aiwenzx 于 2008-12-17 09:46 编辑 ]

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复