【发布时间】:2011-11-14 14:18:41
【问题描述】:
在我的代码中,控制是从中断服务程序跳转到某个 X 函数。执行该 X 函数后,它正在执行重置,因为它不知道应该返回到哪里。您能告诉我从中断服务程序跳转到函数 X 时需要注意哪些寄存器吗?
场景:
Function m() {
Function x();
}
Function x() {
Step1:
Step2:call Function Y();
Step3:
}
Function y() {
Step1:Enable interrupt;
Step2:call function z();
step3:disable interrupt;
}
interrupt() {
Step1:Jump Step 3 of function x();
}
说明:函数 Z 应该在一段时间内执行,所以我使用定时器中断来实现该超时。我在中断服务例程中给出函数 x() 地址的第 3 步,以便在特定时间后控制权将返回(通过更改 PC 地址实现跳转)。
硬件:NEC V850E2 处理器,GHS 编译器。 软件:嵌入式 C。
【问题讨论】:
-
您是说您正在使用 ISR 来“杀死” Z() 的执行,并将控制权恢复到 X()?这很棘手;通常,您需要展开堆栈。或者,您可能想研究 setjmp 和 longjmp。
-
是的,你的理解是正确的..有点棘手,但我必须这样做......
标签: c