汇编矩阵键盘程序

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

相关文档
最新文档