用软件方式灵活设置AT89系列单片机的多中断优先级并实现多级中断嵌套的一种方法(2)
作者:佚名; 更新时间:2014-12-05
(2)定时/计数器T0中断在同中断优先级上具有次高级中断优先权,所以在该中断被响应后,一方面要保证在执行T0中断服务程序过程中不能再被更低级的中断请求再次中断,即不能被外部中断INT1、定时/计数器T1中断及串行口中断等中断请求再次中断,因此,在T0中断服务程序前必须加入屏蔽低级中断请的设置指令,另一方面又要保证在执行T0中断服务程序过程中可以被更高级的中断请求再次中断,即可以被外部中断INT0再次中断,因此在T0中断服务程序前还必须用一条中断优先级重置指令,将其自身(这里指T0中断)的中断优先级设置成原中断系统中的低中断优先级,具体方法见多中断优先级设置程序模式。另外,还要在进入中断服务前,模拟一次中断返回,以便将相应的不可寻址的中断优先级状态触发器复位,为给响应该中断优先级上的高级中断请求扫清道路[1]。从多中断优先级设置程序模式中可以看到,在T0中断服务程序和中断返回指令之间还有四条与上述设置指令功能恰好相反的指令,其目的是恢复T0中断原来所处的中断优先级和中断屏蔽状态。
(3)外部中断INT1中断、定时/计数器T1中断及串行口中断的中断服务程序前后也按方法(2)做类似处理,具体方法见多中断优先级设置程序模式。
3 多中断优先级设置程序模式
AT89C51单片机五个中断优先级的软件设置程序模式如下:
MAIN:……
MOV IP,#FFH ;将所有中断源置成高中断优先级
MOV IE,#FFH ;中断开放
……
INT0SP:…… ;外部中断INT0中断服务程序
RETI
T0SP:CLR EX1;屏蔽外部中断INT1
CLR ET1;屏蔽定时/计数器T1中断
CLR ES ;屏蔽串行口中断
LCALL ICCRT;模拟中断返回
CLR PT0;置T0中断为低中级优先级
…… ;定时/计数器T1中断服务程序
SETBPT0;恢复T0中断为高中断优先级
SETBES ;允许低级中断
SETB ET1 ;允许定时/计数器T1中断
SETB EX1 ;允许串行口中断
ICCRT:RETI
INT1SP:CLRET1
CLRES
LCALLICCRH
CLR PX1
……;外部中断INT1中断服务程序
上一篇:计算机病毒的技术分析及防范
热门论文