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

📄 fire_ctr.asm

📁 消防报警信号转换控制器
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        MOV     SEND_BYTE0,     #0AAH
        MOV     SEND_BYTE1,     #0AAH
        MOV     SEND_BYTE2,     ADD0
        MOV     SEND_BYTE3,     SELF_ADDRESS
        MOV     SEND_BYTE4,     #32H
                                       ;计算警情种类
        MOV     A,      RECEIVE_BYTE4
        CJNE    A,      #01H,   RSLINK_FB_PRO_SELF18_LP1
        MOV     SEND_BYTE5,     #01H
        JMP     RSLINK_FB_PRO_SELF18_LP2    
RSLINK_FB_PRO_SELF18_LP1:
        CJNE    A,      #03H,   RSLINK_FB_PRO_RET1
        MOV     SEND_BYTE5,     #02H
RSLINK_FB_PRO_SELF18_LP2:                             
        MOV     SEND_BYTE6,     RECEIVE_BYTE6                ;计算路数

        MOV     SEND_BYTE7,     #00H
        MOV     SEND_BYTE8,     #00H
        CLR     C
        MOV     A,      SEND_BYTE2
        ADD     A,      SEND_BYTE3
        ADD     A,      SEND_BYTE4
        ADD     A,      SEND_BYTE5
        ADD     A,      SEND_BYTE6
        ADD     A,      SEND_BYTE7
        ADD     A,      SEND_BYTE8
        MOV     SEND_BYTE9,  A
                                                                  
        MOV   	R2,    #0AH                                 ;发送字节数                       
        SETB    FIRE_ALARM_FLG                              ;置FIRE报警标志
        
RSLINK_FB_PRO_RET1:
        CPL     WATCH_DOG 
        RET



;*********************************
;   AA指令处理自程序
;*********************************
RSLINK_AA_PRO_RET2:
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO:
        CPL     WATCH_DOG              
RSLINK_AA_PRO_SELF1:
        JNB     RI, RSLINK_AA_PRO_SELF1
        CLR     RI
        MOV     A,      SBUF
        CJNE    A,  #0AAH,  RSLINK_AA_PRO_RET2
RSLINK_AA_PRO_SELF2:
        JNB     RI, RSLINK_AA_PRO_SELF2
        CLR     RI
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE2,  A
        CJNE    A,      #00H,   RSLINK_AA_PRO_SELF2_LP1
        JMP     RSLINK_AA_PRO_SELF3
RSLINK_AA_PRO_SELF2_LP1:
        CJNE    A,  ADD0,   RSLINK_AA_PRO_RET2
RSLINK_AA_PRO_SELF3:
        JNB     RI, RSLINK_AA_PRO_SELF3
        CLR     RI
        CPL     WATCH_DOG 
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE3,  A
        CJNE    A,      #00H,   RSLINK_AA_PRO_SELF3_LP1
        JMP     RSLINK_AA_PRO_SELF4
RSLINK_AA_PRO_SELF3_LP1:
        CJNE    A,  SELF_ADDRESS,  RSLINK_AA_PRO_RET2
RSLINK_AA_PRO_SELF4:
        JNB     RI, RSLINK_AA_PRO_SELF4
        CLR     RI
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE4,  A
RSLINK_AA_PRO_SELF5:
        JNB     RI, RSLINK_AA_PRO_SELF5
        CLR     RI
        CPL     WATCH_DOG 
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE5,  A
RSLINK_AA_PRO_SELF6:
        JNB     RI, RSLINK_AA_PRO_SELF6
        CLR     RI
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE6,  A
RSLINK_AA_PRO_SELF7:
        JNB     RI, RSLINK_AA_PRO_SELF7
        CLR     RI
        CPL     WATCH_DOG 
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE7,  A
RSLINK_AA_PRO_SELF8:
        JNB     RI, RSLINK_AA_PRO_SELF8
        CLR     RI
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE8,  A
RSLINK_AA_PRO_SELF9:
        JNB     RI, RSLINK_AA_PRO_SELF9
        CLR     RI
        CPL     WATCH_DOG 
        MOV     A,      SBUF
        MOV     RECEIVE_BYTE9,  A
        MOV     A,      RECEIVE_BYTE2
        ADD     A,      RECEIVE_BYTE3
        ADD     A,      RECEIVE_BYTE4
        ADD     A,      RECEIVE_BYTE5
        ADD     A,      RECEIVE_BYTE6
        ADD     A,      RECEIVE_BYTE7
        ADD     A,      RECEIVE_BYTE8
        CLR     C
        CJNE    A,      RECEIVE_BYTE9,  RSLINK_AA_PRO_RET4
        CPL     WATCH_DOG
        MOV     A,      RECEIVE_BYTE4
        CJNE    A,      #50H,   RSLINK_AA_PRO_LP4       ;MODEM测试?
        SETB    MODEM_TEST_FLG
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP4:
        CJNE    A,      #51H,   RSLINK_AA_PRO_LP1       ;MODEM测试?
        MOV     MODEM_SEND_END_DELAY, #10H
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP2_CON:
        JMP     RSLINK_AA_PRO_LP2

RSLINK_AA_PRO_LP1:
        CPL    	WATCH_DOG
        CJNE    A,      #41H,   RSLINK_AA_PRO_LP2_CON    ;电话号码设置?
/*
        MOV     TEL_H1, RECEIVE_BYTE5
        MOV     TEL_H2, RECEIVE_BYTE6
        MOV     TEL_L1, RECEIVE_BYTE7
        MOV     TEL_L2, RECEIVE_BYTE8

        MOV   	EE_WRITE_ADD,   #10H
        MOV   	EE_WRITE_DATA,  TEL_H1
        CALL  	WRITE_BYTE 

        CPL     WATCH_DOG
        MOV   	EE_WRITE_ADD,   #11H
        MOV   	EE_WRITE_DATA,  TEL_H2
        CALL  	WRITE_BYTE
        
        CPL     WATCH_DOG
        MOV   	EE_WRITE_ADD,   #12H
        MOV   	EE_WRITE_DATA,  TEL_L1
        CALL  	WRITE_BYTE
        
        CPL     WATCH_DOG
        MOV   	EE_WRITE_ADD,   #13H
        MOV   	EE_WRITE_DATA,  TEL_L2
        CALL  	WRITE_BYTE

        CPL     WATCH_DOG

        MOV     MODEM_TEL_Z,    #00H
        CALL    MODEM_TEL_ORDER             ;MODEM 存号码指令调用"AT&Z0="

        MOV     MODEM_TEL_BUF,      TEL_H1
        CALL    MODEM_TEL_SET

        MOV     MODEM_TEL_BUF,      TEL_H2 
        CALL    MODEM_TEL_SET

        MOV     MODEM_TEL_BUF,      TEL_L1 
        CALL    MODEM_TEL_SET           
        
        MOV     MODEM_TEL_BUF,      TEL_L2 
        CALL    MODEM_TEL_SET

        CALL    MODEM_RETURN                ;"RETURN"
*/ 
RSLINK_AA_PRO_RET4:                        
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP2:
        CPL    	WATCH_DOG
        CJNE    A,      #42H,   RSLINK_AA_PRO_LP3       ;电话号码查询?
        MOV     SEND_BYTE0,     #0AAH
        MOV     SEND_BYTE1,     #0AAH
        MOV     SEND_BYTE2,     ADD0
        MOV     SEND_BYTE3,     SELF_ADDRESS
        MOV     SEND_BYTE4,     #4AH
        MOV     SEND_BYTE5,     TEL_H1
        MOV     SEND_BYTE6,     TEL_H2
        MOV     SEND_BYTE7,     TEL_L1
        MOV     SEND_BYTE8,     TEL_L2
        MOV     A,      SEND_BYTE2
        ADD     A,      SEND_BYTE3
        ADD     A,      SEND_BYTE4
        ADD     A,      SEND_BYTE5
        ADD     A,      SEND_BYTE6
        ADD     A,      SEND_BYTE7
        ADD     A,      SEND_BYTE8
        MOV     SEND_BYTE9,     A
        CPL     WATCH_DOG 
        MOV     R0,     #2FH
        MOV   	R2,     #0AH
        SETB    RS485_CTR      
        CALL    SEND_PRG
        CLR     RS485_CTR
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP5_CON:
        JMP     RSLINK_AA_PRO_LP5
RSLINK_AA_PRO_LP3:
        CPL    	WATCH_DOG
        CJNE    A,      #40H,   RSLINK_AA_PRO_LP5_CON       ;输出口控制
        MOV     A,  RECEIVE_BYTE5
        CJNE    A,  #00H,   RSLINK_AA_PRO_LP3_CON
        MOV     A,  RECEIVE_BYTE6
        CJNE    A,  #01H,   RSLINK_AA_PRO_LP3_1
        CLR     OUT1
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_1:
        CJNE    A,  #02H,   RSLINK_AA_PRO_LP3_2
        CLR     OUT2
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_2:
        CJNE    A,  #03H,   RSLINK_AA_PRO_LP3_3
        CLR     OUT3
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_3:
        CJNE    A,  #04H,   RSLINK_AA_PRO_RET3
        CLR     OUT4
RSLINK_AA_PRO_RET3:
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP3_CON:
        CJNE    A,  #01H,   RSLINK_AA_PRO_RET3
        MOV     A,  RECEIVE_BYTE6
        CJNE    A,  #01H,   RSLINK_AA_PRO_LP3_CON_1
        SETB    OUT1
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_CON_1:
        CJNE    A,  #02H,   RSLINK_AA_PRO_LP3_CON_2
        SETB    OUT2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT2
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_CON_2:
        CJNE    A,  #03H,   RSLINK_AA_PRO_LP3_CON_3
        SETB    OUT3
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT3
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP3_CON_3:
        CJNE    A,  #04H,   RSLINK_AA_PRO_RET3

        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        SETB    OUT4
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CPL     WATCH_DOG
        CALL    TIMER2
        CLR     OUT4

        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP5:
        CPL    	WATCH_DOG
        CJNE    A,      #43H,   RSLINK_AA_PRO_LP6;RSLINK_AA_PRO_RET1       ;电话号码查询?
        MOV     A,  P0
        ANL     A,  #0F0H
        SWAP    A
        MOV     SEND_BYTE5,     A
        MOV     SEND_BYTE0,     #0AAH
        MOV     SEND_BYTE1,     #0AAH
        MOV     SEND_BYTE2,     ADD0
        MOV     SEND_BYTE3,     SELF_ADDRESS
        MOV     SEND_BYTE4,     #4BH      
        MOV     SEND_BYTE6,     #00H
        MOV     SEND_BYTE7,     #00H
        MOV     SEND_BYTE8,     #00H
        MOV     A,      SEND_BYTE2
        ADD     A,      SEND_BYTE3
        ADD     A,      SEND_BYTE4
        ADD     A,      SEND_BYTE5
        ADD     A,      SEND_BYTE6
        ADD     A,      SEND_BYTE7
        ADD     A,      SEND_BYTE8
        MOV     SEND_BYTE9,     A
        CPL     WATCH_DOG 
        MOV     R0,     #2FH
        MOV   	R2,     #0AH
        SETB    RS485_CTR      
        CALL    SEND_PRG
        CLR     RS485_CTR
        JMP     RSLINK_AA_PRO_RET1

RSLINK_AA_PRO_LP6:
        CPL     WATCH_DOG
        CJNE    A,      #38H,   RSLINK_AA_PRO_RET1      ;是否ADSL故障
        MOV     A,      RECEIVE_BYTE5
        CJNE    A,      #01H,   RSLINK_AA_PRO_LP6_CN1
        SETB    TEL_STATE                               ;ADSL故障标志
        JMP     RSLINK_AA_PRO_RET1
RSLINK_AA_PRO_LP6_CN1:
        CJNE    A,      #02H,   RSLINK_AA_PRO_RET1
        CLR     TEL_STATE                               ;ADSL故障解除
RSLINK_AA_PRO_RET1:
        CPL    	WATCH_DOG

        RET

;*******************************
;   MODEM应答处理子程序
;*******************************
RSLINK_MODEM_ANSWER_RET2:
        JMP     RSLINK_MODEM_ANSWER_RET1

RSLINK_MODEM_ANSWER:
        CPL     WATCH_DOG
        MOV     R0,     #31H
        MOV     R3,     #00H
RSLINK_MODEM_ANSWER_SELF2:
        JNB     RI,     RSLINK_MODEM_ANSWER_SELF2
        CLR     RI
        INC     R0
        INC     R3
        CPL     WATCH_DOG 
        MOV     A,      SBUF
        MOV     @R0,  A
        CJNE    A,  #0DH,   RSLINK_MODEM_ANSWER_SELF2            ;"0D"?        
RSLINK_MODEM_ANSWER_SELF3:
        JNB     RI,     RSLINK_MODEM_ANSWER_SELF3
        CLR     RI
        MOV     A,      SBUF
        CJNE    A,  #0AH,   RSLINK_MODEM_ANSWER_RET2             ;"0A"?   
        CPL     WATCH_DOG
        DEC     R3
        CJNE    R3,     #02H,   RSLINK_MODEM_ANSWER_LP1          ;"OK"?
        NOP
        NOP
        JMP     RSLINK_MODEM_ANSWER_RET1

RSLINK_MODEM_ANSWER_LP1:
        CJNE    R3,     #04H,   RSLINK_MODEM_ANSWER_LP2          ;"BUSY"?
        NOP
        NOP
        SETB    MODEM_TEL_BUSY_FLG
        INC     MODEM_TEL_BUSY_NUM
        MOV     A,  MODEM_TEL_BUSY_WAIT
        CJNE    A,  #00H,   RSLINK_MODEM_ANSWER_LP1_1
        MOV     MODEM_TEL_BUSY_WAIT,    #0DFH
        SETB    FIRE_ALARM_FLG  
RSLINK_MODEM_ANSWER_LP1_1:
        JMP     RSLINK_MODEM_ANSWER_RET1

RSLINK_MODEM_ANSWER_LP2:
        CPL     WATCH_DOG 
        CJNE    R3,     #05H,   RSLINK_MODEM_ANSWER_LP3          ;"ERROR"?
        NOP
        NOP
        JMP     RSLINK_MODEM_ANSWER_RET1

RSLINK_MODEM_ANSWER_LP3:
        CPL     WATCH_DOG 
        CJNE    R3,     #0AH,   RSLINK_MODEM_ANSWER_LP4          ;"NO CARRIER"?
        NOP
        NOP
        JMP     RSLINK_MODEM_ANSWER_RET1

RSLINK_MODEM_ANSWER_LP4:
        CPL     WATCH_DOG 
        CJNE    R3,     #0CH,   RSLINK_MODEM_ANSWER_LP5          ;"CONNECT 9600"?
        SETB    MODEM_CONNECT_FLG
        ;CLR     FIRE_ALARM_FLG

⌨️ 快捷键说明

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