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

📄 gl.asm

📁 一个MSC51汇编写的锅炉控制器源码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        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 + -