异步接收的模式

[复制链接]
1170|18
 楼主| zhanglli 发表于 2022-3-2 20:33 | 显示全部楼层 |阅读模式
我想把单片机的串口通信做成同步发送,异步接收的模式这样可行吗?
pangb 发表于 2022-3-2 20:38 | 显示全部楼层
当然要关掉中断了
 楼主| zhanglli 发表于 2022-3-2 20:39 | 显示全部楼层
我接收数据的时候是使用中断接收,发送的时候是主动向SBUF写信息等待发送结束,但是实现的情况是我主动发送也会进入中断啊?!
pengf 发表于 2022-3-2 20:41 | 显示全部楼层
在中断处理程序里判断一下标志位TI不就行了?
 楼主| zhanglli 发表于 2022-3-2 20:44 | 显示全部楼层
发送一个字节就会进入中断,但是我还要发送下一个字节,所以我不能在中断中清TI,但是如果不在中断中清TI的话,中断根本出不来啊,所以我就没法继续使用同步查询的方法发送下一个字节,因为不清TI又一次进入了中断啊。这到底怎么办啊?
zhuhuis 发表于 2022-3-2 20:45 | 显示全部楼层
你在发下一个字节,必须得等上一字节发完之后才能发啊,也就是说必须清了TI再发下一个字节啊,(不管在中断里还是在主程序里,都必须清TI啊)
 楼主| zhanglli 发表于 2022-3-2 20:48 | 显示全部楼层

ES = 0;
TI = 0;

SBUF = data;
while(!TI);
TI = 0;
...
juventus9554 发表于 2022-3-2 20:49 | 显示全部楼层
那就只能用中断,或者用与中断通信的方式
xxrs 发表于 2022-3-2 20:52 | 显示全部楼层

bit tx_ok;
tx_ok = 0;

SBUF = data;
while(!tx_ok);
tx_ok = 0;

void uart_isr(void) interrupt 4
{
      if(RI){
        .....
         RI = 0;
     }
      if(TI){
        tx_ok = 1;      
      TI= 0;
     }
}
heweibig 发表于 2022-3-2 20:54 | 显示全部楼层
lz是要做实际的产品吗?
chenjunt 发表于 2022-3-2 20:55 | 显示全部楼层
买高档的单片机,收发中断可以分别开关
 楼主| zhanglli 发表于 2022-3-2 20:58 | 显示全部楼层

搞定了,呵呵,犯了低级错误……多谢各位
tpgf 发表于 2022-4-1 15:50 | 显示全部楼层
异步的话是可以的
keaibukelian 发表于 2022-4-1 15:55 | 显示全部楼层
为什么要关掉中断啊
keaibukelian 发表于 2022-4-1 16:00 | 显示全部楼层
现在很少有用异步的了吧
labasi 发表于 2022-4-1 16:02 | 显示全部楼层
我记得我上大学的时候用异步很流行
paotangsan 发表于 2022-4-1 16:08 | 显示全部楼层
一般收发中断不能分开吗
renzheshengui 发表于 2022-4-1 16:13 | 显示全部楼层
现在大部分单片机还支持这种模式吗
wakayi 发表于 2022-4-1 16:19 | 显示全部楼层
异步通讯的优势是什么呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1016

主题

9386

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部