中断服务子程序入口地址相对某一中断是固定的,调用子程序的偏移地址是随机的,基本过程差不多,返回时,中断服务子程序用的是reti
调用子程序是ret
调用中断服务子程序和调用子程序都会把当前偏移地址的下一地址压栈,但调用子程序的返回指令ret不影响标志位,reti从中断程序返回,并会清除内部相应的中断状态寄存器。
我说的是80c51的
你可以写一个头文件,比如说<delayh>之类的,开始写51程序的时候,#include <delayh>就可以放进去了,这条语句相当于展开这个文件。你可以把它放在任意的路径,最好是和<reg51h>一个文件夹,方便直接用,就不用每次使用都要查找它的路径了。希望能够帮到你
“断点的PC值入栈,还有哪些东西呢?”
取决于子程序的类型和编程方式。有些特殊类型的子程序是需要入栈的,若采用高级语言编程则编译器会自动添加相应的入栈出栈语句。
“有人说临时变量不入栈,那CPU从子程序运行退回断点时,临时变量的值是如何恢复的呢?”
呵呵,为何要恢复?调用子程序的时候会从局部变量块中新分配空间的,如同你后半部分所说。
以上就是关于单片机调用中断服务子程序和调用子程序的区别是什么全部的内容,包括:单片机调用中断服务子程序和调用子程序的区别是什么、51单片机怎么把多个子程序做成头文件,然后调用、关于单片机在调用子程序时,进行了怎样的堆栈 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)