Download presentation
Presentation is loading. Please wait.
1
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
2
4.1 中断的概念 4.1.1 中断的概念 主程序 (一)中断 在计算机系统中,中断是指CPU在执行某段程序的过程中,由于某一事件发生时,要求CPU暂时停止正在执行的程序,而去执行相应的处理程序,待处理结束后,再返回到原来程序停止处继续执行。 中断处理程序 中断源 处理程序 断点
3
4.1 中断的概念 4.1.1 中断的概念 (二)中断处理与子程序调用的区别
4.1 中断的概念 4.1.1 中断的概念 (二)中断处理与子程序调用的区别 调用哪个子程序、完成什么任务是用户设计程序时事先安排好的,是采用子程序调用指令实现的; 中断事件发生是随机的,哪个事件发生、何时调用中断处理程序是事先无法确定的,在程序中无法事先安排调用指令,调用中断处理程序的过程是由硬件自动完成的。
4
中断处理与子程序调用的区别 主程序 主程序 中断处理程序 子程序 中断源 调用 CALL SUB 断点 断点
5
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断系统是指实现中断响应和处理的所有硬件和软件,它包括中断源的产生、中断判优、中断响应、中断查询、中断处理等过程。
6
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断源:
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断源: (1)计算机系统的外部设备某一事件发生,向CPU请求中断;被控设备某个参数超过限位阈值,向CPU请求中断等。 (2)计算机内部的某个事件发生,如定时/计数器溢出、串行口接收到或发送完一帧数据等。 (3)计算机发生了故障引起中断,如系统电源掉电、运算器运算溢出、系统出错等事件发生,向CPU申请中断。 (4)人为设置中断。用户在编程和调试时人为设置的中断事件,如单步执行、设置断点。
7
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断触发及中断请求登记:
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断触发及中断请求登记: 当一个事件发生了,该中断源触发了中断,中断系统通过硬件把这个中断源对应的中断触发器置1,以此向CPU发出请求,即中断登记。CPU通过检测中断触发器的状态是否为1来识别是哪一个中断源发出了请求。
8
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断优先级:
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断优先级: 在中断系统中,按照轻重缓急的原则给每一个中断源分配一个中断CPU的优先级。 当多个中断源同时向CPU发出请求,通过判断中断优先级——中断判优,优先响应中断优先级最高的中断源的请求,待CPU处理完优先级最高的中断请求后,再依次按优先级顺序响应其它中断源的中断请求。
9
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 满足条件时,CPU响应中断之前需要做的准备: (1)关中断; (2)保护断点;
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 满足条件时,CPU响应中断之前需要做的准备: (1)关中断; (2)保护断点; (3)取中断处理程序的入口地址,转入中断处理程序。
10
用户程序 4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 CPU进行中断处理: (1)保护现场; (2)中断处理
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断处理程序的流程 CPU进行中断处理: 用户程序 (1)保护现场; (2)中断处理 (根据处理预案编写的程序); (3)恢复现场; (4)开中断,中断返回。
11
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断嵌套处理 中断嵌套的处理
12
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断嵌套时的低优先级中断处理程序 中断嵌套时的低优先级中断处理程序流程图
13
4.1 中断的概念 中断系统应具备以下功能: 4.1.2 CPU响应和处理中断的机制 (1)实现中断与返回;
4.1 中断的概念 4.1.2 CPU响应和处理中断的机制 中断系统应具备以下功能: (1)实现中断与返回; (2)能够对中断请求按优先级响应; (3)能实现中断嵌套处理。
14
4.1 中断的概念 中断处理过程示意 该中断源 允许中断CPU? 检查优先级 中断处理程序 登记 中断标志 中断源 CPU 开放中断?
4.1 中断的概念 中断处理过程示意 登记 中断标志 中断源 CPU 开放中断? 该中断源 允许中断CPU? 开放 允许 检查优先级 CPU不会响应 未开放 CPU不会响应 不允许 不满足 满足响应条件 ? 中断处理程序 响应中断 响应中断 保护断点 关中断
15
4.1 中断的概念 4.1.3 中断技术的作用 (1)解决了快速CPU和低速外部设备之间的速度匹配问题,使CPU和外设同时工作;
4.1 中断的概念 4.1.3 中断技术的作用 (1)解决了快速CPU和低速外部设备之间的速度匹配问题,使CPU和外设同时工作; (2)可以实现实时处理; (3)可以实现突发故障的及时自动处理; (4)可以实现多任务资源共享。
16
4.2 MCS-51中断系统的结构 硬 件 查 询 中 中 中 断 断 断 优 控 标 先 制 志 级 硬 件 查 询
17
4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志 MCS-51单片机中断标志位分别由2个特殊功能寄存器存储:
(1)定时/计数器控制寄存器(TCON)。 (2)串行口控制寄存器(SCON)。
18
4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志 (一 ) 定时器控制寄存器(TCON)
定时/计数器控制寄存器TCON锁存外部中断请求标志以及定时/计数器的计数溢出标志。TCON的地址88H,寄存器中各位的位地址为88H~8FH。 TIMER 1 TIMER 0 INT1 INT0
19
4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志 (1)外部事件中断请求标志位
IE0为外部事件中断 的中断请求标志位 IE1为外部事件中断 的中断请求标志位。 外部事件中断可以由电平触发或跳变触发, 中断触发的方式取决于TCON寄存器中IT0和IT1的设定。 (2)定时/计数器溢出标志位 TF0为定时/计数器T0的计数溢出标志位, TF1定时/计数器T1的计数溢出标志位。
20
4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志 (二)串行口控制寄存器(SCON)
串行口控制寄存器SCON锁存串行口发送缓冲器的发送结束标志和接收缓冲器的接收到数据标志,不论哪个中断标志有效,都会触发串行口中断。SCON的地址98H,各位的位地址位:98H~9FH。 发送完 接收到
21
4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志 (1)TI串行口发送中断请求标志位
当串行口发送缓冲器发送完一帧数据后,由硬件自动把TI置1,以此向CPU请求中断。 (2)RI串行口接收中断请求标志位 当串行口接收缓冲器接收完一帧串行数据后,由硬件把RI置1;以此向CPU请求中断。 注意:在CPU响应中断时,标志位TI 和RI不被自动清0,必须由用户在中断处理程序中用软件清0,否则,CPU将会陷入响应中断和中断处理当中,造成数据帧的丢失。
22
4.2 MCS-51中断系统的结构 4.2 MCS-51中断系统的结构 4.2.1 MCS-51单片机的中断标志
由于串行口接收和发送共享一个中断源,无论是发送结束标志TI还是接收到数据标志RI被置1,都会产生串行口中断请求。 在双工通信时,为了辨别哪一个触发了中断,必须首先在中断处理程序中检测TI和RI的状态,然后清除标志位(TI或RI),再进行相应的中断处理。
23
4.2 MCS-51中断系统的结构 4.2.2 MCS-51单片机的中断控制 MCS-51单片机的中断控制分为2级
第一级通过5个中断允许控制位来确定屏蔽或者允许某个中断源的中断请求。 第二级通过1个控制位来确定CPU开放或禁止中断。中断允许寄存器IE(Interrupt Enable Register)用来保存这些中断允许控制位。 IE寄存器的地址为0A8H,寄存器中各位的位地址为0A8H ~0AFH。
24
4.2 MCS-51中断系统的结构 4.2.2 MCS-51单片机的中断控制 (1)CPU中断控制位:EA
(2)外部中断允许控制位: EX0、 EX1 (3)定时/计数器溢出中断允许控制位: ET0、ET1 (4)串行中断允许控制位:ES 当该位设置为1时,允许,指令 SETB BIT 当该位设置为0时,禁止, 指令 CLR BIT
25
4.2 MCS-51中断系统的结构 1 1 1 1 MCS-51单片机的中断控制由用户通过设定中断允许寄存器IE来实现,如单片机开放中断,允许外部事件INT1中断、定时/计数器T0溢出中断和串行口中断。 设定程序如下: MOV IE, # B 或: SETB EA; CPU开放中断 SETB EX1; 允许中断 SETB ET0; 允许定时/计数器溢出中断 SETB ES; 允许串行口中断
26
4.2 MCS-51中断系统的结构 4.2.3 MCS-51单片机的中断优先级
当多个中断源同时请求中断,或者CPU正在处理一个中断,又有了新的中断请求,怎么办? MCS-51单片机的处理原则是: (1)多个中断源同时向CPU请求中断时,首先响应高优先级中断源的中断请求; (2)高优先级中断请求可以中断低优先级的中断处理,从而实现中断嵌套。低优先级中断请求不能中断高优先级或相同优先级的中断处理。
27
4.2 MCS-51中断系统的结构 4.2.3 MCS-51单片机的中断优先级
中断优先级寄存器IP寄存器的地址0B8H,寄存器中各位的位地址为0BFH~0B8H。 (1)PX0为外部事件中断的优先级设定位; (2)PT0为定时/计数器T0的溢出中断优先级设定位; (3)PX1为外部事件中断的优先级设定位; (4)PT1为定时/计数器T1的溢出中断的优先级设定位; (5)PS为串行口中断的优先级设定位。
28
4.2 MCS-51中断系统的结构 4.2.3 MCS-51单片机的中断优先级 相同优先级时的中断优先级 High Low
29
4.2 MCS-51中断系统的结构 MCS-51中断系统的中断响应条件 4.2.4 MCS-51单片机的中断响应及处理过程
MCS-51单片机的CPU响应中断请求是有条件的,如果此时不存在下列3种情形: (1)CPU正在处理相同优先级或高级优先级的中断。 (2)当前的机器周期不是指令的最后一个机器周期。 (3)正在执行的指令是RETI、或者是访问特殊功能寄存器IE或IP的指令。 CPU响应中断请求,立即产生一个硬件调用,使程序转移到相应的中断处理程序入口地址处,调用中断处理程序。 MCS-51中断系统的中断响应条件
30
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程
CPU响应中断请求时,根据中断源的优先级,中断系统把相应的高优先级触发器或低优先级触发器置1,以封锁相同优先级和低级优先级的中断请求; 然后由硬件调用把当前程序计数器PC的内容(即断点)压入堆栈保护,并且把相应的中断处理程序入口地址装入程序计数器PC,使程序转移到这个中断处理处。MCS-51单片机各个中断源的中断处理程序入口地址是固定的。
31
MCS-51单片机各中断源的中断处理程序入口地址
32
4.2 MCS-51中断系统的结构 CPU自动完成 4.2.4 MCS-51单片机的中断响应及处理过程
33
INT0 T0 INT1 TI 串行口 1 IE0=1 0003H 000BH 0013H 001BH 0023H 中断处理程序
34
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程 中断处理过程
35
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程
(1)中断查询是在每个机器周期是重复进行的。当一个中断标志位置1,但没有被CPU响应,这个中断标志位是不会被保持的。每一个机器周期总是查询的是上一个机器周期新采样得到的中断标志位状态。
36
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程
(2)由于2个中断入口地址之间只有8个单元,在实际应用时,通常在入口地址处安排一条无条件转移指令,把中断处理程序存放在程序存储器的其它区域。 另外,如果不使用中断处理,最好在中断入口地址所在单元放置RETI指令,以免由于干扰或其他因素意外触发中断导致程序“跑飞”的现象发生,使程序能够安全地返回到断点处继续运行。
37
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程
(3)子程序返回RET指令也可以使中断处理程序返回到断点处,但是,它不能告知CPU中断处理已经结束。因此,CPU依然处于中断处理的状态。如果是处理高优先级中断,CPU只响应一次中断,而且屏蔽其它所有的中断请求。
38
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程
(4)MCS-51单片机CPU响应中断时,自动进行了置位高或低优先级触发器、保护断点、装入中断入口地址到PC等操作,并没有关中断的操作。 为了防止高优先级中断响应干扰现场保护和恢复,中断嵌套处理时,低优先级中断处理程序应按下列顺序处理:关闭中断、保护现场、开中断、中断处理、关中断、恢复现场、开中断、中断返回。
39
4.2 MCS-51中断系统的结构 4.2.4 MCS-51单片机的中断响应及处理过程 MCS-51单片机中断嵌套处理
时的低优先级中断处理程序
40
4.3 外部事件中断及应用 4.3.1 外部事件中断 (一) 触发方式
4.3 外部事件中断及应用 4.3.1 外部事件中断 (一) 触发方式 MCS-51单片机提供2个外部事件中断源,外部事件中断的请求(触发)信号由INT0(或INT1 )引脚引入单片机的中断系统,中断触发方式既可以为电平触发方式,也可以为跳变触发方式,通过软件设置寄存器TCON中的触发方式控制位IT0和IT1实现。 若ITx(x=0,1)为0,则外部事件中断为电平触发方式,由INTx引脚上的低电平触发中断。 指令: CLR ITx 若ITx(x=0,1)为1,则外部事件中断为跳变触发方式,即在INTx引脚上出现负跳变时触发中断。 指令:SETB ITx
41
4.3 外部事件中断及应用 4.3.1 外部事件中断 (一) 触发方式
4.3 外部事件中断及应用 4.3.1 外部事件中断 (一) 触发方式 在使用外部事件中断源时,中断触发信号必须与触发方式协调一致,使产生中断触发信号的电路满足以下要求: (1)电平触发方式时,引脚上的中断请求信号必须保持足够长的时间,直到中断实际发生为止,否则,会丢失中断请求。中断触发信号低电平的维持时间也不能太长,在CPU响应中断,进入子程序后,即可撤除本次中断请求信号。 (2)跳变触发方式时,在中断引脚上的高电平和低电平保持时间必须不少于1个机器周期。
42
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤:
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤: 在主程序中断系统初始化时,完成以下设置 : (1)设置外部事件中断请求信号的触发方式: 电平触发:CLR ITx,跳变触发方式:SETB ITx (2)开放CPU中断:SETB EA (3)设置外部事件中断允许控制位:SETB EX0或 SETB EX1 (4)如果有中断嵌套处理,设置中断源的优先级。 设置外部事件中断源为高优先级:SETB PX0 或 SETB PX1
43
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤 在主程序中,对中断系统初始化时,也可以采用下列形式设置中断允许控制位和中断源的优先级: MOV IE,#ENABLE MOV IP,# PRIORITY
44
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤:
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 外部事件中断源的初始化及中断处理程序编程步骤: 要求中断处理是中断源请求中断CPU工作的目的, 中断处理程序是用户根据处理外部事件的具体要求而 设计的程序。 (1)若有1个中断优先级,中断处理程序结构图(P33) (2)若有2个中断优先级,低优先级中断源的中断处理程序结构图(P38),高优先级中断源的中断处理 程序结构图(P33)
45
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 例:P1口为输出口,外接8个指示灯L0~L7。系统工作时,指示灯L0~L7逐个被点亮。在逐个点亮L0~L7的过程中,当开关K被扳动时,则暂停逐个点亮的操作,L0~L7全部点亮并闪烁10次。闪烁完成后,从暂停前的灯位开始继续逐个点亮的操作。
46
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (1)主程序 ORG 0000H
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (1)主程序 ORG 0000H LJMP MAIN ;转移到主程序 ORG 0003H LJMP INT_PRO ;中断处理程序入口 ORG 0030H MAIN: MOV SP, #70H ;开辟堆栈区 SETB IT0 ;外部事件中断的触发方式 SETB EA ;开放CPU中断 SETB EX0 ;允许INT0中断CPU CLR PX0 ;设置优先级 MOV A, #01H ;显示控制码初值, ROT_DIS: MOV P1, A ;输出显示
47
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (1)主程序
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (1)主程序 ACALL DLY ;延时 RL A ;产生下1个显示控制码 AJMP ROT_DIS ;延时子程序 DLY: MOV R7, #100 DEL1: MOV R6, #200 DEL0: NOP NOP DJNZ R6, DEL0 DJNZ R7, DEL1 RET
48
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (2)中断处理程序 ORG 0300H
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (三)外部事件采用跳变触发方式请求中断 (2)中断处理程序 ORG 0300H INT_PRO: PUSH ACC ;保护现场 PUSH PSW MOV R5, # ;闪烁次数 CONT: MOV A, #0FFH ;全部点亮 MOV P1, A ACALL DLY MOV A, #00H ;全部熄灭 MOV P1, A ACALL DLY DJNZ R5, CONT ;闪烁10次完否? POP PSW ;恢复现场 POP ACC RETI END
49
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 例:P1.0~P1.3为输出,外接指示灯L0~L3,P1.7~P1.4为输入,外接开关K0~K3,欲采用外部中断控制方式实现按开关K0~K3闭合状态分别控制指示灯L0~L3的状态,按钮开关每闭合1次,使外部中断触发一次,程序改变1次指示灯的显示状态。
50
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (1)主程序: ORG 0000H
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (1)主程序: ORG H STAR: AJMP MAIN ORG H ;外部事件0中断入口地址 AJMP ExtInt ;转到中断处理程序 ORG H MAIN: MOV SP,#70H ;设置堆栈区 CLR IT ;电平触发方式 SETB EX ;允许外部事件0中断源中断 SETB EA ;开放CPU中断允许 CLR PX ;设置中断优先级,只有一个中断源,可以省略 HERE: AJMP HERE ;模拟执行很长的程序
51
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (2)中断处理程序:
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (2)中断处理程序: ORG 0200H ExtInt: PUSH ACC ;在程序中修改了累加器A的内容,入 ;栈保护,就本题可省略, CLR P ;产生置位D触发器的信号,Q输出高 ;电平1,撤除中断请求 MOV A, #0F0H MOV P1, A ;置P1.4~P1.7为输入 MOV A, P ;读P1.4~P1.7引脚状态,即开关状态 ANL A, #0F0H ;屏蔽低半字节,提取开关K0~K3 ;的闭合状态
52
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (2)中断处理程序:
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (四)外部事件采用电平触发方式请求中断 (2)中断处理程序: CPL A ;以下2步为产生指示灯控制信息, ; P1.0~P1.3为1时,对应的指 SWAP A ;示灯亮,开关闭合时,引脚输入 ;为0,故取反 MOV P1, A ;输出控制信息, SETB P ;使P3.1变为1,使触发器输出Q受 ; CLK控制,新的外部中断请求信 ;号可向单片机申请中断。 POP ACC ;恢复现场 RETI ;中断返回
53
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (五)同时使用2个外部中断源
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (五)同时使用2个外部中断源 例:P1口为输出口,外接8个指示灯L0~L7。要求实现下面的要求: (1)系统工作时,指示灯L0~L7以3个指示灯为一组循环显示; (2)当S1按下时,暂时中断3灯循环方式,熄灭全部指示灯,从指示灯L0开始逐个点亮并保持,直至全部L0~L7全部点亮,然后熄灭,重复上述过程5次后退出,继续3灯循环显示模式。 (3)当S2按下时,暂时中断3灯循环方式,全部指示灯L0~L7闪烁显示10次后退出,继续3灯循环显示模式。
54
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (五)同时使用2个外部中断源 同时使用2个外部中断源的单片机应用系统
55
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (五)同时使用2个外部中断源 (1)2个外部中断源具有相同的优先级
4.3 外部事件中断及应用 4.3.2 外部事件中断源的应用 (五)同时使用2个外部中断源 (1)2个外部中断源具有相同的优先级 (2) 2个外部中断源具有不同的优先级
56
主 程 序 2个外部中断源具有相同的优先级——主程序 ORG 0000H LJMP MAIN ORG 0003H
LJMP Pint ;第一个中断源的中断处理程序入口 ORG 0013H LJMP Pint ;第二个中断源的中断处理程序入口 ORG 0030H MAIN: MOV SP,#60H SETB IT0; 跳变触发方式 SETB IT1; 跳变触发方式 MOV IE, #85H ;CPU开放中断,允许 和 中断 MOV IP, #00H ;2个中断源为低优先级 MOV A,#07H ;1组3个指示灯显示控制码初值 CONT: MOV P1,A ;输出控制LED ACALL DELAY ;延时 RL A ;显示控制码移位 SJMP CONT 主 程 序
57
2个外部中断源具有相同的优先级——中断处理1
程 序 1 ; 中断源的中断处理程序: ORG 0100 Pint0: PUSH ACC ; ;保护现场 PUSH PSW SETB RS0 ;把工作寄存器区切换到1区,避免中断处理程序影响主程序中工作寄存器R0~R7的内容 MOV R1, #05 ;设置循环次数 CONT1: CLR A ;产生显示控制码 MOV P1, A; ; LED全熄灭 ACALL DELAY ;延时 MOV R2,#01H ;循环初值 MOV R3,#01H ;显示控制码初值 CONT2: MOV A,R3 ;取显示控制码 MOV P1,A ;输出控制LED MOV A,R ;取循环码 RL A ;循环码移位 MOV R2,A ;循环码暂存 ORL A, R ;产生下次显示控制码 MOV R3,A ;暂存显示控制码 MOV A,R2 XRL A,#01;8个LED显示完,异或结果为0 JNZ CONT2 ;8个LED未显示完,继续 DJNZ R1,CONT1 ;该模式显示完否? POP PSW ;恢复现场 POP ACC RETI ;中断返回
58
2个外部中断源具有相同的优先级——中断处理2
ORG 0200H Pint1: PUSH ACC 保护现场 PUSH PSW SETB RS ;把工作寄存器区切换到1区,避免中断处理程序影响主程序中工作寄存器R0~R7的内容 MOV R1,#10 CONT3: CLR A ;产生LED全熄灭显示控制码 MOV P1, A ;输出控制 ACALL DELAY ;延时 MOV A,#0FFH ;产生LED全亮显示控制码 MOV P1,A ;输出控制 ACALL DELAY ;延时 DJNZ R1,CONT3 ;循环控制 POP PSW ;恢复现场 POP ACC RETI ;中断返回 中 断 处 理 程 序 2
59
2个外部中断源具有不同的优先级——主程序 ORG 0000H LJMP MAIN ORG 0003H LJMP Pint0
MAIN: MOV SP,#60H SETB IT ; 跳变触发方式; SETB IT ; 跳变触发方式 MOV IE, #85H ;CPU开放中断,允许 和 中断 MOV IP, #04H ;中断源为低优先级, 为高优先级 MOV A,#07H ; 1组3个指示灯显示控制码初值 CONT: MOV P1,A ;输出控制LED ACALL DELAY ;延时 RL A ;显示控制码移位 SJMP CONT
60
2个外部中断源具有不同的优先级——低优先级中断处理程序
ORG 0100 Pint0: CLR EA ;关中断 PUSH ACC ; PUSH PSW SETB EA ;开中断 SETB RS ;把工作寄存器区切换到1区,避免中断处理程序 ;影响主程序中工作寄存器R0~R7的内容 MOV R1,#05 ;设置循环次数 CONT1: CLR A ;产生显示控制码 MOV P1, A ;输出控制LED全熄灭 ACALL DELAY ;延时 MOV R2,#01H; ;循环初值 MOV R3,#01H ;显示码初值 CONT2: MOV A,R ;取显示控制码 MOV P1,A ;输出控制LED ACALL DELAY ;延时 MOV A,R ;取循环码 RL A ;循环码移位 MOV R2,A ;循环码暂存 ORL A,R ;产生下次显示控制码 MOV R3,A ;暂存显示控制码 MOV A,R2 XRL A,# ;8个LED显示完,异或结果为0 JNZ CONT2 ;8个未显示完,继续 DJNZ R1,CONT1 ;这种显示模式5次显示完否? CLR EA ; 关中断 POP PSW ;恢复现场 POP ACC SETB EA ;开中断 RETI ;中断返回
61
2个外部中断源具有不同的优先级——高优先级中断处理程序
ORG 0200H ; Pint1: PUSH ACC ;; PUSH PSW SETB RS1 ;把工作寄存器区切换到2区,避免中断处理程序影响主程序和低优先级程序中工作寄存器R0~R7的内容 CLR RS0 ; MOV R1,#10 ;设置循环次数 CONT3: CLR A ;产生LED全熄灭显示控制码 MOV P1, A ;输出控制 ACALL DELAY; 延时; MOV A,#0FFH ;产生LED全亮显示控制码 MOV P1, A ;输出控制 ACALL DELAY ;延时; DJNZ R1,CONT3 ;循环控制 POP PSW ;恢复现场 POP ACC RETI ;中断返回
62
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 如果系统中有多个外部事件,可以采用中断源共享的方法,使多个中断源共同使用MCS-51单片机的2个外部事件中断源。
63
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 例:在电梯运行过程中,有以下几种情况需要电梯控制系统立即处理:
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 例:在电梯运行过程中,有以下几种情况需要电梯控制系统立即处理: (1)当测速传感器检测到电梯失速时,要求控制系统立即切断控制回路电源; (2)当电梯运行到接近底层和顶层时,安装在电梯轿箱上撞弓装置撞击到强迫减速开关时,控制系统应强制电梯强制减速运行。 (3)当电梯强制减速后仍然不能停车,当上限限位和下限限位开关有效时,应切断整个电梯系统的电源。
64
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 例:在电梯运行过程中,有以下几种情况需要电梯控制系统立即处理:
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 例:在电梯运行过程中,有以下几种情况需要电梯控制系统立即处理: (4)当发生意外情况时,按下紧急停止按钮,电梯紧急制动停车。 (5)当电路欠压时或电网电压波动时,为了避免控制回路误动作,应切断控制回路电源,电梯紧急制动停车。 (6)曳引电机过载时,应进行过载保护,应切断控制回路电源,电梯紧急制动停车。
65
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 外部事件中断源的扩展电路
66
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 主程序(中断处理初始化部分): ORG 0000H LJMP MAIN
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 主程序(中断处理初始化部分): ORG 0000H LJMP MAIN ORG 0003H LJMP P_INT0 ORG 0013H LJMP P_INT1 ORG 0030H MAIN: MOV SP, #60H ;开辟栈区 CLR IT0 ;设置电平触发方式 CLR IT1 ;设置电平触发方式 SETB EA ;开放CPU中断 SETB EX0 ;允许中断 SETB EX1 ;允许中断 SETB PX0 ;置中断为高优先级 CLR PX1 ;置中断为高优先级 LOOP: …… ;主处理程序 LJMP LOOP
67
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 中断处理程序 P_INT0: PUSH ACC
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 中断处理程序 P_INT0: PUSH ACC PUSH PSW ;切断整个系统电源 POP PSW POP ACC RETI P_INT1: CLR EA;关中断 PUSH ACC ;保护现场 PUSH PSW SETB EA ;开中断 JNB P1.4, ForSwitch ;转强制换速处理 JNB P1.3, SpdSwitch ;失速处理 JNB P1.2, VoltSwitch ;电源故障处理 JNB P1.1, OvLodSwitch ;电机过载处理 JNB P1.0, EmSwitch ;急停按钮处理 RETURN: CLR EA ;关中断 POP PSW ;恢复现场 POP ACC SETB EA ;开中断 RETI ;中断返回
68
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 中断处理程序 ForSwitch: 强制换速处理 AJMP RETURN
4.3 外部事件中断及应用 4.3.3 外部事件中断源的扩展 中断处理程序 ForSwitch: 强制换速处理 AJMP RETURN SpdSwitch: 失速处理 VoltSwitch: 电源故障处理 OvLodSwitch: 电机过载处理 EmSwitch: 急停按钮处理
69
4.4 总结 在CPU在执行某段程序的过程中,由于某种原因,要求CPU暂时停止正在执行的程序,而去执行相应的处理程序,待处理结束后,再返回到原来程序停止处继续执行,这个过程称为中断。 CPU响应中断请求调用中断处理程序的过程与主程序调用子程序主要区别在于:子程序调用是用户设计程序时事先安排好的,是采用子程序调用指令实现的;而中断事件发生是随机的,调用中断处理程序的过程是由硬件自动完成的。
70
4.4 总结 MCS-51单片机具有5个中断源:2个外部事件中断( 和 )、2个定时/计数器计数溢出中断和1个串行口中断。它们可以分为2个中断优先级,可以实现2级中断嵌套。CPU对中断采用2级管理,用户可以根据需要来设定CPU是否开放中断,而且每个中断源都可以独立地设定为允许和禁止中断请求。每个中断源的优先级可以独立地设定为高优先级或低优先级。
71
4.4 总结 CPU响应中断请求是有条件的,如果此时不存在下列3种情形: (1)CPU正在处理相同优先级或高级优先级的中断;
(2)当前的机器周期不是指令的最后一个机器周期; (3)正在执行的指令是RETI、或者是对寄存器IE或IP的写入操作指令。 则CPU立即响应中断请求,直接转移到相应的中断处理程序入口地址处,进行中断处理。
72
4.4 总结 MCS-51单片机的外部事件中断的请求(触发)信号由 ( 或 )引脚引入单片机的中断系统,中断触发方式可以为电平触发方式,也可以为跳变触发方式,通过软件设置寄存器TCON中的触发方式控制位IT0和IT1实现。
73
4.4 总结 若外部事件中断为电平触发方式时, 引脚的低电平必须保持到CPU响应该中断时为止,并且必须在本次中断处理返回以前变为高电平,撤除本次中断请求信号,否则,如果中断请求信号没有撤除,中断返回后又再次响应该中断,CPU将陷入无休止的中断响应和中断处理当中。外部事件中断为跳变触发方式时,在 引脚上出现负跳变时,则硬件置位中断请求标志IE0或IE1,发出中断请求。CPU响应中断时,自动把中断请求标志清0,撤除本次中断请求。
74
本章内容介绍完毕! 谢谢大家!
Similar presentations