📄 dog5.asm
字号:
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 + -