第4节 中断处理过程
推荐给好友
打印
加入收藏
更新于2008-09-05 21:19:14

5.4.1 中断响应

单片机复位后所有中断请求将被禁止。在外设的初始化程序中,对这些外设进行初始化,设置中断优先级。中断优先级可以设置成0、1、2 或3。级别0 的优先级最高,级别1 其次。在执行主程序的时候,CPU 在执行每条指令的最后一个机器周期都会进行中断请求采样。这个过程会产生一个中断请求采样延时,可以看出最大延时发生在如下情况:中断请求信号产生在最长机器周期的指令(DIVU 具有17 个机器时钟周期)的最开始。中断响应时间如图5-2 所示采样到中断请求信号后,如果此时中断请求允许位被设置成允许的话,中断请求将会被送至中断控制器。然后中断控制器就会把该中断的优先级送给CPU,此时如果CPU 处于允许接受中断的状态,它就会暂停当前执行的程序转而去执行中断处理程序。


5.4.2 中断处理


中断处理的操作过程一般按下面的顺序执行:外围中断请求的产生,主程序的执行,中断请求标志位的设定,判断中断请求允许位、中断优先级和中断使能位。中断处理过程如图5-3 所示。

点击查看图片

(1) 复位后所有中断请求将被禁止。在外设的初始化程序中,对这些外设进行初始化,设置中断优先级。中断优先级可以设置成0、1、2 或3。级别0 的优先级最高,级别1 其次,以此类推。
(2)执行主程序
(3)当某个外设的中断被触发时,相应的中断请求标志位将被置“1” 。同时,如果中断请求允许位被设置成允许的话,中断请求将会被送至中断控制器。
(4)中断控制寄存器总是不停地监视各个外设的中断请求,然后把优先级最高的那个送至CPU。
(5)当接收到的中断的优先级大于条件代码寄存器CCR 中的设置时,CCR 中的I 标志位将被置“1”,CPU 接受中断。
(6)当PC 和PS 压入堆栈后,CPU 跳转到中断服务程序入口处转而执行中断处理程序。
(7)最后,CPU 通过RETI 指令结束中断处理,取出PC 和PS,继续执行断点后的程序,准备下一次中断。


5.4.3 中断返回

一旦CPU 接收中断,它在进入中断处理程序之前会自动保存当前的PC 和PS 的值到堆栈中。如图5-4 所示

从中断返回时的堆栈操作:在中断处理程序最后执行RETI 指令后,PS 和PC 的值将从堆栈中读回(读回时候的顺序是和存入时候的顺序相反的)。

 

上一节                    下一节




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.