jk8-2.asm
来自「微机原理课程 所有讲义PPT 课程全实验(包括代码程序设计实验报告) 习」· 汇编 代码 · 共 80 行
ASM
80 行
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 + =
减小字号Ctrl + -
显示快捷键?