📄 jk8-2.asm
字号:
BASEADD EQU 8000H
PA_8255 EQU BASEADD+0
PB_8255 EQU BASEADD+1
PC_8255 EQU BASEADD+2
CN_8255 EQU BASEADD+3
PO_273 EQU BASEADD+4
PI_244 EQU BASEADD+8
CW8255 EQU 88H
STROKE EQU 00H
org 0000h
ljmp ini_dat
org 0200h
INI_DAT: MOV DPTR,#CN_8255
MOV A,#CW8255
MOVX @DPTR,A
MONITOR:ACALL TESTKEY
JNB STROKE,MONITOR
MOV B,A
ACALL DELAY
ACALL TESTKEY
JNB STROKE,MONITOR
XRL A,B
JNZ MONITOR
ACALL READKEY
ORL A,B
MOV B,A
MOV R7,#0
MOV DPTR,#KEY_TAB
SKEY: MOV A,R7
MOVC A,@A+DPTR
XRL A,B
JZ VALIDKEY
INC R7
CJNE R7,#8,SKEY
SJMP MONITOR
VALIDKEY:MOV A,R7
BP: RET
KEY_TAB: DB 11H,12H,14H,18H,21H,22H,24H,28H
TESTKEY: CLR STROKE
MOV DPTR,#PC_8255
MOV A,#0F0H
MOVX @DPTR,A
MOVX A,@DPTR
ANL A,#30H
XRL A,#30H
JZ NOKEY
SETB STROKE
NOKEY: RET
READKEY:PUSH IE
CLR EA
CLR STROKE
MOV DPTR,#CN_8255
MOV A,#CW8255
XRL A,#09H
MOVX @DPTR,A
MOV DPTR,#PC_8255
MOV A,#0FH
MOVX @DPTR,A
MOVX A,@DPTR
ANL A,#0FH
XRL A,#0FH
JZ KEYOUT
SETB STROKE
KEYOUT: PUSH ACC
MOV DPTR,#CN_8255
MOV A,#CW8255
MOVX @DPTR,A
POP ACC
POP IE
RET
DELAY:MOV R3,#200
DIMS: MOV R2,#02H
DL: MOV R5,#0FFH
DL1: DJNZ R5,DL1
DJNZ R2,DL
DJNZ R3,DIMS
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -