外部中断实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档