[应用相关] 异步接收的模式这样可行吗

[复制链接]
674|16
 楼主| feiqi1 发表于 2019-11-16 10:34 | 显示全部楼层 |阅读模式
串口通信做成同步发送
我接收数据的时候是使用中断接收,发送的时候是主动向SBUF写信息等待发送结束,但是实现的情况是我主动发送也会进入中断啊?!
发送一个字节就会进入中断,但是我还要发送下一个字节,所以我不能在中断中清TI,但是如果不在中断中清TI的话,中断根本出不来啊,所以我就没法继续使用同步查询的方法发送下一个字节,因为不清TI又一次进入了中断啊。这到底怎么办啊?
androidbus 发表于 2019-11-16 10:38 | 显示全部楼层
在中断处理程序里判断一下标志位TI不就行了?
litengg 发表于 2019-11-16 10:41 | 显示全部楼层


ES = 0;
TI = 0;

SBUF = data;
while(!TI);
TI = 0;
qiangweii 发表于 2019-11-16 10:41 | 显示全部楼层

ES=0 ? 我不能关中断啊,我必须是要异步接收。
shashaa 发表于 2019-11-16 10:45 | 显示全部楼层
那就只能用中断,或者用与中断通信的方式。。。
xia00 发表于 2019-11-16 10:45 | 显示全部楼层
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;
    }
}
hfdy01 发表于 2019-11-16 10:49 | 显示全部楼层
买高档的单片机,收发中断可以分别开关
CallReceiver 发表于 2019-11-16 10:49 | 显示全部楼层
这个得等上一字节发完之后才能发。。
sourceInsight 发表于 2019-11-16 10:54 | 显示全部楼层
同步串口通信的读取数据采用同步串口通信方式。
bbapple 发表于 2019-11-16 10:57 | 显示全部楼层
不是全双工的通信接口吧。
handleMessage 发表于 2019-11-16 10:58 | 显示全部楼层
lz是要做实际的产品吗?
zhouhuanの 发表于 2019-11-16 11:02 | 显示全部楼层
买高档的单片机,收发中断可以分别开关。。
wanglaojii 发表于 2019-11-16 11:03 | 显示全部楼层
得等上一字节发完之后才能发
laozhongyi 发表于 2019-11-16 11:06 | 显示全部楼层

同步串口通信的读取数据采用同步串口通信方式。。
Edisons 发表于 2019-11-16 11:08 | 显示全部楼层
不是全双工的通信接口。
xiaoqizi 发表于 2019-12-10 11:26 | 显示全部楼层
难道不是自动清除标志吗
wowu 发表于 2019-12-10 11:27 | 显示全部楼层
这个不是全双工
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

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