📄 remotenec.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 + -