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

📄 dog5.asm

📁 报警器
💻 ASM
📖 第 1 页 / 共 4 页
字号:

SEND_ALM_3:  NOP
             CLR     TI
             LCALL   SEND_DATA_TO_PC

             RET
;***************************
;***************************
;***************************
SET_SEND_ALM_OK:  NOP

               RET
;***************************
;***************************
;报警输入处理
;***************************
PRO_ALARM1_IN: NOP
             JNB       REC_FLAG,PRO_ALM1_0
             LCALL     PRO_REC_DATA
PRO_ALM1_0:   NOP

              MOV       A,P1
              CJNE      A,ALARM_BUF1,PRO_ALM1_1
              LJMP      PRO_ALM1_9A

PRO_ALM1_1:   NOP
              XRL      A,ALARM_BUF1
              MOV      ALM_XRL_BUFF,A

PRO_ALM1_1A:  NOP

             JNB       REC_FLAG,PRO_ALM1_1B
             LCALL     PRO_REC_DATA
PRO_ALM1_1B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#01H
              CJNE     A,#01H,PRO_ALM1_2
              MOV      A,#10H                   ;报警输入16
              JB       ALM_IN_10_FLAG,PRO_ALM1_2A
              SETB     ALM_IN_10_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_2:    NOP
              CLR      ALM_IN_10_FLAG
PRO_ALM1_2A:   NOP
             JNB       REC_FLAG,PRO_ALM1_2B
             LCALL     PRO_REC_DATA
PRO_ALM1_2B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#02H
              CJNE     A,#02H,PRO_ALM1_3
              MOV      A,#0FH                   ;报警输入F
              JB       ALM_IN_F_FLAG,PRO_ALM1_3A
              SETB     ALM_IN_F_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_3:    NOP
              CLR      ALM_IN_F_FLAG
PRO_ALM1_3A:   NOP

             JNB       REC_FLAG,PRO_ALM1_3B
             LCALL     PRO_REC_DATA
PRO_ALM1_3B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#04H
              CJNE     A,#04H,PRO_ALM1_4
              MOV      A,#0EH                   ;报警输入E
              JB       ALM_IN_E_FLAG,PRO_ALM1_4A
              SETB     ALM_IN_E_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_4:    NOP
              CLR      ALM_IN_E_FLAG
PRO_ALM1_4A:   NOP

             JNB       REC_FLAG,PRO_ALM1_4B
             LCALL     PRO_REC_DATA
PRO_ALM1_4B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#08H
              CJNE     A,#08H,PRO_ALM1_5
              MOV      A,#0DH                   ;报警输入D
              JB       ALM_IN_D_FLAG,PRO_ALM1_5A
              SETB     ALM_IN_D_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_5:    NOP
              CLR      ALM_IN_D_FLAG
PRO_ALM1_5A:   NOP

             JNB       REC_FLAG,PRO_ALM1_5B
             LCALL     PRO_REC_DATA
PRO_ALM1_5B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#010H
              CJNE     A,#10H,PRO_ALM1_6
              MOV      A,#0CH                   ;报警输入C
              JB       ALM_IN_C_FLAG,PRO_ALM1_6A
              SETB     ALM_IN_C_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_6:    NOP
              CLR      ALM_IN_C_FLAG
PRO_ALM1_6A:   NOP

             JNB       REC_FLAG,PRO_ALM1_6B
             LCALL     PRO_REC_DATA
PRO_ALM1_6B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#020H
              CJNE     A,#20H,PRO_ALM1_7
              MOV      A,#0BH                   ;报警输入B
              JB       ALM_IN_B_FLAG,PRO_ALM1_7A
              SETB     ALM_IN_B_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_7:    NOP
              CLR      ALM_IN_B_FLAG
PRO_ALM1_7A:   NOP

             JNB       REC_FLAG,PRO_ALM1_7B
             LCALL     PRO_REC_DATA
PRO_ALM1_7B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#040H
              CJNE     A,#40H,PRO_ALM1_8
              MOV      A,#0AH                   ;报警输入A
              JB       ALM_IN_A_FLAG,PRO_ALM1_8A
              SETB     ALM_IN_A_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_8:    NOP
              CLR      ALM_IN_A_FLAG
PRO_ALM1_8A:   NOP

             JNB       REC_FLAG,PRO_ALM1_8B
             LCALL     PRO_REC_DATA
PRO_ALM1_8B:   NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#080H
              CJNE     A,#080H,PRO_ALM1_9
              MOV      A,#09H                  ;报警输入9
              JB       ALM_IN_9_FLAG,PRO_ALM1_9A
              SETB     ALM_IN_9_FLAG
              LJMP     PRO_ALM1_END

PRO_ALM1_9:   NOP
              CLR      ALM_IN_9_FLAG
PRO_ALM1_9A:  NOP
              RET

PRO_ALM1_END: NOP
              MOV      R0,#SND_BUFF             ;将报警通道及报警信号写入缓冲区
              INC      R0
              INC      R0
              MOV      @R0,A
              INC      R0
              MOV      A,#YES
              MOV      @R0,A

              MOV      R0,#SND_BUFF             ;SOH
              MOV      A,#SOH_OUT5
              MOV      @R0,A
              INC      R0
              MOV      A,#ALARM_INPUT           ;指令码
              MOV      @R0,A

              LCALL    CHECK_SUM               ;产生校验位
              MOV      R0,#SND_BUFF
              INC      R0
              INC      R0
              INC      R0
              INC      R0
              MOV      @R0,A

              LCALL    SEND_ALM_IN          ;发送到计算机

             JNB       REC_FLAG,PRO_ALM1_10
             LCALL     PRO_REC_DATA
PRO_ALM1_10: NOP

              LJMP      PRO_ALM1_1A

;***************************
;***************************
;报警输入2处理
;***************************
PRO_ALARM2_IN: NOP
              MOV       A,P2
              CJNE      A,ALARM_BUF2,PRO_ALM2_10
              NOP
              LJMP      PRO_ALM2_19A

PRO_ALM2_10:  NOP
              XRL      A,ALARM_BUF2
              MOV      ALM_XRL_BUFF,A

PRO_ALM2_11:  NOP
             JNB       REC_FLAG,PRO_ALM1_11B
             LCALL     PRO_REC_DATA
PRO_ALM1_11B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#01H
              CJNE     A,#01H,PRO_ALM2_12
              MOV      A,#01H                   ;报警输入1
              JB       ALM_IN_1_FLAG,PRO_ALM2_12A
              SETB     ALM_IN_1_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_12:   NOP
              CLR      ALM_IN_1_FLAG
PRO_ALM2_12A:  NOP

             JNB       REC_FLAG,PRO_ALM1_12B
             LCALL     PRO_REC_DATA
PRO_ALM1_12B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#02H
              CJNE     A,#02H,PRO_ALM2_13
              MOV      A,#02H                   ;报警输入2
              JB       ALM_IN_2_FLAG,PRO_ALM2_13A
              SETB     ALM_IN_2_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_13:   NOP
              CLR      ALM_IN_2_FLAG
PRO_ALM2_13A:  NOP

             JNB       REC_FLAG,PRO_ALM1_13B
             LCALL     PRO_REC_DATA
PRO_ALM1_13B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#04H
              CJNE     A,#04H,PRO_ALM2_14
              MOV      A,#03H                   ;报警输入3
              JB       ALM_IN_3_FLAG,PRO_ALM2_14A
              SETB     ALM_IN_3_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_14:   NOP
              CLR      ALM_IN_3_FLAG
PRO_ALM2_14A:  NOP

             JNB       REC_FLAG,PRO_ALM1_14B
             LCALL     PRO_REC_DATA
PRO_ALM1_14B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#08H
              CJNE     A,#08H,PRO_ALM2_15
              MOV      A,#04H                   ;报警输入4
              JB       ALM_IN_4_FLAG,PRO_ALM2_15A
              SETB     ALM_IN_4_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_15:   NOP
              CLR      ALM_IN_4_FLAG
PRO_ALM2_15A:  NOP

             JNB       REC_FLAG,PRO_ALM1_15B
             LCALL     PRO_REC_DATA
PRO_ALM1_15B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#010H
              CJNE     A,#10H,PRO_ALM2_16
              MOV      A,#05H                   ;报警输入5
              JB       ALM_IN_5_FLAG,PRO_ALM2_16A
              SETB     ALM_IN_5_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_16:   NOP
              CLR      ALM_IN_5_FLAG
PRO_ALM2_16A:  NOP

             JNB       REC_FLAG,PRO_ALM1_16B
             LCALL     PRO_REC_DATA
PRO_ALM1_16B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#020H
              CJNE     A,#20H,PRO_ALM2_17
              MOV      A,#06H                   ;报警输入6
              JB       ALM_IN_6_FLAG,PRO_ALM2_17A
              SETB     ALM_IN_6_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_17:   NOP
              CLR      ALM_IN_6_FLAG
PRO_ALM2_17A:  NOP

             JNB       REC_FLAG,PRO_ALM1_17B
             LCALL     PRO_REC_DATA
PRO_ALM1_17B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#040H
              CJNE     A,#40H,PRO_ALM2_18
              MOV      A,#07H                   ;报警输入7
              JB       ALM_IN_7_FLAG,PRO_ALM2_18A
              SETB     ALM_IN_7_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_18:   NOP
              CLR      ALM_IN_7_FLAG
PRO_ALM2_18A:  NOP

             JNB       REC_FLAG,PRO_ALM1_18B
             LCALL     PRO_REC_DATA
PRO_ALM1_18B: NOP

              MOV      A,ALM_XRL_BUFF
              ANL      A,#080H
              CJNE     A,#080H,PRO_ALM2_19
              MOV      A,#08H                   ;报警输入8
              JB       ALM_IN_8_FLAG,PRO_ALM2_19A
              SETB     ALM_IN_8_FLAG
              LJMP     PRO_ALM2_END

PRO_ALM2_19:  NOP
              CLR      ALM_IN_8_FLAG
PRO_ALM2_19A: NOP
              RET

PRO_ALM2_END: NOP
              MOV      R0,#SND_BUFF             ;将报警通道及报警信号写入缓冲区
              INC      R0
              INC      R0
              MOV      @R0,A
              INC      R0
              MOV      A,#YES
              MOV      @R0,A

              MOV      R0,#SND_BUFF             ;SOH
              MOV      A,#SOH_OUT5
              MOV      @R0,A
              INC      R0
              MOV      A,#ALARM_INPUT           ;指令码
              MOV      @R0,A

              LCALL    CHECK_SUM               ;产生校验位
              MOV      R0,#SND_BUFF
              INC      R0
              INC      R0
              INC      R0
              INC      R0
              MOV      @R0,A

              LCALL    SEND_ALM_IN          ;发送到计算机

             JNB       REC_FLAG,PRO_ALM1_20
             LCALL     PRO_REC_DATA
PRO_ALM1_20: NOP
              LJMP      PRO_ALM2_11
;***************************
;***************************
;计算机从新启动
;***************************

RESET:LCALL      DELAY100MS

      JNB        REC_FLAG,RESET_SYS
      LCALL      PRO_REC_DATA
      MOV        A,WAT_TIME2
      CJNE       A,#00H,GO_BACK
RESET_SYS:
      NOP
      SETB       ALARM_OUT5
      CLR        ALR_CLK
      MOV        A,ALARM_OUT
      MOV        P0,A
      SETB       ALR_CLK
      LCALL      DELAY500MS
      CLR        ALARM_OUT5
      CLR        ALR_CLK
      MOV        A,ALARM_OUT
      MOV        P0,A
      SETB       ALR_CLK
      CLR        WAT_DOG_FLAG
GO_BACK:
      NOP
      NOP
      RET
;***************************
;***************************
;软件保护指令处理
;***************************
SOFT_PROTECT:NOP
            MOV      R0,#SND_BUFF               ;(c1+5BH)<---3
            INC      R0
            INC      R0
            MOV      A,@R0
            CLR      CY
            ADD      A,#05BH
            CLR      CY
            RR       A
            RR       A
            RR       A
            MOV      B,A

            MOV      R0,#SND_BUFF               ;(C2+7CH)--->3
            INC      R0
            INC      R0
            INC      R0
            MOV      A,@R0
            CLR      CY
            ADD      A,#07CH
            CLR      CY
            RL       A
            RL       A
            RL       A

            MUL      AB                        ;A*B+6AH
            CLR      CY
            ADD      A,#06AH
            MOV      TEMP,A

            MOV      R0,#SND_BUFF               ;(c1+3EH)--->3
            INC      R0
            INC      R0
            MOV      A,@R0
            CLR      CY
            ADD      A,#03EH
            CLR      CY
            RL       A
            RL       A
            RL       A
            MOV      B,A

            MOV      R0,#SND_BUFF               ;(C2+E3H)<---3
            INC      R0
            INC      R0
            INC      R0
            MOV      A,@R0
            CLR      CY
            ADD      A,#0E3H
            CLR      CY
            RR       A
            RR       A
            RR       A

            MUL      AB                         ;A*B+6CH
            CLR      CY
            ADD      A,#06CH

            MOV      R0,#SND_BUFF               ;写入发送缓冲区
            INC      R0
            INC      R0
            INC      R0
            MOV      @R0,A
            DEC      R0
            MOV      A,TEMP
            MOV      @R0,A

            MOV      A,#SOH_OUT1
            RET
;***************************
;***************************
;
;***************************

           END

⌨️ 快捷键说明

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