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

📄 radio.src

📁 接收红外遥控,控制2314
💻 SRC
📖 第 1 页 / 共 5 页
字号:
.ENDIF
;***********************************************************
.IF 0
PT2314_NOMUTE		PROC
.ENDIF
PT2314_NOMUTE:
		LD	ACC_SEN_VAL,#80H
		call	PT2314_SEND
		LD	ACC_SEN_VAL,#0A0H
		call	PT2314_SEND
		RET
.IF 0
PT2314_NOMUTE	ENDP
.ENDIF

.IF 0
PT2314_MUTE		PROC
.ENDIF
PT2314_MUTE:
		LD	ACC_SEN_VAL,#9FH
		call	PT2314_SEND
		LD	ACC_SEN_VAL,#0BFH
		call	PT2314_SEND
		RET
.IF 0
PT2314_MUTE		ENDP
.ENDIF
;**********************************************************************
;			PT2313_IC2_START
;**********************************************************************
.IF 0
PT2314_IC2_START	proc
.ENDIF
PT2314_IC2_START:
	PT2314_DATA_OUT_MODE
	SET_PT2314_DATA
	call	DELAY_TIME
	SET_PT2314_CLK
	call	DELAY_TIME
	CLR_PT2314_DATA
	call	DELAY_TIME    ;   /* 起始条件锁定时间大于4μs*/
    	CLR_PT2314_CLK
	call	DELAY_TIME 
	ret
.IF 0
PT2314_IC2_START	endp
.ENDIF
;*************************************************************************

;*************************************************************************
;
;			PT2313_IC2_END
;
.IF 0
PT2314_IC2_END	proc
.ENDIF
;*************************************************************************
PT2314_IC2_END:
		CLR_PT2314_CLK
		CLR_PT2314_DATA
		call		DELAY_TIME;
		SET_PT2314_CLK
		call		DELAY_TIME;          /*结束条件建立时间大于4μs*/
		SET_PT2314_DATA
		call		DELAY_TIME;
		ret
.IF 0
PT2314_IC2_END		endp
.ENDIF

;*************************************************************************

;*************************************************************************
;
;			VAL_PT2313_SEND_DATA FORM ACC
;
.IF 0
PT2314_IC2_SEND_8		proc
.ENDIF
;*************************************************************************
PT2314_IC2_SEND_8:
		PUSH		R0
		PUSH		R1
		LD		R1,#08H
s_nextb:
		CLR_PT2314_DATA
		TM		ACC_SEN_VAL,#80H
		JP		Z,no_set_data
		SET_PT2314_DATA
no_set_data:
		RL		ACC_SEN_VAL
		call		DELAY_TIME
		SET_PT2314_CLK
		call		DELAY_TIME
		CLR_PT2314_CLK
		DEC		R1
		CP		R1,#00H
		JP		NE,s_nextb
		call		DELAY_TIME
		PT2314_DATA_IN_MODE
		call		DELAY_TIME
		SET_PT2314_CLK
		call		DELAY_TIME
test_ack:
		PT2314_DATA_IS_HIGH
		JP		Z,ack_error_ret
		CLR_PT2314_CLK
		PT2314_DATA_OUT_MODE
		call		DELAY_TIME
		LD		ACC_RET_VAL,#01H
		ret	
 ack_error_ret:
 		
 		CLR_PT2314_CLK
		call		DELAY_TIME
		PT2314_DATA_OUT_MODE
		call		DELAY_TIME
		CLR		ACC_RET_VAL
		ret	
.IF 0
PT2314_IC2_SEND_8		endp
.ENDIF
;*************************************************************************

;*************************************************************************
;		  MAIN:PT2313_SEND 
;
;		  pt2313_send_data from acc
;
.IF 0
PT2314_SEND	PROC
.ENDIF
;*************************************************************************
PT2314_SEND:
 	;----------send addr------------
		PUSH		ACC_SEN_VAL
		call		PT2314_IC2_START
		LD		ACC_SEN_VAL,#88H
		call		PT2314_IC2_SEND_8	
		CP		ACC_RET_VAL,#0h
		JP		Z,send_error
 	;----------send val-------------
 		POP		ACC_SEN_VAL
 		call		PT2314_IC2_SEND_8	
		CP		ACC_RET_VAL,#00H
		JP		Z,send_error
		call		PT2314_IC2_END
		ret	
	send_error:
		POP		ACC_SEN_VAL
		call		PT2314_IC2_END
		ret			;fail
.IF 0
PT2314_SEND		ENDP
.ENDIF

;*****************************************************
;		read byte in VAL_READ_24C02
;*****************************************************
.IF 0
IC2_READ_8	PROC
.ENDIF
IC2_READ_8:
		LD		ACC_SEN_VAL,#08H
		PT2314_DATA_IN_MODE
r_byte:
		SET_PT2314_CLK
		call		DELAY_TIME
		RL		VAL_READ_24C02
		OR		VAL_READ_24C02,#01H
		PT2314_DATA_IS_HIGH
		JP		Z,no_clear_read_data
		AND		VAL_READ_24C02,#0FEH
no_clear_read_data:
		call		DELAY_TIME
		CLR_PT2314_CLK
		call		DELAY_TIME
		DEC		ACC_SEN_VAL
		CP		ACC_SEN_VAL,#00H
		JP		NE,r_byte
		SET_PT2314_CLK
		call		DELAY_TIME
		CLR_PT2314_CLK
		call		DELAY_TIME
		PT2314_DATA_OUT_MODE
		ret
.IF 0
IC2_READ_8	ENDP
.ENDIF
;*******************************************************




;*******************************************************
;		address from  acc_send_val
;		return	read_val in VAL_READ_24C02
;*******************************************************
.IF 0
IC2_Read_Byte	proc
.ENDIF
IC2_Read_Byte:
		PUSH		ACC_SEN_VAL
		call		PT2314_IC2_START
		LD		ACC_SEN_VAL,#0A0H			
		call		PT2314_IC2_SEND_8	;发送写命令
		CP		ACC_RET_VAL,#01H
	 	JP		Z,send_read_addr
	 	POP		ACC_SEN_VAL
	 	;ret	
	 	JP		read_error
send_read_addr:
		POP		ACC_SEN_VAL
		call		PT2314_IC2_SEND_8	;发送需读取数据的地址
		CP		ACC_RET_VAL,#01H
		JP		NE,read_error
		call		PT2314_IC2_START
		LD		ACC_SEN_VAL,#0A1H
		call		PT2314_IC2_SEND_8	;发送读命令
		CP		ACC_RET_VAL,#01H
		JP		NE,read_error
		call		IC2_READ_8		;读取指定地址的数据
		call		PT2314_IC2_END
		ret		
read_error:
		call		PT2314_IC2_END
		ret		
.IF 0
IC2_Read_Byte	endp
.ENDIF
;********************************************************


;*********************************************************
;	input address	FROM	VAL_24C02_ADDR	data from acc_SEN_VAL
;*********************************************************
.IF 0
IC2_Write_byte		proc
.ENDIF
IC2_Write_byte:
		PUSH		ACC_SEN_VAL
	 	call		PT2314_IC2_START
	 	LD		ACC_SEN_VAL,#0A0H
	 	call		PT2314_IC2_SEND_8	;发送写命令[7--4为器件地址,3--1为页码,0为模式]
	 	CP		ACC_RET_VAL,#01H
	 	JP		Z,send_write_addr
	 	POP		ACC_SEN_VAL
	  	RET		
send_write_addr:
		LD		ACC_SEN_VAL,VAL_24C02_ADDR
	 	call		PT2314_IC2_SEND_8	;发送地址
	 	CP		ACC_RET_VAL,#01H
	 	JP		Z,send_write_data
	 	POP		ACC_SEN_VAL
	 	RET		
send_write_data:
	 	POP		ACC_SEN_VAL
	 	call		PT2314_IC2_SEND_8	;写数据到指定地址
	 	CP		ACC_RET_VAL,#01H
	 	JP		Z,write_byte_end
	 	RET		
write_byte_end:
	 	call		PT2314_IC2_END
	 	RET		
.IF 0
IC2_Write_byte			endp
.ENDIF

init	.MACRO
	CLR	to0_L
	CLR	to1_H
	CLR	to2
	CLR	to3
	CLR	ACC_SEN_VAL
	.ENDM
.IF 0
unbin_add_16 proc		;data0_Ldata1_H+data4_Ldata5_H---->to0to1_Hto2 
.ENDIF
unbin_add_16:
	init
        ADD	data0_L,data4_L
        LD	to0_L,data0_L
        ADC	data1_H,data5_H
        LD	to1_H,data1_H
        ADC	to2,#00H
        ret
.IF 0
unbin_add_16 endp
.ENDIF
.IF 0
unbin_sub_16 proc         ;data0_Ldata1_H-data4_Ldata5_H---->to0_Lto1_Hto2
.ENDIF
unbin_sub_16:
	init
	CP	data0_L,data4_L
	JP	ULT,low_add_255
	SUB	data0_L,data4_L
	JP	high_sub
low_add_255:
	CP	data1_H,data5_H
	JP	ULE,sub_ret
	DEC	data1_H
	XOR	data4_L,#0FFH
	ADD	data0_L,data4_L
	INC	data0_L
high_sub:
	CP	data1_H,data5_H
	JP	ULT,sub_ret
	LD	to0_L,data0_L
	SUB	data1_H,data5_H
	LD	to1_H,data1_H
	ret
sub_ret:
	LD	to2,#0FFH
	RET
.IF 0
unbin_sub_16 endp
.ENDIF

.IF 0
bintobcd_16	proc		;data0_Ldata1_H---->to0_Lto1_Hto2to3
.ENDIF
bintobcd_16:
		CLR	FLASH_CHAR_5
		LD	to0_L,data0_L
		LD	to1_H,data1_H
con_sub_10000:
		INC	FLASH_CHAR_5
		LD	data1_H,to1_H
		LD	data0_L,to0_L
		PUSH	data1_H
		PUSH	data0_L
		LD	data5_H,#27H
		LD	data4_L,#10H
		CALL	unbin_sub_16
		POP	data0_L
		POP	data1_H
		CP	to2,#00H
		JP	Z,con_sub_10000
		DEC	FLASH_CHAR_5
		
		LD	to0_L,data0_L
		LD	to1_H,data1_H
		clr	FLASH_CHAR_4
con_sub_1000:
		INC	FLASH_CHAR_4
		LD	data1_H,to1_H
		LD	data0_L,to0_L
		PUSH	data1_H
		PUSH	data0_L
		LD	data5_H,#03H
		LD	data4_L,#0E8H
		CALL	unbin_sub_16
		POP	data0_L
		POP	data1_H
		CP	to2,#00H
		JP	Z,con_sub_1000
		DEC	FLASH_CHAR_4

		LD	to0_L,data0_L
		LD	to1_H,data1_H
		CLR	FLASH_CHAR_3
con_sub_100:
		INC	FLASH_CHAR_3
		LD	data1_H,to1_H
		LD	data0_L,to0_L
		PUSH	data1_H
		PUSH	data0_L
		LD	data5_H,#00H
		LD	data4_L,#64H
		CALL	unbin_sub_16
		POP	data0_L
		POP	data1_H
		CP	to2,#00H
		JP	Z,con_sub_100
		DEC	FLASH_CHAR_3
		
		LD	ACC_SEN_VAL,data0_L
		CALL	bintobcd_8
		LD	to0_L,ACC_SEN_VAL
		RL	FLASH_CHAR_4
		RL	FLASH_CHAR_4
		RL	FLASH_CHAR_4
		RL	FLASH_CHAR_4
		OR	FLASH_CHAR_4,FLASH_CHAR_3
		LD	to1_H,FLASH_CHAR_4
		LD	to2,FLASH_CHAR_5
		RET
.IF 0
bintobcd_16 endp
.ENDIF
.IF 0
unbin_mul_16 proc		
.ENDIF
unbin_mul_16:
	init
	LD	count0,#10H
    	RCF
rradd16:
        rrc	to3
        rrc	to2
        rrc	data5_H         
        rrc	data4_L
        JP	C,mul_add_c
        JP	rr116
mul_add_c:
        ADD	to2,data0_L
        ADC	to3,data1_H
rr116:
	SUB	count0,#01H
	JP	Z,unbin_mul_end
        JP	rradd16   
unbin_mul_end:
        rrc	to3
        rrc	to2
        rrc	data5_H
        rrc	data4_L
        LD	to0_L,data4_L
        LD	to1_H,data5_H
	ret
.IF 0
unbin_mul_16 endp
.ENDIF
;16bit bin to bcd
;***********************************************
;from  acc_SEN_VAL
;return	acc_SEN_VAL
;***********************************************
.IF 0
bintobcd_8	proc
.ENDIF
bintobcd_8:
		clr	data5_H
bin_tobcd:
		LD	data4_L,ACC_SEN_VAL
		SUB	ACC_SEN_VAL,#0AH
		JP	UGE,inc_10p
		JP	end_bcd	
inc_10p:
		inc	data5_H
		JP	bin_tobcd
end_bcd:
		LD	ACC_SEN_VAL,data5_H
		RL	ACC_SEN_VAL
		RL	ACC_SEN_VAL
		RL	ACC_SEN_VAL
		RL	ACC_SEN_VAL
		OR	ACC_SEN_VAL,data4_L
		ret
.IF 0
bintobcd_8	endp
.ENDIF

;***********************************************
;
;
;	SET_DIGITAL_KEY	IS 1  DIGITAL IS VALID
;		digital_val
.IF 0
GET_DIGITAL_VAL		PROC
.ENDIF
GET_DIGITAL_VAL:
			PUSH	R1
			PUSH	R2
			PUSH	R3
			CLR	ACC_RET_VAL
			KEY_VALID_IS_HIGH
			JP	Z,get_digital_con
			ret
get_digital_con:
			CLR	R3
			CLR	R2
get_next_digital:
			LDC	R1,#1EF0H[RR2]
			CP	Current_Key,R1
			JP	Z,mov_val_to_digital
                        INC     R3
			CP	R3,#0BH		;
			JP	ULT,get_next_digital
			JP	get_digital_end
mov_val_to_digital:
			CLR_KEY_VALID
			OR	ACC_RET_VAL,#01H		;RET SUCCES
			CP	digital_val,#09H
			JP	UGT,digi_10
			LD	digital_val,R3
			;DEC 	digital_val
			SET_DIGITAL_KEY
			JP	get_digital_end
digi_10:
			ADD	digital_val,R3
			;DEC	digital_val
			CP	R3,#0AH
			JP	Z,get_digital_end
			SET_DIGITAL_KEY
get_digital_end:
			POP	R3
			POP	R2
			POP	R1
			RET
.IF 0
GET_DIGITAL_VAL		ENDP
.ENDIF

;*******************************************************************

.IF 0
SAME_VFD_KEY_TO_IR_KEY	PROC
.ENDIF

SAME_VFD_KEY_TO_IR_KEY:
same_key_con:
		;@@@@@@@@@@@@@@ TIME KEY @@@@@@@@@@@
		CP	Current_Key,#VFD_TROFF_KEY
		JP	Z,load_ir_troff_key
		CP	Current_Key,#VFD_TRON_KEY
		JP	Z,load_ir_tron_key
		CP	Current_Key,#VFD_SLEEP_KEY
		JP	Z,load_ir_sleep_key
		CP	Current_Key,#VFD_TRTIME_KEY
		JP	Z,load_ir_irtime_key

		;@@@@@@@@@@@@@@ VOLUME KEY @@@@@@@@@
		CP	Current_Key,#VFD_VOL_DEC_KEY
		JP	Z,load_ir_vol_dec_key
		CP	Current_Key,#VFD_VOL_INC_KEY
		JP	Z,load_ir_vol_inc_key
		
		CP	Current_Key,#VFD_POWER_KEY
		JP	Z,load_ir_power_key
		CP	Current_Key,#VFD_MEM_KEY
		JP	Z,load_ir_mem_key
		CP	Current_Key,#VFD_FB_KEY
		JP	Z,load_ir_fb_key
		CP	Current_Key,#VFD_FF_KEY
		JP	Z,load_ir_ff_key
		
		;@@@@@@@@@@@@@@ EQ KEY @@@@@@@@@@@@@@
		CP	Current_Key,#VFD_JAZZ_KEY
		JP	load_ir_jazz_key
		CP	Current_Key,#VFD_FLAT_KEY
		JP	load_ir_flat_key
		CP	Current_Key,#VFD_CLASSIC_KEY
		JP	load_ir_classic_key
 		CP	Current_Key,#VFD_ROCK_KEY
		JP	load_ir_rock_key
		CP	Current_Key,#VFD_CHANGE_EQ_KEY
		JP	load_ir_change_eq_key
		RET

load_ir_troff_key:
		LD	Current_Key,#IR_TROFF_KEY
		RET
load_ir_tron_key:
		LD	Current_Key,#IR_TRON_KEY
		RET
load_ir_sleep_key:
		LD	Current_Key,#IR_SLEEP_KEY
		RET
load_ir_irtime_key:
		LD	Current_Key,#IR_TRTIME_KEY
		RET
load_ir_vol_dec_key:
		LD	Current_Key,#IR_VOL_DEC_KEY
		RET
load_ir_vol_inc_key:
		LD	Current_Key,#IR_VOL_INC_KEY
		RET
load_ir_power_key:
		LD	Current_Key,#IR_POWER_KEY
		RET
load_ir_mem_key:	
		LD	Current_Key,#IR_MEM_KEY
		RET
load_ir_fb_key:
		LD	Current_Key,#IR_FB_KEY
		RET
load_ir_ff_key:
		LD	Current_Key,#IR_FF_KEY
		RET
load_ir_jazz_key:
		LD	Current_Key,#IR_JAZZ_KEY
		RET
load_ir_flat_key:
		LD	Current_Key,#IR_FLAT_KEY
		RET
load_ir_classic_key:
		LD	Current_Key,#IR_CLASSIC_KEY
		RET
load_ir_rock_key:
		LD	Current_Key,#IR_ROCK_KEY
		RET
load_ir_change_eq_key:
		LD	Current_Key,#IR_CHANGE_EQ_KEY
		RET

.IF 0
SAME_VFD_KEY_TO_IR_KEY	ENDP
.ENDIF

 ;*********************************************************
.IF 0
volume_key_par	proc
.ENDIF
volume_key_par:
		CP	Current_Key,#IR_VOL_INC_KEY
		JP	NE,vol_dec_ir_fun
vol_inc_fun:
		;音量加
		CP	volume_val,#3CH
		JP	UGE,show_vol
		INC	volume_val
		;show vol+

		
		JP	vol_fun
vol_dec_ir_fun:
		CP	Current_Key,#IR_VOL_DEC_KEY
		JP	Z,vol_dec_fun
		;clr	show_volume
vol_mute:		
		CP	Current_Key,#IR_MUTE_KEY
		JP	Z,vol_mute_fun
		RET
vol_mute_fun:
		XOR_MUTE
		LD	ACC_SEN_VAL,#VFD_PANEL_MUTE
		CALL	VFD_NOSHOW_POINT
		MUTE_IS_LOW
		JP	Z,noshow_mute_icon
		LD	ACC_SEN_VAL,#VFD_PANEL_MUTE
		CALL	VFD_SHOW_POINT
noshow_mute_icon:
		RET	
vol_dec_fun:
		;音量减
		CP	volume_val,#00H
		JP	Z,show_vol

⌨️ 快捷键说明

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