单片机中断程序时必须考虑中断服务程序的调用和返回,一般使用堆栈方式进行保存现场。中断程序需要记忆:将被调用的寄存器保存到堆栈中,中断返回前从堆栈中恢复这些寄存器的值。在编写中断程序时,还须注意中断处理过程结束后对各个寄存器的使用情况,避免因对寄存器的误用而引起其他异常。
当多个中断同时产生时,优先级高的中断程序先得到执行。在单片机中,一般使用中断控制器对多个中断进行优先级划分,以避免因中断冲突而导致系统不能正常运行。在设置中断优先级时,需要对中断来源及其重要性有较为详细的了解,保证系统的稳定性与可靠性。
此外,在设置中断优先级时,还要注意中断程序执行完毕后需要考虑中断嵌套问题,避免出现多个中断嵌套的情况。
单片机中断程序需要在指定时间内准确响应中断请求,一般要求反应时间不能超过10微秒。因此,在编写中断程序时,要特别注意减少处理时间及提高程序的运行效率。当中断请求过于频繁时,也要根据中断事件的源头所需时间作出其他处理方式,避免因中断响应时间过长而导致系统故障。
在单片机中断程序中经常需要使用到全局变量,用于通知ISR中断服务程序和主程序之间的信息。由于其被共享,因此,在编写中断程序时需特别注意对全局变量的访问方式,防止因数据竞争而导致错误的结果。一般在设立全局变量时,应给出访问方式的约束,以提高程序的可靠性和可维护性。