📄 dog5.lst
字号:
0147 2106 AJMP MAIN_0
0149 00 MIAN_6: NOP
014A B54102 CJNE A,LAST_STATE_2,MAIN_7
014D 2106 AJMP MAIN_0
014F 00 MAIN_7: NOP
0150 F541 MOV LAST_STATE_2,A
0152 12098E LCALL PRO_ALARM2_IN
0155 2106 AJMP MAIN_0
0157 854342 MAIN_8: MOV WAT_TIME,WAT_TIME1
015A 2106 AJMP MAIN_0
;***************************
;***************************
;系统状态初始化
;***************************
015C C2AF INISYS: CLR EA
015E C2B2 CLR ALR_CLK ;继电器初始化
0160 758000 MOV P0,#00H
0163 D2B2 SETB ALR_CLK
0165 C2B7 CLR LED_CLK ;灭所有LED灯
0167 758000 MOV P0,#00H
016A D2B7 SETB LED_CLK
016C 759850 MOV SCON,#50H ;串口工作在方式1,允许接收,清收发中断
016F 758700 MOV PCON,#00H
0172 758920 MOV TMOD,#20H ;时钟T1工作在方式2,为波特率发生器
0175 758DFD MOV TH1,#0FDH ;选择波特率为9600,时钟f=11.0592M
0178 758BFD MOV TL1,#0FDH
017B D28E SETB TR1
017D D29C SETB REN
017F C298 CLR RI
0181 D2AC SETB ES ;开串口中断
0183 75D000 MOV PSW,#0H ;R0-R7工作在此期间0区
; MOV P1,#00H ;8751
; MOV P2,#00H
0186 7590FF MOV P1,#0FFH ;89C51
0189 75A0FF MOV P2,#0FFH
018C C258 CLR WAT_DOG_FLAG
018E C251 CLR SYS_START
0190 C252 CLR REC_FLAG
0192 C254 CLR START_REC
0194 752000 MOV LED_OUT,#00H
D:\工作备分\工作备分\报警背板\程序\报警背板程序\DOG5.ASM
页 7
10-12-05
20:47:28
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0197 752100 MOV ALARM_OUT,#00H
019A 752200 MOV ALARM_BUF1,#00H
019D 752300 MOV ALARM_BUF2,#00H
01A0 752500 MOV ALARM_IN_OK1,#00H
01A3 752400 MOV ALARM_IN_OK2,#00H
01A6 7540FF MOV LAST_STATE_1,#0FFH
01A9 7541FF MOV LAST_STATE_2,#0FFH
01AC 758A50 MOV TL0,#TL0_INIT ;定时器0初始化
01AF 758C00 MOV TH0,#TH0_INIT
01B2 C28D CLR TF0 ;清益出标志位
01B4 D28C SETB TR0 ;开启时钟0
01B6 D2A9 SETB ET0 ;开启时钟0中断
01B8 D2AF SETB EA ;开中断
01BA 7860 MOV R0,#SND_BUFF
01BC 7950 MOV R1,#REC_BUFF
01BE 22 RET
;***************************
;*******************************
;时钟中断进行计时并进行限时等操作
;*******************************
01BF C28C T0_INT: CLR TR0
01C1 758A50 MOV TL0,#TL0_INIT
01C4 758C00 MOV TH0,#TH0_INIT
01C7 D28C SETB TR0
01C9 C0E0 PUSH ACC
01CB C0D0 PUSH PSW
01CD 305516 JNB BGN_T0_COUNT,T0_INT_1 ;判断是否需计秒:否,则退出中断
01D0 0538 INC T0_NUM
01D2 E538 MOV A,T0_NUM
01D4 B4780F CJNE A,#T0_NUM_PERS,T0_INT_1 ;判断是否秒进位:否,则退出中断
01D7 753800 MOV T0_NUM, #00H
01DA 0537 INC USED_TIME
01DC E537 MOV A,USED_TIME
01DE B53905 CJNE A,SET_DELAY_TIME,T0_INT_1 ;判断是否超时:否,转移
01E1 753700 MOV USED_TIME,#00H
01E4 D256 SETB OVER_TIME
01E6 D0D0 T0_INT_1: POP PSW
01E8 D0E0 POP ACC
01EA 32 RETI
D:\工作备分\工作备分\报警背板\程序\报警背板程序\DOG5.ASM
页 8
10-12-05
20:47:28
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
;*******************************
;***************************
;串口中断服务程序
;***************************
01EB 209915 INT_SRL: JB TI,INT_2
01EE C298 CLR RI
01F0 C0E0 PUSH ACC
01F2 C0D0 PUSH PSW
01F4 E599 MOV A,SBUF
01F6 F7 MOV @R1,A
01F7 09 INC R1
01F8 E9 MOV A,R1
01F9 B45502 CJNE A,#REC_BUF_END,INT_1
; MOV R1,#REC_BUFF
01FC D252 SETB REC_FLAG
01FE D0D0 INT_1: POP PSW
0200 D0E0 POP ACC
0202 32 RETI
0203 C299 INT_2: CLR TI
0205 D257 SETB SBUF_EMPT_FLAG
0207 32 RETI
;***************************
;***************************
;处理来自PC机的指令
;***************************
0208 00 PRO_REC_DATA: NOP
0209 1206B5 LCALL DELAY5MS
020C C252 CLR REC_FLAG
; CLR EA
020E 7950 MOV R1,#REC_BUFF
0210 7860 MOV R0,#SND_BUFF
0212 7F06 MOV R7,#06
0214 DF04 PRO_REC_T1: DJNZ R7,PRO_REC_T2
0216 7950 MOV R1,#REC_BUFF
; SETB EA
0218 4120 AJMP PRO_REC_T3
021A E7 PRO_REC_T2: MOV A,@R1
021B F6 MOV @R0,A
021C 08 INC R0
021D 09 INC R1
021E 4114 AJMP PRO_REC_T1
0220 00 PRO_REC_T3: NOP
0221 1202FD LCALL CHECK_SUM ;判断校验是否正确
0224 F531 MOV TEMP,A
0226 7860 MOV R0,#SND_BUFF
D:\工作备分\工作备分\报警背板\程序\报警背板程序\DOG5.ASM
页 9
10-12-05
20:47:28
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0228 08 INC R0
0229 08 INC R0
022A 08 INC R0
022B 08 INC R0
022C E6 MOV A,@R0
022D B53102 CJNE A,TEMP,CHECK_ERROR
0230 413A AJMP PRO_REC_0
CHECK_ERROR:
0232 7453 MOV A,#SOH_OUT3
0234 0202A0 LJMP PRO_REC_END
0237 0202B1 PRO_BACK: LJMP PRO_REC_EXIT
023A 00 PRO_REC_0: NOP
023B 7860 MOV R0,#SND_BUFF ;判断是否是“AA”开头DATA_SOD
023D E6 MOV A,@R0
023E B4AAF6 CJNE A,#DATA_SOD,PRO_BACK
0241 7860 MOV R0,#SND_BUFF ;判断指令
0243 08 INC R0
0244 E6 MOV A,@R0
0245 B40105 CJNE A,#SOFT_PRC,PRO_REC_1 ;判断是否是软件保护指令
0248 120AD4 LCALL SOFT_PROTECT
024B 41A0 AJMP PRO_REC_END
024D B40205 PRO_REC_1: CJNE A,#INPUT_SET,PRO_REC_2 ;判断是否是报警输入配置指令
0250 1203AE LCALL ALARM_INPUT_SET
0253 41A0 AJMP PRO_REC_END
0255 B40305 PRO_REC_2: CJNE A,#OUTPUT_SET,PRO_REC_3 ;判断是否是报警输出指令
0258 120316 LCALL ALARM_OUTPUT_SET
025B 41A0 AJMP PRO_REC_END
025D B40405 PRO_REC_3: CJNE A,#LED_SET,PRO_REC_4 ;判断是否是LED设置指令
0260 12051E LCALL LED_OUTPUT_SET
0263 41A0 AJMP PRO_REC_END
0265 B40605 PRO_REC_4: CJNE A,#READ_DATA,PRO_REC_5 ;判断是否是读NVD数据指令
0268 1205CC LCALL READ_FROM_NVD
026B 41A0 AJMP PRO_REC_END
026D B40505 PRO_REC_5: CJNE A,#WRITE_DATA,PRO_REC_6 ;判断是否是写NVD数据指令
0270 1205F5 LCALL WRITE_TO_NVD
0273 41A0 AJMP PRO_REC_END
0275 B40705 PRO_REC_6: CJNE A,#READ_IN_STATE,PRO_REC_9 ;判断是否是读报警输入状态指令
0278 120709 LCALL SEND_ALARM_IN_STATE
027B 41A0 AJMP PRO_REC_END
027D B40805 PRO_REC_9: CJNE A,#READ_OUT_STATE,PRO_REC_10 ;判断是否是读报警输出状态指令
0280 1207A0 LCALL SEND_ALARM_OUT_STATE
0283 41A0 AJMP PRO_REC_END
0285 B40905 PRO_REC_10: CJNE A,#READ_LED_STATE,PRO_REC_11 ;判断是否是读LED状态指令
0288 1207F9 LCALL SEND_LED_STATE
028B 41A0 AJMP PRO_REC_END
028D B40B05 PRO_REC_11: CJNE A,#WAT_DOG,PRO_REC_12
D:\工作备分\工作备分\报警背板\程序\报警背板程序\DOG5.ASM
页 10
10-12-05
20:47:28
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0290 1204F9 LCALL WAT_DOG_SET
0293 41A0 AJMP PRO_REC_END
0295 B40A05 PRO_REC_12: CJNE A,#BEGIN_SYSTEM,PRO_REC_ERROR ;判断是否是START
0298 1202B4 LCALL START_SYSTEM
029B 41A0 AJMP PRO_REC_END
029D 00 PRO_REC_ERROR: NOP
029E 7454 MOV A,#SOH_OUT4
02A0 00 PRO_REC_END:NOP
02A1 7860 MOV R0,#SND_BUFF ;SOH
02A3 F6 MOV @R0,A
02A4 1202FD LCALL CHECK_SUM
02A7 7860 MOV R0,#SND_BUFF ;产生校验位
02A9 08 INC R0
02AA 08 INC R0
02AB 08 INC R0
02AC 08 INC R0
02AD F6 MOV @R0,A
02AE 1202DE LCALL SEND_DATA_TO_PC
02B1 00 PRO_REC_EXIT: NOP
02B2 00 NOP
02B3 22 RET
;***************************
;***************************
;处理系统开光指令包
;***************************
02B4 00 START_SYSTEM: NOP
02B5 7860 MOV R0,#SND_BUFF
02B7 08 INC R0
02B8 08 INC R0
02B9 08 INC R0
02BA E6 MOV A,@R0
02BB B4AA13 CJNE A,#YES,START_SYS_1
02BE D251 SETB SYS_START ;系统开始工作
02C0 E522 MOV A,ALARM_BUF1
02C2 F540 MOV LAST_STATE_1,A
02C4 E523 MOV A,ALARM_BUF2
02C6 F541 MOV LAST_STATE_2,A
02C8 752500 MOV ALARM_IN_OK1,#00H
02CB 752400 MOV ALARM_IN_OK2,#00H
D:\工作备分\工作备分\报警背板\程序\报警背板程序\DOG5.ASM
页 11
10-12-05
20:47:28
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
02CE 7451 MOV A,#SOH_OUT1
02D0 22 RET
02D1 00 START_SYS_1: NOP
02D2 B45505 CJNE A,#NO,START_SYS_ERROR
02D5 C251 CLR SYS_START ;系统停止工作
02D7 7451 MOV A,#SOH_OUT1
02D9 22 RET
02DA 00 START_SYS_ERROR: NOP
02DB 7454 MOV A,#SOH_OUT4 ;指令参数出错
02DD 22 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -