⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.asm

📁 多个仿真例子
💻 ASM
字号:
KEYBUF	EQU	30H
	ORG	0
	LJMP	START
	ORG	3
	LJMP	KEYSCAN
	ORG	30H
START:	MOV	SP,#60H
	SETB	IT0
	SETB	EX0
	MOV	P1,#0FH
	SETB	EA
	MOV	KEYBUF,#47H	;将“G”送显示缓冲区,以便熄灭显示器
LOOP:	LCALL	DISP
	SJMP	LOOP
;显示程序
;将KEYBUF单元的ASCII码送数码管显示
;可以显示的ASCII码数据0-9,A-F。若ASCII码为“G”(47H)则显示熄灭
DISP:	MOV	A,KEYBUF
	CLR	C
	SUBB	A,#3AH
	JC	DISP1
	MOV	A,KEYBUF
	SUBB	A,#37H
	SJMP	DISP2
DISP1:	MOV	A,KEYBUF
	ANL	A,#0FH
DISP2:	MOV	DPTR,#DISP_TAB
	MOVC	A,@A+DPTR
	ANL	A,#7FH
	MOV	P0,A
	RET
DISP_TAB:DB	0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
	DB	80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
;键盘扫描程序
;键码存在KEYBUF单元,格式为ASCII码
KEYSCAN:PUSH	PSW
	PUSH	ACC
	PUSH	DPH
	PUSH	DPL
	CLR	RS1
	SETB	RS0	;选择1区工作寄存器
	LCALL	DELAY
	MOV	A,P1
	CPL	A
	ANL	A,#0FH
	JZ	FINISH
	MOV	DPTR,#TAB
	MOV	P1,#0EFH	;扫描第一行
	MOV	P1,#0EFH
	MOV	A,P1
	CPL	A
	ANL	A,#0FH
	JZ	K1	;第一行没键按下,则扫描第二行
	SJMP	KEND
K1:	MOV	P1,#0DFH	;扫描第二行
	MOV	P1,#0DFH
	MOV	A,P1
	CPL	A
	ANL	A,#0FH
	JZ	K2	;第二行没键按下,则扫描第三行
	ADD	A,#9
	SJMP	KEND
K2:	MOV	P1,#0BFH	;扫描第三行
	MOV	P1,#0BFH
	MOV	A,P1
	CPL	A
	ANL	A,#0FH
	JZ	K3
	ADD	A,#18
	SJMP	KEND
K3:	MOV	P1,#7FH
	MOV	P1,#7FH
	MOV	A,P1
	CPL	A
	ANL	A,#0FH
	JZ	K4
	ADD	A,#27
KEND:	MOVC	A,@A+DPTR
	MOV	KEYBUF,A
	SJMP	FINISH
K4:	MOV	KEYBUF,#47H	;'G'送键盘缓冲区,以便将显示器熄灭
FINISH:	MOV	P1,#0FH	;为下一次扫描作准备
	POP	DPL
	POP	DPH
	POP	ACC
	POP	PSW
	RETI
TAB:	DB	00H,30H,31H,00H,32H,00H,00H,00H,33H
	DB	00H,34H,35H,00H,36H,00H,00H,00H,37H
	DB	00H,38H,39H,00H,41H,00H,00H,00H,42H
	DB	00H,43H,44H,00H,45H,00H,00H,00H,46H
DELAY:	MOV	R6,#20
L1:	MOV	R7,#250
L2:	NOP
	NOP
	DJNZ	R7,L2
	DJNZ	R6,L1
	RET
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -