📄 gl.asm
字号:
;----------------------------
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 + -