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

📄 gl.asm

📁 一个MSC51汇编写的锅炉控制器源码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;----------------------------
LIGHT0  EQU    20H
LIGHT1  EQU    21H
LEDNO   EQU    30H
LED0    EQU    31H
LED1    EQU    32H
LED2    EQU    33H
LED3    EQU    34H
BUF0    EQU    35H
BUF1    EQU    36H
BUF2    EQU    37H
BUF3    EQU    38H
KEY     EQU    39H
WD0     EQU    3AH
WD1     EQU    3BH
WD2     EQU    3CH
WD3     EQU    3DH
WD4     EQU    3EH
WDTEMP1 EQU    3FH        ;最后所得温度值(-10.0—+150.0),带符号
WDTEMP0 EQU    40H        ;最后所得温度值(-10.0—+150.0),带符号
TTIMER3 EQU    41H        ;
TTIMER2 EQU    42H        ;当前时间
TTIMER1 EQU    43H
TTIMER0 EQU    44H
SETBNO  EQU    45H        ;指示在按哪一个设置键
JCS     EQU    46H
JCS0    EQU    47H
KEYE    EQU    49H
TM0     EQU    4AH
TM1     EQU    4BH
BFKEY   EQU    4CH
JCS1    EQU    4DH
ZTIME   EQU    4EH
ERRONO  EQU    4FH
JCS2    EQU    50H
JCS3    EQU    51H
;----------------------------
;位定义
TTEMP   BIT    04H        ;停炉温度指示灯,=0亮
STEMP   BIT    05H        ;使用温度指示灯,=0亮
CTEMP   BIT    06H        ;出水温度指示灯,=0亮
XTIME   BIT    07H        ;现在时间指示灯,=0亮
QTIME   BIT    01H        ;启动时间指示灯,=0亮
TTIME   BIT    02H        ;停止时间指示灯,=0亮
TQJS    BIT    00H        ;在特殊情况下加水或出水
SETFG   BIT    03H        ;在运行时按下设置键标识,0表示按下
;
ZHQL    BIT    08H        ;蒸汽标志
RSHL    BIT    09H        ;热水标志
RUNL    BIT    0AH        ;运行标志
SETL    BIT    0BH        ;设定标志
CHSH    BIT    0CH        ;出水
JSH     BIT    0DH        ;进水
DH      BIT    0EH        ;大火
XH      BIT    0FH        ;小火
WDSTA   BIT    10H        ;指示是否第一次读数
ZANC    BIT    11H        ;
TXS     BIT    12H        ;数码显示是否论循显示标志
ADSU    BIT    13H        ;有5,6键操作标志
KFLG    BIT    14H        ;按键变化标志
ERUN    BIT    15H        ;运行时间内标志
ERRO    BIT    16H        ;产生故障标志
TTB     BIT    17H        ;停炉温度标志
STB     BIT    18H        ;使用温度标志
CTB     BIT    19H        ;出水温度标志
ERRS    BIT    20H        ;是否确认错误标志=1,已确认
;----------------------------
;P0.0------b                   ;数码管显示管脚对应字段
;P0.1------a
;P0.2------f
;P0.3------g
;P0.4------e
;P0.5------d
;P0.6------c
;P0.7------dp
;控制外部继电器动作管脚定义,各继电器均在管脚输出0时动作
CSB     BIT    P3.1       ;出水泵继电器
JSB     BIT    P3.2       ;进水泵继电器
DHRSQ   BIT    P3.3       ;燃烧继电器1
XHRSQ   BIT    P3.4       ;燃烧继电器0
RSQER   BIT    P3.5       ;燃烧器故障
;外部传入内部的信号
TGZ     BIT    P3.0       ;高针
TGS     BIT    P1.3       ;高水位电极
TQS     BIT    P1.4       ;缺水电极
TDS     BIT    P1.5       ;低水位电极
TCY     BIT    P1.6       ;超压保护
TDZ     BIT    P1.7       ;低针
;
CLK     BIT    P1.0
DO      BIT    P1.1           ;TLC549CP管脚定义
CS      BIT    P1.2
;
WP      BIT    P2.0
SCL     BIT    P2.1
SDA     BIT    P2.2           ;AT24C02  管脚定义
KEY6    BIT    P2.3
BELL    BIT    P2.4           ;蜂鸣器控制=1响;=0不响
YM2     BIT    P2.5
YM1     BIT    P2.6
YM0     BIT    P2.7
;----------------------------
; AT89S52 Extensions
;
WDTRST  EQU    0A6H           ;看门狗控制寄存器
AUXR1   EQU    0A2H
AUXR    EQU    08EH
;----------------------------
        ORG    0000H
        LJMP   MAIN
;
        ORG    000BH
        MOV    TL0,#01CH
        MOV    TH0,#0FCH          ;4 MS   for  12M
        LJMP   TINT0
;
        ORG    0030H
MAIN:   MOV    SP, #52H
        MOV    8EH,#08H
        CLR    BELL
        LCALL  DLY100             ;上电时笛声响100MS
        SETB   BELL
;
        MOV    R0,#07FH           ;内部128个RAM地址内容清零,特殊功能寄存器不处理
LP:     MOV    @R0,#0
        DJNZ   R0,LP
;
        MOV    B,#96H             ;读出上次存入的现在时间
        LCALL  RDBA
        CJNE   A,#0FFH,FFSJT
        CLR    A
        LCALL  WRBA
FFSJT:  MOV    TTIMER3,A
        MOV    B,#97H
        LCALL  RDBA
        CJNE   A,#0FFH,FFSJT0
        CLR    A
        LCALL  WRBA
FFSJT0: MOV    TTIMER2,A
;
        MOV    TMOD,#001H          ;定时器0设置并开启
        SETB   ET0
        SETB   EA
        SETB   TR0
;
        NOP
        NOP
        NOP
QD:     NOP
        NOP
        NOP
        JNB    P3.6,$
        LCALL  WWDT
        MOV    LIGHT0,#0FFH
        MOV    LIGHT1,#0FFH
        MOV    LED0,#09CH
        MOV    LED1,#0DDH
        MOV    LED2,#0DDH
        MOV    LED3,#0C9H        ;各指示灯及数码管显示圆环
        LCALL  KEYDOWN
        MOV    A,KEYE
        XRL    A,#2
        JNZ    QD                ;判断是否按下启动键
QD0:    LCALL  WWDT
        LCALL  KEYUP
        MOV    A,KEYE
        JNZ    QD0                ;判断是否按键已放开
        CLR   BELL
        LCALL  DLY100
        LCALL  DLY100
        SETB   BELL
;
        MOV    B,#10H             ;读出上次存入的蒸汽和热水标志
        LCALL  RDBA
        ORL    A,#0FCH
        MOV    LIGHT1,A
;
        CLR    WDSTA
        CLR    ERRO
        CLR    ADSU
        MOV    ERRONO,#0         ;错误号清零
        MOV    SETBNO,#0         ;参数初始化
;
        NOP
        NOP
        NOP
LOOP:   NOP
        NOP
        NOP
        LCALL  WWDT
        LCALL  JSWD
        LCALL  CONTROL
;
        JB     SETFG,NTYS
        MOV    A,JCS2
        XRL    A,TTIMER1
        JNZ    NTXS
        MOV    SETBNO,#0
        SETB   SETFG
        MOV    A,LIGHT0
        ORL    A,#0F6H
        MOV    LIGHT0,A
        SJMP   NTXS
;
NTYS:   JNB    SETL,NTLG
        JB     ERRO,NTXS
        MOV    A,JCS
        XRL    A,TTIMER1
        JZ     NTXS
        MOV    JCS,TTIMER1
;
        JB     RSHL,YLQK
        LCALL  DISPXW
        SJMP   NTXS
YLQK:   LCALL  DISPY
        SJMP   NTXS
NTLG:   JB     XTIME,NTXS
        JB     ADSU,NTXS
        MOV    R3,TTIMER3
        MOV    R2,TTIMER2
        MOV    TM1,R3
        MOV    TM0,R2
        LCALL  DISPTM        ;显示现在时间
;
NTXS:   LCALL  KEYUP
        MOV    A,KEYE
        XRL    A,#0
        JNZ    DJ0
        MOV    BFKEY,#0
        MOV    JCS0,#0
        CLR    KFLG
        LJMP   LOOP
DJ0:    LCALL  KEYDOWN
        MOV    A,KEYE
        XRL    A,#0FFH
        JNZ    KXT
        LJMP   NTXS
;
KXT:    MOV    A,KEYE
        XRL    A,BFKEY
        JZ     NTJ0
        MOV    BFKEY,KEYE
        SETB   KFLG
;
NTJ0:   MOV    A,KEYE
;
        CJNE   A,#01,NTJ1
        JNB    KFLG,QUIT
        CLR    KFLG
        CLR    ERRS
        CLR    BELL            ;"停止"键
        LCALL  DLY100
        SETB   BELL
        CLR    ERRO
        MOV    SETBNO,#0
        CLR    ADSU
        JNB    SETL,QUIT
        JNB    RUNL,QUIT
        LJMP   QD
QUIT:   SETB   SETL
        SETB   RUNL
        SETB   XH          ;小火
        SETB   DH          ;大火
        SETB   JSH         ;进水
        SETB   CHSH        ;出水
        MOV    A,LIGHT0
        ORL    A,#0F6H
        MOV    LIGHT0,A
        LJMP   LOOP
;
NTJ1:   CJNE   A,#02,NTQD
        JNB    RUNL,NEXTLP     ;"启动"键
        JNB    SETL,NEXTLP
;
        MOV    A,TTIMER3       ;运行时把记录当时时间
        MOV    B,#9CH
        LCALL  WRBA
        MOV    A,TTIMER2
        MOV    B,#9DH
        LCALL  WRBA
;
        CLR    RUNL
        SETB   XH
        SETB   DH
        SETB   JSH
        SETB   CHSH
        CLR    BELL
        LCALL  DLY100
        SETB   BELL
NEXTLP: LJMP   LOOP
;
NTQD:   CJNE   A,#03,NTJ2
        JNB    SETL,NZQSB
        JNB    RUNL,NZQSB
        JNB    KFLG,NZQSB         ;蒸汽热水转换
        CLR    KFLG
        MOV    C,RSHL
        MOV    ZHQL,C
        CPL    C
        MOV    RSHL,C
;
        ORL    LIGHT0,#0FCH
        MOV    B,#10H             ;存入的蒸汽和热水标志
        MOV    A,LIGHT1
        LCALL  WRBA
;
        CLR    BELL
        LCALL  DLY100
        SETB   BELL
NZQSB:  LJMP   LOOP
;
NTJ2:   CJNE   A,#04,NTJ3
        JNB    KFLG,NZQSB0     ;"设置"键
        CLR    KFLG
        JNB    RUNL,BXGCS
        CLR    SETL
        SETB   RUNL
        SETB   XH
        SETB   DH
        SETB   JSH
        SETB   CHSH
        SJMP   NOMSET
BXGCS:  MOV    A,TTIMER1
        ADD    A,#5
        CJNE   A,#120,DKH
DKH:    JC     LS
        SUBB   A,#120
LS:     MOV    JCS2,A
        CLR    SETFG
;
NOMSET: LCALL  SETCON
        CLR    BELL
        LCALL  DLY100
        SETB   BELL
NZQSB0: LJMP   LOOP
NTJ3:   CJNE   A,#05,NTJ4      ;"+"
        LCALL  JCHSH
        LCALL  YXSH
        JB     SETL,NTJ5
        MOV    A,SETBNO
        SUBB   A,#4
        JNC    TADD
        LCALL  K5W
        LJMP   LOOP
TADD:   LCALL  K5T
        LJMP   LOOP
;
NTJ4:   CJNE   A,#06,NTJ5      ;"-"
        LCALL  JCHSH
        LCALL  YXSH
        JB     SETL,NTJ5
        MOV    A,SETBNO
        SUBB   A,#4
        JNC    TADD1
        LCALL  K6W
        LJMP   LOOP
TADD1:  LCALL  K6T
        LJMP   LOOP
NTJ5:
;
        LJMP   LOOP
;++++++++++++++++++++++++++++
;
TINT0:  PUSH   ACC
        PUSH   PSW
;
        MOV    A,TTIMER0
        CJNE   A,#249,JS0
        MOV    TTIMER0,#0
JS1:    MOV    A,TTIMER1
        CJNE   A,#119,JS2
        MOV    TTIMER1,#0
        MOV    A,TTIMER2
        CJNE   A,#59H,JS3
        MOV    TTIMER2,#0
        MOV    A,TTIMER3
        CJNE   A,#23H,JS4
        MOV    TTIMER3,#0
        SJMP   JANJ
JS4:    MOV    A,TTIMER3
        ADD    A,#1
        DA     A
        MOV    TTIMER3,A
        SJMP   JANJ
JS3:    MOV    A,TTIMER2
        ADD    A,#1
        DA     A
        MOV    TTIMER2,A
        SJMP   JANJ
JS2:    INC    TTIMER1
        SJMP   JANJ
JS0:    INC    TTIMER0
;
JANJ:   MOV    P0,#0FFH
        SETB   KEY6
        CLR    YM0
        CLR    YM1
        CLR    YM2
        NOP
        NOP
        JB     KEY6,X2
        MOV    KEY,#1
        SJMP   XS0
X2:     SETB   YM0
        CLR    YM1
        CLR    YM2
        NOP
        NOP
        JB     KEY6,X3
        MOV    KEY,#2
        SJMP   XS0
X3:     CLR    YM0
        SETB   YM1
        CLR    YM2
        NOP
        NOP
        JB     KEY6,X4
        MOV    KEY,#3
        SJMP   XS0
X4:     SETB   YM0
        SETB   YM1
        CLR    YM2
        NOP
        NOP
        JB     KEY6,X5
        MOV    KEY,#4
        SJMP   XS0
X5:     CLR    YM0
        CLR    YM1
        SETB   YM2
        NOP
        NOP
        JB     KEY6,X6
        MOV    KEY,#5
        SJMP   XS0
X6:     SETB   YM0
        CLR    YM1
        SETB   YM2
        NOP
        NOP
        JB     KEY6,XS0
        MOV    KEY,#6
;
XS0:    JB     TXS,RTT00
        SETB   YM0
        SETB   YM1
        SETB   YM2
        MOV    A,LEDNO
        CJNE   A,#0,NTLED1
        MOV    P0,LED0
        CLR    YM0
        CLR    YM1
        CLR    YM2
        SJMP   RTT0
NTLED1: CJNE   A,#1,NTLED2
        MOV    P0,LED1
        SETB   YM0
        CLR    YM1
        CLR    YM2
        SJMP   RTT0
NTLED2: CJNE   A,#2,NTLED3
        MOV    P0,LED2
        CLR    YM0
        SETB   YM1
        CLR    YM2
        SJMP   RTT0
NTLED3: CJNE   A,#3,NTLED4
        MOV    P0,LED3
        SETB   YM0
        SETB   YM1
        CLR    YM2
        SJMP   RTT0
NTLED4: CJNE   A,#4,NTLED5
        MOV    P0,LIGHT0
        CLR    YM0
        CLR    YM1
        SETB   YM2
        SJMP   RTT0
NTLED5: CJNE   A,#5,NTLED6
        MOV    P0,LIGHT1
        SETB   YM0
        CLR    YM1
        SETB   YM2
NTLED6: MOV    LEDNO,#0FFH
;
RTT0:   INC    LEDNO
RTT00:  POP    PSW
        POP    ACC
        RETI
;
;++++++++++++++++++++++++++++
;
DATA0:  DB     088H,0BEH,0C4H,094H,0B2H,091H,081H,0BCH
;              0,   1,   2,   3,   4,   5,   6,   7     数码管显示编码

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -