理论上可以。
但实际时,由于你的主程序调用和中断的调用可能同时发生,
这样可能会出现:
1)函数重入:变量、寄存器数值被改变,原来调用的程序得不到正确的执行结果;
2)堆栈混乱。。。
相同点:都是从主函数转到子函数,子函数执行完后又返回主函数。
不同点:
一、执行方式不同
1、中断服务程序:中断函数是发生中断后,自动执行的,不需要主函数调用,是否执行,取决于相应的中断事件是否发生。
2、普通子程序:普通子函数要主函数调用才能执行。
二、使用情况不同
1、中断服务程序:中断函数在中断发生时,先进入中断入口地址,再通过中断入口地址处放置的一条无条件转移指令,使程序执行转向中断服务程序入口。
2、普通子程序:普通子函数调用时,直接进入函数入口地址。
三、定义方式不同
1、中断服务程序:中断服务程序用interrupt关键字来定义。
2、普通子程序:是一个大型程序中的某部分代码,由一个或多个语句块组成。
以上就是关于请问单片机中断程序内可以调用外部子程序吗全部的内容,包括:请问单片机中断程序内可以调用外部子程序吗、中断服务程序与普通子程序有哪些相同和不同之处、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)