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

📄 zly.asm

📁 开关量检测
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                INC     R0
                MOV     @R0,    A
                CALL    DISPLAY
WAITNOKEY:      CALL    KEY_SCAN
                CJNE    A,      #0C0H,    WAITNOKEY
;                JMP     WAITNOKEY
                JMP     DESPKEYEND
CHECKKEY2:      CJNE    A,      #80H,   DESPKEYEND
                MOV     R0,     #LED_BF
                MOV     A,      #4FH
                MOV     @R0,    A
                INC     R0
                MOV     @R0,    A
                INC     R0
                MOV     @R0,    A
                INC     R0
                MOV     @R0,    A
                CALL   DISPLAY
                CLR     BEEP
                CLR     BEEPREG
DESPKEYEND:     RET
SAVESET:        MOV     A,      DSPREGADD
                CALL    RE2PROM
                MOV     R0,     A
                MOV     A,      #7FH
                MOV     R1,     DSPREGBIT
SE_RO:          RL      A
                DJNZ    R1,     SE_RO
                ANL     A,      R0
                MOV     B,      A
                MOV     A,      DSPREGADD
                CALL   WE2PROM
                RET
RESSETTING:     MOV     R7,     #10H
                MOV     B,      #0FFH
                MOV     R6,      #30H
RO_SAVE:        MOV     A,      R6
                CALL   WE2PROM
                INC     R6
                MOV     B,      #0FFH
                DJNZ    R7,     RO_SAVE
                RET
RE2PROM:        MOV     DPL,    A
                CLR     A
                MOV     DPH,    A
                MOV     A,      #08H
                ORL     96H,    A
                MOVX    A,      @DPTR
                MOV     B, A
                MOV     A,      #0F7H
                ANL     96H,    A
                MOV     A,      B
                RET
WE2PROM:        MOV     R0,     A
                MOV     DPL,    A
                CLR     A
                MOV     DPH,    A
                MOV     R1,     B
                MOV     A,      #18H
                ORL     96H,    A
                MOV     A,      B
                MOVX    @DPTR,  A
WAITWRE:        MOV     A,      96H
                JNB     ACC.1,  WAITWRE
                MOV     A,      #0E7H
                ANL     96H,    A
                MOV     A,      R0
                CALL    RE2PROM
                MOV     B,      R1
                SUBB    A,      B
                JZ      WRITEEND
                MOV     A,      R0
                MOV     B,      R1
                JMP    WE2PROM
WRITEEND:       MOV    A,     R0
                RET

DELAY8:       MOV       R5,     #14H
DELAY0:       MOV       R6,     #64H
DELAY1:       DJNZ      R6,     DELAY1
              DJNZ      R5,     DELAY0
              RET
LOW8_SCAN:      SETB      LOW_8
                MOV       A,           22H
                MOV       P2,          A
                CLR       LOW_8
                MOV       A,           P0
                CALL      DELAY8
                ANL       A,           P0
                CALL      DELAY8
                ANL       A,           P0
                MOV       R0,          57H
                MOV       @R0,         A
                INC       57H
                DEC       2CH
                MOV       A,           2CH
                JZ        LOW8END
                MOV       A,           22H
                RR        A
                MOV       22H,         A
                JMP       LOW8RET
LOW8END:        CLR       2EH.6
                SETB      2EH.7
                MOV       2CH,         #08H
                MOV       22H,         #7FH
                MOV       57H,         #48H
                SETB      LOW_8
                CALL      DELAY8
                MOV       P2,          #0FFH
                CLR       LOW_8
LOW8RET:        RET
HIGH8_SCAN:     SETB      HIGH_8
                MOV       A,           22H
                MOV       P2,          A
                CLR       HIGH_8
                MOV       A,           P0
                CALL      DELAY8
                ANL       A,           P0
                CALL      DELAY8
                ANL       A,           P0
                MOV       R0,          57H
                MOV       @R0,         A
                INC       57H
                DEC       2CH
                MOV       A,           2CH
                JZ        HIGH8END
                MOV       A,           22H
                RR        A
                MOV       22H,         A
                JMP       HIGH8RET
HIGH8END:        CLR       2EH.7
                SETB      2EH.6
                MOV       2CH,         #08H
                MOV       22H,         #7FH
                MOV       57H,         #40H
                CLR       2EH.5
                SETB      HIGH_8
                CALL      DELAY8
                MOV       P2,          #0FFH
                CLR       HIGH_8
HIGH8RET:        RET
SAVESCAN:       MOV     R7,     #10H
                MOV     R0,     #30H
                MOV     R1,     #40H
SAVETEMP:       MOV     A,      R0
                CALL    RE2PROM
                MOV     B,      A
                MOV     A,      @R1
                ANL     A,      B
                MOV     @R0,    A
                INC     R0
                INC     R1
                DJNZ    R7,     SAVETEMP
                SETB    2EH.5
                RET
ALARM:     SETB    ALARMREG
           SETB    CUALARMR
           MOV     DSPREGADD,     SERREG
           MOV     DSPREGBIT,     SERBIT
           MOV     A,     CH_NUMBER
NOTEQU5:   MOV     B,     #10
           DIV     AB
           CALL    BCDTODSP
           MOV     R1,     A
           MOV     A,      B
           CALL    BCDTODSP
           MOV     R0,    #LED_BF
;           INC     R0
           MOV     @R0,   A    ; DIG0 DISPLAY
           INC     R0
           MOV     A,     R1
           MOV     @R0,   A    ; DIG1 DISPLAY
           INC     R0
           MOV     @R0,   #01H  ;DIG2 DISPLAY "-"
           INC     R0
           MOV     A,     GR_NUMBER
           CJNE    A,     #01H,    GROUP2
           MOV     @R0,   #77H   ;DISPLAY GROUP A
           JMP     DSPALARM
GROUP2:    CJNE    A,     #02H,    GROUP3
           MOV     @R0,   #4EH   ;DISPLAY GROUP C
           JMP     DSPALARM
GROUP3:    CJNE    A,     #03H,    GROUP4
           MOV     @R0,   #4FH   ;DISPLAY GROUP E
           JMP     DSPALARM
GROUP4:    MOV     @R0,   #7FH  ;DISPLAY GROUP B FOR FULL END CHANGE ON 30,11
DSPALARM:  CALL    DISPLAY
           JNB     BEEPREG,     NOTBEEP
           SETB    BEEP
           JMP     ALARMRET
NOTBEEP:   CLR     BEEP
ALARMRET:  SETB    RELAY
           RET
CH_ALARM:    JNB        CHEND,          CHANNELEND
             CALL       CHNOTEND
             JNB        CHALSER,        CH_ALARM
             JMP        CHALARMEND
CHANNELEND:  JNB        GREND,          GROUPEND
             INC        GR_NUMBER
             MOV        A,              SUBGROUP
             JZ         GCLRGREND
             DEC        SUBGROUP
             MOV        A,              SUBGROUP
             JZ         GCLRGREND
             SETB       GREND
             JMP        GETNEXTG
GCLRGREND:   CLR        GREND
GETNEXTG:    SETB       CHEND
             MOV        A,             GR_NUMBER
             CALL       RE2PROM
             MOV        SUBCHAN,       A
             MOV        CH_NUMBER,     #01H
             JMP        CHALARMEND
GROUPEND:    JNB        CUALARMR,      GCLRAL
             CLR        CUALARMR
             JMP        GRESGRP
GCLRAL:      CLR        ALARMREG
             SETB       BEEPREG
GRESGRP:     MOV        A,              #000H
             CALL       RE2PROM
             DEC        A
             MOV        SUBGROUP,       A
             MOV        GR_NUMBER,     #01H
             MOV        A,             #001H
             CALL       RE2PROM
             MOV        SUBCHAN,        A
             MOV        CH_NUMBER,      #01H
             MOV        SERREG,         #30H
             MOV        SERBIT,         #01H
             SETB       CHEND
             SETB       GREND
             MOV        TEMPSERREG,     30H
CHALARMEND:  RET
CHNOTEND:    MOV        A,              SERBIT
             CJNE       A,              #09H,   BITNOTEND
             MOV        SERBIT,         #01H
             INC        SERREG
             MOV        R0,             SERREG
             MOV        A,              @R0
             MOV        TEMPSERREG,     A
BITNOTEND:   MOV        A,              TEMPSERREG
             RRC        A
             MOV        TEMPSERREG,     A
             JC         THEREALARM
             CLR        CHALSER
             JMP        CH_FLAGS
THEREALARM:  SETB       CHALSER
             CALL       ALARM
CH_FLAGS:    INC        SERBIT
             INC        CH_NUMBER
             DEC        SUBCHAN
             MOV        A,              SUBCHAN
             JZ         CLRCHEND
             SETB       CHEND
             JMP        CNOTENDEND
CLRCHEND:    CLR        CHEND
CNOTENDEND:  RET
FORREAL:     MOV        R0,             SERBIT ;READY FOR REALROTATE
             DEC        R0
             MOV        A,              R0
             JZ         NOTROTATE              ;IF SERBIT=01, NEED NOT ROTATE
             MOV        R1,             SERREG ;REREAD THE REALTIME DATA
             MOV        A,              @R1
REALRRC:     RRC        A
             DJNZ       R0,             REALRRC
             MOV        TEMPSERREG,     A
             JMP        FORREALRET
NOTROTATE:   MOV        R1,             SERREG
             MOV        A,              @R1
             MOV        TEMPSERREG,     A
FORREALRET:  RET
DSPTAB:         DB 07EH, 030H, 06DH, 079H, 033H, 05BH, 05FH, 070H, 07FH
                DB 07BH, 077H, 07FH, 04EH, 01H, 04FH, 047H, 01H

                          END

⌨️ 快捷键说明

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