大连理工大学实验报告
实验时间: 年 月 日 星期 时间 : : ~ : 实验室(房间号): 实验台号码: 班级: 姓名: 指导教师签字: 成绩:
实验 三 MCS-51单片机中断系统及外部中断/INT0实验
一、 实验目的和要求
1. 实验目的:学习、掌握单片机的中断原理。正确理解中断矢量入口、中断返回的概
念及物理过程。学习编写软件“防抖程序”,了解软件防抖原理。 2. 实验要求:对/int0、/int1两个外部中断进行编程,其中:
主程序的功能:LDE灯“全亮”、“全灭”交替进行 ----------(状态2); Int0中断服务程序功能:2个相邻的LED灯被点亮且循环左移(状态0); Int1中断服务程序功能:1个LED灯被点亮且循环右移 -----(状态1);
二、 实验内容及步骤
1.INT0、INT1同一优先级运行实验:
保持上电复位时INT0、INT1默认为 “低优先级”的状态,且将SW1、SW2全部事先置于“0”电平(同时申请中断)后,再启动运行程序,按照表1要求填写结果。
表1 :INT0、INT1同一优先级时 运行记录 外部中断信号状态 Int0 0 1 0 0 0 1 Int1 0 0 0 1 0 0 状态0 状态1 状态1 状态0 状态0 状态1 PI口(LED状态)
结论一:INT0、INT1为同一优先级时,同级中断同时申请中断时,CPU按自然优先级
响应,即INT0→T0→INT1→T1→ES;一个中断一旦得到响应,与它同级的中断不能再打断它。
2.将 INT1设定为高优先级(INT0保持为低优先级)的运行实验:
在程序中使用指令将INT1设定为“高优先级”状态,按照表2内容填写结果。
表2:INT1为高优先级(int0保持为低优先级)时运行状态记录 外部中断信号状态 Int0 1 1 0 0 1 0 0 0 Int1 1 0 0 1 1 1 0 1 状态2 状态1 状态1 状态0 状态2 状态0 状态1 状态0 PI口(LED状态) 结论二:两个中断都没有申请时程序正常执行主程序,当有中断时,低优先级的中断
响应在执行时可以被高优先级中断所中断;高优先级的中断响应在执行时不会被低优先级中断所中断。
三、 实验电路
四、 实验流程图 设置初始地址 INT0入口 初始化设置: SETB PX1 五、 程序清单
START:
ORG
LJMP ORG LJMP ORG LJMP ORG MOV SETB
0000H START 0003H INT_0 0013H INT_1 0100H SP,#60H EX0
LOOP:
SETB EX1
SETB PX1 SETB EA
MOV TCON,#00H MOV IP,04H MOV A,#00H MOV P1,A CPL A
LCALL DELAY
彩灯连续两个亮,循环左移显示,调用DELAY只有一个彩灯亮,并且循环右移显示,调用进入INT_0子程进入INT_1子程NYY INT1=0? INT0=0? N INT1=0? Y计数器取反并显示 调用DELAY子程N INT_0: RIGHT: INT_1: SJMP LOOP PUSH PSW PUSH ACC LCALL DELAY MOV A,#03H CPL A RR A MOV P1,A LCALL DELAY JNB P3.2,RIGHT LCALL DELAY POP ACC POP PSW RETI
PUSH PSW PUSH ACC LCALL DELAY MOV A,#01H CPL A
LEFT: RL
MOV LCALL JNB LCALL POP POP RETI DELAY: PUSH PUSH MOV DELAY1: MOV DJNZ DJNZ POP POP RET END
A
P1,A DELAY P3.3,LEFT DELAY ACC PSW 01H 02H R1,#00H R2,#00H R2,$
R1,DELAY1 02H 01H
六、实验结果与分析
在主程序执行的任何时候只要有中断都会转去执行中断程序,INT_0中断程序中实现两个相邻的LED灯被点亮且循环左移,INT_1中断程序实现只有一个LED灯亮且循环右移。中断运行状态见表1和表2。
七、实验体会和建议
本次的中断实验程序可分模块编写。先完成主程序中LED灯全亮和全灭的循环显
示,再尝试进入中断,进入中断后再开始编写中断程序,这样可以一边验证一边完善程序。
八、主要仪器设备
名称 Keil软件 DP-51PROC单片机综合仿真实验台 仿真器
型号 备 注 周立功单片机 TKSMonitor 51