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

📄 radio.src

📁 接收红外遥控,控制2314
💻 SRC
📖 第 1 页 / 共 5 页
字号:
VFD_SHOW_TURN_ON_TIME		ENDP
.ENDIF
.IF 0
VFD_SHOW_SLEEP_TIME	PROC
.ENDIF
VFD_SHOW_SLEEP_TIME:
		;call	noshow_con22
		;mov	a,STR_sleep
		;call	show_string
		LD	VFD_SHOW_DATA_ADDR,#06H
		LD	ACC_SEN_VAL,TUNER_SLEEP_TIME
		CALL	bintobcd_8
		CALL	VFD_SHOW_DATA
		RET
.IF 0
VFD_SHOW_SLEEP_TIME	ENDP
.ENDIF


;***************************************************************************************
.IF 0
compare_time	proc
.ENDIF
compare_time:
	PUSH	R3
	PUSH	R2
	PUSH	R0
	CLR	R2
	LD	R3,SHOW_STATIC
	CLR	ACC_RET_VAL
	LD	ACC_SEN_VAL,secon_time
	CP	ACC_SEN_VAL,SHOW_OLD_TIME
	JP	UGE,no_add_60
	ADD	ACC_SEN_VAL,#3CH
no_add_60:
	SUB	ACC_SEN_VAL,SHOW_OLD_TIME
	LDC	R0,#1ED8H[RR2]
	CP	ACC_SEN_VAL,R0   ;根据不同的显示模示选择不同的时间
	JP	ULT,ret_compare_fail
	LD	ACC_RET_VAL,#01H
ret_compare_fail:
	POP	R0
	POP	R2
	POP	R3
	RET
	
.IF 0	
compare_time	endp
.ENDIF
;******************************************************
;此段程序放在按键码后,不需检测无效还是无效
;在执行完后将
.IF 0
TURN_ON_OFF_SLEEP	PROC
.ENDIF
TURN_ON_OFF_SLEEP:
			CP	Current_Key,#IR_TRON_KEY
			JP	NE,unite_troff_key
			CP	PREVIOUS_KEY,#IR_TRON_ON_KEY
			JP	EQ,tron_no_clear
			CP	Current_Key,PREVIOUS_KEY
			JP	EQ,tron_no_clear
			CLR	key_down_times
			CLR_NO_FIRST
			LD	PREVIOUS_KEY,#IR_TRON_KEY
tron_no_clear:
			NO_FIRST_IS_HIGH
			JP	Z,unite_ret
			
			INC	key_down_times
			CP	key_down_times,#32H
			JP	ULT,unite_ret
			CLR	key_down_times
			SET_NO_FIRST
			LD	Current_Key,#IR_TRON_ON_KEY
			RET			
unite_troff_key:
			CP	Current_Key,#IR_TROFF_KEY
			JP	NE,unite_trtime_key
			CP	PREVIOUS_KEY,#IR_TROFF_ON_KEY
			JP	EQ,troff_no_clear
			CP	Current_Key,PREVIOUS_KEY
			JP	EQ,troff_no_clear
			CLR	key_down_times
			CLR_NO_FIRST
			LD	PREVIOUS_KEY,#IR_TROFF_KEY
troff_no_clear:
			NO_FIRST_IS_HIGH
			JP	Z,unite_ret
			
			INC	key_down_times
			CP	key_down_times,#32H
			JP	ULT,unite_ret
			CLR	key_down_times
			SET_NO_FIRST
			LD	Current_Key,#IR_TROFF_ON_KEY
			RET		
unite_trtime_key:
			CP	Current_Key,#IR_TRTIME_KEY
			JP	NE,unite_sleep_key
			CP	PREVIOUS_KEY,#IR_TRTIME_ON_KEY
			JP	EQ,trtime_no_clear
			CP	Current_Key,PREVIOUS_KEY
			JP	EQ,trtime_no_clear
			CLR	key_down_times
			CLR_NO_FIRST
			LD	PREVIOUS_KEY,#IR_TRTIME_KEY
trtime_no_clear:
			NO_FIRST_IS_HIGH
			JP	Z,unite_ret
			
			INC	key_down_times
			CP	key_down_times,#32H
			JP	ULT,unite_ret
			CLR	key_down_times
			SET_NO_FIRST
			LD	Current_Key,#IR_TRTIME_ON_KEY
			RET			

unite_sleep_key:
			CP	Current_Key,#IR_SLEEP_KEY
			JP	NE,unite_ret
			CP	PREVIOUS_KEY,#IR_SLEEP_ON_KEY
			JP	EQ,sleep_no_clear
			CP	Current_Key,PREVIOUS_KEY
			JP	EQ,sleep_no_clear
			CLR	key_down_times
			CLR_NO_FIRST
			LD	PREVIOUS_KEY,#IR_SLEEP_KEY
sleep_no_clear:
			NO_FIRST_IS_HIGH
			JP	Z,unite_ret
			
			INC	key_down_times
			CP	key_down_times,#32H
			JP	ULT,unite_ret
			CLR	key_down_times
			LD	Current_Key,#IR_SLEEP_ON_KEY
			SET_NO_FIRST
			RET			

;激发IR_TRON_KEY IR_TROFF_KEY IR_SLEEP_KEY IR_TRTIME_KEY
			CP	Current_Key,#0FFH
			JP	NE,unite_ret
			
			NO_FIRST_IS_LOW
			JP	Z,no_clear_first
			CLR_NO_FIRST
no_clear_first:
			CP	key_down_times,#00H
			JP	EQ,unite_ret
			
			CP	PREVIOUS_KEY,#IR_TRON_KEY
			JP	EQ,activation_uniter_key
			CP	PREVIOUS_KEY,#IR_TROFF_KEY
			JP	EQ,activation_uniter_key
			CP	PREVIOUS_KEY,#IR_TRTIME_KEY
			JP	EQ,activation_uniter_key
			CP	PREVIOUS_KEY,#IR_SLEEP_KEY
			JP	NE,unite_ret
activation_uniter_key:
			LD	Current_Key,PREVIOUS_KEY
			LD	PREVIOUS_KEY,#0FEH
;***********************************************************************
 unite_ret:
			RET
.IF 0
TURN_ON_OFF_SLEEP	ENDP
.ENDIF


;*********************************************************
.IF 0
repeat_all_key		proc
.ENDIF
repeat_all_key:
	;***************************************************
	;if	current_key  = 	
	;			vol_ir_inc_key 
	;			vol_ir_inc_key 
	;放在置有效键 之前
	;then send repeat key
		CP	Current_Key,#IR_VOL_INC_KEY
		JP	EQ,repeat_key
		CP	Current_Key,#IR_VOL_DEC_KEY
		JP	EQ,repeat_key
		RET
repeat_key:
		INC	same_key_rep_times
		CP	same_key_rep_times,#14H
		JP	ULT,ret_repeat_all_key
		CLR	same_key_rep_times
		LD	PREVIOUS_KEY,#0FEH
ret_repeat_all_key:
		RET
.IF 0
repeat_all_key	endp
.ENDIF
;*********************************************************
.IF 0
TRON_STATUS		PROC
.ENDIF
TRON_STATUS:
		KEY_VALID_IS_LOW
		JP	Z,tron_ret
		CP	Current_Key,#IR_TRON_ON_KEY
		JP	NE,tron_key
		XOR_TUON_ON
		CLR_KEY_VALID
		LD	SHOW_STATIC,#SHOW_TUON
		RET
tron_key:
		LD	ACC_SEN_VAL,#SHOW_TUON_TIME
		LD	R0,#IR_TRON_KEY
		LD	R1,TUNER_ON_TIME_MINU
		LD	R2,TUNER_ON_TIME_HOUR
		CALL	TUNER_STATUS
		LD	TUNER_ON_TIME_MINU,R1
		LD	TUNER_ON_TIME_HOUR,R2
tron_ret:
		RET
.IF 0
TRON_STATUS		ENDP
.ENDIF

.IF 0
TROFF_STATUS		PROC
.ENDIF
TROFF_STATUS:
		KEY_VALID_IS_LOW
		JP	Z,troff_ret
		CP	Current_Key,#IR_TROFF_ON_KEY
		JP	NE,troff_key
		XOR_TUOFF_ON
		CLR_KEY_VALID
		LD	SHOW_STATIC,#SHOW_TUOFF
		RET
troff_key:
		LD	ACC_SEN_VAL,#SHOW_TUOFF_TIME
		LD	R0,#IR_TROFF_KEY
		LD	R1,TUNER_OFF_TIME_MINU
		LD	R2,TUNER_OFF_TIME_HOUR
		CALL	TUNER_STATUS
		LD	TUNER_OFF_TIME_MINU,R1
		LD	TUNER_OFF_TIME_HOUR,R2
troff_ret:
		RET
.IF 0
TROFF_STATUS		ENDP
.ENDIF

.IF 0
TRTIME_STATUS	PROC
.ENDIF
TRTIME_STATUS:
		KEY_VALID_IS_LOW
		JP	Z,trtime1_ret
		LD	ACC_SEN_VAL,#SHOW_CLOCK
		LD	R0,#IR_TRTIME_KEY
		LD	R1,minute_time
		LD	R2,hour_time
		CALL	TUNER_STATUS
		LD	minute_time,R1
		LD	hour_time,R2
trtime1_ret:
		RET
.IF 0
TRTIME_STATUS	ENDP
.ENDIF


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;  	ACC_SEN_VAL IS SHOW_STATIC  	R0 IS IR_KEY 
;	R1 IS minute_time  		R2 IS hour_time
;NOTE:
;	LD	ACC_SEN_VAL,#SHOW_CLOCK
;	LD	RO,#IR_TRTIME_KEY
;	LD	R1,minute_time
;	LD	R2,hour_time
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.IF 0
TUNER_STATUS	PROC
.ENDIF
TUNER_STATUS:
		CP	SHOW_STATIC,ACC_SEN_VAL
		JP	EQ,no_init_trtime
		CP	Current_Key,R0
		JP	NE,trtime_ret
		CLR_FLASH_HOUR
		CLR_KEY_VALID
		LD	SHOW_STATIC,ACC_SEN_VAL
		JP	trtime_ret
no_init_trtime:
		CP	Current_Key,R0
		JP	NE,trtime_vol_inc
		XOR_FLASH_HOUR
		ret
trtime_vol_inc:
		CP	Current_Key,#IR_VOL_INC_KEY
		JP	NE,trtime_vol_dec
		CLR_KEY_VALID
		FLASH_HOUR_IS_HIGH
		JP	Z,inc_time_hour
		INC	R1
		CP	R1,#3CH
		JP	ULT,no_clear_minute
		CLR	R1
no_clear_minute:
		RET
inc_time_hour:
		INC	R2
		CP	R2,#18H
		JP	ULT,no_clear_hour
		CLR	R2
no_clear_hour:
		RET
trtime_vol_dec:
		CP	Current_Key,#IR_VOL_DEC_KEY
		JP	NE,trtime_digital
		CLR_KEY_VALID
		FLASH_HOUR_IS_HIGH
		JP	Z,dec_time_hour
		CP	R1,#00H
		JP	NE,no_set_minute
		LD	R1,#3CH
no_set_minute:
		DEC	R1
		RET
dec_time_hour:
		CP	R2,#00H
		JP	NE,no_set_hour
		LD	R2,#18H
no_set_hour:
		DEC	R2
		RET
trtime_digital:
		CALL	GET_DIGITAL_VAL
		CP	ACC_RET_VAL,#00H
		JP	EQ,trtime_ret
		FLASH_HOUR_IS_HIGH
		JP	Z,digital_hour
		CP	digital_val,#3CH
		JP	ULT,no_clear_digital_minute
		CLR	digital_val
no_clear_digital_minute:
		LD	R1,digital_val
		RET
digital_hour:
		CP	digital_val,#18H
		JP	ULT,no_clear_digital_hour
		CLR	digital_val
no_clear_digital_hour:
		LD	R1,digital_val
trtime_ret:
		RET
.IF 0
TUNER_STATUS		ENDP
.ENDIF

.IF 0
TRSLEEP_STATUS	PROC
.ENDIF
TRSLEEP_STATUS:
		KEY_VALID_IS_LOW
		JP	Z,trsleep_ret
		CP	Current_Key,#IR_SLEEP_ON_KEY
		JP	NE,trsleep_key
		XOR_SLEEP_ON
		CLR_KEY_VALID
		LD	SHOW_STATIC,#SHOW_SLEEP
		RET
trsleep_key:
		CP	SHOW_STATIC,#SHOW_SLEEP_TIME
		JP	EQ,no_init_trsleep
		CP	Current_Key,#IR_SLEEP_KEY
		JP	NE,trsleep_ret
		CLR_FLASH_HOUR
		CLR_KEY_VALID
		LD	SHOW_STATIC,#SHOW_SLEEP_TIME
		RET
no_init_trsleep:
		CP	Current_Key,#IR_SLEEP_KEY
		JP	NE,sleep_vol_inc
		LD	SHOW_STATIC,#SHOW_FM
		RET
sleep_vol_inc:
		CP	Current_Key,#IR_VOL_INC_KEY
		JP	NE,sleep_vol_dec
		CLR_KEY_VALID
		INC	TUNER_SLEEP_TIME
		CP	TUNER_SLEEP_TIME,#5AH
		JP	ULT,trsleep_ret
		CLR	TUNER_SLEEP_TIME
		RET
sleep_vol_dec:
		
		CP	Current_Key,#IR_VOL_DEC_KEY
		JP	NE,sleep_digital
		CLR_KEY_VALID
		CP	TUNER_SLEEP_TIME,#00H
		JP	NE,no_set_sleep_time
		LD	TUNER_SLEEP_TIME,#5AH
no_set_sleep_time:
		DEC	TUNER_SLEEP_TIME
		RET
sleep_digital:
		CALL	GET_DIGITAL_VAL
		CP	ACC_RET_VAL,#00H
		JP	EQ,trsleep_ret
		CP	digital_val,#5AH
		JP	ULT,ld_trsleep
		CLR	digital_val
ld_trsleep:
		LD	TUNER_SLEEP_TIME,digital_val
trsleep_ret:
		RET
.IF 0
TRSLEEP_STATUS		ENDP
.ENDIF


;*************************************************************
;			eq function
;*************************************************************
.IF 0
EQ_key_par		proc
.ENDIF
EQ_key_par:
EQ_JAZZ:
		CP	Current_Key,#IR_JAZZ_KEY
		JP	NE,EQ_FLAT
		LD	EQ_VAL,#00H
		JP	EQ_FUNCTION
EQ_FLAT:
		CP	Current_Key,#IR_FLAT_KEY
		JP	NE,EQ_CLASSIC
		LD	EQ_VAL,#00H
		JP	EQ_FUNCTION

EQ_CLASSIC:
		CP	Current_Key,#IR_CLASSIC_KEY
		JP	NE,EQ_ROCK
		LD	EQ_VAL,#00H
		JP	EQ_FUNCTION
EQ_ROCK:
		CP	Current_Key,#IR_ROCK_KEY
		JP	NE,EQ_SINGNED
		LD	EQ_VAL,#00H
		JP	EQ_FUNCTION
EQ_SINGNED:
		CP	Current_Key,#IR_CHANGE_EQ_KEY
		JP	NE,EQ_RET
		LD	EQ_VAL,#00H

EQ_FUNCTION:
		CLR_KEY_VALID

		LD	ACC_SEN_VAL,#VFD_PANEL_CLASSIC
		call	VFD_NOSHOW_POINT
		LD	ACC_SEN_VAL,#VFD_PANEL_FLAT
		call	VFD_NOSHOW_POINT
		LD	ACC_SEN_VAL,#VFD_PANEL_JAZZ
		call	VFD_NOSHOW_POINT
		LD	ACC_SEN_VAL,#VFD_PANEL_ROCK
		call	VFD_NOSHOW_POINT
		
		call	VFD_SHOW_POINT
		;mov	a,40h
		;or	a,EQ_RAM
		call	PT2314_SEND
EQ_RET:
		ret
.IF 0
EQ_key_par	endp
.ENDIF

.IF 0
CLR_VFD_RAM	PROC
.ENDIF
CLR_VFD_RAM:
		LD	R0,#VFD_SHOW_BYTE_ADDR
con_set_ram:
		LD	@R0,#00H
		INC	R0
		CP	R0,#9FH
		JP	NE,con_set_ram
		ret

.IF 0
CLR_VFD_RAM	ENDP
.ENDIF

.IF 0
show_volume_eq	proc
.ENDIF
show_volume_eq:
		call	VFD_GetSW
		AND	ACC_RET_VAL,#0FH
		XOR	ACC_RET_VAL,#0FFH
		RADIO_AUTO_SEARCH_dec_IS_LOW
		JP	Z,no_clear_eq_volume
		CLR	ACC_RET_VAL
		RADIO_AUTO_SEARCH_inc_IS_LOW
		JP	Z,no_clear_eq_volume
		CLR	ACC_RET_VAL
no_clear_eq_volume:
		TM	ACC_RET_VAL,#08H
		JP	Z,clear_volume_max4
		OR	VFD_SHOW_BYTE_22,#02H
		OR	VFD_SHOW_BYTE_23,#0E0H
		jp	show_next_volume1
clear_volume_max4:
		AND	VFD_SHOW_BYTE_22,#0FDH
		AND	VFD_SHOW_BYTE_23,#01FH
show_next_volume1:
		TM	ACC_RET_VAL,#04H
		JP	Z,clear_volume_max3
		OR	VFD_SHOW_BYTE_22,#04H
		OR	VFD_SHOW_BYTE_23,#1CH
		jp	show_next_volume2
clear_volume_max3:
		AND	VFD_SHOW_BYTE_22,#0FBH
		AND	VFD_SHOW_BYTE_23,#0E3H
show_next_volume2:		
		TM	ACC_RET_VAL,#02H
		JP	Z,clear_volume_max2
		OR	VFD_SHOW_BYTE_22,#88H
		OR	VFD_SHOW_BYTE_23,#03H
		jp	show_next_volume3
clear_volume_max2:
		AND	VFD_SHOW_BYTE_22,#77H
		AND	VFD_SHOW_BYTE_23,#0FCH
show_next_volume3:		
		TM	ACC_RET_VAL,#01H
		JP	Z,clear_volume_max1
		OR	VFD_SHOW_BYTE_22,#71H
		jp	show_next_volume4
clear_volume_max1:
		AND	VFD_SHOW_BYTE_22,#8EH
show_next_volume4:		
		RET
.IF 0
show_volume_eq		endp
.ENDIF
;******************************************************

;**********************************************************************
;		VFD_SHOW_DATA_ADDR FROM VFD_SHOW_DATA_ADDR
;		DATA FROM  ACC
;
.IF 0
VFD_SHOW_DATA	PROC
.ENDIF
;**********************************************************************
VFD_SHOW_DATA:
		PUSH	R0
		LD	VAL_VFD_ADDR,VFD_SHOW_DATA_ADDR
		INC	VAL_VFD_ADDR
		LD	R0,ACC_SEN_VAL
		AND	ACC_SEN_VAL,#0FH
		call	VFD_SHOW_CHAR
		
		LD	ACC_SEN_VAL,R0	;HIGH
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		LD	VAL_VFD_ADDR,VFD_SHOW_DATA_ADDR
		AND	ACC_SEN_VAL,#0FH
		call	VFD_SHOW_CHAR
		POP	R0
		ret
.IF 0
VFD_SHOW_DATA		ENDP
.ENDIF
;**************************************************
.IF 0
RL_FLASH_CHAR		PROC
.ENDIF
RL_FLASH_CHAR:
		LD	R0,#FLASH_CHAR_ADDR
		LD	R1,#7H
		LD	R2,R0
		INC	R2
con_rl:
		LD	R3,@R2
		LD	@R0,R3
		INC	R0
		INC	R2
		DEC	R1
		CP	R1,#00H
		JP	NE,con_rl
		RET
.IF 0
RL_FLASH_CHAR	ENDP
.ENDIF



        ORG		01E00H
		DB	1H
		DB	2H
		DB	4H
		DB	8H
		DB	10H
		DB	20H
		DB	40H
		DB	80H
        ORG		01E08H
	  	DB	SEG0_A	,SEG0_B	,SEG0_C	,SEG0_D	,SEG0_E	,SEG0_F	,SEG0_G	,SEG0_H	,SEG0_I	,SEG0_J	,SEG0_K	,SEG0_L	,SEG0_M	,SEG0_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG1_A	,SEG1_B	,SEG1_C	,SEG1_D	,SEG1_E	,SEG1_F	,SEG1_G	,SEG1_H	,SEG1_I	,SEG1_J	,SEG1_K	,SEG1_L	,SEG1_M	,SEG1_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG2_A	,SEG2_B	,SEG2_C	,SEG2_D	,SEG2_E	,SEG2_F	,SEG2_G	,SEG2_H	,SEG2_I	,SEG2_J	,SEG2_K	,SEG2_L	,SEG2_M	,SEG2_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG3_A	,SEG3_B	,SEG3_C	,SEG3_D	,SEG3_E	,SEG3_F	,SEG3_G	,SEG3_H	,SEG3_I	,SEG3_J	,SEG3_K	,SEG3_L	,SEG3_M	,SEG3_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG4_A	,SEG4_B	,SEG4_C	,SEG4_D	,SEG4_E	,SEG4_F	,SEG4_G	,SEG4_H	,SEG4_I	,SEG4_J	,SEG4_K	,SEG4_L	,SEG4_M	,SEG4_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG5_A	,SEG5_B	,SEG5_C	,SEG5_D	,SEG5_E	,SEG5_F	,SEG5_G	,SEG5_H	,SEG5_I	,SEG5_J	,SEG5_K	,SEG5_L	,SEG5_M	,SEG5_N	,CHAR_NULL ,CHAR_NULL
		DB	SEG6_A	,SEG6_B	,SEG6_C	,SEG6_D	,SEG6_E	,SEG6_F	,SEG6_G	,SEG6_H	,SEG6_I	,SEG6_J	,SEG6_K	,SEG6_L	,SEG6_M	,SEG6_N	,CHAR_NULL ,CHAR_NULL
		DB      SEG7_A	,SEG7_B	,SEG7_C	,SEG7_D	,SEG7_E	,SEG7_F	,SEG7_G	,SEG7_H	,SEG7_I	,SEG7_J	,SEG7_K	,SEG7_L	,SEG7_M	,SEG7_N	,CHAR_NULL ,CHAR_NULL

        ORG		01E88H
		DW	CHAR_O_
		DW	CHAR_1_
		DW	CHAR_2_
		DW	CHAR_3_
		DW	CHAR_4_
		DW	CHAR_5_
		DW	CHAR_6_
		DW	CHAR_7_
		DW	CHAR_8_
		DW	CHAR_9_
		DW	CHAR_A_
		DW	CHAR_B_
		DW	CHAR_C_
		DW	CHAR_D_
		DW	CHAR_E_
		DW	CHAR_F_
		DW	

⌨️ 快捷键说明

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