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

📄 radio.src

📁 接收红外遥控,控制2314
💻 SRC
📖 第 1 页 / 共 5 页
字号:
		JP	NE,radio_read_byte
end_read_data:
		radio_clr_cs
		POP	R2
		POP	R1
		POP	R0
		ret
.IF 0
RADIO_READ_DATA_FROM_RADIO	ENDP
.ENDIF

		

;********************************************************************
.IF 0
DELAY_TIME		PROC
.ENDIF
DELAY_TIME:		
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		NOP
		NOP
		NOP
		NOP
		NOP
		nop
		nop
		nop
		nop
		nop
		nop
		ret
.IF 0
DELAY_TIME		ENDP
.ENDIF

.IF 0
INIT_FM		PROC
.ENDIF
INIT_FM:
		LD	FM_RAM_H,#07H
		LD	FM_RAM_L,#0adh
		LD	IN1_DATA2,FM_RAM_H

		;TEST
		LD	IN1_DATA1,FM_RAM_L
		LD	IN1_DATA3,#22H
		LD	IN2_DATA1,#0E0H
		LD	IN2_DATA2,#0D4H
		LD	IN2_DATA3,#12H;#13H 64MS
		RET
.IF 0
INIT_FM		ENDP
.ENDIF
.IF 0
REMOVE_RADIO_IN1_VAL	PROC
.ENDIF
REMOVE_RADIO_IN1_VAL:
		LD	RADIO_FIRST_VAL,IN1_DATA1
		LD	RADIO_SENC_VAL,IN1_DATA2
		LD	RADIO_THIR_VAL,IN1_DATA3
		LD	ACC_SEN_VAL,#28H
		RET
.IF 0
REMOVE_RADIO_IN1_VAL		ENDP
.ENDIF

.IF 0
REMOVE_RADIO_IN2_VAL	PROC
.ENDIF
REMOVE_RADIO_IN2_VAL:
		LD	ACC_SEN_VAL,#29H
		LD	RADIO_FIRST_VAL,IN2_DATA1
		LD	RADIO_SENC_VAL,IN2_DATA2
		LD	RADIO_THIR_VAL,IN2_DATA3
		RET
.IF 0
REMOVE_RADIO_IN2_VAL		ENDP
.ENDIF

;**********************************************************************
;
;			read byte to ACC_RET_VAL
;
.IF 0
VFD_ReadByte		PROC
.ENDIF
VFD_ReadByte:
;**********************************************************************
		PUSH	R0
		PUSH	R1
		vfd_set_in_mode			;将p2.7设为输入状态
		clr	R0
		LD	R1,#8H
read_vfd_da:
		rr	R0
		vfd_clr_clk			;CLK为低电位
		call	DELAY_TIME
		vfd_get_data
		JP	Z,no_set_1
		OR	R0,#80H
no_set_1:		
		vfd_set_clk			;CLK为高电位
		call	DELAY_TIME
		DEC	R1
		CP	R1,#00H
		JP	NE,read_vfd_da
readbyte_end:
		vfd_set_out_mode		;将p2.7设为输出状态
		LD	ACC_RET_VAL,R0
		POP	R1
		POP	R0
		ret
.IF 0
VFD_ReadByte		ENDP
.ENDIF

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

;**********************************************************************
;**********************************************************************
;
;			SEND BYTE FROM  ACC_SEN_VAL
;
.IF 0
VFD_SendByte		PROC
.ENDIF
VFD_SendByte:
;**********************************************************************
		PUSH	R0
		LD	R0,#08H
send_vfd_da:
		vfd_clr_clk		;CLK为低电位
		call	DELAY_TIME
		vfd_clr_data		;数据为低电位
		TM	ACC_SEN_VAL,#1H
		JP	Z,send_low
		vfd_set_data
send_low:
		vfd_set_clk		;数据为高电位
		RR	ACC_SEN_VAL
		vfd_set_clk		;CLK为高电位
		call	DELAY_TIME
		DEC	R0
		CP	R0,#00H
		JP	NE,send_vfd_da
send_end:
		POP	R0
		ret
.IF 0
VFD_SendByte		ENDP
.ENDIF
;**********************************************************************
;**********************************************************************
;
;			INIT VFD 
;
.IF 0
VFD_INIT		PROC
.ENDIF
VFD_INIT:
;**********************************************************************
		PUSH	R0
		vfd_clr_cs
		LD	ACC_SEN_VAL,#0BH
		CALL	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME
		vfd_clr_cs
		LD	ACC_SEN_VAL,#08CH
		call	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME
		vfd_clr_cs
		LD	ACC_SEN_VAL,#040H
		call	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME
		vfd_clr_cs
		LD	ACC_SEN_VAL,#0C0H
		call	VFD_SendByte
		LD	R0,#24H
clear_vfd:
		LD	ACC_SEN_VAL,#0H
		call	VFD_SendByte
		DEC	R0
		CP	R0,#00H
		JP	NE,clear_vfd
vfd_init_end:
		vfd_set_cs
		POP	R0
		ret
.IF 0
VFD_INIT		ENDP
.ENDIF
;**********************************************************************
;
;		VFD_Read_Key
;		Current_Key range 0+80H------------23+80H valib FFH invalib
.IF 0
VFD_Read_K		PROC
.ENDIF
VFD_Read_K:
		vfd_clr_cs
		PUSH	R0
		PUSH	R1
		LD	vfd_previous_key,#80H
		LD	ACC_SEN_VAL,#42H
		call	VFD_SendByte
		call	VFD_ReadByte
		LD	R9,ACC_RET_VAL
		call	VFD_ReadByte
		LD	R10,ACC_RET_VAL
		call	VFD_ReadByte
		LD	R11,ACC_RET_VAL
		call	VFD_ReadByte
		LD	R12,ACC_RET_VAL
		call	VFD_ReadByte
		LD	R13,ACC_RET_VAL
		call	VFD_ReadByte
		LD	R14,ACC_RET_VAL
		vfd_set_cs
		LD	Current_Key,#80H
		LD	R1,#30H
		CLR	R0
ChangeOver:
		RCF	
		rrc	R9
		rrc	R10
		rrc	R11
		rrc	R12
		rrc	R13
		rrc	R14
		JP	c,con_read_k
		jp	sibai
con_read_k:
		inc	R0
		LD	Current_Key,vfd_previous_key
sibai:
		inc	vfd_previous_key
		DEC	R1
		CP	R1,#00H
		JP	NE,ChangeOver
end_read_k:
		CP	R0,#1H
		JP	Z,ret_read_k
		LD	Current_Key,#0FFH	;fail
ret_read_k:
		POP	R1
		POP	R0
		ret
.IF 0
VFD_Read_K		ENDP
.ENDIF	
;***********************************************************************

;**********************************************************************
;
;		VFD_refresh_Byte
.IF 0
VFD_Refresh_Byte	proc
.ENDIF
VFD_Refresh_Byte:
;**********************************************************************
		PUSH	R0
		PUSH	R1
		vfd_clr_cs
		LD	ACC_SEN_VAL,#0BH
		call	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME

		vfd_clr_cs
		LD	ACC_SEN_VAL,#8CH
		call	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME

		vfd_clr_cs
		LD	ACC_SEN_VAL,#40H
		call	VFD_SendByte
		vfd_set_cs
		call	DELAY_TIME

		vfd_clr_cs
		LD	ACC_SEN_VAL,#0C0H
		call	VFD_SendByte
	
		LD	R0,#0CH
		LD	R1,#VFD_SHOW_BYTE_ADDR			
refresh_vfd:
		LD	ACC_SEN_VAL,@R1
		call	VFD_SendByte
		INC	R1
		LD	ACC_SEN_VAL,@R1
		call	VFD_SendByte
		call	VFD_SendByte
		inc	R1
		DEC	R0
		CP	R0,#00H
		JP	NE,refresh_vfd
ret_refresh_byte:
		vfd_set_cs
		POP	R1
		POP	R0
		ret
.IF 0
VFD_Refresh_Byte	endp
.ENDIF
;**********************************************************************
;
;		write led val from a
;
.IF	0
VFD_WriteLed		proc
.ENDIF
VFD_WriteLed:
;**********************************************************************
		PUSH	R0
		LD	R0,ACC_SEN_VAL
		vfd_clr_cs
		LD	ACC_SEN_VAL,#41H
		call	VFD_SendByte
		LD	ACC_SEN_VAL,R0
		call	VFD_SendByte
		vfd_set_cs
		POP	R0
		ret
.IF	0
VFD_WriteLed	endp
.ENDIF
;**********************************************************************
;**********************************************************************
;
;		read sw to a
;
.IF 0
VFD_GetSW	proc
.ENDIF
;**********************************************************************
VFD_GetSW:
		vfd_clr_cs
		LD	ACC_SEN_VAL,#43H
		call	VFD_SendByte
		call	VFD_ReadByte
		vfd_set_cs
		ret
.IF	0
VFD_GetSW	endp
.ENDIF




;*********************************************************
;*********************************************************************
;		point from acc_SEN_VAL
;		点亮屏上的点
.IF 0
VFD_SHOW_POINT	PROC
.ENDIF
VFD_SHOW_POINT:
;*********************************************************************
		PUSH	R0
		PUSH	R1
		LD	R1,#07H
		AND	R1,ACC_SEN_VAL		;取得低三位
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		AND	ACC_SEN_VAL,#1FH	;取得地址
		CLR	R2
		LD	R3,R1
		LDC	R0,#1E00H[RR2] ;将01234567转化成 1 2 4 8 10 20 40 80

		ADD	ACC_SEN_VAL,#VFD_SHOW_BYTE_ADDR			;取得VFD数据寄存器的值
		LD	R1,@ACC_SEN_VAL
		OR	R1,R0
		LD	@ACC_SEN_VAL,R1
		POP	R1
		POP	R0
		ret
.IF 0
VFD_SHOW_POINT	ENDP
.ENDIF
;*********************************************************************
;		point from acc
;		灭屏上的点	;add vfd_panel_point_addr
.IF 0
VFD_NOSHOW_POINT	PROC
.ENDIF
VFD_NOSHOW_POINT:
;*********************************************************************
		PUSH	R0
		PUSH	R1
		LD	R1,#07H
		AND	R1,ACC_SEN_VAL		;取得低三位
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		RR	ACC_SEN_VAL
		AND	ACC_SEN_VAL,#1FH	;取得地址
		CLR	R2
		LD	R3,R1
		LDC	R0,#1E00H[RR2] ;将01234567转化成 1 2 4 8 10 20 40 80

		ADD	ACC_SEN_VAL,#VFD_SHOW_BYTE_ADDR			;取得VFD数据寄存器的值
		LD	R1,@ACC_SEN_VAL
		COM	R0
		AND	R1,R0
		LD	@ACC_SEN_VAL,R1
		POP	R1
		POP	R0
		ret
		
.IF 0
VFD_NOSHOW_POINT	ENDP
.ENDIF
;**********************************************************************
;		8addr from  VAL_VFD_ADDR
;		data  form  ACC_SEN_VAL
;
.IF 0
VFD_SHOW_CHAR	PROC
.ENDIF

;**********************************************************************
VFD_SHOW_CHAR:
		PUSH	R0
		PUSH	R2
		PUSH	R3
		PUSH	R4
		RL	VAL_VFD_ADDR
		LD	R0,#13H
		SUB	R0,VAL_VFD_ADDR
		ADD	R0,#VFD_SHOW_BYTE_ADDR	;找到VFD所对应的内存RAM
		RL	ACC_SEN_VAL		;找到字母所对应的段的高地址
		CLR	R2
		LD	R3,ACC_SEN_VAL
		LD	VAL_VFD_ADDR,#0C0H
		AND	VAL_VFD_ADDR,@R0
		LDC	R4,#1E88H[RR2] 	;高六位
		OR	R4,VAL_VFD_ADDR
		LD	@R0,R4
		INC	R3			;低八位
		SUB	R0,#01H
		LDC	R4,#1E88H[RR2]
		LD	@R0,R4
		POP	R4
		POP	R3
		POP	R2
		POP	R0
		ret
.IF 0
VFD_SHOW_CHAR	ENDP
.ENDIF
;**********************************************************************

;**********************************************************************
;	STRING ADDR FROM  ACC_SEN_VAL
.IF 0
VFD_SHOW_STRING	PROC
.ENDIF
VFD_SHOW_STRING:
		PUSH	R0
		PUSH	R1
		PUSH	R2
		PUSH	R3
		
		LD	R3,ACC_SEN_VAL
		CLR	R2
		CLR	R1
con_show_string:
		LDC	R0,#01F30H[RR2]
		CP	R0,#CHAR_END
		JP	EQ,show_string_ret
		LD	VAL_VFD_ADDR,R1	;ADDR
		LD	ACC_SEN_VAL,R0	;CHAR
		CALL	VFD_SHOW_CHAR
		INC	R3		;NEXT CHAR 
		JP	con_show_string
show_string_ret:
		PUSH	R3
		PUSH	R2
		PUSH	R1
		PUSH	R0
		RET
.IF 0
VFD_SHOW_STRING	ENDP
.ENDIF



;************************************************************************
;			PT2222 START
;		   SEND REMOTE CODE
.IF 0
REMOTE_SEND_HEARD_CODE		proc
.ENDIF
REMOTE_SEND_HEARD_CODE:
;************************************************************************
		CLR_REMOTE
		LD		ACC_SEN_VAL,#2AH
		CALL		REMOTE_DELAY_200uS
		SET_REMOTE
		LD		ACC_SEN_VAL,#16H
		CALL		REMOTE_DELAY_200uS
		RET
.IF 0
REMOTE_SEND_HEARD_CODE			endp
.ENDIF
;*************************************************************************


;*************************************************************************
;
;			remote code from  acc
;	
.IF 0
REMOTE_SEND_BYTE		proc
.ENDIF
REMOTE_SEND_BYTE:
;*************************************************************************

		PUSH		R0
		PUSH		R1
		LD		R0,ACC_SEN_VAL
		LD		R1,#08H
		
send_remote_code:
		;----------high pulse 0.6ms---------------
		CLR_REMOTE
		LD		ACC_SEN_VAL,#02H
		call		REMOTE_DELAY_200uS
	;------------------------------------------
	;------low pulse 0.6 ms or 1.6 ms--------
		SET_REMOTE
		LD		ACC_SEN_VAL,#02H
		TM		R0,#01H
		JP		Z,no_ld_7
		LD		ACC_SEN_VAL,#07H
no_ld_7:
		call		REMOTE_DELAY_200uS
		RR		R0
		DEC		R1
		CP		R1,#00H
		JP		NE,send_remote_code
		POP		R1
		POP		R0
		ret
.IF 0
REMOTE_SEND_BYTE	endp
.ENDIF
;***********************************************************************




;***********************************************************************
;
;			delay time from  ACC_SEN_VAL
;			VAL_REMOTE_DELAY_TIME IN TIME0INT
.IF 0
REMOTE_DELAY_200uS	PROC
.ENDIF
REMOTE_DELAY_200uS:
;***********************************************************************
				clr	VAL_REMOTE_DELAY_TIME
		rem_delay:
				CP	ACC_SEN_VAL,VAL_REMOTE_DELAY_TIME
				JP	UGT,rem_delay
				ret
.IF 0
REMOTE_DELAY_200uS		ENDP
.ENDIF

;************************************************************************
;
;		MAIN: cmd_code from  acc_sen_val
;
.IF 0
REMOTE_SEND_CODE	PROC
.ENDIF
REMOTE_SEND_CODE:
;************************************************************************

		PUSH		ACC_SEN_VAL
		call		REMOTE_SEND_HEARD_CODE
		LD		ACC_SEN_VAL,#00H
		call		REMOTE_SEND_BYTE
		LD		ACC_SEN_VAL,#0FFH
		call		REMOTE_SEND_BYTE
		POP		ACC_SEN_VAL
		PUSH		ACC_SEN_VAL
		call		REMOTE_SEND_BYTE
		POP		ACC_SEN_VAL
		COM		ACC_SEN_VAL
		call		REMOTE_SEND_BYTE
		CLR_REMOTE
		LD		ACC_SEN_VAL,#02H
		call		REMOTE_DELAY_200uS
		SET_REMOTE
		ret
.IF 0
REMOTE_SEND_CODE	ENDP
.ENDIF
;****************************************************************************** 

;******************************************************************************
.IF 0
GET_REMOTE_KEY	PROC
.ENDIF
GET_REMOTE_KEY:
	LD	Current_Key,#0FFH
	IR_KEY_DOWN_IS_LOW
	JP	Z,get_rem_key
	LD	Current_Key,Current_Key_Bak
get_rem_key:
	DATA_OK_IS_HIGH
	JP	Z,get_ir_key
	ret
get_ir_key:
	CLR_DATA_OK
	COM	remote_cmd_code0
	CP	remote_cmd_code0,remote_cmd_code1
	JP	Z,get_code
	ret	
get_code:
	LD	Current_Key,remote_cmd_code0
	LD	Current_Key_Bak,Current_Key
	ret
.IF 0
GET_REMOTE_KEY	ENDP

⌨️ 快捷键说明

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