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

📄 4x4 keyboard (1).asm

📁 仿真实例大集合收集的仿真实例免费为大家提供
💻 ASM
字号:
DBUF 	EQU 	30H
TEMP	EQU		40H
		ORG		00H
		MOV 	A,#16
MAIN: 	ACALL 	DISP 
		ACALL	KEY1
		AJMP	MAIN  	  
KEY1:   MOV		P1,#0F0H 	 	;读P1口前先写1
		MOV		A,P1			;读取键状态
		CJNE	A,#0F0H,K11   	;判断是否有键按下
K10:	AJMP	KEY1
K11:	ACALL	DELAY 
		MOV		P1,#0F0H  
		MOV		A,P1   
		CJNE	A,0F0H,K12		;消除按键抖动
		SJMP	K10
K12:	MOV		B,A				;存列值
		MOV		P1,#0FH				
		MOV		A,P1			;读行值
		ANL		A,B					
		MOV		B,A				;存键码
		MOV		R1,#10H
		MOV		R2,#0
		MOV		DPTR,#K1TAB		;键码表首地址
K14:	MOV		A,R2
		MOVC	A,@A+DPTR
		CJNE	A,B,K16			;比较,计算键值
		MOV		P1,#0FH
K15:	MOV		A,P1
		CJNE	A,#0FH,K15		;等待按键释放
		MOV		A,R2
		RET
K16:	INC		R2
		DJNZ	R1,K14
		AJMP	K10		                        
K1TAB:	DB		81H,41H,21H,11H	;键码表
		DB		82H,42H,22H,12H
		DB		84H,44H,24H,14H
		DB		88H,48H,28H,18H
DISP:	MOV		DBUF,A			;键值存入缓存
		MOV		R0,#DBUF
		MOV		R1,#TEMP
DP10: 	MOV		DPTR,#SEGTAB
		MOV		A,@R0
		MOVC	A,@A+DPTR		;根据键值查表取段码
		MOV		@R1,A			;暂存段码
		MOV		R0,#TEMP
DP12:	MOV		R2,#8			;设置移位次数
		MOV		A,@R0
DP13: 	RLC		A				;段码移位输出
		MOV		P3.0,C
		CLR 	P3.1
		SETB	P3.1			;输出移位脉冲
		DJNZ	R2,DP13
		RET
SEGTAB: DB  	3FH,06H,5BH,4FH,66H,6DH       
		DB  	7DH,07H,7FH,6FH,77H,7CH          
		DB  	58H,5EH,79H,71H,00H,40H        
DELAY:  MOV		R4,#01H                
AA1: 	MOV		R5,#088H
AA: 	NOP
		DJNZ	R5,AA
		DJNZ	R4,AA1
		RET
		END

⌨️ 快捷键说明

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