;/***********************************************************************************
;* 描述: 花费了一天时间写这个小程序,发表于此,以此为激励自己继续向着单片机前进 *
;* 按矩阵键盘上的键对应的LED显示相应键值 *
;* 矩阵键盘定义: *
;* P1.1-P1.3为行线,P1.4-P 1.7为列线 *
; P0口接led显示 *
;********************************************************************************/
ORG 0000H
JMP MAIN
MAIN:
MOV P0,#0FFH ;初始化端口口
MOV P1,#0FFH
KEYDOWN: ;;;;判断是否有键按下部分
MOV P1,#0F0H
LCALL DELAY
MOV A,P1
CJNE A,#0F0H,KEYSCAN
JMP KEYDOWN
KEYSCAN: ;;扫描键值部分222
MOV A,#00H
MOV P1,#0F0H
MOV A,P1
CJNE A,#70H,N1
MOV R4,#03H
JMP NEXT
N1: CJNE A,#0B0H,N2
MOV R4,#02H
JMP NEXT
N2: CJNE A,#0D0H,N3
MOV R4,#01H
JMP NEXT
N3: CJNE A,#0E0H,NEXT
MOV R4,#00H
JMP NEXT
NEXT:
MOV P1,#00FH
MOV A,P1
CJNE A,#07H,N4
MOV R3,#08H
JMP NEXT1
N4: CJNE A,#0BH,N5
MOV R3,#04H
JMP NEXT1
N5: CJNE A,#0DH,DISPLAY
MOV R3,#00H
JMP DISPLAY
DISPLAY: ;显示部分
MOV A,R4
ADD A,R3
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
LCALL DELAY
MOV P0,#0FFH
LJMP KEYDOWN
DELAY: ;消抖延时部分
MOV R6,#25
D2: MOV R7,#100
DJNZ R7,$
DJNZ R6,D2
RET
LEDTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H
END