📄 dog5.asm
字号:
MOV LAST_STATE_2,A
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -