找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1136|回复: 0
打印 上一主题 下一主题
收起左侧

单片机串口没有空闲判断,如何解决?

[复制链接]
跳转到指定楼层
楼主
在使用pic单片机时(pic18f25k80),发现串口没有空闲判断,以下是结合网上和自己看手册的延迟方法。

1、根据字节+定时器判断
      一个字节,按传统的算:一个起始位+8个数据位+一个结束位   = 10位    波特率如果为 B  , 一个字节所需要时间 t = (1/B) * 10  

      定时器时间定为: T = 1.5 t ,一般情况是如此,根据实际情况设定,但不会超2t.

     在中断里每接收完一个字节,接收完一字节时间应该为t,如果定时器没为0 ,将定时器重新恢复初值(1.5t),如果为0,说明这一帧已经接收完了。

    后来调试发现一个问题,就是在485通信时,多个丛机发给主机,就会出现接收到一帧数据,两个从机数据在一起,为什么请自己思考一下?

2、根据位+定时器判断

   如图2所示,会有一个起始位和停止位,这个方法,网上讲述最多。这个就是解决上面两个从机发送的数据在主机接收的同一帧中,

  这种现象称为黏包。

  根据停止位为高,延迟3.5个位 的时间,判断是否一直为高,如果 是 一帧接收完全,否,继续接收。

以上两种我是都用的,具体讲述第一种:根据字节+定时器判断 。




2.png (27.78 KB, 下载次数: 47)

2.png

1.jpg (60.77 KB, 下载次数: 54)

1.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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