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 + -
显示快捷键?