程序跳转

[复制链接]
 楼主| lium 发表于 2021-4-1 20:49 | 显示全部楼层 |阅读模式
单片机用中断和我在程序中用if语句检测一个按键来实现程序跳转。达到的效果是一样的,那用中断和用if判断有什么区别?
guoyt 发表于 2021-4-1 20:52 | 显示全部楼层
占用CPU时间的区别吧
huwr 发表于 2021-4-1 20:54 | 显示全部楼层
不知道我的说法对不对。if和中断的对比要看情况的吧,轮询过程中,用if理论上比中断快一点,因为中断需要压栈,此时if和while区别不大。但是如果说你的if只有一次判断,那你if判断过了之后不判断了,那你按键不就没有判断了吗,这时候你就需要中断了
wangzsa 发表于 2021-4-1 20:56 | 显示全部楼层
中断是程序运行过程中,收到一个中断信号,弹出中断,执行中断程序,执行完后,再跳回到原来的程序继续运行,if语句执行完你的跳转程序,不知道能不能保持继续执行原来的程序
hanwe 发表于 2021-4-1 20:59 | 显示全部楼层

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

中断则不不同
 楼主| lium 发表于 2021-4-1 21:01 | 显示全部楼层
程序里加个返回语句什么的呢?
 楼主| lium 发表于 2021-4-1 21:03 | 显示全部楼层
程序要大了主循环的时间长了,就能看出区别么?是这样么?除了这个还有什么区别,占用资源什么的有么
llia 发表于 2021-4-1 21:05 | 显示全部楼层

执行机制不一样 你写的IF是顺序执行的 中断是马上执行的
比如你在家打游戏,今天有人会给你送快递
你可以每隔10秒钟去门口看一眼有没有人来
这就是if
也可以等有人敲门时暂停游戏,去看看。
敲门就是中断
所以如果你没什么事 if也是可以的
但是如果你事情很多 中断就是必须的了
浅见
 楼主| lium 发表于 2021-4-1 21:07 | 显示全部楼层
谢谢,为了节省CPU资源还是尽量用中断呗!就是中断少,不像if可以任意加!
wangpe 发表于 2021-4-1 21:09 | 显示全部楼层
if语句相当于你的CPU一直要等待判断,中断则不用,满足条件直接执行,中断减轻了CPU的负担
zhuww 发表于 2021-4-1 21:11 | 显示全部楼层

中断是由硬件检测的,中断发生时的跳转是硬件实现的强制跳转,即在中断发生时,PC被硬件赋值为对应中断的地址(此地址由芯片决定),一般在这个地址处放着一条JMP跳转指令来实现中断服务程序的执行;而函数的跳转是通过指令(比如call)实现的,即当PC指到这条call指令时才会跳转。所以中断其实是突发性的,而函数跳转其实是有时间顺序的。
zhanglli 发表于 2021-4-1 21:12 | 显示全部楼层
中断的反应时间要比if判断快,节省cpu资源
guoyt 发表于 2021-4-1 21:14 | 显示全部楼层
响应机制不同,if只能程序走到if语句处才能响应,而中断是中断产生后响应(响应同级或更高级的中断除外)。
 楼主| lium 发表于 2021-4-1 21:16 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

915

主题

9578

帖子

3

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