关于单片机串口同时收发数据的时序问题

关于单片机串口同时收发数据的时序问题,第1张

回答这些问题之前,你要先复习一下串口部件的结构和数据收发的原理。

1.不管你有没有处理RI,还是在继续接收数据的。数据接收完成之后,数据从移位寄存器转移到数据寄存器中,这时才产生中断,但移位寄存器是空的,还可以继续接收数据。

2.你想让串口的收和发同时工作,那就只能使用中断方式,你用查询方式是不可能的。如果是使用“半双工”,那就简单些:A查询方法发送数据,B以查询方式接嫌谈收数据,反之依然,这样的缺点是比较耗时,没有实时性。

后面的几个问题就用2来回答了,就是用中断的方法来接收和发送数据,这样不管李码你是不是同时收发的,都能处理。按照你的例子说,上位机要发送命令来查询下位机的结果,那简单,下位机必须要一个缓冲区来保存收到的数据,然后在主程序中处理缓冲区中的内容,再根据情况向上位机发送数据。当然下位机的发送也可以使用缓冲区来保存待发送的数据。

使用缓冲区的好处就是能保证不发送遗漏。比如上位机可以一次发送多个命令给下位机,这样就是在接收缓冲区中形成命令队列,即“排队”,下位机逐一处理队列中的每一条命令,然后将对应结芹扰碰果送入发送缓冲区中“排队”,再有串口发送中断逐一将其中的字节发送出去。

这个程序,你可以这样看,先在串口中断里面接收一个字符,然后再通过锋拿宽串口将该字符发送出去。在发送的过程中关闭串口中断,不再敏肢接收字符,发送银亮完毕后重新打开中断,接收另外一个字符,a的值就是单片机接收的数据,接收完后,置位标志变量flag,然后对标志变量进行判断,若接收到了,则执行发送指令 SBUF=a。就这样!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12372930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存