外部中断实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术系
实验报告
专业名称计算机科学与技术专业
课程名称单片机应用设计
项目名称外部中断实验
班级 14计科一班
学号
姓名
同组人员无
实验日期 2016年4月15日
一、实验目的
熟悉MCS51中断系统的工作原理和编程方法,掌握单片机中断优先级的原理和处理方法,掌握中断系统的应用、实时程序的设计和调试技巧。
二、实验内容
1、将单片机的INT0和INT1分别外接一个独立按键,要求 INT0设置为下降沿触发,INT1设置为低电平触发,并且为高优先级。
2、对每次的按键动作进行计数,要求分别显示在 LED 数码管上,并确保每次按键过程中只识别一次按键动作。
三、实验原理图
四、连线说明
五、演示程序
;------------功能描述------------
;外部中断0下降沿触发计数 0-60,由K1按下实现
;外部中断1低电平触发计数 0-60由K2按下实现
;K3为基准键,K3与K4~K8组合分别控制LED4~LED8 DS_595 EQU P2.2
SHCP_595 EQU P2.1 ;移位寄存器时钟
STCP_595 EQU P2.0 ;存储器时钟
INT_0 EQU P3^2 ;外部中断0
INT_1 EQU P3^3 ;外部中断1
LED EQU P1
KBASE_3 EQU P0^2 ;基键
K_4 EQU P0^3
K_5 EQU P0^4
K_6 EQU P0^5
K_7 EQU P0^6
K_8 EQU P0^7
DIS_DAT EQU 33H ;段选
DIS_ADDR EQU 32H ;位选
COUNT0 EQU 30H ;记按键次数
COUNT1 EQU 31H
;-------------定义地址--------------
ORG 0000H
LJMP MAIN
ORG 0003H ;外部中断0的入口地址
LJMP OUT0
ORG 0013H
LJMP OUT1
;-------------主函数---------------
MAIN:
MOV COUNT0,#0
MOV COUNT1,#0
%SETB INT_0;复位P3.2口重新置位
%SETB INT_1;复位P3.2口重新置位
SETB EX0 ;置1,运行外部中断0产生中断
SETB IT0 ;置1,外部中断0为跳沿触发
SETB PX1
SETB EX1
CLR IT1 ;置0,低电平触发
SETB EA ;置1,CPU开总中断
START:
LCALL DISPLAY
LCALL KEYSCAN
LJMP START
;--------------固定位置送显示-----------
DISPLAY:
;-------------外部中断0按键显示---------
;---------个位
MOV A,COUNT0
MOV B,#10
DIV AB
MOV R1,A
MOV R2,B
MOV DIS_ADDR,#01H
MOV DIS_DAT,R2
LCALL SM_LED
LCALL DELAY
;-------十位
MOV DIS_ADDR,#00H
MOV DIS_DAT,R1
LCALL SM_LED
LCALL DELAY
;-------------外部中断1按键显示----------- MOV A,COUNT1
MOV B,#10
DIV AB
MOV R3,A
MOV R4,B
;---------个位
MOV DIS_ADDR,#03H
MOV DIS_DAT,R4
LCALL SM_LED
LCALL DELAY
;-------十位
MOV DIS_ADDR,#02H
MOV DIS_DAT,R3
LCALL SM_LED
LCALL DELAY
RET
;--------------595输出---------------
OUT_595:
CLR STCP_595 ;存储寄存器输入
NOP ;产生一个上升沿,把数据移入595中
NOP
SETB STCP_595
NOP
NOP
CLR STCP_595
RET
;--------------写595-------------------
WR_595:
MOV R5,#8 ;数码管的8位
LOOP1:
RLC A
MOV DS_595,C ;送数据进595
SETB SHCP_595 ;移位寄存器时钟,根据DATASHEET,送数据进去要一个SCK 时钟周期。
NOP
NOP
CLR SHCP_595
DJNZ R5,LOOP1 ;8位数据是否送完
RET
;--------------延时函数------------------
DELAY:MOV R6,#10
LOOP: MOV R7,#10
DJNZ R7,$
DJNZ R6,LOOP
RET
;--------外部中断0------------------
OUT0:
LCALL DELAY ;延时去抖(过滤下降沿波动)
JB INT_0,NEX
INC COUNT0
MOV A,COUNT0
CJNE A,#60,NEX
MOV COUNT0,#00H