MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别是多少

MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别是多少,第1张

RET用于一般程序的返回

RETI用于中断函数的返回

以上是一般单片机书籍简绍的,然而在实际应用中,我发现,在程序返回中一样可以使用RETI,而在中断返回中却无法使用RET,究其原因是因为RETI比RET多做一件事情就是将“优先级生效”触发器清零

原来在8051构架中--中断系统中含有两个不可寻址的“优先级生效”触发器。一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。但该触发器又是不可寻址的,所以无法用软件直接清零。”

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

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

(一)子程序的创建

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

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

(二)子程序调用

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

1子程序的定义

在编制加工程序中有时会遇到一组程序段在-个程序中多次出现或者在几个程序中都要使用它。这个典型的加工程序可以做成固定程序并单独加以命名这组程序段就称为子程序。

2使用子程序的目的和作用

使用子程序可以减少不必要的编程重复从而达到减化编程的目的。主程序可以调用子程序一个子程序也可以调用下一级的子程序。子程序必须在主程序结束指令后建立其作用相当于一个固定循环。

3子程序的调用

在主程序中调用子程序的指令是一个程序段其格式随具体的数控系统而定FANUC-6T

系统子程序调用格式为

M98 P--L--

式中 M98--子程序调用字

p--子程序号

L--子程序重复调用次数。

由此可见子程序由程序调用字、子程序号和调用次数组成。

4子程序的返回

子程序返回主程序用指令M99它表示子程序运行结束请返回到主程序。

5子程序的嵌套

子程序调用下一级子程序称为嵌套。上一级子程序与下一级于程序的关系与主程序与第一层子程序的关系相同。子程序可以嵌套多少层由具体的数控系统决定在FANUC-6T系统中只能有两次嵌套。

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

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

这样定义的:

子程序名 PROC     NEAR|FAR

             

             

            RET

子程序名 ENDP

子程序名相当于标号,表示本过程的符号地址。过程有NEAR和FAR两种类型,FAR型的过程可供段间调用,NEAR型过程仅供段内调用。

在一个过程中,至少要有一条返回指令RET,它可以书写在过程中的任何位置,但是过程执行的的最后一条指令一定是RET。

扩展资料:

注意事项

一、子程序调用指令

格式:CALL   [NEAR PTR]    子程序名

CALL指令的两个作用,1将断点地址(CALL指令的下一条指令地址)压栈保存,2转去子程序执行。

[NEAR PTR]可以省略。

二、返回指令

格式:RET     [N]

指令作用:实现子程序执行完后返回主程序的指令。从堆栈栈顶d出一个字数据(段内调用)送入IP作为返回地址。N是立即数,执行完RET之后,再将SP增加N,也叫“平栈”。

以上就是关于MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别是多少全部的内容,包括:MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别是多少、执行子程序返回或中断子程序返回指令时,返回的断点是( )、数控车床子程序是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9327713.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存