找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2580|回复: 8
收起左侧

请问单片机如何才能同时使能两个串口,一个串口仅用来发送,另一个仅用来接收?

[复制链接]
ID:168165 发表于 2021-9-17 00:10 | 显示全部楼层 |阅读模式
我怕我中断初始化写的有问题,发上来大家帮忙看一下,谢谢串口1接收蓝牙从机的数据,串口2发送接收到的数据出
4.png
3.png
2.png
1.png
回复

使用道具 举报

ID:819198 发表于 2021-9-17 08:54 | 显示全部楼层
好像单片机只能一个中断一个中断的运行,这种同时可能有问题的。
回复

使用道具 举报

ID:130230 发表于 2021-9-17 08:59 | 显示全部楼层
可以查看寄存器列表,寄存器里面有接收发送控制位,如果想关闭某一功能直接对应位置位0就可以。
回复

使用道具 举报

ID:624769 发表于 2021-9-17 15:47 | 显示全部楼层
你嘴上说一个 收 一个发 实际上两个都只在 判断 RI
一般一个收,一个发,建议用  S1 来收  S2 来发,
只是负责发送的话,S2 只要 中断触发,不用做任何判断,就直接把 把 TI2  RI2 都置 0 , 就是中断进去就是直接
S2CON &= 0xfC;  然后标记 S2Busy = 0;
S1 要写完整的判断  if(RI) 怎么怎么,     if(TI) 怎么怎么, 两个结束 都要分别加上  RI =0; TI =0;
不然程序可能炮死,反正只要开了串口中断,就算啥也不干,也必须有  TI =0; RI =0; 不然就会出问题。
回复

使用道具 举报

ID:168165 发表于 2021-9-17 16:03 来自手机 | 显示全部楼层
188610329 发表于 2021-9-17 15:47
你嘴上说一个 收 一个发 实际上两个都只在 判断 RI
一般一个收,一个发,建议用  S1 来收  S2 来发,
只 ...

用优先级控制可以吗请问
回复

使用道具 举报

ID:168165 发表于 2021-9-17 16:21 来自手机 | 显示全部楼层
188610329 发表于 2021-9-17 15:47
你嘴上说一个 收 一个发 实际上两个都只在 判断 RI
一般一个收,一个发,建议用  S1 来收  S2 来发,
只 ...

就是我用s1来接收,初始化的时候scon的REN=1,S2CON的REN = 0接收到指定字符,SCON 的TI和RI置0,之后SCON 的REN =0,S 2CON 的REN=1开始发送数据ES2=1
回复

使用道具 举报

ID:624769 发表于 2021-9-17 17:37 | 显示全部楼层
无穷小量 发表于 2021-9-17 16:21
就是我用s1来接收,初始化的时候scon的REN=1,S2CON的REN = 0接收到指定字符,SCON 的TI和RI置0,之后SCON ...

S1 的 REN 不用关,一直开着接受,不影响,S1 可以高优先级,S2 不用, 因为,对方机不知道你这个单片机的实际情况,所以,接受要给足够的优先度,而 S2 发送,可以迁就 其他程序,等到不忙的时候再发送, 最后,优先级只牵涉到 对 TI RI 的响应, 所以,S2 只要你数据 放到了 SBUF2 里面,不会因为 S1 接受数据被打断影响的。
回复

使用道具 举报

ID:332444 发表于 2021-9-17 20:18 | 显示全部楼层
单片机资源有限巧妙分时是常用方法
回复

使用道具 举报

ID:123289 发表于 2021-9-19 10:21 | 显示全部楼层
1、理论上是不可以同时的,但由于串行通讯慢,实际上是可以做到的。
2、软件上做成一个只收一个只发,协议上双方也服从这个约定。
3、中断据服务程序,运行时间不能起过一个字节的拼装收发时间,否则“1、”的不可以同时就发生了。

实际应用中,这个做样是不可取的,一个串口收、发就够了。
采用两个串口,数据通讯量也只能提高一倍,而增加一倍的波特率也同样能达成目的。
当然波特率会受到限制时,而不得不通过增加串口数量来提升通讯数据量,但也不会采用一收一发,而是一收发、另一个也收发,这样更机动。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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