📄 80c196jianpan.asm
字号:
;80c196键盘显示
OUTSEG EQU 0FFFCH ;字形控制口
OUTBIT EQU 0FFFDH ;字位/键扫控制口
IN_KEY EQU 0FFFEH ;键盘读入口
$INCLUDE(8096.INC)
CSEG AT 2080H
LD 18H,#00E0H
LDB 1CH,#06H
LDB 1AH,#10H
LD 1EH,#0079H
LOOP1: STB 1AH,[1EH]+
DJNZ 1CH,LOOP1
LDB 7EH,#12H
LCALL DISP
KEYSM: LCALL DISP
LCALL KEYM0
SJMP KEYSM
;----------------------------
KEYM0: LDB 1AH,#0FFH ;屏蔽显示
STB 1AH,OUTSEG[00H] ;关字形口
LD 26h,#0feffH
LD 1CH,#0008H
LDB 2EH,#00H
KEYS1: STB 27H,OUTBIT[00H] ;键扫描
SHL 26H,#01H ;指向下一位
gkyx_r: ldb 1aH,IN_KEY[00H] ;读键值口
ldb 1bh,IN_KEY[00H]
cmpb 1ah,1bh
jne gkyx_r
JBS 1BH,0,NKEY
;----------------------------
LDB 1aH,#0FFH
STB 1aH,OUTBIT[00H]
NOP
NOP
NOP
LDB 1AH,IN_KEY[00H]
JBS 1Ah,0,YKEYX
LDB 1AH,IN_KEY[00H]
JBS 1Ah,0,YKEYX
LDB 1AH,IN_KEY[00H]
JBS 1Ah,0,YKEYX
NKEY: INCB 2EH ;列值加1
DJNZ 1CH,KEYS1 ;未到8列转
RET
;----------------------------
YKEYX: LDB 1AH,#00H
LJMP YKEY5
;----------------------------
DISP: LD 30H,#79H
LDB 1EH,#20H
LDB 29H,#06H
LDB 28H,#30H
DISP1: LD 20H,#OUTSEG
LD 22H,#OUTBIT
STB 1EH,[22H]
CLRB 1BH
LDB 1AH,[30H]
LD 1CH,#DATA0
ADD 1CH,1AH
LDB 1AH,[1CH]
STB 1AH,[20H]
INCB 30H
SHRB 1EH,#01H
LOOP4: LDB 1BH,IN_KEY[00H]
JBC 1Bh,1,KEYRS
JBC 1Bh,2,KEYRS
JBC 1Bh,3,KEYRS
DJNZ 28H,LOOP4
DJNZ 29H,DISP1
LDB 1AH,#0FFH
LD 1EH,#OUTSEG
STB 1AH,[1EH]
RET
;--------------------------
KEYRS: POP 28H
LCALL KEYR0
LJMP KEYSM
;---------------------------
KEYR0: LDB 1AH,#0FFH ;屏蔽显示
STB 1AH,OUTSEG[00H] ;关字形口
LD 26h,#0feffH
LD 1CH,#0008H
LDB 2EH,#00H
KEYR1: STB 27H,OUTBIT[00H] ;键扫描
SHL 26H,#01H ;指向下一位
LDB 28H,#06H
NKERY: LDB 1AH,IN_KEY[00H] ;读键值口
JBS 1AH,1,YKED2
LDB 1AH,#08H
SJMP YKEY5
;----------------------------
YKED4: DJNZ 28H,NKERY
INCB 2EH ;列值加1
DJNZ 1CH,KEYR1 ;未到8列转
RET
;----------------------------
YKED2: JBS 1AH,2,YKED3
LDB 1AH,#10H
SJMP YKEY5
;----------------------------
YKED3: JBS 1AH,3,YKED4
LDB 1AH,#18H
YKEY5: ADDB 1AH,2EH
CMPB 1AH,#10H
JC YKEY6
LD 28H,#DATA1
ADDB 28H,1AH
YKEY8: LDB 1BH,[28H]+
LDB 7EH,1BH
RET
;----------------------------
YKEY6: LDB 7EH,#11H
RET
;----------------------------
DATA0: DCB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DCB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
DATA1: DCB 07H,04H,08H,05H,09H,06H,0AH,0BH
DCB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
;----------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -