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

📄 radio.src

📁 接收红外遥控,控制2314
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;您好,
;您提到的指令周期是这样的,指令执行时间T=(1/fxx)*分频值*指令执行周期数。通过这个公式,您可以算出具体的指令操作时间。
;关于9498的外围电路典型配置,稍晚一点给您发过去。

.include        "C:\OPENice\Include\Reg\s3c9498.reg"
.include	"pt16311.reg"
.include	"radio.reg"
.include	"ram.reg"
.include	"vcd.reg"
.include	"2313.reg"
.include	"main.reg"
.include	"key.reg"
		ORG	0000H
		VECTOR	00H,INIT_9498
INIT_9498:
		
		TCM     P1INT,#01H	     ;判断是否是外部中断0
		JP	Z,I_INT0		;外部中断0
                TCM     P1INT,#02H	             ;判断是否是外部中断1
		JP	Z,I_INT1		;执行外部中断1
                TCM     TCCON,#01H
		JP	Z,TIMER1_INIT		;时间溢出中断C
		IRET
;****************************************************************
;			外部中断0
;****************************************************************
I_INT0:
		CLR             time_delay
		CLR             time_delay1
		IS_STATE_FIRST_9M
		JP		Z,state_first
		IS_STATE_SECN_2M
		JP		Z,state_third
		SET_FIRST_9M
		jp             ex_int_ret

		ORG 003CH
		DB 0FFH
		DB 0FFH ; 
		DB 0C7H ;
                DB 0FEH ; 
                
		
state_first:
		CP		time_count,#55H
		JP		UGT,error_return
		CP		time_count,#32H
		JP		ULT,error_return
		SET_SECN_2M
		CLR_FIRST_9M
		LD		remote_bit_count,#20H
		jp             ex_int_ret
state_third:
		CP		time_count,#12H
		JP		UGT,error_return
		CP		time_count,#02H
		JP		ULT,error_return
		SUB		time_count,#08H
		rrc             remote_cmd_code1
		rrc             remote_cmd_code0
		rrc             remote_sys_code1
		rrc             remote_sys_code0
		SUB		remote_bit_count,#01H
		JP		Z,set_ok
		jp             ex_int_ret
set_ok:
		SET_DATA_OK
		;set		remote_key_is_down
error_return:
		CLR_SECN_2M
		SET_FIRST_9M
ex_int_ret:
		CLR             time_count
		AND	P1INT,#11111110B
		IRET
;****************************************************
;---------------ext int end----------------
;****************************************************




;****************************************************************
;			外部中断1
;****************************************************************
I_INT1:

;****************************************************
t1_int:
		VCD_CS_IS_HIGH
		JP		z,err_ret
		INT2_START_IS_HIGH
		JP		Z,int_val
		RR		pulse_data0
		OR		pulse_data0,#80H
		VCD_DATA_IS_HIGH
		JP		no_clr_pulse0
		AND		pulse_data0,#7FH
no_clr_pulse0:
		SUB		pulse_count,#1H
		JP		NE,int1_ret
int1_data_ok:
		CP		pulse_data0,#0FFH
		JP		NE,mov_val_to_vcd_ram
clr_pulse_addr:
		CLR		pulse_addr		;pulse_addr val reset ffh
		JP		int1_ret
mov_val_to_vcd_ram:
		CP		pulse_addr,#15H
		JP		UGT,int1_ret
		LD		R15,#VCD_SHOW_BYTE_ADDR
		ADD		R15,pulse_addr
		LD		@R15,pulse_data0
		INC		pulse_addr
		SET_INT2_START
		JP		int1_ret
int_val:
		;CLR		pulse_data0
		OR		pulse_data0,#80H
		INT2_START_IS_HIGH
		JP		Z,no_clr_pulse07
		AND		pulse_data0,#7FH
no_clr_pulse07:
		LD		pulse_count,#07H
		jp		int1_ret
err_ret:
		SET_INT2_START
		CLR		pulse_count
		;clr		pulse_data0
		;jp		int1_ret	
int1_ret:

		AND	P1INT,#11111101B
		IRET
;****************************************************************


		ORG	0100H
RESET:
		DI
		LD 	BTCON,#10100011b 	; Disable Watch-dog
		LD	SP,#0C0H
		LD      TCNTSEL,#02H
                LD      CLKCON,#00011000B
                LD      TCCON,#00101110B        ;fxx/8
                LD      TCDATA,#0c8H		;8/8=1US 1*200=200US
		CALL	IO_INIT
		LD	R0,#0A0H
CLR_RAM:
		DEC	R0
		CLR	@R0
		CP	R0,#00H
		JP	NE,CLR_RAM
		EI
		SET_POWER
		LD	ACC_SEN_VAL,#0AH
		CALL	VFD_WriteLed
		
		LD	ACC_SEN_VAL,#012H
		CALL	REMOTE_DELAY_200uS
		call	VFD_INIT
		;CALL	VFD_Refresh_Byte
		call	CLR_VFD_RAM
		LD	ACC_SEN_VAL,#CHAR_K
		CLR	VAL_VFD_ADDR
		CALL	VFD_SHOW_CHAR
		LD	Current_Key,#0FFH
		LD	FUNCTION_STAT,#FUNCTION_Fm
		SET_first_change_function
MAIN:	
		

	;*********************************************************
	;		invalid	when current_key is 0ffh
	;*********************************************************

		CLR_KEY_VALID
		LD	PREVIOUS_KEY,Current_Key
		call	GET_REMOTE_KEY
		CP	Current_Key,#0FFH
		JP	NE,remote_key_valid
		call	VFD_Read_K	;high 7 is 1
		CP	Current_Key,#0FFH
		JP	NE,remote_key_valid
		CLR_KEY_VALID
		jp	vfd_key_invalid
remote_key_valid:
		SET_KEY_VALID
vfd_key_invalid:
.IF 0
;@@@@@@@@@@@@@@@@@@@@@@@@@ TEST VFD KEY @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		KEY_VALID_IS_LOW
		JP	Z,last_even
		LD	ACC_SEN_VAL,Current_Key
		LD	VFD_SHOW_DATA_ADDR,#02H
		CALL	VFD_SHOW_DATA
		JP	last_even

              ;  jp      MAIN
 .ENDIF
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		CALL	SAME_VFD_KEY_TO_IR_KEY
		CALL	TURN_ON_OFF_SLEEP
		CALL	repeat_all_key
		KEY_VALID_IS_LOW
		JP	Z,next_fun0
		CP	Current_Key,PREVIOUS_KEY
		JP	NE,key_is_valid
		CLR_KEY_VALID
key_is_valid:
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		KEY_VALID_IS_LOW
		JP	Z,next_fun0
		call	power_key_par
		call	volume_key_par
		call	CHANGE_FUNC_KEY_Par	;function change key
		call	EQ_key_par

		call	TRON_STATUS
		call	TROFF_STATUS
		call	TRSLEEP_STATUS
		call	TRTIME_STATUS
		









;************************FUNCTION:*******************************
next_fun0:

		CP	FUNCTION_STAT,#Function_Power
		JP	NE,next_fun1
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 power_fun:
		first_change_function_IS_LOW
		JP	Z,next_fun1
		;LD	FUNCTION_STAT_bak,FUNCTION_STAT ;时钟状态不必保留









;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;****************************************************************
next_fun1:	
		CP	FUNCTION_STAT,#Function_Tape
		JP	NE,next_fun2
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
tape_fun:

		LD	FUNCTION_STAT_bak,FUNCTION_STAT   ;第一次时执行









;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;****************************************************************
next_fun2:	
		CP	FUNCTION_STAT,#Function_Aux
		JP	NE,next_fun3
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
aux_fun:


		LD	FUNCTION_STAT_bak,FUNCTION_STAT   ;第一次时执行













		
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;*****************************************************************
next_fun3:
		CP	FUNCTION_STAT,#FUNCTION_Fm
		JP	NE,next_fun4
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
fm_fun:
.IF 1
		first_change_function_IS_LOW
		JP	Z,fm_next_f1;fm_first_f0
		;******************************************
		;通道转换	fm	init	;通道1
		;******************************************
		CLR_first_change_function
		LD	FUNCTION_STAT_bak,FUNCTION_STAT   ;第一次时执行
		SET_RADIO
		;call	close_tray

		
fm_first_f0:
		;clr	EQ_RAM.0
		;clr	EQ_RAM.1
		;mov	a,40h
		;or	a,EQ_RAM
		LD	ACC_SEN_VAL,#40H
		call	PT2314_SEND
		call	set_volume
		
		LD	ACC_SEN_VAL,#12H
		call	REMOTE_DELAY_200uS
 		call	INIT_FM
		call	REMOVE_RADIO_IN1_VAL
		call	RADIO_SEND_CMD_TO_RADIO
		call	REMOVE_RADIO_IN2_VAL
		call	RADIO_SEND_CMD_TO_RADIO
		LD	ACC_SEN_VAL,#VFD_PANEL_MHZ
		call	VFD_SHOW_POINT
		LD	ACC_SEN_VAL,#VFD_PANEL_CON21
		call	VFD_SHOW_POINT
		LD	ACC_SEN_VAL,#VFD_PANEL_TUNED
		call	VFD_SHOW_POINT
		;******************************************
		;通道转换	end
		;******************************************
fm_next_f1:	
		PROGRAM_STATIC_IS_HIGH
		JP	Z,mem_bank
		call	mem_key_par
		CP	ACC_RET_VAL,#01H
		JP	Z,fm_set_mem_init
		CALL	GET_DIGITAL_VAL
		CP	ACC_RET_VAL,#01H
		JP	Z,fm_con_show_station
		CALL	BACK_FF_KEY
		CP	ACC_RET_VAL,#01H
		JP	NE,mem_end
		; FF FB KEY
		
		JP	fm_change_fre

;数字按键有效
fm_con_show_station:
		LD	SHOW_STATION,#SHOW_STATION
		CLR_RADIO_AUTO_SEARCH_dec
		CLR_RADIO_AUTO_SEARCH_inc
		DIGITAL_KEY_IS_LOW		
		JP	Z,mem_end	;数字无效
		;数字有效
		LD	FM_STATION,digital_val
		;从24C02读取频率
		

		JP	fm_change_fre
		
fm_set_mem_init:
	;*********************************************************
		LD	digital_val,FM_SAVE_STATION
		SET_PROGRAM_STATIC
		CLR_RADIO_AUTO_SEARCH_dec
		CLR_RADIO_AUTO_SEARCH_inc
		LD	SHOW_STATIC,#SHOW_MEM
		;闪烁MEM图标
		JP	mem_end
	;*********************************************************
fm_change_fre:
		CALL	REMOVE_RADIO_IN1_VAL
		call	RADIO_SEND_CMD_TO_RADIO
		call	REMOVE_RADIO_IN2_VAL
		call	RADIO_SEND_CMD_TO_RADIO

		RADIO_AUTO_SEARCH_dec_IS_HIGH
		JP	Z,fm_if_count
		RADIO_AUTO_SEARCH_inc_IS_LOW
		JP	Z,mem_end
fm_if_count:
		;call	PT2313_MUTE	;test
		call	RADIO_CHECK_IFCOUNT
		CLR_RADIO_AUTO_SEARCH
		CALL	RADIO_CHECK_IFCOUNT
		CP	ACC_RET_VAL,#01H
		JP	NE,mem_end
		SET_RADIO_AUTO_SEARCH
		CALL	RADIO_CHECK_IFCOUNT
		CP	ACC_RET_VAL,#01H
		JP	NE,mem_end
		CLR_RADIO_AUTO_SEARCH_inc
		CLR_RADIO_AUTO_SEARCH_dec
		;call	PT2313_NO_MUTE	;test
		JP	mem_end
mem_bank:
		call	mem_key_par
		CP	ACC_RET_VAL,#01H
		JP	Z,save_fm_station
		CALL	GET_DIGITAL_VAL
		CP	ACC_RET_VAL,#01H
		JP	NE,show_mem_
		;清除显示时间
show_mem_:
		LD	SHOW_STATIC,#SHOW_MEM
		;显示时间大于四秒 是 清除编程标志 否反回
save_fm_station:
		DIGITAL_KEY_IS_LOW
		JP	Z,mem_end
		LD	FM_SAVE_STATION,digital_val
		;存储台位

		JP	mem_end
clr_mem_flag:
		CLR_PROGRAM_STATIC
		LD	digital_val,FM_STATION
mem_end:
		
		CALL	Show_Fm_Frequenc_Data
.ENDIF


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;******************************************************************
next_fun4:
		CP	FUNCTION_STAT,#FUNCTION_Am
		JP	NE,last_even
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
am_fun:


















;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;******************************************************************
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
last_even:

		CALL	VFD_Refresh_Byte
                JP	MAIN

;			时间C溢出中断
;****************************************************************
TIMER1_INIT:
		
		INC		VAL_REMOTE_DELAY_TIME
		INC             time_count
		VCD_CS_IS_LOW
		JP		Z,TIMER1_JMP_NEXT
		SET_INT2_START
		
TIMER1_JMP_NEXT:
.IF 1
;*****************SEND REMOTE KEY********************************
		INC		REMOTE_AGIN_TIME0
		CP		REMOTE_AGIN_TIME0,#32H
		JP		ULT,next_even1
		CLR		REMOTE_AGIN_TIME0
		INC		secon_times
		CP		secon_times,#62H
		JP		ULT,next_even1
		INC		secon_time
		clr		secon_times

		;XOR		P0,#00000011B

		XOR_FLASH_MEM
;***********************get remode code *************************
.ENDIF
next_even1:
		
		INC             time_delay
		CP		time_delay,#1EH
		JP		ULT,return_t_int
		INC             time_delay1
		CLR		time_delay
		CP		time_delay1,#11H
		JP		ULT,return_t_int
		CLR             time_delay1
		CLR             time_delay
		AND		STATE_ALL,#0FCH
		CLR_IR_KEY_IS_DOWN
return_t_int:	
               
		AND	TCCON,#0FEH
		IRET
;****************************************************************
;			中断结束
;****************************************************************




		
.IF 0
IO_INIT		PROC
.ENDIF
IO_INIT:
 		LD	P0,#04H
		LD	P0CON,#00101010B
		CLR     P1
		LD	P1CONH,#10101010B
		LD	P1CONL,#10110101B
		LD	P1INT,#00111000B
		CLR	P2
		LD	P2CONH,#10101010B
		LD	P2CONL,#10101010B
		CLR	P3
		LD	P3CON,#01101010
 		RET
.IF 0
IO_INIT		ENDP
.ENDIF

;**************************************************
;
;		val_rado_send_data from  ACC_SEN_VAL
.IF 0
RADIO_SEND_BYTE_TO_LC72130	proc
.ENDIF
;**************************************************
RADIO_SEND_BYTE_TO_LC72130:
		PUSH	R0
		LD	R0,#08H
send_byte_to_lc72130:
		radio_clr_clk
		call	DELAY_TIME
		radio_clr_data
		TM	ACC_SEN_VAL,#1H
		JP	Z,no_set_radio_data
		radio_set_data
no_set_radio_data:
		call	DELAY_TIME
		radio_set_clk
		call	DELAY_TIME
		rr	ACC_SEN_VAL
		DEC	R0
		CP	R0,#00H
		JP	NE,send_byte_to_lc72130
end_radio_send_byte:
		POP	R0
		ret
.IF 0
RADIO_SEND_BYTE_TO_LC72130		endp
.ENDIF
;**************************************************


;**************************************************
;
;		SEND 24 BIT
;		cmd from acc_send_val
;
.IF 0
RADIO_SEND_CMD_TO_RADIO	PROC
.ENDIF
;**************************************************
RADIO_SEND_CMD_TO_RADIO:
		radio_clr_cs
		call	RADIO_SEND_BYTE_TO_LC72130
		radio_set_cs
		LD	ACC_SEN_VAL,RADIO_FIRST_VAL
		call	RADIO_SEND_BYTE_TO_LC72130
		LD	ACC_SEN_VAL,RADIO_SENC_VAL
		call	RADIO_SEND_BYTE_TO_LC72130
		LD	ACC_SEN_VAL,RADIO_THIR_VAL
		call	RADIO_SEND_BYTE_TO_LC72130
		radio_clr_cs
		ret
.IF 0
RADIO_SEND_CMD_TO_RADIO	ENDP
.ENDIF
;**************************************************



;**************************************************
;
;			GET 24 BIT 
;
;
.IF 0
RADIO_READ_DATA_FROM_RADIO	PROC
.ENDIF
;**************************************************
RADIO_READ_DATA_FROM_RADIO:
		PUSH	R0
		PUSH	R1
		PUSH	R2
		radio_clr_cs
		LD	ACC_SEN_VAL,#2AH
		call	RADIO_SEND_BYTE_TO_LC72130
		radio_set_cs
		LD	R0,#DATA_ADDR		;
		LD	R1,#03H
radio_read_byte:
		CLR	R2
		LD	ACC_SEN_VAL,#08H
radio_read_bit:
		radio_clr_clk
		call	DELAY_TIME
		radio_set_clk
		call	DELAY_TIME
		RL	R2
		radio_get_data
		JP	Z,radio_no_set_1
		OR	R2,#1H
radio_no_set_1:
		DEC	ACC_SEN_VAL
		CP	ACC_SEN_VAL,#00H
		JP	NE,radio_read_bit
radio_read_next:
		LD	@R0,R2
		INC	R0
		DEC	R1
		CP	R1,#00H

⌨️ 快捷键说明

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