汇编矩阵键盘程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法一、
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV P1,#0F0H //P1口设初值F0,矩阵按键高四位置1,低四位置0,
JNB P1.4,Y0 //用JNB检测按键端口,P1.4口低电平跳转 Y0
JNB P1.5,Y1
JNB P1.6,Y2
JNB P1.7,Y3
SJMP MAIN
Y0:
MOV 30H,#00H
MOV P1,#0EFH
JNB P1.4,X0
MOV P1,#0DFH
JNB P1.4,X1
MOV P1,#0BFH
JNB P1.4,X2
MOV P1,#07FH
JNB P1.4,X3
Y1:
MOV 30H,#01H
MOV P1,#0EFH
JNB P1.0,X0
MOV P1,#0DFH
JNB P1.1,X1
MOV P1,#0BFH
JNB P1.2,X2
MOV P1,#7FH
JNB P1.3,X3
Y2:
MOV 30H,#02H
MOV P1,#0EFH
JNB P1.0,X0
MOV P1,#0DFH
JNB P1.1,X1
MOV P1,#0BFH
JNB P1.2,X2
MOV P1,#7FH
JNB P1.3,X3
Y3:
MOV 30H,#03H
MOV P1,#0EFH
MOV P1,#0DFH
JNB P1.1,X1
MOV P1,#0BFH
JNB P1.2,X2
MOV P1,#7FH
JNB P1.3,X3
X0:
MOV 31H,#00H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X1:
MOV 31H,#01H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X2:
MOV 31H,#02H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X3:
MOV 31H,#03H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN JISUAN:
MOV A,31H
MOV B,#04H
MUL AB
ADD A,30H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CC:
MOV A,P1
ANL A,#0F0H
XRL A,#0F0H
JNZ CC
LCALL MAIN DELAY: MOV R4,#0C5H
D1: MOV R5,#43H
D0: MOV R6,#10H
DJNZ R5,D0
DJNZ R4,D1
RET
TAB: DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 DB 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
方法二、
ORG 0000H
LJMP START
KEYSBUF EQU 30H
ORG 0100H
START:MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H
XRL A,#0F0H
JZ START
LCALL DELAY
MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H
XRL A,#0F0H
JZ START
MOV P1,#0FEH //第0行置0
CLR P1.0
MOV A,P1
ANL A,#0F0H //与逻辑,高位保留
CJNE A,#0E0H,K1 //高四位为1110,数字0亮
MOV KEYSBUF,#0
LJMP DISPLAY
K1: CJNE A,#0D0H,K2 // 高四位为1101,数字1亮MOV KEYSBUF,#1
LJMP DISPLAY
K2: CJNE A,#0B0H,K3// 高四位为1011,数字2亮MOV KEYSBUF,#2
LJMP DISPLAY
K3: CJNE A,#070H,K4 //高四位为0111,数字3亮MOV KEYSBUF,#3
LJMP DISPLAY
K4: MOV P1,#0FDH //第1行置0
MOV A,P1
ANL A,#0F0H
CJNE A,#0E0H,K5 //高四位为1110,数字4亮
MOV KEYSBUF,#4
LJMP DISPLAY
K5: CJNE A,#0D0H,K6 // 高四位为1101,数字5亮MOV KEYSBUF,#5
LJMP DISPLAY
K6: CJNE A,#0B0H,K7// 高四位为1011,数字6亮MOV KEYSBUF,#6
LJMP DISPLAY
K7: CJNE A,#070H,K8 //高四位为0111,数字7亮MOV KEYSBUF,#7
LJMP DISPLAY
K8: MOV P1,#0FBH //第2行置0
MOV A,P1
ANL A,#0F0H
CJNE A,#0E0H,K9 //高四位为1110,数字8亮
MOV KEYSBUF,#8
LJMP DISPLAY
K9: CJNE A,#0D0H,K10 // 高四位为1101,数字9亮MOV KEYSBUF,#9
LJMP DISPLAY
K10: CJNE A,#0B0H,K11// 高四位为1011,数字A亮MOV KEYSBUF,#10
LJMP DISPLAY
K11: CJNE A,#070H,K12 //高四位为0111,数字B亮MOV KEYSBUF,#11
LJMP DISPLAY
K12: MOV P1,#0F7H //第3行置0
MOV A,P1
ANL A,#0F0H
CJNE A,#0E0H,K13 //高四位为1110,数字C亮
MOV KEYSBUF,#12
LJMP DISPLAY
K13: CJNE A,#0D0H,K14 // 高四位为1101,数字D亮MOV KEYSBUF,#13
LJMP DISPLAY
K14: CJNE A,#0B0H,K15// 高四位为1011,数字E亮MOV KEYSBUF,#14
LJMP DISPLAY
K15:
MOV KEYSBUF,#15 //高四位为0111,数字F亮
LJMP DISPLAY