学海荡舟手机网
导航

主页 > 电子设备技术 > 电器电路基础 > > 详细内容

响应中断请求的条件

        一个中断源的中断请求被响应,必须满足以下必要条件:
  
  (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。
  
  (2)该中断源发出中断请求,即该中断源对应的中断请求标志为1。
  
  (3)该中断源的中断允许位=1,即该中断被允许。
  
  (4)无同级或更高级中断正在被服务。
  
  中断响应就是CPU对中断源提出的中断请求的接受。当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。
  
  中断响应的主要过程是首先由硬件自动生成一条长调用指令“LCALL  addr16”。这里的addr16就是程序存储区中相应的中断人口地址。例如,对于外部中断1的响应,硬件自动生成的长调用指令为
  
  生成LCALL指令后,紧接着就由CPU执行该指令。首先将程序计数器PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向响应中断请求的中断人口地址。各中断源服务程序的入口地址是固定的,见下表。
  
  中断入口地址表
  903
  表中,两个中断入口间只相隔8字节,一般情况下难以安放一个完整的中断服务程序。因此,通常总是在中断入口地址处放置一条无条件转移指令,使程序执行转向在其他地址存放的中断服务程序人口。
  
  中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁:
  
  (1)CPU正在处理同级或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态置1(该触发器指出CPU所处理的中断优先级别),从而封锁了低级中断请求和同级中断请求。
  
  (2)所查询的机器不是当前正在执行指令的最后一个机器周期。设定这个限制的目的是只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。
  
  (3)正在执行的指令是RETI或是访问IE或IP的指令。因为按照AT89S51中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。
  
  如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。

相关文章