5分钟记住51的中断系统

MCS51中断

                                                         --ujslili

1.响应中断条件

1.开中断;EA=1;中断源的IE也为1

2.有中断申请

3.当前并未执行任何中断服务子程序,或者当前中断优先级低

4.当前机器周期恰是当前执行指令的最后一个机器周期,当前指令周期已结束

5.不是RET,IRET,对IE,IP的写

2.中断源

在这里插入图片描述

3.中断寄存器

在这里插入图片描述

为什么又增加了一种沿触发方式呢?

因为使用电平触发方式时,如果 P3.2 脚上申请中断的低电平持续时间很长,在执行完一遍中断服务子程序之后,该低电平仍未撤销,那么还会引起下一次中断申请,甚至若干次中断申请,直至 P3.2 脚上的电平变高时为止。

如果CPU响应了这个中断,则应该清除标志位IE0

  1. 对于边沿触发方式,此时硬件能够自动清IE0

  2. 对于电平触发方式,只有外部中断申请信号变成高电平,才能够自动清除中断标志位。如果CPU暂时不能够响应中断,则 IE0始终为1,表示中断申请有效。

就是中断标志位一直都是1。正常都是用边沿触发

4.中断响应

在这里插入图片描述

为什么响应时间是3-8个机器周期呢?

3个机器周期

  1. 第一个周期:查询中断请求标志位。
  2. 第二三个周期:LCALL指令需要2个周期

所以1+2=3个机器周期

8个机器周期

  1. 两个周期:执行 RET、RETI;有一个查询也在这个里边

  2. 四个机器周期:后面跟着的指令假如是 MUL、DIV
    乘除指令,(四个机器周期)

  3. 两个周期:执行LCALL;

5.中断请求的撤出

在这里插入图片描述

6.中断编程

在这里插入图片描述

                                          --仅供参考,如有不对敬请指正

猜你喜欢

转载自blog.csdn.net/weixin_43475628/article/details/104909917