一、实验目的
1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
二、实验环境
1、Lab6000通用微控制器实验系统。
2、计算机,W A VE 集成调试软件。
三、实验项目
用单次脉冲申请中断,在中断处理程序中对输出信号进行反转控制直流电机转、停。
四、涉及内容
中断服务程序的关键是:
1、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2、必须在中断程序中设定是否允许中断重入,即设置EXO位。
3、选择相应的中断源,并设置中断屏蔽寄存器的相应位。
本实验使用了INTO中断。
一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。
本实验的中断程序保护了PSW寄存器并且在退出前恢复了这个寄存器。
另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。
本实验中没有涉及这种情况。
INTO(P3.2)接单次脉冲发生器。
P1.0接继电器,以查看信号反转。
主程序框图外部中断子程序框图
五、实验步骤、记录和结果
实验电路连线
1、汇编语言
操作步骤如下:
(1)创建一个项目目录:shiyan51。
(2)如实验一的七.2,修改编译器为汇编语言编译器。
(3)执行“新建文件”命令,在开发环境程序窗口中按汇编语言格式输入汇编语言源程序。
将程序文件名取为shiyan51.asm保存到目录“shiyan51”。
Output equ P1.0
OutBuf equ 0
ljmp Start
org 3
Interrupt0:
push PSW ; 保护现场
cpl OutBuf ; 取反LED
连线连接孔1 连接孔2
1 继电器——输入P1.0
2 INT0
单脉冲——
3 继电器——公共端+5V
4 继电器——常闭L0
5 继电器——常开L3
6 继电器——常开直流电机——至D/A
开始
设置初始状态
设置中断控制
寄存器
中断允许
中断入口保护现场状态位取反状态位输出恢复现场
mov c, OutBuf
mov Output, c
pop PSW ; 恢复现场
reti
Start:
setb OutBuf
mov TCON, #01h ; 外部中断0下降沿触发
mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)
ljmp $
end
(4)在“文件”下拉菜单中,执行“新建项目”命令,建立新项目。
在弹出的“加入模块文件”窗口,确定实验程序所在路径,选择“shiyan51”目录中的实验源程序“shiyan51.asm”,并“打开”。
在弹出的“加入包含文件”窗口,选择“取消”。
在弹出的“保存项目”窗口,建立项目文件名shiyan51,选择“保存”到“shiyan51”目录。
(5)执行“编译”命令,对输入的源程序进行编译、连接,如果有错则修改直至没有错误为止。
(6)运行程序,观察程序运行过程。
2、C语言
操作步骤如下:
(1)创建一个项目目录:shiyan52。
(2)如实验一的八.2,修改编译器为C语言编译器。
(3)执行“新建文件”命令,在开发环境程序窗口中按C语言格式输入C语言源程序。
将程序文件名取为shiyan52.c保存到目录“shiyan52”。
#include <reg51.h>
sbit Output = P1^0;
void ExtInt0() interrupt 0
{ static bit OutBuf=1;
OutBuf = !OutBuf;
Output = OutBuf;
}
void main()
{ TCON = 0x01; // 外部中断0下降沿触发
IE = 0x81; // 打开外部中断允许位(EX0)及总中断允许位(EA)
while (1) ;
}
(4)在“文件”下拉菜单中,执行“新建项目”命令,建立新项目。
在弹出的“加入模块文件”窗口,确定实验程序所在路径,选择“shiyan52”目录中的实验源程序“shiyan52.c”,并“打开”。
在弹出的“加入包含文件”窗口,选择“取消”。
在弹出的“保存项目”窗口,建立项目文件名shiyan52,选择“保存”到“shiyan52”目录。
(5)执行“编译”命令,对输入的源程序进行编译、连接,如果有错则修改直至没有错误为止。
(6)运行程序,观察程序运行过程。