发 帖  
[问答]

51单片机串口通信上位机接收数据丢失,怎么解决

11407 单片机

QQ图片20160705215854.png (49.93 KB, 下载次数: )

上位机收发截图
已退回2积分
2016-7-3 22:38:54   1 评论 分享淘帖 邀请回答 举报
1 条评论
  • 2019-2-16 23:50

    ES = 0;

                            /*for(i=0;i<6;i++)
                            {
                                    SBUF = table;
                                    while(!TI);
                                    TI = 0;
                            }*/
                            SBUF = temp;
                            while(!TI);
                            TI = 0;
                            ES = 1;
                            flag = 0;

    串口在发送数据时,关闭中断 ES=0,把temp送入SBUF后,ES=1打开串口中断,串口中断就开始工作了,但是CPU这时还要处理“flag=0”,处理它的时候,接收数据 是否完成?如果完成,CPU有没有处理完“flag=0”,这时就有了时钟差,就会丢失数据。所以只需要把“flag=0”放在ES=0前面就可以了,这样,发送完数据,接着就是处理接收数据,它们之间就不会有时间间隔了,也就不会丢失数据了。

14个回答
2016-7-5 14:53:36 评论

举报

2016-7-5 20:54:39 评论

举报

2016-7-5 21:38:21 评论

举报

2016-7-5 21:40:08 评论

举报

2016-7-5 21:46:22 评论

举报

2016-7-5 22:00:01 评论

举报

2016-7-6 08:23:58 评论

举报

2016-7-6 21:55:40 评论

举报

2016-7-7 11:11:33 评论

举报

2016-7-11 17:42:10 评论

举报

2016-7-12 02:18:15 评论

举报

2016-7-12 08:56:36 评论

举报

2018-4-17 20:07:04 评论

举报

2018-4-17 20:15:02 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

您需要登录后才可以回帖 登录/注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表