37、使用了多个中断的程序,怎样保证系统的运行可靠性?
KF8 提供了 1 级支持和 2 级支持的中断模式, C 语言编译器自动完成中断的现场保护,汇编程序的开发需要手动进行现场数据的保持,可以参照 C 语言的使用内部寄存器 R2-R5,也可以建立变量,主要保护信息为 PCH(JMP CALL 指令的高位地址传递)、 PSW(运算状态)、BANK(数据寄存器分区选择),还有保护常用寄存器,如代码编写使用的 R0、 R1 等。即中断外部使用的资源如果中断代码使用均需要做保护处理。 KF8 中断支持同级保护,对应级别的总中断使能会在进入时清零防止其他中断进入,同时出中断时将使能还原。因此在中断程序中不能操作该总中断的置 1,如同级中断 T0、 T1,代码中优先判断 T0,当执行到 T1 的代码时, T0新中断到来,如果 T1 执行过程或结束时手动将中断使能 AIE 置 1, T0 会直接进入,而 T1 中断全部代码未执行,如出栈,因此 T0 的进入会再次保护的现场实际是 T1 执行的现场,现场缺失会造成代码的执行错误。
|