中断响应需要满足的条件?
- 有中断请求;
- CPU开放中断,即EA=1;
- 对应的中断源允许中断;
- 无同级或更高级中断正在服务;
- 当前的指令周期已经结束;
- 执行了指令RETI或访问IE、IP后又执行了一条指令。
解析:#
这六个条件中,前三个条件是基本条件,满足前三个条件,中断就会响应;但是后三个条件没有满足的话,中断会受阻延迟执行。
即如果中断响应满足基本条件,需要对中断标志位时,若CPU正在执行同级或更高级的中断服务,则需要等待原中断执行完毕才可响应;
如果中断满足基本条件,但中断标志采样不是执行指令的最后一个周期,同样需要等待执行到最后一个指令周期才可响应;
如果指令周期刚好在执行RETI(返回)或者读写IE、IP时需要执行一条其他指令中断才能响应
AT89S51单片机中各个中断源的响应是如何撤销的?
-
定时/计数器溢出中断:响应后硬件自动撤除
-
串行口中断:软件编程撤除
-
外部中断
边沿触发:硬件自动撤除
电平触发:软硬结合撤除
解析:#
对于定时器引起的中断,CPU做出中断响应之后会自动将中断标志位TF0/TF1置位为0,从而实现中断撤销。
串行口中断得到响应之后不会对中断标志位RI/EI置0,需要采用指令对中断标志位置0.
外部中断INT0/INT1的撤销。取决于TCON当中中断触发方式控制位IT0/IT1的不同,包括低电平触发和下降沿触发。
CPU对中断进行响应之后会对外部中断标志位IE0/IE1进行复位,如果用下降沿触发,则下降沿已经过去,中断响应得到撤销;如果此时对应为低电平触发,则要撤销外部中断请求,必须在中断响应之后将外部中断上的低电平改为高电平。单片机的结构上讲, CPU不能直接控制INT0/INT1引脚,因此需要硬件配合软件来解决。
网友评论