当CPU接收到中断请求时,能够根据具体情况来判断是否执行中断请求。若CPU没有更加紧急,更重的任务,则CPU将执行完当前的程序后再执行中断请求。
CPU执行中断请求的过程如下:
首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保存下来,这称为保护断点,由硬件自己执行完成。然后将有关寄存器内容和标志位状态推入堆栈保存下来,这称为保护现场,由用户自己编程完成。保护断点和保护现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复保存寄存器内容和标志位的状态,这称为恢复现场,由用户编程完成。然后再加返回指令 RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点,恢复断点和现场后,CPU再继续执行原程序。中断响应过程结束。
相关知识点:
1.堆栈的进出称为:入栈和出栈;
2.堆栈的操作:只能在栈顶操作,先进后出。即在栈顶插入,在栈顶删除。
3.堆栈的遍历速度较慢,需要全部依次取出,需要独立空间。
中断响应的优先级:
外部中断0(INT0):优先级最高,中断入口地址0003H;
定时/计数器0(T0):优先级第二,中断入口地址000BH;
外部中断1(INT1):优先级第三,中断入口地址0013H;
定时/计数器1(T1):优先级第四,中断入口地址0001BH;
串行口中断:优先级最后,中断入口地址00023H;