打印

单片机串口通讯

[复制链接]
1768|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leowk|  楼主 | 2010-9-4 14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个问题一直想不明白
当串口通讯发送多个字节的时候 (比如根据通讯协议一次要发送几十个字节)

而通讯baud又很低,比如只有600bps,那么在发送的过程中,MCU是不是

在这段时间内不能做其它事情了?必须等MCU发送完成吗?



而在接收多个字节的时候,我到是比较容易想通,因为收到一个字节后,直到下

一个字节收完为止,这段时间MCU可以去做其它事情,但是发送的时候是什么

样的机制呢?

xiexie



相关帖子

沙发
rodger_br| | 2010-9-4 15:01 | 只看该作者
可以开个缓冲用中断发.

使用特权

评论回复
板凳
laoliang3064| | 2010-9-4 15:57 | 只看该作者
发送和接收都有相应的中断标志位,发送完自动值位,查询相应标志位即可。

使用特权

评论回复
地板
原野之狼| | 2010-9-4 18:55 | 只看该作者
所谓发送就是把要发送的数据写入SBUF
所谓接受就是从SBUF读取数据
这些指令占用的时间太少了 无非就是一个或者几个机器周期嘛
当然之前会有一些配置的操作
至于是低波特率还是高波特率并不会影响这个操作
那么数据串行出去或者串行接受的过程都是有硬件本身完成的 完成之后会置位相关的标志位 如果中断允许会引起相关中断
编程的时候要合理安排任务的运行 避免两件事
1、发送数据流时不要搞得不连续
2、接受数据流时不要造成数据覆盖

使用特权

评论回复
5
xlsbz| | 2010-9-4 22:35 | 只看该作者
波特率太低的话,可以用中断发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

18

帖子

0

粉丝