外部中断扫描矩阵键盘

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

外部中断扫描矩阵键盘

;将4个7段数码显示器显示的内容放在4个显存中,4个显存空间定义如下

LED0 EQU30H

LED1 EQU31H

LED2 EQU32H

LED3 EQU 33H

ORG 0000H

LJMP MAIN

ORG0003H;转入外部中断0服务程序入口

LJMP INP0

ORG0040H

MAIN: MOV SP, #60H

SETB EX0 ;开INT0中断

SETB IT0 ;设置中断触发方式

SETB EA ;开总中断

MOV LED0, #0

MOV LED1, #1

MOV LED2, #2

MOV LED3, #3

START: MOV P0, #00H;使显示器不显示

MOV P2, #0FFH;关闭显示器位选择码目的也是使显示器不显示

MOV A, LED0

LCALL DISP0 ;调用将数值转换为显示段码并在P0端口输出的子程序

CLR P2.0;最后一位七段数码管显示

LCALL DELAY ;少许延时目的是使得数码管更亮

MOV P0, #00H;使显示器不显示

MOV P2, #0FFH ;

MOV A, LED1

LCALL DISP0 ;调用将数值转换为显示段码并在P0端口输出的子程序

CLR P2.1;倒数第二位七段数码管显示

LCALL DELAY

MOV P0, #00H;使显示器不显示

MOV P2, #0FFH ;

MOV A, LED2

LCALL DISP0 ;调用将数值转换为显示段码并在P0端口输出的子程序

CLR P2.2 ;倒数第三位七段数码管显示

LCALL DELAY

MOV P0, #00H;使显示器不显示

MOV P2, #0FFH ;

MOV A, LED3

LCALL DISP0 ;调用将数值转换为显示段码并在P0端口输出的子程序

CLR P2.3;倒数第四位七段数码管显示

LCALL DELAY

LJMP START ;跳回初始位置,使程序循环;;;;;;;;;;;;;;;;;;;;;;;;;;;中断程序

INP0: CLR EA

PUSH PSW

PUSH ACC

PUSH B

JB P2.3, NP2 ;P2.3口输出低电平,扫描K0,K1,K2,K3

SK0: JB P2.4, SK1 ;P2.4为高电平扫描K0

LCALL OPRK0 ;P2.4为低电平执行K0对应子程序

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP ;重新循环扫描

SK1: JB P2.5, SK2

LCALL OPRK1

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SK2: JB P2.6, SK3

LCALL OPRK2

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SK3: JB P2.7, NP2 ;换一次输出位

LCALL OPRK3

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

NP2: JB P2.2, NP3 ;P2.2口输出低电平,扫描K4,K5,K6,K7 SK4: JB P2.4, SK5 ;P2.4为高电平扫描K5

LCALL OPRK4 ;P2.4为低电平执行K5对应子程序

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP ;重新循环扫描

SK5: JB P2.5, SK6

LCALL OPRK5

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SK6: JB P2.6, SK7

LCALL OPRK6

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SK7: JB P2.7, NP3 ;换一次输出位

LCALL OPRK7

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

NP3: JB P2.1, NP4 ;P2.1口输出低电平,扫描K8,K9,KA,KB SK8: JB P2.4, SK9 ;P2.4为高电平扫描K8

LCALL OPRK8 ;P2.4为低电平执行K8对应子程序

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP ;重新循环扫描

SK9: JB P2.5, SKA

LCALL OPRK9

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SKA: JB P2.6, SKB

LCALL OPRKA

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SKB: JB P2.7, NP4 ;换一次输出位

LCALL OPRKB

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

NP4: JB P2.0, SKLOOP;P2.0口输出低电平,扫描KC,KD,KE,KF SKC: JB P2.4, SKD ;P2.4为高电平扫描KC

LCALL OPRKC

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP ;重新循环扫描

SKD: JB P2.5, SKE

LCALL OPRKD

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SKE: JB P2.6, SKF

LCALL OPRKE

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SKF: JB P2.7, SKLOOP ;换一次输出位

LCALL OPRKF

LCALL DELAY1 ;延时去除抖动

LJMP SKLOOP

SKLOOP: POP B

POP ACC

POP PSW

SETB EA

RETI

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;子程序

OPRK0: MOV P1, #00H

SETB P1.0

MOV LED3, #16

相关文档
最新文档