中断系统的运行必须与中断服务子程序配合才能正确使用。设计中断服务子程序需要首先明确以下几个问题。
中断服务子程序设计的任务
中断服务子程序设计的基本任务有下列4条:
(1)设置中断允许控制寄存器IE,允许相应的中断请求源中断。
(2)设置中断优先级寄存器IP,确定并分配所使用的中断源的优先级。
(3)若是外部中断源,还要设置中断请求的触发方式IT1或IT0,以决定采用电平触发方式还是跳沿触发方式。
(4)编写中断服务子程序,处理中断请求。
前3条一般放在主程序的初始化程序段中。
举例如下:例1、假设允许外部中断0中断,并设定它为高优先级中断,其他中断源为低优先级中断,采用跳沿触发方式。在主程序中可编写如下初始化程序段:
采用中断时的主程序结构
由于各中断人口地址是固定的,而程序又必须先从主程序起始地址OOOOH执行。所以,在OOOOH起始地址的几个字节中,要用无条件转移指令,跳转到主程序。另外,各中断人口地址之间依次相差8字节,中断服务子程序稍长就超过8字节,这样中断服务子程序就占用了其他的中断入口地址,影响其他中断源的中断处理。为此,一般在进入中断后,利用一条无条件转移指令,把中断服务子程序跳转到远离其他中断入口的人口地址处。
常用的主程序结构如下: