找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12188|回复: 22
收起左侧

为什么单片机串行通信一定要有中断

  [复制链接]
ID:377587 发表于 2018-7-22 22:01 | 显示全部楼层 |阅读模式
为什么51单片机的串行通信一定要有中断?初学C51见笑
回复

使用道具 举报

ID:364341 发表于 2018-7-23 19:59 | 显示全部楼层

单片机串口收发结束后不一定会中断,是否中断取决于初始化时,是否开中断,即:
EA=1,ES=1,只有这两个位置1时才会中断。、出现中断,是便于你及时进行数据处理。

收到后的中断函数中,应该把SBUF的数据读出,并送到其它的位置,腾出SBUF,便于接收下一个数据。

在发送完的中断函数中,应该发送下一字节。(如果没有了,当然就不发了。)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:319344 发表于 2018-7-23 22:02 | 显示全部楼层
单片机与外设的通信有三种方法:查询,中断和DMA,这三种方式中,查询的话你可以理解为循环检测。在学8位单片机时我没遇到过DMA,DMA适用于传输比较大的数据量,其实也就是传输数据的时候不需要CPU参与,当传输完成会产生中断信号通知CPU,不要以为中断方式和DMA方式一样,虽然都会产生中断信号,但中断方式是通过中断服务函数不断将数据放到串口进行传送,而DMA产生的中断是数据已经传送完毕,需要进一步处理,通过中断服务函数来完成。中断方式是每发送一个数据就需要产生一次中断,而DMA是仅最后产生一次中断

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:277550 发表于 2018-7-23 00:09 | 显示全部楼层
方便和效率。。。。。。中断不是必须用。。。。。。。比如接收时,如果不用中断就要实时监测IO电平变化、再处理

~~~~~~~~~~~

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2018-7-23 06:11 | 显示全部楼层
串行通信不一定要用中断法,也可以用查询法,是根据实际需要选择。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:378250 发表于 2018-7-24 00:06 | 显示全部楼层
根据应用实际需要确定的,主要在接收阶段如果你一直等接收数据别的工作不做了么?靠给中断可以让单片机忙别的,有数据来了他会告诉你。
回复

使用道具 举报

ID:378250 发表于 2018-7-24 00:08 | 显示全部楼层
根据实际应用需求确定的,只不过使用中断你可以让CPU干别的事情,比如按键、显示什么的,等有通讯数据来了中断会告诉你,解放CPU的占用。
回复

使用道具 举报

ID:378250 发表于 2018-7-24 00:08 | 显示全部楼层
根据实际应用需求确定的,只不过使用中断你可以让CPU干别的事情,比如按键、显示什么的,等有通讯数据来了中断会告诉你,解放CPU的占用。
回复

使用道具 举报

ID:378296 发表于 2018-7-24 09:06 | 显示全部楼层
使用中断系统程序运行效率会大大提高。
回复

使用道具 举报

ID:363376 发表于 2018-7-24 10:23 | 显示全部楼层
根据实际的需求来确定吧,可以中断,也可以查询。
回复

使用道具 举报

ID:367835 发表于 2018-7-24 10:49 | 显示全部楼层
因为串行通信过程中上位机与下位机之间的通信波特率必须保持一致,中断就是用来产生波特率的,波特率不一致会导致乱码或接收不到数据
回复

使用道具 举报

ID:378381 发表于 2018-7-24 11:01 | 显示全部楼层
也不一定需要中断,需要是方便程序控制和处理,特别是在接收数据的时候
回复

使用道具 举报

ID:378745 发表于 2018-7-25 11:19 | 显示全部楼层
最终就是告诉CPU串口有数据到来或要发送
回复

使用道具 举报

ID:190815 发表于 2018-7-25 17:57 | 显示全部楼层
中断比较方便,效率也高
回复

使用道具 举报

ID:365824 发表于 2018-7-26 00:14 | 显示全部楼层
用过51单片机,串口通信时用中断可以方便数据的发送和接受
回复

使用道具 举报

ID:375198 发表于 2018-7-26 10:44 | 显示全部楼层
就像两人说话,对方正在干活,你冷不丁来一句,他肯定不知道你讲什么!你必须要这样:“嘿!老兄,******”他才能听见你讲的话!这里的“嘿”就是先让他中断专心听你讲
回复

使用道具 举报

ID:309048 发表于 2018-7-26 10:51 | 显示全部楼层
不一定要有中断
回复

使用道具 举报

ID:364776 发表于 2018-7-26 11:20 | 显示全部楼层
不是一定要的,串行通信有两种方法的,查询式和中断式,如果你不配置中断,那就可以用查询,只不过费事
回复

使用道具 举报

ID:379364 发表于 2018-7-26 12:08 | 显示全部楼层
因为如果不设置中断就会一直停留在检测串口数据的程序一直循环
回复

使用道具 举报

ID:379364 发表于 2018-7-26 12:10 | 显示全部楼层
可以实时的接收到串口送来的数据
回复

使用道具 举报

ID:403795 发表于 2020-11-24 18:02 | 显示全部楼层
广州智华-硬件 发表于 2018-7-24 10:49
因为串行通信过程中上位机与下位机之间的通信波特率必须保持一致,中断就是用来产生波特率的,波特率不一致 ...

中断=产生波特率?????不是吧
回复

使用道具 举报

ID:800066 发表于 2020-11-24 20:20 | 显示全部楼层
单片机与外设的通信有三种方法:查询,中断和DMA,
回复

使用道具 举报

ID:522773 发表于 2020-11-25 19:41 | 显示全部楼层
中断可以更有效率,避免反复查询或者漏掉接收的数据。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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