ylks32.asm

来自「洗衣机的说明文件 全自动型号 大厂定制 可控轨控制 正反向电机驱动」· 汇编 代码 · 共 2,930 行 · 第 1/5 页

ASM
2,930
字号
        JR      CS,LWFANZ

        CMP     A,0X6
        JR      CC,HIGFAN

        CMP     A,0X5
        JR      CC,CLIFMHF

        CMP     A,0X3
        JR      CC,MIDFAN

        CMP     A,0X2
        JR      CS,LOWFAN

        TEST    (FLAG6).MDFN
        JR      F,MIDFAN
        TEST    (FLAG6).HGFN
        JR      F,MIDFAN

        JP      LOWFAN
;
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),0X20         ;  1MS 
        LD     (TREG1AH),0X0

        LD     (TC1CR),0Y00010100    ;  RESTART THE TC1 
        RETI
;
PTCTCF:
        CLR    (P7).2
        CLR    (FLAG6).CUTCF
        LD     (TC1CR),0Y00000100    ; STOP TC1  
        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:

⌨️ 快捷键说明

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