新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 关于单片机中断多优先级的软件扩展方法

关于单片机中断多优先级的软件扩展方法

作者:时间:2013-03-14来源:网络收藏

  POP DPH

  POP DPL

  RETI

  T1: PUSH DPL

  PUSH DPH

  MOV DPTR,#T1RL

  PUSH DPL

  PUSH DPH

  RETI ;(PC)=T1RL,清"高优先级生效"

  触发器,此时可响应其它中断请求

  T1RL: · ;T1子程序的真实入口地址

  ·

  ·

  ·

  POP DPH

  POP DPL

  RETI

  SS: PUSH DPL

  PUSH DPH

  MOV DPTR,#SSRL

  PUSH DPL

  PUSH DPH

  RETI ;(PC)=SSRL,清"高优先级生效"

  触发器,此时可响应其它中断请求

  SSRL: · ;串行口子程序的真实入口地址

  ·

  ·

  ·

  POP DPH

  POP DPL

  RETI

  上述程序利用IP寄存器给出了两级优先级,其中INT0、T0为高优先级,INT1、T1串行口为低优先级。为使某中断能响应同级甚至低级中断,只要在中断服务子程序中用RETI指令清除相应的不可寻址的“优先级生效”触发器即可。程序一开始的两条PUSH指令的作用是对原始数据进行入栈保护(如此时DPTR中的数据不需保留,则这两条压栈指令也可不要,相应的弹栈指令也可不要),然后将其真实子程序入口地址入栈,并经RETI出栈后弹给PC指针,以便在执行完RETI后正确执行真实子程序。当该中断服务子程序执行完毕后,RETI将返回主程序断点处以继续执行原来程序。

  4 结束语

  本文所阐述的多优先级扩展方法是纯软件方法,该方法只需在程序中加入为数不多的相应代码,便可进行各种中断嵌套(如同优先级响应或高优先级响应低优先级等)。此方法的代价是要花费更多的中断响应时间,但相对于添加硬件扩展的方法而言,这点代价还是值得的。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭