实验三. 外部中断
一、实验目的
1、熟悉MCS-51指令系统。
2、掌握外部中断技术的基本使用方法
3、掌握中断处理程序的编写方法
4、熟悉接口程序调试方法。
二、实验设备(仪器)
PC 微机一台
三、实验原理
1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)或INT1(P3.3)引入。
2、中断控制原理:
中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。
3、中断响应的过程:
中断响应进入对应中断入口地址,以进入相应中断服务程序。
INT0或INT1端接单次脉冲发生器。P2口接LED字段a~h,P1口接位选,以查看计数结果。
三、实验内容及步骤
1、用Protues设计出外部中断计数器的电路原理图,单片机选用AT89C51,P2口接LED字段a~h,P1口接位选,INTO或INT1接单次脉冲输出端。
2、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着编写外部中断计数器.ASM源程序,进行编译,直到编译无误,生成HEX文件。
3、将HEX文件上载到Protues电路原理图的AT89C51中,并仿真成功。
4、实验电路功能,连续按动单次脉冲产生电路的按键,对单次脉冲进行计数,2个LED数码管(个位与十位)显示其结果。
四、流程图
要求每按下一次单脉冲开关,计数值加1,通过AT89C51单片机的P0端口在2个LED数码管上显示出计数结果的二进制计数值,并编写源程序。
Protues实验仿真工程原理图
实验代码
ORG 0000H
LJMP START
ORG 0003H
LJMP INTT0_EX
ORG 007FH
START:
MOV R0,#0
MOV R1,#0
SETB IT0
SETB EX0
SETB EA
LOOP:
MOV DPTR,#TABLE
MOV A,R0
MOVC A,@A+DPTR
MOV P1,#2
MOV P2,A
MOV A,R1
MOVC A,@A+DPTR
MOV P1,#1
MOV p2,A
ACALL DELAY
LJMP LOOP
DELAY:
MOV R6,#4
D1: MOV R7,#3
DJNZ R7,$
DJNZ R6,D1
RET
INTT0_EX:
INC R0
CJNE R0,#10,UN_EQU
SJMP EXIT_INIT
UN_EQU:
//JNC R0_UND9
//SJMP EXIT_INIT
RETI
R0_UND9:
INC R1
RET
EXIT_INIT:
MOV R0,#0
INC R1
RETI
TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
END
工程文件:
https://download.csdn.net/download/qq_42253057/18810067