中断优先级控制及中断保护
学生: 何绍金
学号:201203870408
专业班级:自动化1202
指导老师: 杨东勇
20##年12月
一、实验目的
1、掌握单片机中断机制。
2、熟悉中断的应用和编程。
二、实验设备
统一电子开发平台。
三、实验要求
连接单片机最小系统和发光二极管阵列的电路并编写程序,学习单片机中断机制,及中断优先级和中断保护的方法,使用独立式按键B 连接INT0(P3.2),按键F 连接INT1(P3.3),在平时状态下,发光二极管行以200ms 的时间间隔,依次点亮。B 键按下时INT0 中断处理程序点亮P0.0 对应的发光管2秒钟,其他发光管熄灭;F 键按下时P0.1 对应发光管点亮2秒,其他发光管熄灭。
四、实验原理
实验板8051芯片有四级中断优先级的14个中断源。通过几个寄存器来设置4级中断。通过IE, IP, IPH,AUXIE,AUXIP, AUXIPH, XICON和TCON。
1.中断源
表1列出了所有的中断源,使能位被允许,中断请求时硬件会产生一个中断请求标志。当然,总中断使能位EA( IE 寄存器)必须使能。中断请求位能由软件置1或清零, 这和硬件置1或清零结果相同。同理,中断可以由软件产生或取消中断向量地址表示中断服务程序的入口地址。
2. 与中断相关的寄存器
下面是中断过程中的相关特殊功能寄存器IE(地址A8H, 中断使能寄存器, 复位值=0x00,0000B)
EA: 总中断使能位. EA = 0, 禁止所有中断. EA = 1, 使能所有中断
ET2: 定时器2 中断使能.
ES: 串口 中断使能
ET1: 定时器1 中断使能
EX1: 外部中断1 使能.
ET0: 定时器0 中断使能 EX0: 外部中断0 使能.
IP (地址B8H,中断优先级寄存器, 复位值=xx00,0000B)
PT2: 定时器2 中断优先级位.
PS: 串口 中断优先级位.
PT1: 定时器1 中断优先级位.
PX1: 外部中断1 优先级位.
PT0: 定时器0 中断优先级位.
PX0: 外部中断0 优先级位.
IPH (地址B7H, 中断 优先级高位寄存器, 复位值=0000,0000B)
PX3H: 外部中断3 优先级位, H.
PX2H: 外部中断2 优先级位, H.
PT2H: 定时器2 中断优先级位, H.
PSH: 串口 中断优先级位, H.
PT1H: 定时器1 中断优先级位, H.
PX1H: 外部中断1 优先级位, H.
PT0H: 定时器0 中断优先级位, H.
PX0H: 外部中断0 优先级位, H.
AUXIE (地址ADH, 辅助中断使能寄存器, 复位值=xx00,0000B)
EKB: 键盘 中断使能位.
ES2: UART2 中断使能位.
EBD: 欠压检测 中断使能位.
EPCA: PCA 中断使能位.
EADC: ADC 中断使能位.
ESPI: SPI 中断使能位.
AUXIP (地址AEH,辅助中断优先级寄存器, 复位值=xx00,0000B)
PKB: 键盘 中断优先级位.
PS2: UART2 中断优先级位.
PBD: 欠压检测 中断优先级位.
PPCA: PCA 中断优先级位.
PADC: ADC 中断优先级位.
PSPI: SPI 中断优先级位.
AUXIPH (地址AFH, 辅助中断优先级高位寄存器, 复位值=xx00,0000B)
PKBH: 键盘 中断优先级位, H
PS2H: UART2 中断优先级位,H
PBDH: 欠压监测 中断优先级位,H.
PPCAH: PCA 中断1 优先级位, H.
PADCH: ADC 中断 优先级位,H.
PSPIH: SPI 中断0 优先级位, H.
XICON (地址C0H, 外部中断 控制寄存器, 复位值=0000,0000B)
PX3: 外部中断3 优先级位.
EX3: 外部中断3 使能位.
IE3: 外部中断3 中断标志.
IT3: 外部中断3 类型控制位. 1: 边沿触发; 0: 电平触发.
PX2: 外部中断2 优先级位.
EX2: 外部中断2 使能位.
IE2: 外部中断2 中断标志.
IT2: 外部中断2 类型控制位. 1: 边沿触发; 0: 电平触发.
TCON (地址88H, 定时/计数器 控制寄存器, 复位值=0000,0000B)
IE1: 外部中断1 请求标志. 外部中断1 由边沿或电平触发(由IT1设置)硬件置标志.
IT1: 外部中断1 类型控制位. 软件选择下降沿/低电平触发外部中断1.
IE0: 外部中断0 请求标志. 外部中断0 由边沿或电平触发(由IT0设置)硬件置标志.
IT0: 外部中断0 类型控制位. 软件选择下降沿/低电平触发外部中断0.
3.中断使能
通过设置寄存器 IE, AUXIE 和 XICON能对每个中断进行使能和禁止操作.需注意IE中有个总中断允许位EA.EA 置‘1’所有中断的使能和禁止由单独的设置位决定. EA被清‘0’, 所有中断被禁止.
4.中断优先级
中断优先级设置和80C51相同, 除了有四级中断优先级比80C51多两级.优先级位(参见 表 19-1) 决定每个中断的优先级.
表 2, 外部中断0 中断优先级设置, 通过不同的设置组合决定中断优先级.
表 2. 外部中断0 的四级优先级
5.中断响应
每个机器周期都会采样中断标志位. 如果没有下列阻止条件. 前一个指令周期中产生中断标志位置位,接下来的指令周期中将以LCALL调用中断服务程序,下列几种情况将LCALL指令锁定:
1. 另一个高优先级的中断正在处理.
2. 当前机器周期不是正在执行的指令的最后一个机器周期.
3. 正在执行指令RETI 或正在写和中断相关的寄存器( IE或IP寄存器).
6.外部中断
外部中断源包括 /INT0, /INT1, /INT2 和 /INT3, 外部中断能被任意的低电平触发或下降沿触发, 通过设置寄存器TCON 和 XICON中的位 IT0, IT1, IT2和 IT3. ITx= 0, INTx管脚被拉低将触发中断。 ITx = 1,INTx管脚上的下降沿将触发中断。中断被触发后将置位TCON、XICON中的IE0、IE1、IE2 、IE3。如果中断被激活这些标志在进入中断服务程序后被硬件清除。如果中断是电平触发,外中断源必须有效,直到中断被响应,在执行完中断服务程序前,此有效中断必须被清除。
7. 单步运?
80C51的中断结构允许使用很少的软件开销来实现单步运行.如前所述,在正在执行相同或更高优先级的中断的时候中断请求是不会被响应的,直到运行完当前中断服务程序后至少再执行一条以上的指令.因而, 如果一个中断服务程序正在执行,这不能被其他中断重入, 直到当前中断服程序被执行完后至少再执行一条以上的指令. 下面是一个电平触发的外部中断(e.g., INT0)的使用实例.代码如下:JNB P3.2,$ ;等待直到INT0变高JB P3.2,$ ;等待直到INT0 变低RETI ;服务序结束并执行一条指令当前INT0引脚(P3.2)保持低状态,CPU进入外部中断0服务程序等待INT0的引脚上有脉冲产生(从低到高再到低).然后执行RETI指令, 跳回被中断的程序执行一条指令,然后再次进入外部中断 0 中断服务程序等待引脚P3.2上再次产生一个脉冲.这样就是在引脚P3.2上每产生一个脉冲程序步进一条指令,这样就实现了单步操
8.原理图
五、实验思考题
1. 分析51 单片机的中断运行的机制,它具有那些中断,对应的中断矢量地址是什么?中断使能位是什么?
答:外部中断0:入口:0003H 定时器0: 入口:000BH
外中断1: 入口:0013H 定时器1: 入口:001BH
串口中断:入口:0023H
2. 各中断源的硬件优先级的顺序是怎样的?哪个寄存器能够控制单片机中断源的优先级怎样控制?
答:8051 对于各种中断优先权采用双层结构,首先对于优先权可由中断优先权寄存器、设定该中断为高优先权或低优先权,高优先权可以中断低优先权,但是当优先权相同时(都为高优先权或低优先权),则由内部的轮询顺序决定哪一个中断被接受
附:实验源代码:
;********************ASM汇编实验*******************
; 工程:
; 晶振: 11.0592M
;*************************************************
//#include "REG_MPC82G516.INC" /* 如果用到MPC82G516的特殊寄存器请包含这个头文件 */
ORG 0000H
AJMP MAIN ;跳至主程序。
ORG 03H ;外部中断0中断向量地址。
AJMP INT0_SUB
ORG 13H ;外部中断1中断向量地址。
AJMP INT1_SUB
ORG 0030H
MAIN:
;使能INT0,INTl。
MOV IE,#10000101B ;使能INT0,INTl
MOV TCON,#00000101B ;设INT0、INTl负缘触发。
MOV IP,#01H ;中断0优先
MOV SP,#30H ;将堆栈移至30H。
NOP
START: MOV P1,#0FEH ;(注意16进制数A--F前要加0)
MOV A,P1
ACALL DELAY200MS ;调用延时子程序,以使观察LED的状态
LOOP1: RR A
MOV P1,A
ACALL DELAY200MS ;调用延时子程序,以使观察LED的状态
ACALL DELAY200MS ;
ACALL DELAY200MS
AJMP LOOP1
DELAY2S:
MOV R2,#0AH
DEL_1: ACALL DELAY200MS
DJNZ R2,DEL_1
RET
DELAY200MS:
;延迟200ms子程序。
MOV R1,#014H
DEL_0: ACALL DELAY10ms
DJNZ R1,DEL_0
RET
DELAY10ms:;延迟10ms子程序。
MOV R5,#0BH
DEL_2: MOV R3,#0EFH
DEL_3: MOV R4,#09H
DJNZ R4,$
DJNZ R3,DEL_3
DJNZ R5,DEL_2
RET
;DELAY10MS程序占用时钟周期为:[2+(2+4*9+4)*0XEF+4]*11=110484
;一个时钟周期是:T=1/11059200s,故延迟时间为:114084*T=9.990234375ms
INT0_SUB:
;1NT0中断子程序。
CLR EA ;清除中断
ACALL DELAY10ms ;延迟10ms
JNB INT0,HAVEKEY0 ;确认有键
SETB EA ;开启全局中断
RETI
HAVEKEY0:
PUSH PSW ;保存寄存器数据。
PUSH ACC
SETB RS0 ;选择寄存器库1
CLR RS1 ;选择寄存器库1
SETB EA ;开启全局中断
MOV P1,#0FEH
ACALL DELAY2S
POP ACC ;取出保存寄存器数据。
POP PSW
RETI
INT1_SUB:
;1NT1中断子程序。
CLR EA ;清除中断
ACALL DELAY10MS ;延迟
JNB INT1,HAVEKEY1 ;确认有键
SETB EA ;开启全局中断
RETI
HAVEKEY1:
PUSH PSW ;保存寄存器数据。
PUSH ACC
SETB RS1 ;选择寄存器库1
CLR RS0 ;选择寄存器库1
SETB EA ;开启全局中断
MOV P1,#0FDH
ACALL DELAY2S
POP ACC ;取出保存寄存器数据。
POP PSW
RETI
END
中断优先级控制及中断保护实验报告
-自动化1003 李世平201003120311
一、工作原理:USB 线连接开发板,电源开关S1 打到usb 位置;J5 跳针跳到1*4 位置,按键B 对应INT0 (P3.2), 按键 F 连接 INT1 (P3.3),在平时状态下,发光二极管行以600ms 的时间间隔,依次点亮。B 键按下时INT0 中断处理程序点亮LED4 对应的发光管2 秒钟,其他发光管熄灭;F 键按下时LED5 对应发光管点亮 2 秒,其他发光管熄灭。
电路原理图
二、程序清单
ORG 0000H
AJMP MAIN 跳至主程序
ORG 03H 外部中断0中断向量地址
AJMP INT0_SUB
ORG 13H 外部中断1中断向量地址
AJMP INT1_SUB
ORG 003H
MAIN:
MOV IE,#10000101B 使能INT0,INT1
MOV TCON,#00000101B 设INT0,INT1负缘触发
MOV IP,#01H 中断0优先
MOV SP,#30H 将堆栈移至30H
START:
MOV P1,#0FEH
MOV A,P1
ACALL DELAY200MS 调用延时子程序,以使观察LED的状态
LOOP1:
RR A
MOV P1,A
ACALL DELAY200MS
ACALL DELAY200MS
ACALL DELAY200MS
AJMP LOOP1
DELAY2S: 延时2S子程序
MOV R2,#0AH
DEL_1:
ACALL DELAY200MS
DJNZ R2,DEL_1
RET
DELAY200MS: 延时200MS子程序
MOV R1,#014H
DEL_0:
ACALL DELAY10MS
DJNZ R1,DEL_0
RET
DELAY10MS: 延时10MS子程序
MOV R5,#0BH
DEL_2:
MOV R3,#0EFH
DEL_3:
MOV R4,#09H
DJNZ R4,$
DJNZ R3,DEL_3
DJNZ R5,DEL_2
RET
INT0_SUB:
CLR EA 清楚中断
ACALL DELAY10MS 延时10ms
JNB INT0,HAVEKEY0 确认有键
SETB EA 开启全局中断
RETI
HAVEKEY0:
PUSH PSW 保存寄存器数据
PUSH ACC
SETB RS0 选择寄存器组1
CLR RS1
SETB EA 开启全局中断
MOV P1,#0FEH
ACALL DELAY2S
POP ACC
POP PSW 取出保存寄存器数据
RETI
INT1_SUB:
CLR EA 清楚中断
ACALL DELAY10MS 延时10ms
JNB INT1,HAVEKEY1 确认有键
SETB EA 开启全局中断
RETI
HAVEKEY1:
PUSH PSW 保存寄存器数据
PUSH ACC
SETB RS1 选择寄存器组2
CLR RS0
SETB EA 开启全局中断
MOV P1,#0FDH
ACALL DELAY2S
POP ACC
POP PSW 取出保存寄存器数据
RETI
END
三、分析51单片机的中断运行机制,它具有哪些中断,对应的中断矢量地址是什么?中断使能位是什么?
1、中断运行机制:当MCS-C51单片机的CPU正在处理某件事情的时候,单片机外部或内部发生的某一时间请求CPU立即去处理,于是,CPU暂时中止当前的工作,转到终端服务处理程序处理所发生的事件。中断服务处理程序处理完该事件后,再回到原来被中止的地方,继续原来的工作。
2、具有7个中断:
(1)00H 复位:当 9 脚RESET 为高电平,CPU 会跳至地址00H 处开始执行程序,亦即程序一定要从地
址00H 开始写起。
(2)03H(外部中断0):当 INT0 引脚由高电位变至低电位时,CPU 会接受外部中断0,并跳至地址 03H
处去执行中断子程序。
(3)0BH(计时/计数器0 中断):当CPU 接受计时/计数器0 中断置位而产生中断要求时,会跳至地址0BH
处去执行中断子程序。
(4)13H(外部中断 1):当 INTl 引脚由高电位变至低电位时,CPU 会接受外部中断 1,并跳至地址 13H
处去执行中断子程序。
(5)1BH(计时/计数器 1 中断):当CPU 接受计时/计数器 1 中断置位而产生中断要求时,会跳至地址1BH 刻去执行中断子程序。
(6)23H(串行中断1):当串行端口传送数据或接收数据完毕时,CPU 会接受串行中断,并跳至地址23H
处去执行中断子程序。
(7)2BH(计时/计数器2 中断):当CPU 接受计时/计数器2 产生中断要求时,会跳至地址2BH 处去执行中断子程序。此中断仅8052 系列才有。
3、中断使能位:8051 针对中断提供两层使能,第一层为EA 全局使能控制,第二层为分别控制EX0,ET0、EXl、ETl、ES、ET2。当 8051 在初始状态时,寄存器的各个中断使能位都预设为 “0”,即所有中断都禁止,故欲允许中断时,应先使能相对应的中断。
四、各中断源的硬件优先级的顺序是怎么样的?哪个寄存器能控制单片机中断源的优先级?怎么控制?
1、8051 对于各种中断优先权采用双层结构,首先对于优先权可由中断优先权寄存器(Interrupt Priority IP)设定该中断为高优先权或低优先权,高优先权可以中断低优先权,但是当优先权相同时(都为高优先权或低优先权),则由内部的轮询顺序决定哪一个中断被接受。
2、IP 寄存器: PS PT1 PX1 PT0 PX0
PX0,PX1:外部中断0,1 的中断优先级控制;1->高优先级,0->低优先级。
PT0,PT1:定时器/计数器0,1 的中断优先级控制;
PS:串行口中断优先级控制。
P 中对应位全为零时,CPU 按照片内硬件优先级来顺序响应中断:
五、试回答为什么在中断里需要重新设置寄存器组
因为高优先级的中断可以打断正在执行的低级中断,转向持行高级中断。这就是所谓的中断的中断。高级中断的程序,会改变低级中断正在使用的寄存器,所以需要重新设置寄存器组。
实验三定时器中断实验一实验目的1掌握51单片机定时器基本知识2掌握定时器的基本编程方法3学会使用定时器中断二实验内容1利用定时器设…
中断试验试验报告班级电信1001姓名张贵彬学号20xx46830213一实验目的1掌握PC机中断处理系统的基本原理2学会编写中断服…
实验报告一中断处理姓名xxxx学号xxxx班级xxxxx一实习内容运用某种高级语言如C或C模拟时钟中断的产生及设计一个对时钟中断事…
中断优先级控制及中断保护学生学号20xx03870408专业班级自动化1202指导老师杨东勇20xx年12月一实验目的1掌握单片机…
实验十一8259A中断实验一实验目的1学习80868088与8259A的连接与控制方法掌握其工作原理2完成程序设计题学会编写中断服…
实验八INTn中断实验4课时综合实验实验日期20xx1211学校安徽农业大学经济技术学院星期三节次12实验课时姓名江珊珊学号专业班…
单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
中断及其优先级实验一实验目的1了解C51单片机中断以及中断优先级概念2掌握利用单片机中断编写相应的单片机程序二实验内容通过AT89…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
实验1超声波测距并用液晶显示一实验目的1掌握AVR单片机IO口定时器的运用2掌握超声波测距原理与应用3掌握液晶显示器1602的使用…