PICC中主程序和中断调用同一个子程序的问题

来源:本站
导读:目前正在解读《PICC中主程序和中断调用同一个子程序的问题》的相关信息,《PICC中主程序和中断调用同一个子程序的问题》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PICC中主程序和中断调用同一个子程序的问题》的详细说明。
简介:PICC中主程序和中断调用同一个子程序的问题,在汇编中,中断和主程序是可以调用同一个子程序的,在PICC中如果要在中断和主程序中调用同一个子程序,详解可见文章内容。

#pragma interrupt_level 1

void function (void)

{

}

然后在中断函数那写句

#pragma interrupt_level 1

void interrupt(void)

{

function();

}

void main (void)

{

function();

}

程序中出现重入现象是错误的。PICC具有的重入保护可以防止这种现象的出现。

换言之,在PIC架构的单片机中,楼主的做法是错误的。主程序和中断程序是不允许调用同一子程序的。

比如子程序A,在主程序中被调用,这时发生中断,该子程序又在中断程序中被调用,这时就发生程序重入。在别的构造的单片机中,如果堆栈可以扩展,则重入问题可以解决,但PIC的堆栈的层数固定,重入会引起地址返回出错,也就是程序出错。

如果在主程序调用子程序A之前先把中断屏蔽了,等执行完了之后再恢复。

这样就不会发生重入的错误吧。。这样可否在主程序和中断中调用同一个子程序?

主程序调用的A程序中,用到的临时变量,跟主程序中的临时变量可以覆盖;而中断程序调用A程序时出现的临时变量,也会产生重入冲突。

本来事情可以很简单的,比如要执行A程序,在主程序中可以调用,而在中断程序中可以设一个标志位,出中断后,在合适的时机,主程序检测到标志位的变化,也可以完成A程序的执行

提醒:《PICC中主程序和中断调用同一个子程序的问题》最后刷新时间 2024-03-14 01:08:30,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PICC中主程序和中断调用同一个子程序的问题》该内容的真实性请自行鉴别。