中断响应的条件
发布时间:2016/7/15 21:01:10 访问次数:2054
当中断源发出中断请求信号时, E09A7218A片机并不总能对该中断进行响应,一般来说,单片机能响应中断应注意以下几个方面。
①首先,全局中断使能控制位EA=1。
②某个中断源对应的中断使能控制位有效,即设置相应的中断允许子开关(PX0,PX1,PT0, PT1, PS) 为1。
③如果程序正在执行读/写寄存器IE和IP指令,则执行完该指令后,需要再执行一条其他指令才可以响应中断。
④如果程序正在执行返回指令,则执行完该指令后,需要再执行一条其他指令才可以响应中断,这个特性常用来实现硬件单步执行。
⑤任何正在执行的指令在未完成前,中断请求都不会响应。
⑥考虑中断优先级或者中断嵌套时带来的延时。
中断服务程序的执行
当前面所有的中断响应条件都满足时,处理器在当前指令执行完后的下一个机器周期内,由硬件自动执行一条LCALL指令,跳转到相应的中断服务子程序入口地址去执行中断服务子程序。在80C51单片机中,中断程序的入口地址是固定的,具体见表7.1。
从表7.1中可以发现,两个相邻的中断入口地址很接近,只有8字节,根本放置不了几个代码。在实际应用中,一般都将一个跳转指令GJMP,AJMP)放置入口地址处,从而跳转到其他程序空间去执行较长的中断服务子程序。例如,外部中断0:
oRG 0003H
LJMP INT EX0
当中断源发出中断请求信号时, E09A7218A片机并不总能对该中断进行响应,一般来说,单片机能响应中断应注意以下几个方面。
①首先,全局中断使能控制位EA=1。
②某个中断源对应的中断使能控制位有效,即设置相应的中断允许子开关(0,1,PT0, PT1, PS) 为1。
③如果程序正在执行读/写寄存器IE和IP指令,则执行完该指令后,需要再执行一条其他指令才可以响应中断。
④如果程序正在执行返回指令,则执行完该指令后,需要再执行一条其他指令才可以响应中断,这个特性常用来实现硬件单步执行。
⑤任何正在执行的指令在未完成前,中断请求都不会响应。
⑥考虑中断优先级或者中断嵌套时带来的延时。
中断服务程序的执行
当前面所有的中断响应条件都满足时,处理器在当前指令执行完后的下一个机器周期内,由硬件自动执行一条LCALL指令,跳转到相应的中断服务子程序入口地址去执行中断服务子程序。在80C51单片机中,中断程序的入口地址是固定的,具体见表7.1。
从表7.1中可以发现,两个相邻的中断入口地址很接近,只有8字节,根本放置不了几个代码。在实际应用中,一般都将一个跳转指令GJMP,AJMP)放置入口地址处,从而跳转到其他程序空间去执行较长的中断服务子程序。例如,外部中断0:
oRG 0003H
LJMP INT EX0
上一篇:串口中断优先级设置位
上一篇:中断服务子程序的编写