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

📄 dog5

📁 报警器
💻
📖 第 1 页 / 共 4 页
字号:
            CLR      LED_OUT8
            AJMP     LED_END

;***************************
;***************************
;从EEPROM中读取数据
;***************************
READ_FROM_NVD:   NOP
            MOV      R0,#SND_BUFF                ;得到需读取的地址
            INC      R0
            INC      R0
            MOV      A,@R0
            MOV      BYTE_ADDRESS,A

            ACALL   I2C_STRT                    ;I2C开始
            MOV     A,#0A0H
            ACALL   I2C_WRITE_BYTE              ;写入器件地址
            MOV     A,BYTE_ADDRESS
            ACALL   I2C_WRITE_BYTE              ;写入数据地址

            ACALL   I2C_STRT                    ;I2C开始
            MOV     A,#0A1H
            ACALL   I2C_WRITE_BYTE              ;写入读操作

            LCALL   I2C_READ_BYTE               ;从SDA上读取1BYTE数据

            ACALL   I2C_STOP                    ;I2C结束

            MOV      BYTE_DATA,A
            MOV      R0,#SND_BUFF                ;将数据写入需发送的数据包中
            INC      R0
            INC      R0
            INC      R0
            MOV      @R0,A

            MOV      A,#SOH_OUT1
            NOP
            RET
;***************************
;***************************
;向EEPROM中写入数据
;***************************
WRITE_TO_NVD:   NOP
            MOV      R0,#SND_BUFF                ;得到需写入的地址
            INC      R0
            INC      R0
            MOV      A,@R0
            MOV      BYTE_ADDRESS,A
            INC      R0
            MOV      A,@R0
            MOV      BYTE_DATA,A
            INC      R0

            ACALL   I2C_STRT
            MOV     A,#0A0H
            ACALL   I2C_WRITE_BYTE
            MOV     A,BYTE_ADDRESS
            ACALL   I2C_WRITE_BYTE
            MOV     A,BYTE_DATA
            ACALL   I2C_WRITE_BYTE
            ACALL   I2C_STOP

            MOV      A,#SOH_OUT1
            NOP
            RET
;***************************
;***************************
;
;***************************
WRITE_NVD: NOP
           ACALL   I2C_STRT
           MOV     A,#0A0H
           ACALL   I2C_WRITE_BYTE
           MOV     A,BYTE_ADDRESS
           ACALL   I2C_WRITE_BYTE
           MOV     A,BYTE_DATA
           ACALL   I2C_WRITE_BYTE
           ACALL   I2C_STOP
           RET
;******************************
;***************************
;***************************
;
;***************************
READ_BYTE:  NOP
           ACALL   I2C_STRT
           MOV     A,#0A0H
           ACALL   I2C_WRITE_BYTE
           MOV     A,BYTE_ADDRESS
           ACALL   I2C_WRITE_BYTE

           ACALL   I2C_STRT
           MOV     A,#0A1H
           ACALL   I2C_WRITE_BYTE

           LCALL   I2C_READ_BYTE

           ACALL   I2C_STOP
           RET
;***************************
;***************************
;
;***************************
I2C_READ_BYTE:  NOP
                MOV     A,#00H
                MOV     R0,#8
                CLR     SCL
                NOP
I2C_R_BYTE1:    SETB    SCL
                MOV     C,SDA
                RLC     A
                CLR     SCL
                NOP
                NOP
                DJNZ    R0,I2C_R_BYTE1

	        RET
;***************************
;***************************
;
;***************************
READ_SDA:       NOP
                MOV     A,#00H
                CLR     CY
                MOV     R7,#00H
                CLR     DATA_FLAG
RD_SDA_1:       JB      SCL,RD_SDA_2
                JNB     DATA_FLAG,RD_SDA_1
                CLR     DATA_FLAG
                AJMP    RD_SDA_1
RD_SDA_2:       JB      DATA_FLAG,RD_SDA_1
                SETB    DATA_FLAG
                MOV     CY,SDA
                RLC     A
                INC     R7
                MOV     A,R7
                CJNE    A,#08H,RD_SDA_1

                RET
;******************************
;***************************
;
;***************************
I2C_CLK:        SETB    SCL
                NOP
                NOP
                NOP
                NOP
                CLR     SCL
	        RET
;***************************
;
;***************************
I2C_STRT:  SETB    SDA
           SETB    SCL
	   NOP
           NOP
           NOP
           NOP
           CLR     SDA
           NOP
           NOP
           NOP
           NOP
           CLR     SCL
	   RET
;***************************
;
;***************************
I2C_STOP:  CLR     SDA
           SETB    SCL
	   NOP
           NOP
           NOP
           NOP
           SETB    SDA
	   RET
;***************************
;
;***************************
I2C_ACK:   SETB    SDA
           SETB    SCL
           NOP
           NOP
           NOP
           NOP
           CLR     SCL
           RET
;***************************
;
;***************************
I2C_WRITE_BYTE: NOP
                MOV     R0,#8
I2C_W_BYTE1:    RLC     A
                MOV     SDA,C
	        NOP
	        NOP
                ACALL   I2C_CLK
                DJNZ    R0,I2C_W_BYTE1
	        NOP
                ACALL   I2C_ACK
	        RET
;***************************
;***************************
;
;***************************

DELAY5MS:      NOP
                MOV      R3,#25
DELAY5_1:      MOV      R2,#200
DELAY5_2:      DJNZ     R2,DELAY5_2
                DJNZ     R3,DELAY5_1
                RET

;***************************
;***************************
DELAY50MS:      NOP
                MOV      R3,#250
DELAY50_1:      MOV      R2,#200
DELAY50_2:      DJNZ     R2,DELAY50_2
                DJNZ     R3,DELAY50_1
                RET
;***************************
;***************************
DELAY500MS:   NOP
              MOV      R4,#5
DELAY5S_0:    MOV      R3,#250
DELAY5S_1:    MOV      R2,#200
DELAY5S_2:    DJNZ     R2,DELAY5S_2
              DJNZ     R3,DELAY5S_1
              DJNZ     R4,DELAY5S_0
              RET
;******************************
;******************************
DELAY100MS:  NOP
             MOV       R4,#1
DELAY10S_0:  MOV       R3,#250
DELAY10S_1:  MOV       R2,#200
DELAY10S_2:  DJNZ      R2,DELAY10S_2
             DJNZ      R3,DELAY10S_1
             DJNZ      R4,DELAY10S_0
             RET
;*******************************
;*******************************
;16进制转换为10进制
;输入:A
;输出:A(转换后的高位),B(转换后低位)
;*******************************
HEX_TO_ASCII:   NOP
                MOV      B,#10H
                DIV      AB
                CJNE     A,#0AH,HEX_TO_ASC_1
HEX_TO_ASC_1:   JC       HEX_TO_ASC_2
                ADD      A,#37H
                AJMP     HEX_TO_ASC_3
HEX_TO_ASC_2:   ADD      A,#30H
HEX_TO_ASC_3:   PUSH     A
                MOV      A,B
                CJNE     A,#0AH,HEX_TO_ASC_4
HEX_TO_ASC_4:   JC       HEX_TO_ASC_5
                ADD      A,#37H
                AJMP     HEX_TO_ASC_6
HEX_TO_ASC_5:   ADD      A,#30H
HEX_TO_ASC_6:   MOV      B,A
                POP      A
                RET

;*******************************
;***************************
;
;***************************
SEND_ALARM_IN_STATE: NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,ALM_IN_STA_1       ;通道1
            JNB      ALM_PIN_1,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO
ALM_IN_STA_1:   CJNE     A,#02H,ALM_IN_STA_2      ;通道2
            JNB      ALM_PIN_2,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_2:   CJNE     A,#03H,ALM_IN_STA_3            ;通道3
            JNB      ALM_PIN_3,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_3:   CJNE     A,#04H,ALM_IN_STA_4            ;通道4
            JNB      ALM_PIN_4,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_4:   CJNE     A,#05H,ALM_IN_STA_5            ;通道5
            JNB      ALM_PIN_5,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_5:   CJNE     A,#06H,ALM_IN_STA_6            ;通道6
            JNB      ALM_PIN_6,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_6:   CJNE     A,#07H,ALM_IN_STA_7            ;通道7
            JNB      ALM_PIN_7,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_7:   CJNE     A,#08H,ALM_IN_STA_10           ;通道8
            JNB      ALM_PIN_8,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_10:  CJNE     A,#09H,ALM_IN_STA_11           ;通道8
            JNB      ALM_PIN_9,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_11:   CJNE     A,#0AH,ALM_IN_STA_12          ;通道10
            JNB      ALM_PIN_10,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_12:   CJNE     A,#0BH,ALM_IN_STA_13          ;通道11
            JNB      ALM_PIN_11,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_13:   CJNE     A,#0CH,ALM_IN_STA_14          ;通道12
            JNB      ALM_PIN_12,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_14:   CJNE     A,#0DH,ALM_IN_STA_15          ;通道13
            JNB      ALM_PIN_13,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_15:   CJNE     A,#0EH,ALM_IN_STA_16          ;通道14
            JNB      ALM_PIN_14,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_16:   CJNE     A,#0FH,ALM_IN_STA_17          ;通道15
            JNB      ALM_PIN_15,ALM_IN_STA_YES
            AJMP     ALM_IN_STA_NO

ALM_IN_STA_17:   CJNE     A,#010H,ALM_IN_STA_ERROR          ;通道16
            JNB      ALM_PIN_16,ALM_IN_STA_YES
ALM_IN_STA_NO: MOV     A,#YES
                 AJMP    ALM_IN_STA_18

ALM_IN_STA_YES:MOV     A,#NO

ALM_IN_STA_18:  NOP
                MOV     R0,#SND_BUFF
                INC     R0
                INC     R0
                INC     R0
                MOV     @R0,A

                MOV     A,#SOH_OUT1
                RET

ALM_IN_STA_ERROR:
                MOV     A,#SOH_OUT4
                RET

;***************************
;***************************
;
;***************************
SEND_ALARM_OUT_STATE: NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,LED_OUT_STA_1               ;判断通道序号并设置相应的BIT位
            JB       ALARM_OUT1,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_1:  CJNE     A,#02H,LED_OUT_STA_2
            JB       ALARM_OUT2,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_2:  CJNE     A,#03H,LED_OUT_STA_3
            JB       ALARM_OUT3,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_3:  CJNE     A,#04H,LED_OUT_STA_4
            JB       ALARM_OUT4,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_4:  CJNE     A,#05H,LED_OUT_STA_5
            JB       ALARM_OUT5,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO


LED_OUT_STA_5:  CJNE     A,#06H,LED_OUT_STA_6
            JB       ALARM_OUT6,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_6:  CJNE     A,#07H,LED_OUT_STA_7
            JB       ALARM_OUT7,LED_OUT_STA_STA_YES
            AJMP     LED_OUT_STA_STA_NO

LED_OUT_STA_7:  CJNE     A,#08H,LED_OUT_STA_STA_ERROR
            JB       ALARM_OUT8,LED_OUT_STA_STA_YES
LED_OUT_STA_STA_NO: NOP
                MOV     A,#NO
                AJMP    LED_OUT_STA_STA_8

LED_OUT_STA_STA_YES: NOP
               MOV      A,#YES
LED_OUT_STA_STA_8: NOP
               MOV      R0,#SND_BUFF
               INC      R0
               INC      R0
               INC      R0
               MOV      @R0,A

            MOV      A,#SOH_OUT1
            RET
LED_OUT_STA_STA_ERROR:
            MOV      A,#SOH_OUT4
            RET

;***************************
;
;***************************
SEND_LED_STATE: NOP
            MOV      R0,#SND_BUFF
            INC      R0
            INC      R0
            MOV      A,@R0
            CJNE     A,#01H,LED_STA_1
            JB      LED_OUT1,LED_STA_YES
            LJMP     LED_STA_NO

LED_STA_1:  CJNE     A,#02H,LED_STA_2
            JB      LED_OUT2,LED_STA_YES
            LJMP     LED_STA_NO

LED_STA_2:  CJNE     A,#03H,LED_STA_3
            JB      LED_OUT3,LED_STA_YES
            LJMP     LED_STA_NO
LED_STA_3:  CJNE     A,#04H,LED_STA_4
            JB      LED_OUT4,LED_STA_YES
            LJMP     LED_STA_NO

LED_STA_4:  CJNE     A,#05H,LED_STA_5
            JB      LED_OUT5,LED_STA_YES
            LJMP     LED_STA_NO

LED_STA_5:  CJNE     A,#06H,LED_STA_6
            JB      LED_OUT6,LED_STA_YES
            LJMP     LED_STA_NO

LED_STA_6:  CJNE     A,#07H,LED_STA_7
            JB      LED_OUT7,LED_STA_YES
            LJMP     LED_STA_NO
LED_STA_7:  CJNE     A,#08H,LED_STA_ERROR
            JB      LED_OUT8,LED_STA_YES
LED_STA_NO: MOV    A,#NO
            AJMP   LED_STA_8

LED_STA_YES: MOV    A,#YES
LED_STA_8:   MOV    R0,#SND_BUFF
             INC    R0
             INC    R0
             INC    R0
             MOV    @R0,A
             MOV    A,#SOH_OUT1
             RET

LED_STA_ERROR:
             MOV    A,#SOH_OUT4
             RET
;***************************
SEND_ALM_IN: NOP

             MOV     SEND_TIME,#00H
SEND_ALM_1:  MOV     A,SEND_TIME
             CJNE    A,#010,SEND_ALM_2
SEND_ALM_2:  JC      SEND_ALM_3
             MOV     A,#0AAH
             RET

⌨️ 快捷键说明

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