请问单片机中断程序内可以调用外部子程序吗?

请问单片机中断程序内可以调用外部子程序吗?,第1张

理论上可以。

但实际时,由于你的主程序调用和中断的调用可能同时发生,

这样可能会出现:

1)函数重入:变量、寄存器数值被改变,原来调用的程序得不到正确的执行结果;

2)堆栈混乱。。。

中断服务子程序不能直接调用,因为它们是特殊的程序,它们的功能是在 *** 作系统中运行,而不是在应用程序中运行。它们可以在 *** 作系统中执行特定的任务,比如处理系统中的中断,但是它们不能直接被应用程序调用。因此,如果要调用中断服务子程序,必须使用 *** 作系统提供的特殊接口,这些接口可以让应用程序调用中断服务子程序。

一、主体不同

1、调用中断服务程序:可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的。

2、调用子程序:是指调用子程序的指令,包括调用指令(转子指令)和返回指令(返主指令)。

二、特点不同

1、调用中断服务程序:当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作。

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

三、方式不同

1、调用中断服务程序:保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。

2、调用子程序:把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令。

参考资料来源:百度百科-子程序调用指令

参考资料来源:百度百科-中断服务程序


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

原文地址: http://outofmemory.cn/yw/11211118.html

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

发表评论

登录后才能评论

评论列表(0条)

保存