一、实验目的
1、掌握外部中断技术的基本使用方法
2、掌握中断处理程序的编写方法
二、实验说明
1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.1)引入,本实验由INT0(P3.2)引入。
2、中断服务的关键:
a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3、中断控制原理:
中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。
4、中断响应的过程:
首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就进行响应一次中断。
INT0端接单次脉冲发生器。P1.0接LED灯,以查看信号反转。
三、实验内容及步骤
1、使用单片机最小应用系统1模块,P1.0接发光二极管,INTO接单次脉冲输出端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 中断.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。
四、流程图及源程序
1、流程图
2、源程序
LED BIT P 1.0
LEDBUF BIT 0
ORG 0000H
LJMP START ;跳至主程序
ORG 000BH
LJMP INTERRUPT ;跳子程序
ORG 0030H
INTERRUPT:
PUSH PSW ;保护现场
CPL LEDBUF ;取反LED
MOV C, LEDBUF
MOV LED, C
POP PSW ;恢复现场
RETI
START: CLR LEDBUF
CLR LED
MOV TCON, #01H ;外部中断0下降沿触发
MOV IE, #81H ;打开外部中断允许位(EX0)
;及总中断允许位(EA)
LJMP $
END
五、思考题
1.简述中断处理的一般过程。
2.脉冲方式如何防止重复响应外中断。