📄 键盘输入.asm
字号:
LEDBUF EQU 60H
OUTBIT EQU 08002H
OUTSEG EQU 08004H
IN EQU 08001H
LJMP START
LEDMAP:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
KEYTABLE:
DB 16H,15H,14H,0FFH
DB 13H,12H,11H,10H
DB 0DH,0CH,0BH,0AH
DB 0EH,03H,06H,09H
DB 0FH,02H,05H,08H
DB 00H,01H,04H,07H
DISPLAYLED:
MOV R0,#LEDBUF
MOV R1,#6
MOV R2,#00100000B
LOOP:
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#OUTSEG
MOVX @DPTR,A
mov dptr,#outbit
MOV A,R2
MOVX @DPTR,A
MOV R6,#1
LCALL DELAY
MOV A,R2
RR A
MOV R2,A
INC R0
DJNZ R1,LOOP
RET
TESTKEY:
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#IN
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
GETKEY:
MOV DPTR,#OUTbit
MOV P2,DPH
MOV R0,#LOW(IN)
MOV R1,#00100000B
MOV R2,#6
KLOOP:
MOV A,R1
CPL A
MOVX @DPTR,A
CPL A
RR A
MOV R1,A
MOVX A,@R0
CPL A
ANL A,#0FH
JNZ GOON1
DJNZ R2,KLOOP
MOV R2,#0FFH
SJMP EXIT
GOON1:
MOV R1,A
MOV A,R2
DEC A
RL A
RL A
MOV R2,A
MOV A,R1
MOV R1,#4
LOOPc:
RRC A
JC L1
INC R2
DJNZ R1,LOOPc
L1: MOV A,R2
MOV DPTR,#KEYTABLE
MOVC A,@A+DPTR
MOV R2,A
WAITRELEASE:
MOV DPTR,#OUTBIT;
CLR A
MOVX @DPTR,A
MOV R6,#10
CALL DELAY
CALL TESTKEY
JNZ WAITRELEASE
EXIT: MOV A,R2
RET
START:
MOV LEDBUF,#0FFH
MOV LEDBUF+1,#0FFH
MOV LEDBUF+2,#0FFH
MOV LEDBUF+3,#0FFH
MOV LEDBUF+4,#00h
MOV LEDBUF+5,#00h
MLOOP:
CALL DISPLAYLED
CALL TESTKEY
JZ MLOOP
CALL GETKEY
ANL A,#0FH
MOV DPTR,#LEDMAP
MOVC A,@A+DPTR
MOV LEDBUF+5,A
LJMP MLOOP
DELAY:
MOV R7,#0
DELAYLOOP:
DJNZ R7,DELAYLOOP
DJNZ R6,DELAYLOOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -