单片机汇编语言指令中中断返回指令RET和RETI有什么不同

单片机汇编语言指令中中断返回指令RET和RETI有什么不同,第1张

RET是普通程序的返回指令,而不能用RETI,所以,RET不是中断返回指令,就是子程序返回指令。

而RETI是用在中断子程序的返回指令,必须用这个,这才叫中为返回指令,而不能用RET,这就是区别。

while(IR==0);while(IR==1);中断里面这样用,如果等待不到反馈信号不就死在那里了么有点死循环的味道最好用一个全局布耳变量来在主程序调用子程序(内容就是中断里面的语句),而中断程序只是负责改写布耳变量的状态。可以的话考虑看门狗复位或者多线程机制编程。

跳转指令,顾名思义跳过一段程序到达指定的地方,即当跳转条件满足时将跳过一段程序到达指针指定点在执行程序,这中间的程序将不被执行,而调用子程序是当条件满足时将执行子程序,执行完之后再继续往下执行程序

MC/MCR指令为主控指令,当有一段连续的指令都有一个相同的条件时,若每条指令都写入这个条件势必麻烦,这是主控指令就发挥了作用,用这个条件触发主控指令,然后把这段程序放在主控指令中间,这样就相当于这段程序的每段程序都串上了这个条件

执行子程序返回或中断子程序返回指令时,返回的断点是:调用指令下一条指令的首地址。

执行子程序的使用为程序的模块化设计提供了一种方便有效的途径。与子程序有关的 *** 作有建立子程序、子程序的调用和返回。

(一)子程序的创建

创建子程序是通过编程软件来完成的。在编程软件施耐德电流互感器“编辑”菜单中的“插入”选项卡中,选择“子程序”。或者在编辑窗口中单击鼠标右键,选择d出菜单中“插入”中的“子程序”选项,以建立或插入一个新的子程序,

同时,在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR N,编号N从0开始按递增顺序生成,也可以在图标上直接更改子程序的程序名,把它变为更能描述该子程序功能的名字。在指令树窗口双击子程序的图标就可以进入子程序,并对它进行编辑。

(二)子程序调用

施耐德电流互感器在使能输入端有效时,主程序把程序控制权交给子程序,此时执行子程序的全部指令,直到子程序结束。子程序的调用可以带参数,也可以不带参数。

基本没有区别!都会在返回时恢复压栈的PC指针并继续执行程序。

中断处理程序实际上也可以看做是一个普通的子程序,只是它的调用是预先设定的地址入口,并且它的调用时由中断触发的;而子程序是我们人为地调用的。

但是中断子程序的返回有时要考虑对中断的处理(如开关中断允许、初始化数据-----比如计数器或者定时器的初始值处理等等)。

子程序返回指令完整的功能是改变程序计数器的值;子程序调用指令是指调用子程序的指令,包括调用指令(转子指令)和返回指令(返主指令)。

子程序调用指令用于实现程序与程序之间的转移,与转移指令不同(转移指令用于实现同一程序内的转移)。子程序调用指令还可以进行嵌套调用,即可调用别的子程序,还可以实现递归调用,即直接或间接自己调用自己。

扩展资料:

在子程序的调用与返回过程中,子程序的入口地址是指子程序第一条指令的地址。用于调用子程序、控制程序的执行从主程序转向子程序的指令称为专注指令(子程序调用指令、过程调用指令)。为了正确调用子程序,必须在转子指令中给出子程序的入口地址。

主程序中转子指令的下一条指令的地址称为断点,断点是子程序返回主程序的返回地址,从子程序返回主程序的指令称为返回指令。为了在执行返回指令时能够正确地返回主程序,转子指令应具有保护断点的功能。

参考资料来源:

百度百科-子程序调用指令

以上就是关于单片机汇编语言指令中中断返回指令RET和RETI有什么不同全部的内容,包括:单片机汇编语言指令中中断返回指令RET和RETI有什么不同、为什么中断后不能返回主程序继续执行、plc在子程序用跳转指令后,是回到主程序还是回到子程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9826383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存