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

📄 key.asm

📁 又一个语音LCD GAME
💻 ASM
字号:
F_Checkkey:
;	clrb	B_HavKey
	LDA     PA			;\PA2\PA1
        EOR     #00000110B
	AND	#00000110B
;
	STA	R_KeyValue1		; new PA
	
	LDA	R_KeyValue2		; old PA
	STA	R_Temp
	CMP	R_KeyValue1	
	BEQ	Check
	
	
	LDA	R_KeyValue1		; if no equal, key act
	
	STA	R_KeyValue2
	BEQ	NoKey
	EOR	R_Temp
	STA	R_KeyValue1
	
	
	and	R_KeyValue2
	BEQ	Check
	STA	R_KDB			;error4
        LDA     #15
        STA     R_KCNTN			; KCNT=15, Debounce time = 15*2 = 30ms
	SETB	B_fKEYDeb
	
	CLRB	B_KeyHoldIncEn
	CLRB	B_KeyHoldInc
	CLRB	B_KeyHold
		
Check:	
	JB	B_KeyHold,CheckKeyHold
	JNB	B_fKEYDeb,CheckKeyEnd
	DEC	R_KCNTN
	BNE	CheckKeyEnd
	CLRB	B_fKEYDeb
CheckRt2
        LDA     PA
        EOR     #00000110B
	AND	#00000110B
	AND	R_KDB
	CMP	R_KDB
	BNE	NoKey
	
	
	JB	B_SnowManLL,CheckRt3
	JB	B_SnowManRR,CheckRt3

	LDA	#256-29
	STA	R_TMCnt
	CLRB	B_AutoFunc
	JB	B_KeyHold,CheckKeyEnd2

CheckRt3
	SETB	B_KeyHold
	LDA	#256-20
	STA	R_KeyCnt
;	SETB	B_HavKey

CheckKeyEnd2:	
	LDA	#00H
	STA	R_TmCnt1Min
	STA	R_TmCnt1Min+1
	
        CAJE	R_KDB,#00000010B,KEY_N1
        CAJE	R_KDB,#00000100B,KEY_N2
NoKey:
	CLRB	B_KeyHoldIncEn
	CLRB	B_KeyHoldInc
	CLRB	B_KeyHold
	LDA	#0
	STA	R_KeyValue1
;	STA	R_KeyValue2
;	STA	R_Temp
CheckKeyEnd:
	RTS
KEY_N1:	
	SETB	B_KeyLeft
	RTS
KEY_N2:	
	SETB	B_KeyRight
	RTS  
SetNormState
	SETB	B_WithKey
	RTS
CheckKeyHold
	JNB	B_KeyHoldIncEn,CheckKeyEnd
	JNB	B_KeyHoldInc,CheckKeyEnd
	JB	B_AutoFunc,CheckKeyHold2
	CLRB	B_KeyHoldInc
	JMP	CheckRt2		;CheckKeyEnd2
CheckKeyHold2
	CLRB	B_KeyHoldInc
;	LDA	#2
;	JSR	PlaySound
	RTS
;==========================================================================
F_KeyFunction:
	JNB	B_KeyLeft,L_KeyRight
	CLRB	B_KeyLeft
;	LDA	#00H
;	STA	R_TmCnt1Min
;	STA	R_TmCnt1Min+1
	JNB	B_WithKey,SetNormState
	
	INC	R_Buffer
	JB	B_SnowManLL,L_KeyLeft2
	JB	B_SnowManRR,ClrManRRFlagR
	LDA	R_SnowManMov
	BNE	L_KeyLeft1
	SETB	B_SnowManLL
	SETB	B_KeyDelay
	JMP	L_KeyLeft2
;	JB	B_KeyHoldIncEn,CheckKeyEnd
;	JSR	Wait500MS
;	JSR	Wait400MS
;	JSR	DispLcdRout
;	RTS
L_KeyLeft1
	DEC	R_SnowManMov
L_KeyLeft2
	JB	B_SnowManLL,L_SoundJUMP
	JB	B_SnowManRR,L_SoundJUMP
	
	LDA	R_SnowManMov
	CMP	#1
	BCS	L_SoundLANDJUMP			;>=
	LDA	#2
	JMP	L_SoundCOM
L_SoundLANDJUMP
	LDA	#256-29
	STA	R_TMCnt
	CLRB	B_AutoFunc
	LDA	#8
	JMP	L_SoundCOM
L_SoundJUMP
	LDA	#7
L_SoundCOM
	JSR	PlaySound

L_KeyLeftCOM	
	SETB	B_FlashSnowManDisp
	SETB	B_FlashDisp
	JSR	DispLcdRout
	RTS
ClrManRRFlagR
	JB	B_KeyDelay,L_KeyLeft2
	CLRB	B_SnowManRR
	JMP	L_KeyLeft2
ClrManRRFlagR2
	CLRB	B_SnowManRR
	JMP	L_KeyLeftCOM
;----------------------------------------------
L_KeyRight:
	JNB	B_KeyRight,L_KeyEnd
	CLRB	B_KeyRight
;	LDA	#00H
;	STA	R_TmCnt1Min
;	STA	R_TmCnt1Min+1
	JNB	B_WithKey,SetNormState
	
	INC	R_Buffer2
	JB	B_SnowManRR,L_KeyLeft2
	JB	B_SnowManLL,ClrManLLFlagR
	LDA	R_SnowManMov
	CMP	#2
	BNE	L_KeyRight1
	SETB	B_SnowManRR
	SETB	B_KeyDelay
	JMP	L_KeyRight2
;	JB	B_KeyHoldIncEn,L_KeyEnd
;	JSR	Wait500MS
;	JSR	Wait400MS
;	RTS
L_KeyRight1
	INC	R_SnowManMov
L_KeyRight2
	JB	B_SnowManLL,L_SoundJUMP2
	JB	B_SnowManRR,L_SoundJUMP2
	
	LDA	R_SnowManMov
	CMP	#2
	BCC	L_SoundLANDJUMP2		;<
	LDA	#2
	JMP	L_SoundCOM2
L_SoundLANDJUMP2
	LDA	#256-29
	STA	R_TMCnt
	CLRB	B_AutoFunc
	LDA	#8
	JMP	L_SoundCOM2
L_SoundJUMP2
	LDA	#7
L_SoundCOM2
	JSR	PlaySound
	JMP	L_KeyLeftCOM
;L_KeyRightCOM
;	SETB	B_FlashSnowManDisp
;	SETB	B_FlashDisp
L_KeyEnd:
	RTS
ClrManLLFlagR
	JB	B_KeyDelay,L_KeyRight2
	CLRB	B_SnowManLL
	JMP	L_KeyRight2
ClrManLLFlagR2
	CLRB	B_SnowManLL
	JMP	L_KeyLeftCOM		;L_KeyRightCOM

;===========================================================
F_AutoFunc					;no key sound
	CLRB	B_AutoFunc
	JB	B_SnowManRR,ClrManRRFlagR2
	JB	B_SnowManLL,ClrManLLFlagR2
	BBS1	R_SnowManMov,F_AutoFun3
	BBS0	R_SnowManMov,F_AutoFun2
F_AutoFun1
	INC	R_SnowManMov
	JMP	L_KeyLeftCOM		;L_KeyRightCOM
F_AutoFun3
	DEC	R_SnowManMov
	JMP	L_KeyLeftCOM
F_AutoFun2
	RTS
	





⌨️ 快捷键说明

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