打印

异步接收的模式这样可行吗?

[复制链接]
1048|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizye|  楼主 | 2017-9-24 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jiahy| | 2017-9-24 22:16 | 只看该作者

当然要关掉中断了

使用特权

评论回复
板凳
lizye|  楼主 | 2017-9-24 22:17 | 只看该作者

我接收数据的时候是使用中断接收,发送的时候是主动向SBUF写信息等待发送结束,但是实现的情况是我主动发送也会进入中断啊?!

使用特权

评论回复
地板
shimx| | 2017-9-24 22:19 | 只看该作者
在中断处理程序里判断一下标志位TI不就行了?

使用特权

评论回复
5
lizye|  楼主 | 2017-9-24 22:20 | 只看该作者
发送一个字节就会进入中断,但是我还要发送下一个字节,所以我不能在中断中清TI,但是如果不在中断中清TI的话,中断根本出不来啊,所以我就没法继续使用同步查询的方法发送下一个字节,因为不清TI又一次进入了中断啊。这到底怎么办啊?

使用特权

评论回复
6
jiaxw| | 2017-9-24 22:21 | 只看该作者
你在发下一个字节,必须得等上一字节发完之后才能发啊,也就是说必须清了TI再发下一个字节啊,(不管在中断里还是在主程序里,都必须清TI啊)

使用特权

评论回复
7
spark周| | 2017-9-24 22:22 | 只看该作者

ES = 0;
TI = 0;

SBUF = data;
while(!TI);
TI = 0;
...

使用特权

评论回复
8
lizye|  楼主 | 2017-9-24 22:24 | 只看该作者

ES=0 ? 我不能关中断啊,我必须是要异步接收。

使用特权

评论回复
9
liliang9554| | 2017-9-24 22:27 | 只看该作者

那就只能用中断,或者用与中断通信的方式

使用特权

评论回复
10
午夜粪车| | 2017-9-24 22:28 | 只看该作者

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;
    }
}

使用特权

评论回复
11
zhaoxqi| | 2017-9-24 22:29 | 只看该作者
lz是要做实际的产品吗?

使用特权

评论回复
12
huangchui| | 2017-9-24 22:30 | 只看该作者
买高档的单片机,收发中断可以分别开关

使用特权

评论回复
13
lizye|  楼主 | 2017-9-24 22:31 | 只看该作者

嗯,大家说得有道理,我再看看吧

使用特权

评论回复
14
lizye|  楼主 | 2017-9-24 22:32 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
15
Mattheww| | 2017-9-26 10:16 | 只看该作者
得等上一字节发完之后才能发

使用特权

评论回复
16
Rangar| | 2017-9-30 18:05 | 只看该作者
中断处理程序里判断一下标志位TI

使用特权

评论回复
17
houjiakai| | 2017-10-4 12:45 | 只看该作者
串口都是异步接收。

使用特权

评论回复
18
youtome| | 2017-10-4 12:46 | 只看该作者
通信效率 异步通信低

使用特权

评论回复
19
cemaj| | 2017-10-4 12:47 | 只看该作者
同步串口通信的读取数据采用同步串口通信方式

使用特权

评论回复
20
10299823| | 2017-10-4 12:48 | 只看该作者
不是全双工的通信接口。

使用特权

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

本版积分规则

852

主题

9757

帖子

2

粉丝