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

📄 key.asm

📁 153按收红外遥控码源码,大edsafasfas
💻 ASM
字号:
include "key.inc"
;===============================================
;	Function:Get_Remote_Key()取得遥控按键
;===============================================	
Get_Remote_Key:
		;判断是否有新的遥控码值到来
		jbc		Status_1,@IR_KEY_OK_BIT
		jmp		get_ir_code
		;判断按键重复次数是否为零,为零表示无按键按下
		mov		a,Ir_Repeat_Times
		sub		a,@0x00
		jbc		FLAG,@Z
		jmp		get_code_ret
		;判断按键是否弹起
		jbs		Status_1,@IR_KEY_DOWN_UP_BIT
		jmp		ir_key_up
;=====================================================================


		;--------------------------------------------------------------------------------
		;需要连续发射的按键
		;--------------------------------------------------------------------------------
		mov		a,Current_Key
		sub		a,@IR_VOL_UP
		jbc		FLAG,@Z
		jmp		set_con_send_code
		;-----------------------------
		mov		a,Current_Key
		sub		a,@IR_VOL_DOWN
		jbc		FLAG,@Z
		jmp		set_con_send_code
		;-----------------------------




		
		;--------------------------------------------------------------------------------
		;需要长按才需发射的按键
		;--------------------------------------------------------------------------------
		mov		a,Current_Key
		sub		a,@IR_VOL_FF
		jbc		FLAG,@Z
		jmp		set_hold_send_code
		;-----------------------------
		mov		a,Current_Key
		sub		a,@IR_VOL_FF
		jbc		FLAG,@Z
		jmp		set_hold_send_code
		;-----------------------------






		;--------------------------------------------------------------------------------
		;只需发射一次的按键
		;--------------------------------------------------------------------------------
		bc		Status_1,@IR_KEY_DOWN_UP_BIT	;手动设置按键状态为弹起
		bs		Status_1,@KEY_VALID_BIT		;置按键为有效

		jmp		get_code_ret
		
set_hold_send_code:
		;没弹起,有按键
		mov		a,Ir_Repeat_Times
		sub		a,@IR_TIMES		;长按响应时间
		jbc		FLAG,@C
		jmp		get_code_ret
		clr		Ir_Repeat_Times
		mov		a,Current_Key
		add		a,@HOLD_KEY_ADDR
		mov		Current_Key,a
		bs		Status_1,@KEY_VALID_BIT		;设为按键有效
		bc		Status_1,@IR_KEY_DOWN_UP_BIT;手动设置按键状态为弹起
		ret

;-----------------------------------------------------------------------------------------
set_con_send_code:
		;没弹起,有按键
		mov		a,Ir_Repeat_Times
		sub		a,@IR_TIMES		;单次发送响应时间
		jbc		FLAG,@C
		jmp		get_code_ret
		mov		a,@0x01
		mov		Ir_Repeat_Times,a
		;置按键为有效
		bs		Status_1,@KEY_VALID_BIT
		ret
;======================================================================

		;按键弹起
ir_key_up:
		;清除按键重复次数
		clr		Ir_Repeat_Times
		;判断按键值是否是需要长按按键
		
		;-----------------------------
		mov		a,@IR_VOL_FF
		sub		a,Current_Key
		jbc		FLAG,@Z
		jmp		send_code
		;-----------------------------
		mov		a,@IR_VOL_FF
		sub		a,Current_Key
		jbc		FLAG,@Z
		jmp		send_code
		;-----------------------------
		ret
send_code:

		;置按键为有效
		bs		Status_1,@KEY_VALID_BIT
		ret
		
;============================================================
;第一次获得按键码值
get_ir_code:
		bc		Status_1,@IR_KEY_OK_BIT		;清除标志位
		mov		a,@IR_SYS_CODE
		sub		a,Remote_Sys_Code0		;判断遥控系统码
		jbs		FLAG,@Z
		jmp		get_code_ret
		com		remote_cmd_code0		;客户码取反
		mov		a,Remote_Cmd_Code0		;判断客户码是否相等
		sub		a,Remote_Cmd_Code1
		jbs		FLAG,@Z
		jmp		get_code_ret
get_code:
		;bs		Status_1,@KEY_VALID_BIT
		mov		a,Remote_Cmd_Code0
		mov		Current_Key,a
		inc		Ir_Repeat_Times
get_code_ret:
		RET



;===============================================
;	Function:Get_Key()取得整个程序按键
;===============================================	
Get_Key:
		
		RET
;**********************************************************************

⌨️ 快捷键说明

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