打印

中断和用if判断有什么区别

[复制链接]
3363|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangzj|  楼主 | 2015-8-19 21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机用中断和我在程序中用if语句检测一个按键来实现程序跳转。达到的效果是一样的,那用中断和用if判断有什么区别?
沙发
zwll| | 2015-8-19 21:15 | 只看该作者
占用CPU时间的区别吧

使用特权

评论回复
板凳
chuxh| | 2015-8-19 21:15 | 只看该作者
中断是程序运行过程中,收到一个中断信号,弹出中断,执行中断程序,执行完后,再跳回到原来的程序继续运行,if语句执行完你的跳转程序,不知道能不能保持继续执行原来的程序

使用特权

评论回复
地板
juventus9554| | 2015-8-19 21:15 | 只看该作者
主循环必须等到程序程序运行到那才有检测

中断则不不同

使用特权

评论回复
5
kangzj|  楼主 | 2015-8-19 21:16 | 只看该作者
chuxh 发表于 2015-8-19 21:15
中断是程序运行过程中,收到一个中断信号,弹出中断,执行中断程序,执行完后,再跳回到原来的程序继续运行 ...

程序里加个返回语句什么的呢?

使用特权

评论回复
6
kangzj|  楼主 | 2015-8-19 21:16 | 只看该作者
juventus9554 发表于 2015-8-19 21:15
主循环必须等到程序程序运行到那才有检测

中断则不不同

程序要大了主循环的时间长了,就能看出区别么?是这样么?除了这个还有什么区别,占用资源什么的有么

使用特权

评论回复
7
司徒老鹰| | 2015-8-19 21:16 | 只看该作者
执行机制不一样 你写的IF是顺序执行的 中断是马上执行的
比如你在家打游戏,今天有人会给你送快递
你可以每隔10秒钟去门口看一眼有没有人来
这就是if
也可以等有人敲门时暂停游戏,去看看。
敲门就是中断
所以如果你没什么事 if也是可以的
但是如果你事情很多 中断就是必须的了
浅见

使用特权

评论回复
8
kangzj|  楼主 | 2015-8-19 21:16 | 只看该作者
谢谢,为了节省CPU资源还是尽量用中断呗!就是中断少,不像if可以任意加!

使用特权

评论回复
9
llljh| | 2015-8-19 21:19 | 只看该作者

if语句相当于你的CPU一直要等待判断,中断则不用,满足条件直接执行,中断减轻了CPU的负担

使用特权

评论回复
10
dingy| | 2015-8-19 21:20 | 只看该作者
中断是由硬件检测的,中断发生时的跳转是硬件实现的强制跳转,即在中断发生时,PC被硬件赋值为对应中断的地址(此地址由芯片决定),一般在这个地址处放着一条JMP跳转指令来实现中断服务程序的执行;而函数的跳转是通过指令(比如call)实现的,即当PC指到这条call指令时才会跳转。所以中断其实是突发性的,而函数跳转其实是有时间顺序的。

使用特权

评论回复
11
pengf| | 2015-8-19 21:20 | 只看该作者
中断的反应时间要比if判断快,节省cpu资源

使用特权

评论回复
12
kangzj|  楼主 | 2015-8-19 21:20 | 只看该作者
大体懂了,谢谢大家

使用特权

评论回复
13
lichuanfa| | 2015-8-20 08:42 | 只看该作者
响应机制不同,if只能程序走到if语句处才能响应,而中断是中断产生后响应(响应同级或更高级的中断除外)。

使用特权

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

本版积分规则

672

主题

7007

帖子

2

粉丝