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

📄 dog5

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

            MOV      ALARM_IN_OK1,#00H
            MOV      ALARM_IN_OK2,#00H

            MOV      A,#SOH_OUT1

            RET
START_SYS_1:   NOP
            CJNE     A,#NO,START_SYS_ERROR
            CLR     SYS_START                      ;系统停止工作
            MOV      A,#SOH_OUT1
            RET
START_SYS_ERROR: NOP
            MOV      A,#SOH_OUT4                    ;指令参数出错
            RET

;***************************
;***************************
;采用查询方式从串口发送数据到PC机
;***************************
SEND_DATA_TO_PC: NOP

              LCALL    DELAY5MS

              CLR       TI
              MOV       R7,#06H                   ;数据长度为5个BYTE
              MOV       R0,#SND_BUFF              ;数据起始地址
SD_TO_PC_1:   DJNZ      R7,SD_TO_PC_2
              NOP
              NOP
              NOP
              NOP
              LCALL    DELAY5MS
              RET

SD_TO_PC_2:   CLR       SBUF_EMPT_FLAG
              MOV       A,@R0
              MOV       SBUF,A
              INC       R0
              JNB       SBUF_EMPT_FLAG,$
              AJMP      SD_TO_PC_1
;***************************
;***************************
;求校验位:求和,取反,+1
;***************************
CHECK_SUM: NOP
           MOV      R0,#SND_BUFF                ;求和
           MOV      A,@R0
           MOV      TEMP,A
           INC      R0
           MOV      A,@R0
           ADD      A,TEMP
           MOV      TEMP,A
           INC      R0
           MOV      A,@R0
           ADD      A,TEMP
           MOV      TEMP,A
           INC      R0
           MOV      A,@R0
           ADD      A,TEMP
           CPL      A                           ;取反
           INC      A                           ;加1
           RET
;***************************
;***************************
;报警输出设置
;***************************
ALARM_OUTPUT_SET: NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,ALM_OUT_1               ;判断通道序号并设置相应的BIT位
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_0
            SETB     ALARM_OUT1
            AJMP     ALARM_OUT_END
ALM_OUT_0:  CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT1
            AJMP     ALARM_OUT_END

ALM_OUT_1:  CJNE     A,#02H,ALM_OUT_2
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_1A
            SETB     ALARM_OUT2
            AJMP     ALARM_OUT_END
ALM_OUT_1A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT2
            AJMP     ALARM_OUT_END

ALM_OUT_2:  CJNE     A,#03H,ALM_OUT_3
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_2A
            SETB     ALARM_OUT3
            AJMP     ALARM_OUT_END
ALM_OUT_2A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT3
            AJMP     ALARM_OUT_END

ALM_OUT_3:  CJNE     A,#04H,ALM_OUT_5
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_3A
            SETB     ALARM_OUT4
            AJMP     ALARM_OUT_END
ALM_OUT_3A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT4
            AJMP     ALARM_OUT_END

ALM_OUT_ERROR:  NOP
             MOV     A,#SOH_OUT4
             RET


ALM_OUT_5:  CJNE     A,#06H,ALM_OUT_6
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_5A
            SETB     ALARM_OUT6
            AJMP     ALARM_OUT_END
ALM_OUT_5A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT6
            AJMP     ALARM_OUT_END

ALM_OUT_6:  CJNE     A,#07H,ALM_OUT_7
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_6A
            SETB     ALARM_OUT7
            AJMP     ALARM_OUT_END
ALM_OUT_6A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT7
            AJMP     ALARM_OUT_END

ALM_OUT_7:  CJNE     A,#08H,ALM_OUT_ERROR
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_OUT_7A
            SETB     ALARM_OUT8
            AJMP     ALARM_OUT_END
ALM_OUT_7A: CJNE     A,#NO,ALM_OUT_ERROR
            CLR      ALARM_OUT8

ALARM_OUT_END:
            CLR      ALR_CLK
            MOV     A,ALARM_OUT
            MOV     P0,A
            SETB     ALR_CLK

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

;***************************
;报警输入配置:常开、常闭设置
;***************************
ALARM_INPUT_SET:NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,ALM_IN_1       ;通道1
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_0A
            SETB     ALARM_IN1
            AJMP     ALARM_IN_END
ALM_IN_0A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN1
            AJMP     ALARM_IN_END

ALM_IN_1:   CJNE     A,#02H,ALM_IN_2      ;通道2
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_1A
            SETB     ALARM_IN2
            AJMP     ALARM_IN_END
ALM_IN_1A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN2
            AJMP     ALARM_IN_END

ALM_IN_2:   CJNE     A,#03H,ALM_IN_3            ;通道3
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_2A
            SETB     ALARM_IN3
            AJMP     ALARM_IN_END
ALM_IN_2A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN3
            AJMP     ALARM_IN_END


ALM_IN_3:   CJNE     A,#04H,ALM_IN_4            ;通道4
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_3A
            SETB     ALARM_IN4
            AJMP     ALARM_IN_END
ALM_IN_3A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN4
            AJMP     ALARM_IN_END

ALM_IN_ERROR:    NOP
             LJMP    ALM_IN_ERROR_END

ALM_IN_4:   CJNE     A,#05H,ALM_IN_5            ;通道5
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_4A
            SETB     ALARM_IN5
            AJMP     ALARM_IN_END
ALM_IN_4A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN5
            AJMP     ALARM_IN_END

ALM_IN_5:   CJNE     A,#06H,ALM_IN_6            ;通道6
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_5A
            SETB     ALARM_IN6
            AJMP     ALARM_IN_END
ALM_IN_5A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN6
            AJMP     ALARM_IN_END


ALM_IN_6:   CJNE     A,#07H,ALM_IN_7            ;通道7
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_6A
            SETB     ALARM_IN7
            AJMP     ALARM_IN_END
ALM_IN_6A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN7
            AJMP     ALARM_IN_END

ALM_IN_7:   CJNE     A,#08H,ALM_IN_10           ;通道8
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_7A
            SETB     ALARM_IN8
            AJMP     ALARM_IN_END
ALM_IN_7A: CJNE     A,#NO,ALM_IN_ERROR
            CLR      ALARM_IN8
            AJMP     ALARM_IN_END


ALARM_IN_END:  NOP
            MOV      A,#SOH_OUT1
            RET

ALM_IN_ERROR_END: NOP
            MOV      A,#SOH_OUT4
            RET


ALM_IN_10:  NOP
            CJNE     A,#09H,ALM_IN_11           ;通道9
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_10A
            SETB     ALARM_IN9
            AJMP     ALARM_IN_END
ALM_IN_10A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN9
            AJMP     ALARM_IN_END

ALM_IN_11:   CJNE     A,#0AH,ALM_IN_12          ;通道10
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_11A
            SETB     ALARM_IN10
            AJMP     ALARM_IN_END
ALM_IN_11A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN10
            AJMP     ALARM_IN_END

ALM_IN_12:   CJNE     A,#0BH,ALM_IN_13          ;通道11
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_12A
            SETB     ALARM_IN11
            AJMP     ALARM_IN_END
ALM_IN_12A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN11
            AJMP     ALARM_IN_END


ALM_IN_13:   CJNE     A,#0CH,ALM_IN_14          ;通道12
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_13A
            SETB     ALARM_IN12
            AJMP     ALARM_IN_END
ALM_IN_13A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN12
            AJMP     ALARM_IN_END

ALM_IN_ERROR2:    NOP
             LJMP    ALM_IN_ERROR_END

ALM_IN_14:   CJNE     A,#0DH,ALM_IN_15          ;通道13
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_14A
            SETB     ALARM_IN13
            AJMP     ALARM_IN_END
ALM_IN_14A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN13
            AJMP     ALARM_IN_END

ALM_IN_15:   CJNE     A,#0EH,ALM_IN_16          ;通道14
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_15A
            SETB     ALARM_IN14
            AJMP     ALARM_IN_END
ALM_IN_15A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN14
            AJMP     ALARM_IN_END


ALM_IN_16:   CJNE     A,#0FH,ALM_IN_17          ;通道15
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_16A
            SETB     ALARM_IN15
            AJMP     ALARM_IN_END
ALM_IN_16A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN15
            AJMP     ALARM_IN_END

ALM_IN_17:   CJNE     A,#010H,ALM_IN_18          ;通道16
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,ALM_IN_17A
            SETB     ALARM_IN16
            AJMP     ALARM_IN_END
ALM_IN_17A: CJNE     A,#NO,ALM_IN_ERROR2
            CLR      ALARM_IN16
            AJMP     ALARM_IN_END

ALM_IN_18:  NOP
            LJMP      ALM_IN_ERROR_END
;***************************

;***************************
;看门狗定时设置
;***************************
WAT_DOG_SET:NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            MOV      WAT_TIME,A
            MOV      WAT_TIME1,A
            MOV      WAT_TIME2,#09H
            INC      R0
            MOV      A,@R0
            CJNE     A,#YES,WAT_DOG_1
            SETB     WAT_DOG_FLAG
            AJMP     WAT_DOG_END
WAT_DOG_1:  CJNE     A,#NO,WAT_DOG_ERROR
            CLR      WAT_DOG_FLAG
            AJMP     WAT_DOG_END

WAT_DOG_ERROR:NOP
            MOV      A,#SOH_OUT4
            RET

WAT_DOG_END:NOP
            MOV      A,#SOH_OUT1
            RET

;***************************
;LED 输出控制:开或关
;***************************
LED_OUTPUT_SET: NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,LED_OUT_1
            INC      R0                             ;LED 1
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_0A
            SETB     LED_OUT1
            AJMP     LED_END
LED_OUT_0A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT1
            AJMP     LED_END

LED_OUT_1:  CJNE     A,#02H,LED_OUT_2
            INC      R0                             ;LED 2
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_1A
            SETB     LED_OUT2
            AJMP     LED_END
LED_OUT_1A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT2
            AJMP     LED_END

LED_OUT_2:  CJNE     A,#03H,LED_OUT_3
            INC      R0                             ;LED 3
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_2A
            SETB     LED_OUT3
            AJMP     LED_END
LED_OUT_2A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT3
            AJMP     LED_END

LED_OUT_3:  CJNE     A,#04H,LED_OUT_4
            INC      R0                             ;LED 4
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_3A
            SETB     LED_OUT4
            AJMP     LED_END
LED_OUT_3A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT4
            AJMP     LED_END

LED_END:    NOP
            CLR      LED_CLK
            MOV      A,LED_OUT
            MOV      P0,A
            SETB     LED_CLK
            MOV      A,#SOH_OUT1
            RET

LED_OUT_ERROR:  NOP
            MOV      A,#SOH_OUT4
            RET


LED_OUT_4:  CJNE     A,#05H,LED_OUT_5
            INC      R0                             ;LED 5
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_4A
            SETB     LED_OUT5
            AJMP     LED_END
LED_OUT_4A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT5
            AJMP     LED_END


LED_OUT_5:  CJNE     A,#06H,LED_OUT_6
            INC      R0                             ;LED 6
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_5A
            SETB     LED_OUT6
            AJMP     LED_END
LED_OUT_5A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT6
            AJMP     LED_END

LED_OUT_6:  CJNE     A,#07H,LED_OUT_7
            INC      R0                             ;LED 7
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_6A
            SETB     LED_OUT7
            AJMP     LED_END
LED_OUT_6A: CJNE     A,#NO,LED_OUT_ERROR
            CLR      LED_OUT7
            AJMP     LED_END

LED_OUT_7:  CJNE     A,#08H,LED_OUT_ERROR
            INC      R0                             ;LED 8
            MOV      A,@R0
            CJNE     A,#YES,LED_OUT_7A
            SETB     LED_OUT8
            AJMP     LED_END
LED_OUT_7A: CJNE     A,#NO,LED_OUT_ERROR

⌨️ 快捷键说明

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