📄 key8155-2.asm
字号:
OUTBIT EQU 0E101H
CLK164 EQU 0E102H
DAT164 EQU 0E102H
LINE EQU 0E103H
COLUMN EQU 0E101H
LEDBuf EQU 60H
START:
MOV DPTR,#0E100H
MOV A,#03H
MOVX @DPTR,A
MOV A,#0
MOV R0,#LEDBuf ; LED显示缓存
MOV R1,#6 ; LED数量
LOOP1:
MOV @R0,A ;置LED缓存全为0
INC R0
DJNZ R1,LOOP1
CYCLE:
ACALL DisplayLED ;调用显示子程序
ACALL KS1 ;调用键盘扫描程序
JZ CYCLE ;无键,转
ACALL DisplayLED
ACALL DisplayLED
ACALL KS1
JZ CYCLE
ACALL KEY
JZ CYCLE
Delay: ; 延时子程序
MOV R7,#0
DelayLoop:
DJNZ R7,DelayLoop
DJNZ R6,DelayLoop
RET
DisplayLED: ;显示子程序
MOV R0,#LEDBuf
MOV R1,#6
MOV R2,#00100000B
LOOP:
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#LEDMap ;查询LED数值
MOV A,@R0
MOVC A,@A+DPTR
MOV B,#8
DLP:
RLC A
MOV R3,A
MOV ACC.0,C
ANL A,#0FDH
MOV DPTR,#DAT164
MOVX @DPTR,A
MOV DPTR,#CLK164
ORL A,#02H
MOVX @DPTR,A
ANL A,#0FDH
MOVX @DPTR,A
MOV A,R3
DJNZ B,DLP
MOV DPTR,#OUTBIT
MOV A,R2
MOVX @DPTR,A
MOV R6,#1
CALL DELAY
MOV A,R2
RR A
MOV R2,A
INC R0
DJNZ R1,LOOP
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
RET
KS1: ;扫描键盘子程序
MOV DPTR,#COLUMN
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#LINE
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
KEY: ;键盘输入子程序
MOV R2,#0FEH
MOV R4,#4 ;4列
SCAN:
MOV DPTR,#COLUMN ;逐列扫描
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#LINE ;读入行信号
MOVX A,@DPTR
ANL A,#0FH ;屏蔽高四位
CJNE A,#0FH,NEXT ;有键输入,转
MOV A,R2 ;指向下一列
RL A
MOV R2,A
DJNZ R4,SCAN
AJMP FINISH
NEXT:
SWAP A ;合并行列信号
MOV R3,A
MOV A,R2
ANL A,#0FH
ORL A,R3
CPL A ;行列信号逐位取反
MOV R3,A ;暂存
MOV R2,#0
MOV DPTR,#KEYBOARD
FINDKEY: ;查找键值
MOV A,R2
MOVC A,@A+DPTR
CLR C
SUBB A,R3
JNZ NEXT1
MOV R0,#LEDBuf+5
MOV A,R2
MOV @R0,A
MOV R6,#00H
CHOSE_LED:
MOV A,R6
CJNE A,#05H,ESC
MOV R0,#LEDBuf
MOV DPTR,#CHOSE
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R6
AJMP CHOSE_LED
ESC:
aJMP FINISH
NEXT1:
INC R2
SJMP FINDKEY
;FillBuf: ;将键值往后移一位
; MOV R0,#LEDBuf
; MOV R1,#LEDBuf+1
; MOV R4,#5
;FLOOP:
;MOV A,@R1
;MOV @R0,A
;INC R0
;INC R1
;DJNZ R4,FLOOP
;MOV A,R2
;MOV @R0,A
FINISH:
ACALL DisplayLED
ACALL KS1
JNZ FINISH
RET
KEYBOARD:
DB 11H,21H,22H,24H,41H,42H,44H,81H,82H,84H,88H,48H,28H,18H,14H,12H
LEDMap:
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
CHOSE:
DB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -