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

📄 _scan_key_direct.a51

📁 使用PROTEUS仿真的推箱子游戏,全汇编格式,通过按钮操作,1602显示
💻 A51
字号:

	
;==============================================
SCAN_KEY_INITIAL:
	MOV	KEY_OLD_STATE,#key_input_pins
	MOV	KEY_PIN_SETTING,#key_input_pins
	MOV	KEY_VALUE,#00H
	MOV	KEY_VALUE_BUF,#00H
	MOV	KEY_DEB_TIME,#00H
	ORL	KEY_INPUT_PORT,#0FFH
	CLR	KEY_FLAG	
	RET
;===============================================
SCAN_KEY:
	MOV	KEY_NEW_STATE,KEY_INPUT_PORT	;
	ANL	KEY_NEW_STATE,#key_input_pins	;
	MOV	A,KEY_OLD_STATE			;
	XRL	A,KEY_NEW_STATE			;
	JNZ	KEY_STATUS_CHANGE		;
	MOV	KEY_DEB_TIME,#00H		;
	JMP	SCAN_KEY_RTN	
				
KEY_STATUS_CHANGE:
	INC	KEY_DEB_TIME			;
	MOV	A,KEY_DEB_TIME			;
	CJNE	A,#deb_time,SCAN_KEY_RTN	;
	MOV	KEY_DEB_TIME,#00H		;
		
	MOV	A,KEY_OLD_STATE			;
	XRL	A,KEY_NEW_STATE			;
	MOV	KEY_NEW_STATE,A			;
	MOV	KEY_PIN_SETTING,#key_input_pins	;
	MOV	R7,#0FFH			;
GET_COL_VALUE:
	MOV	A,KEY_PIN_SETTING		;
	CLR	C				;
	RRC	A				;
	MOV	KEY_PIN_SETTING,A		;
	JNC	GET_CHANGE_PIN
	INC	R7				;
GET_CHANGE_PIN:
	MOV	A,KEY_NEW_STATE			;
	CLR	C				;
	RRC	A				;
	MOV	KEY_NEW_STATE,A			;
	JNC	GET_COL_VALUE			;
		
	MOV	A,R7				;
	MOV	DPTR,#key_bit_table		;
	MOVC	A,@A+DPTR			;
	PUSH	ACC
	XRL	A,KEY_OLD_STATE			;
	MOV	KEY_OLD_STATE,A			;
	POP	ACC

IF(trigger_type==0)				;
	ANL	A,KEY_OLD_STATE			;
	JNZ	SCAN_KEY_RTN			;	
ENDIF

IF(trigger_type==1)				;
	ANL	A,KEY_OLD_STATE			;	
	JZ	SCAN_KEY_RTN			;
ENDIF

IF(trigger_type==2)
	ANL	A,KEY_OLD_STATE
	JZ	GET_KEY_VALUE	
	CLR	C
	MOV	A,#max_key_num	
	ADD	A,R7
	MOV	R7,A
ENDIF
				
GET_KEY_VALUE:
	MOV	KEY_VALUE,R7			;save key value to KEY_VALUE
	SETB	KEY_FLAG

SCAN_KEY_RTN:
		RET
;===============================================		
key_bit_table:
IF(key_input_pin0==1)
	DB 01H
ENDIF

IF(key_input_pin1==1)
	DB 02H
ENDIF

IF(key_input_pin2==1)
	DB 04H
ENDIF

IF(key_input_pin3==1)
	DB 08H
ENDIF

IF(key_input_pin4==1)
	DB 10H
ENDIF

IF(key_input_pin5==1)
	DB 20H
ENDIF

IF(key_input_pin6==1)
	DB 40H
ENDIF

IF(key_input_pin7==1)
	DB 80H
ENDIF
;===============================================	
				
		
		

⌨️ 快捷键说明

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