📄 gl.asm
字号:
DB 080H,090H,0A0H,083H,0C9H,086H,0C1H,0E1H
; 8, 9, A, b, C, d, E, F
DB 0A2H,0CBH,0E0H,0F7H,0C2H,092H,0FFH,0FFH
; H, L, P, -, K, Y, 空
; 10, 11, 12, 13, 14, 15, 16
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
;----------------------------
;
RTJWD: RET
JWD: MOV A,JCS
XRL A,TTIMER1
JZ RTJWD
MOV JCS,TTIMER1
;
MOV R2,WDTEMP0
MOV R3,WDTEMP1
;
MOV A,WDTEMP1
JNB ACC.7,NMTEMP1
SETB TTB
SETB STB
SETB CTB
SJMP RTJWD
NMTEMP1:MOV B,#91H
LCALL RDBA
XCH A,B
MOV A,R2
CLR C
SUBB A,B
MOV B,#90H
LCALL RDBA
XCH A,B
MOV A,R3
SUBB A,B
JC NTKD01
CLR TTB
SJMP NTKD00
NTKD01: SETB TTB
NTKD00: MOV R2,WDTEMP0
MOV R3,WDTEMP1
JB STB,REFV0
MOV A,R2
ADD A,#1
DA A
MOV R2,A
MOV A,R3
ADDC A,#0
DA A
MOV R3,A
REFV0: MOV B,#93H
LCALL RDBA
XCH A,B
MOV A,R2
CLR C
SUBB A,B
MOV B,#92H
LCALL RDBA
XCH A,B
MOV A,R3
SUBB A,B
JC NTKD11
CLR STB
SJMP NTKD101
NTKD11: SETB STB
NTKD101:MOV R2,WDTEMP0
MOV R3,WDTEMP1
JB CTB,REFV1
MOV A,R2
ADD A,#1
DA A
MOV R2,A
MOV A,R3
ADDC A,#0
DA A
MOV R3,A
REFV1: MOV B,#95H
LCALL RDBA
XCH A,B
MOV A,R2
CLR C
SUBB A,B
MOV B,#94H
LCALL RDBA
XCH A,B
MOV A,R3
SUBB A,B
JC NTKD21
CLR CTB
LJMP RTJWD
NTKD21: SETB CTB
LJMP RTJWD
;----------------------------
;检测故障,并给出故障代码
CHECK: NOP
;1燃烧器故障
MOV C,XHRSQ
ANL C,DHRSQ
JC NTGZ1
JB RSQER,NTGZ1
LCALL DLY10MS
JB RSQER,NTGZ1
LCALL DLY10MS
JB RSQER,NTGZ1
SETB ERRO
MOV ERRONO,#1 ;燃烧器故障
LJMP RTCH
;
NTGZ1: JNB TQS,NTGZ2
LCALL DLY10MS
JNB TQS,NTGZ2
LCALL DLY10MS
JNB TQS,NTGZ2
SETB ERRO
MOV ERRONO,#2 ;缺水故障
LJMP RTCH
;
NTGZ2: JNB TDS,NTGZ3
JB TGS,NTGZ3
LCALL DLY10MS
JNB TDS,NTGZ3
JB TGS,NTGZ3
LCALL DLY10MS
JNB TDS,NTGZ3
JB TGS,NTGZ3
SETB ERRO
MOV ERRONO,#3 ;水位传感器故障
LJMP RTCH
;
NTGZ3: JB RSHL,NTCH0
NOP ;热水状态
;
MOV A,WDTEMP1
JB ACC.7,NTGZ4
MOV A,#00H
CLR C
SUBB A,WDTEMP0
MOV A,#02H
SUBB A,WDTEMP1
JNC NTGZ5
SETB ERRO
MOV ERRONO,#4 ;温度传感器断路
SJMP RTCH
NTGZ4: MOV A,#13H
CLR C
SUBB A,WDTEMP0
MOV A,#80H
SUBB A,WDTEMP1
JNC RTCH
SETB ERRO
MOV ERRONO,#5 ;温度传感器短路
SJMP RTCH
NTGZ5: MOV A,#05H
CLR C
SUBB A,WDTEMP0
MOV A,#01H
SUBB A,WDTEMP1
JNC NTGZ6
SETB ERRO
MOV ERRONO,#6 ;温度超过105℃
SJMP RTCH
NTGZ6: MOV B,#91H
LCALL RDBA
ADD A,#15H
DA A
MOV F0,C
CLR C
SUBB A,WDTEMP0
MOV B,#90H
LCALL RDBA
JNB F0,JNJ
PUSH PSW
ADD A,#1
POP PSW
JNJ: SUBB A,WDTEMP1
JNC NTCH0
SETB ERRO
MOV ERRONO,#7 ;温度超过停炉温度15℃
SJMP RTCH
NTCH0: JB ZHQL,RTCH
NOP ;蒸汽状态
JNB TCY,RTCH
LCALL DLY10MS
JNB TCY,RTCH
LCALL DLY10MS
JNB TCY,RTCH
SETB ERRO
MOV ERRONO,#8 ;压力超过范围
SJMP RTCH
RTCH:
RET
;----------------------------
;显示错误指示
DISPERR:JNB SETFG,RTCH
MOV A,ERRONO
CJNE A,#1,NTERR0
MOV LED3,#0C1H ;E-02
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#0C4H
SJMP RTDSPER
NTERR0: CJNE A,#2,NTERR1
MOV LED3,#0C1H ;E-03
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#094H
SJMP RTDSPER
NTERR1: CJNE A,#3,NTERR2
MOV LED3,#0C1H ;E-01
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#0BEH
SJMP RTDSPER
NTERR2: CJNE A,#4,NTERR3
MOV LED3,#0C1H ;E-05
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#092H
SJMP RTDSPER
NTERR3: CJNE A,#5,NTERR4
MOV LED3,#0C1H ;E-05
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#091H
SJMP RTDSPER
NTERR4: CJNE A,#6,NTERR5
MOV LED3,#0C1H ;E-04
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#0B2H
SJMP RTDSPER
NTERR5: CJNE A,#7,NTERR6
MOV LED3,#0C1H ;E-04
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#0B2H
SJMP RTDSPER
NTERR6: CJNE A,#8,NTERR7
MOV LED3,#0C1H ;E-04
MOV LED2,#0F7H
MOV LED1,#088H
MOV LED0,#0B2H
NTERR7:
RTDSPER:RET
;----------------------------
;现在时间和启动时间,当设置启动时间大于停止时间时不运行
STEN: MOV A,TTIMER1
XRL A,ZTIME
JZ RTSTEN
MOV ZTIME,TTIMER1 ;每变化一秒检查一次
MOV B,#98H
LCALL RDBA
MOV R2,A
MOV B,#99H
LCALL RDBA
MOV R3,A ;读出启动时间(R2,R3)
MOV B,#9AH
LCALL RDBA
MOV R4,A
MOV B,#9BH
LCALL RDBA
MOV R5,A ;读出停止时间(R4.R5)
;
MOV A,R2
XRL A,R4
JNZ NTSTEN0
MOV A,R3
XRL A,R5
JNZ NTSTEN0 ;判断启动时间和停止时间是否相等
SETB ERUN ;置允许运行标志
SJMP RTSTEN
NTSTEN0:MOV A,TTIMER2
CLR C
SUBB A,R3
MOV A,TTIMER3
SUBB A,R2
JC NTSTEN1 ;判断现在时间是否大于启动时间
MOV A,TTIMER2
CLR C
SUBB A,R5
MOV A,TTIMER3
SUBB A,R4
JNC NTSTEN1 ;判断现在时间是否小于停止时间
SETB ERUN
JNB SETFG,RTSTEN
CPL QTIME
SETB TTIME
SJMP RTSTEN
NTSTEN1:SETB XH ;小火
SETB DH ;大火
SETB JSH ;进水
SETB CHSH ;出水
CLR ERUN ;清除允许运行标志
JNB SETFG,RTSTEN
SETB QTIME
CPL TTIME
RTSTEN: RET
;----------------------------
;
CONTROL:PUSH PSW
PUSH ACC
MOV C,XH
MOV XHRSQ,C
MOV C,DH
MOV DHRSQ,C ;大火小火合用继电器
MOV C,JSH
MOV JSB,C
MOV C,CHSH
MOV CSB,C
JB TGS,NOMBE0 ;高水位电极,在手动,自动加水出水时起作用
SETB JSH ;只要检测到高水位就无条件关闭进水泵
;
NOMBE0: JB TQS,KM ;只要检测到缺水或低水位就无条件关闭出水泵自动加水出水时起作用
JB TDS,KM
SJMP NOMBE
KM: SETB CHSH
;
NOMBE: JB RUNL,UUUT ;未运行返回
LCALL CHECK
JNB ERRO,YTHD
SETB XH
SETB DH
SETB JSH
SETB CHSH ;在检测有故障时,马上关闭四个继电器
LCALL DISPERR
JB ERRS,NOMERR
CLR BELL
SETB ERRS
SJMP YTHD
NOMERR: MOV A,JCS3
XRL A,TTIMER1
JNZ UUUT
CPL BELL
SJMP YTHD
UUUT: LJMP RTCON
YTHD: MOV A,TTIMER1
ADD A,#4
CJNE A,#120,DKHLK
DKHLK: JC LSNN
SUBB A,#120
LSNN: MOV JCS3,A
JB ERRO,UUUT
LCALL STEN ;判断是否在启动时间内
JNB ERUN,UUUT ;在没有故障时,并且在运行时间内则向下执行
;
JNB TDS,NCON0 ;低水位电极
CLR JSH ;进水
;
NCON0: JB RSHL,NTCON2
JNB ZHQL,NTCON2
JB SETFG,RSHLJ
LCALL JWD
RSHLJ: MOV C,CTB ;热水状态下
;
JB TQS,KL ;只要检测到缺水或低水位就无条件关闭出水泵
JB TDS,KL
MOV CHSH,C
SJMP KLL
KL: SETB CHSH
;
KLL: JB TTB,NTCON0
JB STB,NTCON0
SETB XH
SETB DH ;到达停炉温度停止加热
LJMP RTCON
NTCON0: JNB TTB,NTCON1
JNB STB,NTCON1
SETB XH ;未到达停炉温度和使用温度打开大火燃烧器
CLR DH
LJMP RTCON
NTCON1: JNB TTB,NTCON2
JB STB,NTCON2
JNB XH,NTCON2
MOV C,DH
MOV XH,C
SETB DH
LJMP RTCON
NTCON2: JNB RSHL,RTCON
JB ZHQL,RTCON
SETB DH
JNB SETFG,NTCON3
MOV A,LED0 ;在蒸汽状态下
CJNE A,#0FDH,NTYL0
SETB XH ;高压
SJMP RTCON
NTYL0: CJNE A,#0DFH,RTCON
CLR XH ;低压
SJMP RTCON
;
NTCON3: MOV A,JCS
XRL A,TTIMER1
JZ RTCON
MOV JCS,TTIMER1
JB TGZ,NTCON4 ;在蒸汽状态下时,有设置按键查询时,在此处检测高低压
LCALL DLY10MS
JB TGZ,NTCON4
LCALL DLY10MS
JB TGZ,NTCON4
SETB XH ;高压
SJMP RTCON
NTCON4: JB TDZ,RTCON
LCALL DLY10MS
JB TDZ,RTCON
LCALL DLY10MS
JB TDZ,RTCON
CLR XH ;低压
;
RTCON: POP ACC
POP PSW
RET
;----------------------------
;在待机状态下,操作进水泵和出水泵
JCHSH: PUSH ACC
JNB SETL,LPPL
JNB RUNL,LPPL
JNB TQJS,NTJCH0
MOV A,TTIMER1 ;在待机状态下执行
ADD A,#5
CJNE A,#120,DKH0
DKH0: JC LS0
SUBB A,#120
LS0: MOV JCS1,A
CLR TQJS
CLR KFLG
NTJCH0: JB KFLG,NTJCHG0
MOV A,JCS1
XRL A,TTIMER1
JNZ LPPL
POP ACC
PUSH ACC
CJNE A,#5,NNR0
CLR JSH
SETB CHSH
NNR0: CJNE A,#6,LPPL
SETB JSH
CLR CHSH
SJMP LPPL
NTJCHG0:SETB TQJS
SETB JSH
SETB CHSH
LPPL: POP ACC
RET
;----------------------------
;
DISPY: PUSH ACC
PUSH PSW
;
SETB TXS
JB TGZ,NTDY
MOV LED3,#0E0H ;高压
MOV LED2,#0D7H
MOV LED1,#0FDH
MOV LED0,#0FDH
LJMP RTDSPY
NTDY: JB TDZ,NTZY
MOV LED3,#0E0H ;低压
MOV LED2,#0D7H
MOV LED1,#0DFH
MOV LED0,#0DFH
LJMP RTDSPY
NTZY: MOV LED3,#0E0H ;中压
MOV LED2,#0D7H
MOV LED1,#0F7H
MOV LED0,#0F7H
RTDSPY: CLR TXS
POP PSW
POP ACC
RET
;----------------------------
;
K5W: SETB ADSU
MOV A,JCS0
JZ K5W0
MOV A,JCS0
CJNE A,#10,RTK5W
DEC JCS0
K5W0: MOV A,TM0
ADD A,#1
DA A
MOV TM0,A
MOV A,TM1
JNB ACC.0,XYYB1
MOV TM0,#0
XYYB1: JNC XYYB0
MOV TM1,#1
MOV TM0,#0
SJMP JXJ3
XYYB0: MOV TM1,#0
JXJ3: MOV R3,TM1
MOV R2,TM0
LCALL DISPWD
RTK5W: LCALL DLY100
INC JCS0
RET
;----------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -