nullnull
围绕中断响应条件及过程展开中断系统涉及到的SFR中断的软硬件设计的四个要素一、复习中断的概念二、中断优先级三、图5-2 中断系统的结构四、外中断触发方式及中断请求的撤销五、中断服务程序的设计六、多中断源的系统设计二、89C51的中断优先级二、89C51的中断优先级89C51有两个中断优先级。每个中断请求源均可编程为高优先级中断或低优先级中断。MCS-51的中断系统有两个不可寻址的“优先级激活触发器”:
一个用来指示某高优先级的中断正在执行,所有后来的中断均被阻止。
另一个用来指示某低优先级的中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。
可归纳为下面两条基本规则:
(1)低优先级可被高优先级中断,反之则不能。
(2)同级中断不会被它的同级中断源所中断。两个中断优先级,可实现两级中断嵌套。如图5-6示。用中断优先级寄存器IP设置每个中断源的级别图5-6 二级中断嵌套图5-6 二级中断嵌套CPU在执行主程序低级中
断请求响应低级中断请求CPU执行低级
中断服务程序高级中
断请求响应高级中断请求CPU执行高级
中断服务程序返回低级中断程序返回主程序特殊情况下中断优先级排列顺序特殊情况下中断优先级排列顺序当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。
其优先级顺序排列如下所示。P107中断源 中断级别
外部中断0 最高
T0溢出中断
外部中断1
T1溢出中断
串行口中断 最低null三、图5-2 中断系统的结构null四、外中断触发方式及中断请求的撤销1. 外部中断的触发方式选择(IT0/IT1)
两种触发方式:电平触发方式和跳沿触发方式。适于外中断以低电平输入且中断服务程序能清除外部中断请求的情况。
1.1 电平触发方式
CPU在每个机器周期采样到的外部中断输入线的电平。在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。null1.2 跳沿触发方式
连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置“1”中断请求标志(IE0/IE1),直到CPU响应此中断时,该标志才清0。但输入的负脉冲宽度至少保持1个机器周期。2. 外部中断请求的撤消(1)跳沿方式外部中断请求的撤消是自动撤消的。
(2)电平方式外部中断请求的撤消:
除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,如图5-8所示。null只要P1.0端输出一个负脉冲就可以使D触发器置“1”,从而撤消了低电平的中断请求信号。所需的负脉冲可增加如下两条指令得到:
ORL P1,#01H ;P1.0为“1”
ANL P1,#0FEH ;P1.0为“0”
电平方式的外部中断请求信号的完全撤消,是通过软硬件相结合的方法来实现的。五、中断服务程序的设计五、中断服务程序的设计 1. 中断服务程序设计的任务 (1)设置中断允许控制寄存器IE。
(2)设置中断优先级寄存器IP。
(3)对外中断源,是采用电平触发还是跳沿触发,要设置IT0/IT1。
(4)编写中断服务程序,处理中断请求。
前3条一般放在主程序的初始化程序段中。null 例5-3 假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。
在主程序中编写如下程序段:
SETB EA ;CPU开中断
SETB EX0 ;允许外中断0产生中断
SETB PX0 ;外中断0为高级中断
SETB IT0 ;外中断0为跳沿触发方式 null 2. 采用中断时的主程序结构
常用的主程序结构如下:
ORG 0000H
LJMP MAIN
ORG 中断入口地址
LJMP INT
ORG XXXXH
MAIN: 主 程 序
⋮
SJMP $
INT:中断服务程序
⋮
RETI
ENDnull 3. 中断服务程序的流程 几点说明:
(1)现场保护仅涉及到PSW和A的内容,如还有其它需保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。
(2) “中断处理程序段”,应根据任务的具体要求,来编写。
(3)如果本中断服务程序不允许被其它的中断所中断,可将“中断处理程序段”前后的“开中断”和“关中断”两条去掉。
(4)中断服务程序的最后一条指令必须是返回指令RETI。见例5-4P113null例5-4 典型的中断服务程序如下:
INT: CLR EA ;CPU关中断
PUSH PSW ;现场保护
PUSH ACC ;
SETB EA ;CPU开中断
中断处理程序段
CLR EA ;CPU关中断
POP ACC ;现场恢复
POP PSW
SETB EA ;CPU开中断
RETI ;中断返回,恢复断点 应用举例----关于保护现场应用举例----关于保护现场任务2描述:单片机上电,单灯按1Hz频率循环,一旦按下P3.2所接的按键,发光二极管全亮,2秒钟后,单灯继续原来的循环。1、流水灯的源程序2、流水灯的源程序+中断初始化程序3、中断服务程序及延时子程序4、 用查询程序实现上述任务5、从INT0输入,并采用了去抖动电路。null任务2描述:单片机上电,单灯按1Hz频率循环,一旦按下P3.2所接的按键,发光二极管全亮,2秒钟后,单灯继续原来的循环。1、流水灯的源程序2、流水灯的源程序+中断初始化程序3、中断服务程序及延时子程序4、 用查询程序实现上述任务5、从INT0输入,并采用了去抖动电路。举例:举例:null2、流水灯的源程序+中断初始化程序
ORG 0000H
SJMP MAIN;上电,转向主程序
ORG 0003H;外部中断0入口地址
SJMP INSER;转向中断服务程序
ORG 0030H ;主程序
MAIN: SETB EX0 ;允许外部中断0中断
SETB IT0 ;选择边沿触发方式
SETB EA ;CPU开中断
MAIN1: mov a, #0feh
mov r5, #4
Output: mov p1,a
rl a
call Delay
djnz r5, Output
Ljmp MAIN1
null3、中断服务程序及延时子程序
ORG 0200H
INSER :PUSH P1
MOV P1, #00H
ACALL DEL2S
POP P1
RETI
DEL2S: MOV R4, #20
LLL: ACALL DEL100MS
DJNZ R4, LLL
RET
DEL100MS: ;250×200×2=100000
mov r6, #250
Delay: mov r7, #200
Dela: djnz r7, Dela
djnz r6, Delay
ret
ENDINSER :PUSH P1
MOV B, R7
MOV P1, #00H
ACALL DEL2S
MOV R7, B
POP P1
RETInull ORG 0000H
SJMP MAIN ORG 0030H
MAIN: mov a, #0feh
Output: mov p1,a
rl a
call Delay
jb p1.0, output
mov p1, #00h
acall delay2s
sjmp output
Delay: mov r6, #0
mov r7, #0
Dela: djnz r7, Dela
djnz r6, Dela
ret
Delay2s:
ret
end8位的流水灯+键查询流程图4、 用查询程序实现上述任务nullnull六、多中断源的系统设计1. 多外部中断源系统设计两个外部中断请求源往往不够用。定时器/计数器可作为外部中断源的使用。用中断和查询结合的方法可以扩展中断源。例: 有五个外设IR0~IR4要求单片机以中断的方式响应。最高级别中断请求源IR0接INT0*输入端,其余的外部中断请求源IR1~IR4用“线或”的办法连到MCS-51的另一个外中断源输入端INT0* ,同时还连到P1口。 5个外部中断源的排队顺序依此为:IR0~IR4。null低电平有效的请求高电平有效的请求null ORG 0013H ; INT1的中断入口
LJMP INT1 ;
┇
INT1: PUSH PSW ;保护现场
PUSH ACC
JB P1.0,IR1 ;P1.0高,IR1有请求
JB P1.1,IR2 ;P1.1高,IR2有请求
JB P1.2,IR3 ;P1.2高,IR3有请求
JB P1.3,IR4 ;P1.3高,IR4有请求
INTIR: POP ACC ;恢复现场
POP PSW
RETI ;中断返回 null IR1: IR1的中断处理程序
AJMP INTIR ;
IR2: IR2的中断处理程序
AJMP INTIR ;
IR3: IR3的中断处理程序
AJMP INTIR ;
IR4: IR4的中断处理程序
AJMP INTIR ;null2. 多中断源不同优先级的系统设计举例
任务描述:有两个键K1/K2分别接在INT0/INT1,流水灯的接法如任务2,开始四个灯全亮。当K1按下,进行十圈的间隔为100毫秒的流水灯作业,若此时K2按下,则四个灯全灭2秒,然后继续流水灯。反之,K2先按下,则四个灯全灭2秒;若此时K1按下,则系统不会立即响应。分析:主程序四个灯全亮,中断初始化,INT1的优先级为高级。会有两段中断服务子程序,分别是流水灯十圈和四个灯全灭2秒钟,注意保护现场。null ORG 0000
LJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT11
ORG 0030H
START: SETB PX1 SETB EX0
SETB EX0
SETB EX1
SETB IT0
SETB IT1
SETB EA
MOV P1, #00H
SJMP $null ORG 0100H
INT00: PUSH P1
MOV R3, #10
LL2 : MOV R4, #4
LL1: MOV A, #0FEH
MOV P1, A
RL A
ACALL DEL100MS
DJNZ R4, LL1
DJNZ R3, LL2
POP P1
RETI ORG 0200H
INT11: PUSH P1
MOV 20H, R3
MOV 21H, R4
MOV P1,#0FH
ACALL DEL2S
MOV R3, 20H
MOV R4, 21H
POP P1
RETIDEL100MS:
RET
DELS:
RET
END作业 2009-10-22作业 2009-10-22P117 2,5,8,11,12
简述89C51单片机的中断响应过程。