A. 单片机汇编指令中RETI和RET的区别
1、方式不同
当某一中断源响应后,单片机中的RETI将会自动置位,用于阻止比它低级或同级的中断触发。RETI可以清除“优先级激活触发器”(即flag寄存器),以保证后续中断源的及时响应。
所以,当把RETI替换为RET后,该程序在第一次运行时可能不会饥搜晌出错,但在第二次运行时就会出错了。
2、过程不同
RET是从子程序返回,返回到LCALL或ACALL指令下一条指令处继续执行程序。RETI是从中断服务子程序返回,返回到中断时的断点处继续执行程序,断漏闷点未知。
(1)单片机RETRETI扩展阅读:
直接使用汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;其它更高级的语言(如:C语言)对硬件的控制是依赖于类库烂锋来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。
C语言只是为了方便编写,与机器打交道的其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。
B. 子程序的末尾有什么指令
子程序的末尾一定要有RETI指令,子程序的调用是LCALL和ACALL。
RETI是中断返回指令,这条指令的功能和RET指令相似,2条指令的不同之处是:本指令清除了中断响应时,被置1的MCS-51内部不可寻址的 “优先级生效”触发器清零。
执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。中断指令“RETI”作为中断跳出指令,除了将堆栈中保存着的地址取出,送回PC,使程序从主程序的中断处继续往下执行的作用外,还有将“优先级生效”触发器清零的功能。
(2)单片机RETRETI扩展阅读
单片机汇编指令中RETI和RET的区别
通常情况下,在普通的汇编子程序中用RET做返回,在中断服务子程序中用RETI起中断返回作用。两条指令都能从堆栈中弹出断点地址并装入PC中,使CPU回到原来主程序的断点处继续运行。
然而,RET和RETI有橡搏本质的区别:当某一中断源响应后,单片机中的标志寄存器flag H和flag L其中的一个将会自动置位,用于阻止比它低级或同级的中断触发。RETI可以清除“优先级激活触发器”(即flag寄存器),以保证后续梁粗祥中断源的及时响应。
所以,当把RETI替换为RET后,该程序在第一次运行时可能不会出凳培错,但在第二次运行时就会出错了。
C. 单片机汇编语言指令中中断返回指令RET和RETI有什么不同
RET是子程序返回指令,返回到调用该子程序处的下一条指令执行,返回的地址是从RET执行前的SP中最后两个值。
RETI是中断服务程序返回指令,返回到进入中断服务的断点处执行,返回的地址是从RETI执行前的SP中最后两个值。
D. 单片机汇编语言指令中中断返回指令RET和RETI有什么不同
RETI是中断返回指令;x0dx0aRET是子轿拦迟程序返回指令;x0dx0aRETI比RET多一步清除中断优先级状态位,让同级别的中断有机会得到响应。x0dx0a中断指令“RETI”做为中断跳出指令除了将堆栈中保存着的地址取出,送回PC;使程序从主程序的中断处继续往下闭李执行的作用外,还有将衡搜“优先级生效”触发器清零的功能。
E. 在单片机中,RET和RETI分别是什么返回指令
在单片机中返回指令有RET、RETI或者跳转指令SJMP或LJMP。
RET是一般子程序返回指令,执行该指令,会自动弹出被保护的地址给PC指针。
RETI是中断服务程序返回指令,执行该指令,除了弹出被保护的地址指针给PC外,还会恢复影响中断的一些标志位,比如定时器中断的TFn标志。
F. 单片机汇编语言指令中中断返回指令RET和RETI有什么不同
RET是普通子程序的返回指令,RET是普通子程序的最后1条指培含令,它使程序从子程序转到调用该子程序指令LCALL/ACALL的下1条指令执行。
RETI是中断服务子程序的返回指令,RETI是中断服务子程序的最后1条指令,它使程序从中断服务子御消程序转到中断点继续运行。
RETI指令除了执行返回功镇中知能外,还清除内部相应的中断状态寄存器(该状态寄存器由CPU响应中断时置位,宣告CPU当前正在执行中断服务程序),因此中断服务子程序必须用RETI结束,
CPU执行RETI指令后,必须至少再执行一条其它指令才能响应新的中断。