程序跳转

[复制链接]
195|13
手机看帖
扫描二维码
随时随地手机跟帖
lium|  楼主 | 2020-1-12 15:17 | 显示全部楼层 |阅读模式
单片机用中断和我在程序中用if语句检测一个按键来实现程序跳转。达到的效果是一样的,那用中断和用if判断有什么区别?

使用特权

评论回复
guoyt| | 2020-1-12 15:21 | 显示全部楼层

占用CPU时间的区别吧

使用特权

评论回复
huwr| | 2020-1-12 15:26 | 显示全部楼层
不知道我的说法对不对。if和中断的对比要看情况的吧,轮询过程中,用if理论上比中断快一点,因为中断需要压栈,此时if和while区别不大。但是如果说你的if只有一次判断,那你if判断过了之后不判断了,那你按键不就没有判断了吗,这时候你就需要中断了

使用特权

评论回复
wangzsa| | 2020-1-12 15:33 | 显示全部楼层
中断是程序运行过程中,收到一个中断信号,弹出中断,执行中断程序,执行完后,再跳回到原来的程序继续运行,if语句执行完你的跳转程序,不知道能不能保持继续执行原来的程序

使用特权

评论回复
hanwe| | 2020-1-12 15:36 | 显示全部楼层

主循环必须等到程序程序运行到那才有检测

中断则不不同

使用特权

评论回复
lium|  楼主 | 2020-1-12 15:39 | 显示全部楼层
程序里加个返回语句什么的呢?

使用特权

评论回复
lium|  楼主 | 2020-1-12 15:43 | 显示全部楼层

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

使用特权

评论回复
llia| | 2020-1-12 15:53 | 显示全部楼层

执行机制不一样 你写的IF是顺序执行的 中断是马上执行的
比如你在家打游戏,今天有人会给你送快递
你可以每隔10秒钟去门口看一眼有没有人来
这就是if
也可以等有人敲门时暂停游戏,去看看。
敲门就是中断
所以如果你没什么事 if也是可以的
但是如果你事情很多 中断就是必须的了
浅见

使用特权

评论回复
lium|  楼主 | 2020-1-12 15:56 | 显示全部楼层
谢谢,为了节省CPU资源还是尽量用中断呗!就是中断少,不像if可以任意加!

使用特权

评论回复
wangpe| | 2020-1-12 15:59 | 显示全部楼层
if语句相当于你的CPU一直要等待判断,中断则不用,满足条件直接执行,中断减轻了CPU的负担

使用特权

评论回复
zhuww| | 2020-1-12 16:02 | 显示全部楼层

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

使用特权

评论回复
zhanglli| | 2020-1-12 16:05 | 显示全部楼层

中断的反应时间要比if判断快,节省cpu资源

使用特权

评论回复
guoyt| | 2020-1-12 16:08 | 显示全部楼层
响应机制不同,if只能程序走到if语句处才能响应,而中断是中断产生后响应(响应同级或更高级的中断除外)。

使用特权

评论回复
lium|  楼主 | 2020-1-12 16:14 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

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

本版积分规则

915

主题

9579

帖子

3

粉丝