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

📄 2236-dvd

📁 接收红外遥控,控制2314
💻
📖 第 1 页 / 共 2 页
字号:


;************************************************************************
;									*
;			minyunhua write 				*
;			QQ:121758163					*
;									*
;************************************************************************


.include        "C:\OPENice\Include\Reg\s3c9498.reg"
.include	"radio.reg"
.include	"ram.reg"
.include	"2313.reg"
.include	"key.reg"
		ORG	0000H
		VECTOR	00H,INIT_9498
INIT_9498:
		
		TCM     P1INT,#01H	     ;判断是否是外部中断0
		JP	Z,I_INT0		;外部中断0
        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 0FFH ; 
                
		
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
		SET_IR_KEY_IS_DOWN
error_return:
		CLR_SECN_2M
		SET_FIRST_9M
ex_int_ret:
		CLR             time_count
		AND	P1INT,#11111110B
		IRET
;****************************************************
;---------------ext int end----------------
;****************************************************





		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
		LD	R0,#0A0H
CLR_RAM:
		DEC	R0
		CLR	@R0
		CP	R0,#00H
		JP	NE,CLR_RAM
		CALL	IO_INIT
		EI
		LD	EQ_RAM,#044H
		LD	volume_val,#20H
MAIN:	
		

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



                JP	MAIN

;			时间C溢出中断
;****************************************************************
TIMER1_INIT:
		
		INC		VAL_REMOTE_DELAY_TIME
		INC             time_count
		
next_even1:
		
		INC             time_delay
		CP		time_delay,#1EH
		JP		ULT,return_t_int
		INC             time_delay1
		CLR		time_delay
		CP		time_delay1,#12H
		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,#10111001B
		LD	P1INT,#00001000B	;ENABLE INT1 INT0 
		;LD	P1INT,#00011000B

		CLR	P2
		LD	P2CONH,#10101010B
		LD	P2CONL,#10101010B
		;CLR	P3
		LD	P3,#00000010B
		LD	P3CON,#00101010B
		;A/D
		;LD	ADCON,#00100010B
 		RET
.IF 0
IO_INIT		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
;************************************************************************
;
;		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
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
	LD	REMOTE_CODE_BAK,remote_cmd_code0
	CP	remote_cmd_code0,remote_cmd_code1
	JP	Z,get_code
	ret	
get_code:
	LD	Current_Key,REMOTE_CODE_BAK
	LD	Current_Key_Bak,Current_Key
	ret
;***********************************************************
.IF 0
PT2314_NOMUTE		PROC
.ENDIF
PT2314_NOMUTE:
		LD	ACC_SEN_VAL,#0C0H
		call	PT2314_SEND
		LD	ACC_SEN_VAL,#0E0H
		call	PT2314_SEND
		RET


.IF 0
PT2314_MUTE		PROC
.ENDIF
PT2314_MUTE:
		LD	ACC_SEN_VAL,#0FFH
		call	PT2314_SEND
		LD	ACC_SEN_VAL,#0DFH
		call	PT2314_SEND
		RET
;**********************************************************************
;			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
;*************************************************************************

;*************************************************************************
;
;			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

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

;*************************************************************************
;
;			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
		SET_PT2314_CLK
		call		DELAY_TIME
		CLR_PT2314_CLK
		call		DELAY_TIME
		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
		JP		send_8_ret	
 ack_error_ret:
 		
 		CLR_PT2314_CLK
		call		DELAY_TIME
		PT2314_DATA_OUT_MODE
		call		DELAY_TIME
		CLR		ACC_RET_VAL
send_8_ret:
		POP		R1
		POP		R0
		ret	
;*************************************************************************

;*************************************************************************
;		  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


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:

⌨️ 快捷键说明

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