AT89S52单片机中断分为四个阶段:中断采样、中断查询、中断响应、中断返回。执行中断时,必须满足以下三个条件: (1) 中断源有中断申请; (2) 此中断源的中断允许位为1; (3) CPU开中断,即总开关EA=1; 1.中断采样 中断采样针对外部中断请求信号而言,在 S5P2对相应引脚采样,根据其电平状态高/低,判断相应的中断请求。 2.中断查询 在每个机器周期的S5P2后,由硬件自动地去查询相应的中断标志位,先查询高级中断,再查询低级中断,同级中断按内部中断优先级顺序查询。如果查询到有中断标志位为1,则表明有中断请求发生,接着从相邻的下一个机器周期的S1状态开始进行中断响应。 3.中断响应 CPU响应中断时,先置位相应的优先级激活触发器,封锁同级和低级的中断。然后程序根据中断源的类别,在硬件的控制下转向相应的中断入口单元,执行中断服务程序。 中断响应的过程如图所示。 图 中断响应过程 4.中断返回
中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,把响应中断时所置位的优先级激活触发器清0,然后从堆栈中弹出两个字节内容(断点地址)装入程序计数器PC中,CPU就从原来被中断处重新执行被中断的程序。 5. 中断的响应时间
中断响应时间是指从查询中断请求标志位开始到转向中断矢量地址所需的机器周期数。响应中断的时间依中断请求发生的情况不同有长有短,因此,AT89S52单片机发生中断的时间根据中断类型和中断执行的方式不同而不同。 外部中断和的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被查询电路查询。如果产生了一个中断请求,而且满足响应的条件,CPU响应中断,查询中断请求标志位,同时这个周期恰好是指令的最后一个周期,则在这个机器周期结束后,中断请求被CPU 响应,产生一条硬件自动生成的长调用指令LCALL,以使CPU转到相应的服务程序入口。这条指令需两个机器周期,故最少需三个机器周期。 若在中断查询时正好开始执行RET、RETI或访问IE、IP,则需当前指令完成后再继续执行一条指令,才进行中断响应。RET、RETI用2个机器周期,MUL、DIV 4个机器周期,LCALL 2个机器周期,共需要8个机器周期 因此,在系统中只有一个中断源的情况下,响应时间总是在三个机器周期到八个机器周期之间。 |