📄 keyread.txt
字号:
ORG 0000H
AJMP START
ORG 0030H
START:
ACALL KEYREAD
MOV B,NEW_KEY
; ACALL DISPLAY
AJMP START
NEW_KEY EQU 22H
OLD_KEY EQU 23H
KEYREAD:
CLR PSW.5
KEY_AGAIN:
ACALL KEY_INPUT
JNB PSW.5, KEY_OVER
ACALL KEY_DELAY
ACALL KEY_INPUT
JNB PSW.5, KEY_OVER
MOV A, NEW_KEY
CJNE A, OLD_KEY, KEY_OVER
UPKEY:
ACALL KEY_INPUT
JB PSW.5, UPKEY
ACALL KEY_INPUT
JB PSW.5, UPKEY
;
MOV R0,NEW_KEY
RET
KEY_INPUT:
MOV A, #00H ;显示0
MOV DPTR, #9000H
MOVX @DPTR, A ;ZIXING
;上面为清除显示
CLR F0
MOV R1, #00H
MOV R2, #04H
MOV R3, #01H
KEY_LOOP:
MOV A, R3
MOV DPTR, #8000H
MOVX @DPTR, A
MOVX A, @DPTR
MOV R4, #04H
KEY_LOOP1:
RRC A
JNC NEXT_KEY
MOV OLD_KEY,NEW_KEY
MOV A, R1
MOV DPTR, #KEY_TABLE_BCD
MOVC A, @A+DPTR
MOV NEW_KEY, A
SETB F0
AJMP KEY_OVER_OK
NEXT_KEY:
INC R1
DJNZ R4,KEY_LOOP1
MOV A, R3
RL A
MOV R3, A
DJNZ R2, KEY_LOOP
AJMP KEY_OVER_OK
KEY_OVER:
MOV 22H,#80H
KEY_OVER_OK:
RET
KEY_DELAY:
MOV R0, #0FFH
DJNZ R0,$
RET
KEY_TABLE_BCD:
DB 07H,08H,09H,10H
DB 04H,05H,06H,11H
DB 01H,02H,03H,12H
DB 00H,20H,40H,13H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -