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

📄 key board.asm

📁 Proteus在MCS-51%26ARM7系统中的应用百例 Proteus在MCS-51%26ARM7系统中的应用百例
💻 ASM
字号:
DIN		EQU		P3.0
CLK		EQU		P3.1
DBUF	EQU		30H
TEMP 	EQU     40H
		ORG		00H
		MOV		30H,#16			;数码管显示初始化
MAIN:	ACALL	DISP			;显示
		ACALL	KEY				;计算键值
		AJMP	MAIN
KEY: 							;计算键码子程序
		MOV 	P1,#0FFH    	;读数前先写1       
		MOV		A,P1               
		CJNE	A,#0FFH,K00 	;判断是否有键按下   
		AJMP	KEY                     
K00:	ACALL	DELAY                  
		MOV		A,P1
		CJNE	A,#0FFH,K01 	;消除按键抖动    
		AJMP	KEY
K01:	MOV		R3,#8              
		MOV 	R2,#0                  
		MOV 	B,A                   
		MOV		DPTR,#K0TAB		;查表比较,计算键值
K02: 	MOV 	A,R2
		MOVC 	A,@A+DPTR             
		CJNE 	A,B,K04               
K03: 	MOV		A,P1                     
		CJNE  	A,#0FFH,K03     ;等待按键抬起    
		ACALL  	DELAY                   
		MOV  	A,R2                    
		RET
K04:	INC 	R2              
		DJNZ	R3,K02
		MOV 	A,#0FFH     
		AJMP 	KEY
K0TAB:	DB  	0FEH,0FDH,0FBH,0F7H       
		DB  	0EFH,0DFH,0BFH,07FH
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   	DIN,C
		CLR    	CLK				;输出移位脉冲
		SETB   	CLK
		DJNZ   	R2,DP13
		RET
SEGTAB: DB  	3FH,06H,5BH,4FH,66H         
        DB  	6DH,7DH,07H,7FH,6FH
		               
DELAY:  MOV     R4,#02H                
AA1:    MOV     R5,#0F8H
AA:     DJNZ 	R5,AA
		DJNZ	R4,AA1
		RET
		END

⌨️ 快捷键说明

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