📄 ylktst.asm
字号:
CLIFMHF:
TEST (FLAG6).HGFN
JR F,HIGFAN
JP MIDFAN
;
HIGFAN:
SET (FLAG6).HGFN
CLR (FLAG6).MDFN
CLR (FLAG6).LWFN
TEST (FLAG4).IS30JX
JR F,HGFN26
LD (FAN1),0X1D ; 950RPM
LD (FAN2),0X1D
RET
;
HGFN26:
LD (FAN1),0X23 ; 1160RPM
LD (FAN2),0X24
RET
;
MIDFAN:
CLR (FLAG6).HGFN
SET (FLAG6).MDFN
CLR (FLAG6).LWFN
TEST (FLAG4).IS30JX
JR F,MDFN26
LD (FAN1),0X1A ; 850RPM
LD (FAN2),0X1A
RET
;
MDFN26:
LD (FAN1),0X1E ; 990RPM
LD (FAN2),0X1E
RET
;
LOWFAN:
CLR (FLAG6).HGFN
CLR (FLAG6).MDFN
SET (FLAG6).LWFN
TEST (FLAG4).IS30JX
JR F,LWFN26
LD (FAN1),0X17 ; 750RPM
LD (FAN2),0X17
RET
;
LWFN26:
LD (FAN1),0X19 ; 820RPM
LD (FAN2),0X19
RET
;
LLWFAN:
CLR (FLAG6).HGFN
CLR (FLAG6).MDFN
CLR (FLAG6).LWFN
CLR (LWFNSEC)
LD (FAN1),0X13 ; 630RPM
LD (FAN2),0X14
RET
;
;************************ FOR RECEIVE AND DS ***************
FDS:
LD (WDTCR2),0X4E ; Clears the watchdog counter
CLR (FLAG1).RCVNEW
LD W,(SLPDSF) ; THE DSFLG BUFF
LD B,0X0 ; IF CODE IS RIGHT TRANSFER IT TO CODE
LD DE,0X82
LD HL,0X86
TRNS:
LD (HL),(DE)
INC DE
INC HL
INC B
CMP B,0X4 ; 4 WORDS
JR CS,TRNS
;
CLR (FLAG4).TSTRUN ; CLEAR THE TEST RUN FLG
CLR (TSTSEC)
CLR (TSTMIN)
TEST (SLPDSF).7
JR F,IFSWNND ; TEST IF HAVE SLEEP
CLR (SLPSEC)
CLR (SLPMIN)
IFSWNND:
CLR (FLAG4).HAVBUZ
TEST (SLPDSF).5 ; TEST DSG
JR F,FDSHDS
TEST (SLPDSF).6
JR F,FDSHDS
FCLRTIM:
CLR (SECOND) ; CLR THE TIME
CLR (MINUTE)
CLR (HOUR)
RET
;
FDSHDS:
AND W,0X60 ; BEFORE NO DS
CMP W,0
JR EQ,FCLRTIM
LD A,(SLPDSF)
AND A,0X60
CMP A,W
JR NE,FCLRTIM
RET
;
;********************** FOR PRESET TMP *************************
FPRTMP:
LD (WDTCR2),0X4E ; Clears the watchdog counter
LD C,(SETTMP)
LD A,(SETTMP)
AND A,0XF
TJSTTMP: ; 16 JZH TO 10JZH
AND C,0XF0
SUB C,0X10
JR CS,TJSTTOK
ADD A,0XA
CMP C,0X10
JR CC,TJSTTMP
TJSTTOK:
LD (PRSTMP),A
LD HL,ADTABL
LD A,(PRSTMP)
ADD A,(MDFTMP) ; Becouse the tmp form -10c
LD C,A
LD (PRSVAL),(HL+C)
RET
;
;***************** FOR COMPRESSOR ON ********************
FCMPON:
TEST (FLAG1).DLY3M
JR F,CMPNTO
TEST (P7).6 ; TEST THE CMP
JR F,CMPNTO
TEST (FLAG2).ISHTFLG
JR T,CMPNTO1
SET (P7).4 ; SET THE VALVE
CMPNTO1:
SET (P7).6 ; SET THE CMP
CLR (OFFSEC)
SET (P7).5
CMPNTO:
RET
;
;******************** FOR AD CONVERTER ****************
FORAD:
TEST (FLAG1).ADON
JR F,ADFLW
RET
;
ADFLW:
CLR (ADCCR).4
LD (ADCCR),0Y00000101 ; FOR RM AD AN5
CALL DLY100U
CALL AD1
TEST (FLAG2).ISDLFLG
JR F,ADNOTPW
CLR (ADCCR).4
LD (ADCCR),0Y00000011 ; FOR OTP AD AN3
CALL DLY100U
CALL AD1
JR ADFRMP
;
ADNOTPW:
CLR (FLAG1).OTPWRN
ADFRMP:
CLR (ADCCR).4
LD (ADCCR),0Y00000100 ; FOR RMP AD AN4
CALL DLY100U
CALL AD1
CLR (FLAG1).ADON
RET
;
;***************************************************
AD1:
SET (ADCCR).6
NOP
NOP
ADWTAD:
NOP
TEST (ADCCR).7
JRS T,ADWTAD
NOP
LD (ADVAL),(ADCDR)
CMP (ADVAL),0X8
JR CS,CHKERR
CMP (ADVAL),0X2C ; CMP WITH -10C
JR CS,LOW10
CMP (ADVAL),0XF0
JR CC,CHKERR2
CMP (ADVAL),0XDA ; CMP WITH THE MAX TMP 79C
JR CC,HIGDF
CLR (ADTMP)
LD HL,ADTABL+1
CHKCNT:
LD A,(HL)
CMP A,(ADVAL)
JR CC,CHKOK
INC HL
INC (ADTMP)
JR CHKCNT
;
HIGDF:
LD (ADTMP),0X4F ; 79C
JR ADEND
;
CHKOK:
INC (ADTMP)
SUB A,(ADVAL)
LD C,A
LD W,(HL-1)
LD A,(ADVAL)
SUB A,W
CMP A,C
JR CC,CKTMOK
DEC (ADTMP)
CKTMOK:
CMP (ADTMP),0XA ; if c > 10
JR CS,LOW10
SUB (ADTMP),0XA
JR ADEND
;
LOW10:
LD (ADTMP),0 ; IF ADTMP LOW0 THEN =0
JR ADEND
;
CHKERR:
LD (ADTMP),0
JR ADHAVW
;
CHKERR2:
LD (ADTMP),0X4F ; MAKE 79C
ADHAVW:
LD A,(ADCCR)
AND A,0XF
CMP A,0X3
JR EQ,OTPERR
CMP A,0X5
JR EQ,RMERR
SET (FLAG1).RMPWRN
LD (RMPTMP),(ADTMP) ; ISRMPTMP
LD (RMPVAL),(ADVAL)
RET
;
OTPERR:
SET (FLAG1).OTPWRN
LD (OTPTMP),(ADTMP)
LD (OTPVAL),(ADVAL)
RET
;
RMERR:
SET (FLAG1).RMWRN
LD (RMTMP),(ADTMP)
LD (RMVAL),(ADVAL)
RET
;
ADEND:
LD A,(ADCCR)
AND A,0XF
CMP A,0X3
JR EQ,ISOTPIP
CMP A,0X5
JR EQ,ISRMTMP
CLR (FLAG1).RMPWRN
LD (RMPTMP),(ADTMP) ; ISRMPTMP
LD (RMPVAL),(ADVAL)
RET
;
ISOTPIP:
CLR (FLAG1).OTPWRN
LD (OTPTMP),(ADTMP)
LD (OTPVAL),(ADVAL)
RET
;
ISRMTMP:
CLR (FLAG1).RMWRN
;/ CLR (FLAG4).FDS50
LD (RMTMP),(ADTMP)
LD (RMVAL),(ADVAL)
RET
;
;******************* the INT1 for receive the remote ***************
PINT1:
LD RBS,2
CMP (MODEP),1 ; MODEP=0-->LEAD
JR CS,LEAD
CMP (MODEP),2 ; MODEP=1-->LEADA
JR CS,LEADA
CMP (MODEP),3 ; MODEP=2-->LEADB
JR CS,LEADB
CMP (MODEP),4 ; MODEP=3-->DATACD
JR CS,DATACD
JP ERROR
;
LEAD:
LD (TC3CR),0Y00000100
CLR (EINTCR).1 ; SET INT1 FOR RISING EDGE
INC (MODEP)
LD (TREG3A),0X3D ; MAKE TC3 IS 15MS
LD (TC3CR),0Y00010100 ; Start TC3
RETI
LEADA:
LD (TC3CR),0Y01010100
NOP
NOP
LD A,(TREG3B)
CMP A,0X1F ; 8 MS TO 10MS
JR CS,ERROR
CMP A,0X2A
JR CC,ERROR
INC (MODEP)
LD (TC3CR),0Y00001000 ; STOP & COUNTER CLEAR
LD (TREG3A),0X83 ; 4MS
SET (EINTCR).1 ; SET INT1 FOR FALLING EDGE
LD (TC3CR),0Y00011000 ; RESTART TC3
RETI
;
LEADB:
LD (TC3CR),0Y01011000
LD A,(TREG3B) ;
CMP A,0X31 ; HIGH TIME IS 1.5MS TO 2.6MS
JR CS,ERROR
CMP A,0X56
JR CC,ERROR
LD HL,WORK ; CLEAR WORK
LD C,0X4 ; 5BYTES
CLRWK:
LD (HL),0
INC HL
DEC C
JR F,CLRWK
LD (TC3CR),0Y00001000 ; CLEAR THE TIME CNTER
CLR (RCVNUM)
INC (MODEP)
LD (TC3CR),0Y00011000 ;RESTART TC3
RETI
;
ERROR:
LD (TC3CR),0Y00000100 ;STOP THE TC3
CLR (MODEP)
CLR (RCVNUM)
SET (EINTCR).1 ; SET INT1 FOR FALLING EDGE
RETI
;
DATACD:
LD (TC3CR),0Y01011000
LD A,(TREG3B)
CMP A,0X13 ; 0.6MS TO 2.5MS IS RIGHT
JR CS,ERROR
CMP A,0X52
JR CC,ERROR
CMP A,0X31 ; IF >1.5MS THEN TO "1" <1MS TO "0"
JR CC,SET1
CLR CF
JR DTCDF
;
SET1:
SET CF
DTCDF:
LD HL,WORK+4
LD C,0X4 ; 5 TIMES
WKSHIFT:
LD A,(HL) ; RECEIVE DATA AND RESTORE IN WORK
RORC A
LD (HL),A
DEC HL
DEC C
JR F,WKSHIFT
LD (TC3CR),0Y00001000 ; CLEAR THE TIME CNTER
INC (RCVNUM)
NOP
NOP
LD (TC3CR),0Y00011000 ;RESTART TC3
RETI
;******************* THE TC3 INT ***********************
PINTTC3:
LD RBS,3
CMP (RCVNUM),0X28 ; 40 BITS
JR NE,ERROR
CMP (WORK),0XAA
JR NE,ERROR
LD W,0
LD B,0
LD HL,WORK
ADDJYM:
LD A,(HL)
ADD W,A
INC HL
INC B
CMP B,0X4 ; 5 WORDS
JR CS,ADDJYM
LD A,(0X85)
CMP A,W
JR NE,ERROR
TEST (FLAG2).ISDLFLG
JR T,RECNDL ; IF DL MOD THEN NO EFFECT
LD A,(0X83)
AND A,0X7
CMP A,0X3
JR EQ,ERRZZ
RECNDL:
SET (FLAG1).RCVNEW
SET (FLAG3).BUZZEN
LD (BUZ),0XC
ERRZZ:
JP ERROR
;
;******************* THE TIMER ******************************
;
; internal clock fc/2^7
;
;************************************************************
PINTTC1:
TEST (FLAG6).CUTCF
JR F,PTCTCF
SET (P7).2
SET (FLAG6).CUTCF
LD (TREG1AL),0X68
LD (TREG1AH),0X0
LD (TC1CR),0Y00011000 ; STOP AND CLEAR THE COUTER 1
RETI
;
PTCTCF:
CLR (P7).2
CLR (FLAG6).CUTCF
LD (TC1CR),0Y00001000
RETI
;
;***************** THE TC2 INT *************************
PINTTC2:
LD RBS,1
TEST (FLAG2).RSTSTP ; IF HIGH SPEED
JR F,STHSPD
TEST (FLAG2).STPFKJ
JR F,STHSPD
TEST (FLAG4).FANON
JR T,NTSPZ2
TEST (FANMOD).4 ; TEST IF HAVE SWING
JR F,NTRCVF
;
NTSPZ2:
LD A,(P1) ; IF NO STEP THEN CLR ALL PULSE
AND A,0XF
LD (P1),A
NTSPZZ:
JP NTSTEP
;
NTRCVF:
INC (STPSPD) ; FOR STEP MOTOR
CMP (STPSPD),0X5
JR CS,NTSPZZ
CLR (STPSPD)
INC (FDRMMS)
CMP (FDRMMS),0XFA ; 250 * 5 * 4MS = 5 SECONDS
JR CS,FSTPDS2
CLR (FDRMMS)
INC (FDRSEC)
CMP (FDRSEC),0XC ; 12 * 5S = 1MIN
JR CS,FSTPDS2
CLR (FDRSEC)
INC (FDRMIN)
CMP (FDRMIN),0X3C ; CMP WITH 60 MINUTES
JR CS,FSTPDS2
CALL STPRST ; IF VAN RUN 1 HOUR RESET
FSTPDS2:
JR STPRUN
;
STHSPD:
INC (STPSPD)
CMP (STPSPD),0X1
JR CS,NTSTEPZ
CLR (STPSPD)
STPRUN:
TEST (FLAG2).STPCLS ; FOR SHUN SHI ZHEN
JR T,OPENDR
;
CLOSDR:
LD HL,STPTBL
INC (STEPSW)
CMP (STEPSW),0X8
JR CS,CLSDRFF
CLR (STEPSW)
CLSDRFF:
LD C,(STEPSW)
LD W,(HL+C)
JR STPOK
;
STPTBL:
DB 0Y00010000 ; STEP 1
DB 0Y00110000 ; STEP 2
DB 0Y00100000 ; STEP 3
DB 0Y01100000 ; STEP 4
DB 0Y01000000 ; STEP 5
DB 0Y11000000 ; STEP 6
DB 0Y10000000 ; STEP 7
DB 0Y10010000 ; STEP 8
OPENDR: ; FOR NI SHI ZHEN
LD HL,STPTBL
CMP (STEPSW),0
JR NE,OPDRFF
LD (STEPSW),0X8
OPDRFF:
DEC (STEPSW)
LD C,(STEPSW)
LD W,(HL+C)
STPOK:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -