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

📄 remotenec.src

📁 红外NEC代码三星MCU编写
💻 SRC
字号:
;======================================================================	
	;f=4.194M	4.194M/110=38.12K    instruction cycle=0.238us	
;======================================================================
;定时时间(t),fosc 记数个数 n
;n/f=t  ==>n=t*f  =0.56*0.001*4.194*1000000=0.56ms*4194k
;
;f=4.194M	4.194M/110=38.12K    instruction cycle=0.238us	
;n1=0.56*4194=2348=92C	
;n2=1.125*4194=4718=126E 	
;n3=2.25*4194=9436=24DC	
;n4=4.5*4194=18873=49B9	
;n4=9*4194=37746=9372	
;38High 72Low
;
;------------------------------------------------------------------------------
;        _ _ _ _ _ _ _ _          _ _ _       _ _ _           _ _ _ 
;	|               |        |     |     |     |         |      |    
;       |               |        |  0  |     |  1  |         |      |         
; ------                 --------       -----       ---------        -----      
;             9ms          4.5ms |.56ms|     |.56ms|                     
;                                |  1.125ms  |     2.25ms    |           
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;        _ _ _ _ _ _ _ _        _ _ _       
;	|               |      |     |    
;       |               |      |  0  |       
; ------                 ------       -----------------------------------------                           
;             9ms        2.25ms|.56ms|                                 
;------------------------------------------------------------------------------
;
;用指令产生38K,采用Timer PAND查询记数时间.
;在遥控发射时候,谢绝中断(DI)采用Timer作为108MS定时控制
;
;
RemoteCode		.Ram_Ds		4
RemotePort	.EQU	P3
RemotePin	.EQU	00000001B
	

RemoteTrKeyValue:
	LD	RemoteCode+2,KeyValue
	LD	RemoteCode+3,RemoteCode+2
	XOR	RemoteCode+3,#0FFH
	LD	RemoteCode+2,KeyValue
	LD	RemoteCode+1,#0FFH
	LD	RemoteCode+0,#0FFH
	
	
	
	CALL	Delay36ms	
StartCode:
	DI
	SB1
	LD	TACON,#10001100B	;fxx/512 disable int
	SB0
Carrier9ms:
	LDW	CarrierTimeHigh,#158H	;T=26.18us  343*26.18+(110-30)*0.238=8998.78us
CarrierIn9msLoop:	
	CALL	CarrierWave		;14T+52T+44T=110T*0.238=26.18us
	DECW	CarrierTimeHigh		;8T - 
	JR	Z,NoCarrer4_5ms		;6T   \	
SameCarrier9ms:				      |
	NOP				;4T   |
	NOP				;4T   |8+6+4*6+6=44T
	NOP				;4T   |
	NOP				;4T   |
	NOP				;4T   /
	NOP				;4T -
	JR	CarrierIn9msLoop	;6T-  RET(8)+44+CALL(14)+OR(6)=72*0.238=17.136us
NoCarrer4_5ms:			
	CALL	Delay4_5ms
;------------------------------------------------------------	
	LD	R2,#32
;Loop Left shift
;RemoteCode
RemoteCodeLoop:
	LD	CarrierTimeLow,#22	;T=26.18us*21=549.78+
RemoteCodeLoopAA:	
	CALL	CarrierWave		;14T+52+44=110T
	DEC	CarrierTimeLow		;4T -  
	JR	Z,JudgeRemote0_1	;6T   \
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |12+4*8=44T
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |	
	NOP				;4T   /
	JR	RemoteCodeLoopAA	;6T -
JudgeRemote0_1:	
	RRC	RemoteCode+3		;4T
	RRC	RemoteCode+2		;4T
	RRC	RemoteCode+1		;4T
	RRC	RemoteCode+0		;4T
	JR	C,RemoteTrBit1		;6T
	
RemoteTrBit0:
	CALL	Delay0_56ms		;
	DJNZ	R2,RemoteCodeLoop	;8T
	JR	RemoteStopBit	;6T
RemoteTrBit1:
	CALL	Delay1_69ms		;8T
SameRemoteTrBit:	
	DJNZ	R2,RemoteCodeLoop	;8T
RemoteStopBit:

	LD	CarrierTimeLow,#22	;T=26.18us*21=549.78+
RemoteStopBitLoop:	
	CALL	CarrierWave		;14T+52+44=110T
	DEC	CarrierTimeLow		;4T -  
	JR	Z,CheckIfTrRepeatCodeAA	;6T   \
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |12+4*8=44T
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |	
	NOP				;4T   /
	JR	RemoteStopBitLoop	;6T -
CheckIfTrRepeatCodeAA:	
	AND	KeyScanPort,#00H
CheckIfTrRepeatCode:	
	CALL	KeyIfHold
	TM	KeySystemCtrl,#fKeyPressed
	JR	NZ,KeyIsSameTrRepeat
	JR	RemoteCodeRet		
KeyIsSameTrRepeat:
	SB1
	LDW	RR0,TACNT
	SB0
	SUB	R1,#74H
	SBC	R0,#3
	JR	C,CheckIfTrRepeatCode
	SB1		
	OR	TACON,#00001000B		
	SB0
RepeatLeaderCode:
	LDW	CarrierTimeHigh,#157H	;T=26.18us  343*26.18+(110-30)*0.238=8998.78us
CarrierIn9msLoopAA:	
	CALL	CarrierWave		;14T+52T+44T=110T*0.238=26.18us
	DECW	CarrierTimeHigh		;8T - 
	JR	Z,NoCarrer2_25ms	;6T   \	
	NOP				;4T   |
	NOP				;4T   |8+6+4*6+6=44T
	NOP				;4T   |
	NOP				;4T   |
	NOP				;4T   /
	NOP				;4T -
	JR	CarrierIn9msLoopAA	;6T-  RET(8)+44+CALL(14)+OR(6)=72*0.238=17.136us
NoCarrer2_25ms:			
	CALL	Delay2_25ms			
	LD	CarrierTimeLow,#22	;T=26.18us*21=549.78+
RemoteCodeLoopBB:	
	CALL	CarrierWave		;14T+52+44=110T
	DEC	CarrierTimeLow		;4T -  
	JR	Z,CheckIfTrRepeatCode	;6T   \
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |12+4*8=44T
	NOP				;4T    |
	NOP				;4T    |
	NOP				;4T    |	
	NOP				;4T   /
	JR	RemoteCodeLoopBB	;6T -
RemoteCodeRet:	
	AND	EXTIPND,#00H	
	EI
	RET
CarrierWave:				;6+38+8=52T
	OR	RemotePort,#RemotePin	;6T
	NOP				;4T --
	NOP				;4T   \
	NOP				;4T   |
	NOP				;4T   |
	NOP				;4T   |6+8*4=38*0.238=9.044us
	NOP				;4T   |
	NOP				;4T   |
	NOP				;4T   |
Carrier17_53us:  			      /
	AND	RemotePort,#~RemotePin	;6T -- 	
	RET				;8T		
	
DelayCtrl:
	NOP
	NOP
	NOP
	NOP
	RET
;
;t=560/0.2384=2349T-6-6-8=2329
;t=1690/0.2384=7089
Delay36ms:
	LD	R1,#64
	JR	SameRemoteDelay
Delay4_5ms:
	CALL	DelayCtrl		;8+14=22
	CALL	DelayCtrl
	CALL	DelayCtrl		;8+14=22
	LD	R1,#8			;4T  10+8*(4+97*24)+16=18682*0.238=4446us
	JR	SameRemoteDelay		;6T
Delay2_25ms:
	CALL	DelayCtrl
	LD	R1,#4
	JR	SameRemoteDelay	
Delay1_69ms:
	LD	R1,#3			;4T (6+96*24)*3+16=2304*3+16
	JR	SameRemoteDelay		;6T
Delay0_56ms:
	LD	R1,#1			;4T	;2373T
	JR	SameRemoteDelay		;6T	2348+10=2358*0.238=561us
SameRemoteDelay:
	LD	R0,#97			;4T
SameRemoteDelayLoop:
	NOP				;4T
	NOP				;4T
	NOP				;4T
	NOP				;4T
	DJNZ	R0,SameRemoteDelayLoop	;8T	4+97*24=2332
	DJNZ	R1,SameRemoteDelay	;8T	2332+16=2348
	RET				;8T	
		

⌨️ 快捷键说明

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