📄 ysjkz.asm
字号:
#INCLUDE HT46R22.INC
;*****************************************
;PROGRAME:引水机控制器
;*****************************************
DATA .SECTION 'DATA'
TEM EQU PB0
GY EQU PA2
DY EQU PA3
Q2 EQU PB5
Q3 EQU PB4
Q4 EQU PB3
Q5 EQU PB6
BUZZ EQU PC0
SDA EQU PA0
SCL EQU PA1
COUNT0 DB ?
COUNT1 DB ?
COUNT2 DB ?
TEMPL DB ?
TEMPH DB ?
TEMPT DB ? ;温度值
GG DB ? ;工作状态
ZDCX EQU GG.0 ;自动冲洗
QZCX EQU GG.1 ;强制冲洗
ZS EQU GG.2 ;造水工作
ZSM EQU GG.3 ;造水满
TJI EQU GG.4 ;停机
QSJ EQU GG.5 ;缺水报警
CSJ EQU GG.6 ;长时间工作报警
GG1 DB ?
OPEN EQU GG1.0 ;开机标志
HOT EQU GG1.2 ;加热标志
COL EQU GG1.3 ;制冷标志
QHOT EQU GG1.4 ;加热传感器出错
QCOL EQU GG1.5 ;制冷传感器出错
SECOND DB ? ;秒
MINUTE DB ? ;分
HOUR DB ? ;小时
TCOUNT0 DB ?
TCOUNT1 DB ?
BYT DB ? ;泵延时间
ZST1 DB ? ;造水时间1
ZST2 DB ? ;造水时间2
CXT DB ? ;冲洗时间
ZST3 DB ? ;一次性造水时间累计
ZST4 DB ? ;一次性造水时间累计
LCD1 DB ?
LCD2 DB ?
LCD3 DB ?
LCD4 DB ?
LCD5 DB ?
ADDATA1 DB ?
ADDATA2 DB ?
DCOUNT0 DB ?
DCOUNT1 DB ?
aa DB ?
CODE .SECTION 'CODE'
ORG 00H
JMP STARTS
ORG 008H
JMP TIME
RETI
TIME:
SDZ TCOUNT0
JMP TIMEEND
MOV A,7dh ;7D????
MOV TCOUNT0,A
SDZ TCOUNT1
JMP TIMEEND
MOV A,2 ;2H????
MOV TCOUNT1,A
INC SECOND
SZ ZSM ;在水满等待状态
INC BYT
SZ ZDCX ;在自动冲洗状态
INC CXT ;冲洗时间加一
SZ QZCX ;在冲洗状态
INC CXT ;冲洗时间加一
MOV A,SECOND
XOR A,3CH
SNZ Z
JMP TIMEEND
CLR SECOND
INC MINUTE
SNZ ZS ;是否在造水时间
JMP MINUTE1
INC ZST3 ;一次性造水时间
MOV A,ZST3
SUB A,110 ;???110
SNZ C
JMP MINUTE0
CLR ZST3
INC ZST4
MOV A,ZST4
SUB A,6 ;???6
SNZ C
JMP MINUTE0
CLR ZST3 ;660分钟
CLR ZST4 ;开启长时间工作报警
CLR GG
SET CSJ
JMP TIMEEND
MINUTE0: ;累计造势
INC ZST1 ;在累计造水时间加一
MOV A,ZST1
SUB A,90 ;90????
SNZ C
JMP MINUTE1
CLR ZST1 ;450分钟
INC ZST2
MOV A,ZST2
SUB A,5 ;???5
SNZ C
JMP MINUTE1
CLR ZST2
CLR ZST1
CLR GG ;进入自动冲洗
SET ZDCX ;造水时间累计达7.5小时
JMP TIMEEND
MINUTE1:
MOV A,MINUTE
SUB A,3CH
SNZ C
JMP TIMEEND
CLR MINUTE
INC HOUR
MOV A,HOUR
SUB A,18H
SNZ C
JMP TIMEEND
CLR HOUR
TIMEEND:
RETI
STARTS:
CLR PBC
CLR Q5
CLR Q2
CLR Q3
CLR Q4
MOV A,3FH ;清除所有RAM
MOV MP0,A
CLEAR1:
INC MP0
CLR R0
MOV A,MP0
XOR A,0FFH
SNZ Z
JMP CLEAR1
MOV A,7DH
MOV TCOUNT0,A ;时间计数器初始化
MOV A,2H
MOV TCOUNT1,A
MOV A,08H ;开时间中断
MOV TMR,A
MOV A,05H
MOV INTC0,A
MOV A,96H
MOV TMRC,A
CLR PCC
CLR PDC
CLR PAC.0
CLR PAC.1
SET PAC.2
SET PAC.3
CLR PAC.4
CLR PAC.5
SET PAC.6
SET PAC.7
SET PBC
CLR PBC.6
CLR PBC.3
CLR PBC.4
CLR PBC.5
CLR PBC.7
mov a,0ch
mov lcd1,a
mov lcd2,a
mov lcd3,a
mov a,30
mov AA,a
nop
nop
CALL LEDSHOW
CALL LEDSHOW
sdz AA
jmp $-4
START00:
CLR Q3
CLR Q4
SET LCD4
MOV A,04H
MOV LCD5,A
CLR LCD4.0
CLR LCD4.3
SET PC.1
SET PD.0
SET PA.4
SET PA.5
SET PB.7
SET LCD1
SET LCD2
SET LCD3
CLR Q3
CLR Q4
CALL KEYIN ;读取按键状态
SNZ OPEN
JMP $-4
CLR SECOND
START0:
CALL LEDSHOW
MOV A,SECOND ;开机3秒延时
XOR A,03
SNZ Z
JMP START0
CLR GG ;开机自动冲洗
SET ZDCX ;开机自动冲洗
START1:
SNZ OPEN ;开关机判断
JMP START00
CALL LEDSHOW
CALL READTMP ;加热控制
CALL LEDSHOW
CALL COOL ;制冷控制
CALL LEDSHOW
CALL KEYIN ;读取按键状态
CALL LEDSHOW
CALL XUH
CALL LEDSHOW
START2:
CALL SMT ;满水检测
CALL LEDSHOW
CALL QST ;缺水检测
JMP WORK
STARTE:
JMP START1
WORK:
NOP
NOP
WORK1:
SZ QHOT
JMP QHOT1 ;加热报警
SZ QCOL ;制冷报警
JMP QCOL1
WORK10:
SZ TJI ;停机
JMP TJI1
SZ ZDCX ;自动冲洗
JMP ZDCX1
SZ QZCX ;强制冲洗
JMP QZCX1
SZ ZS
JMP ZSZT1 ;造水状态
SZ QSJ
JMP QSZT1 ;缺水报警
SZ CSJ ;长时间造水警
JMP CSJT1
JMP WE
TJI1: ;停机
CLR ZST3 ;水满清一次累计时间
CLR ZST4
MOV A,00H
MOV LCD1,A
CLR Q2
CLR Q3
JMP WE
ZDCX1: ;自动冲洗
MOV A,0C6H
MOV LCD1,A
CALL CXTP
JMP WE
QZCX1: ;强制冲洗
MOV A,89H
MOV LCD1,A
CALL CXTP
JMP WE
ZSZT1: ;造水状态
SET Q3
MOV A,30H
MOV A,LCD4
MOV LCD1,A
JMP WE
QSZT1: ;缺水警
CALL LEDSHOW
CALL BEEP
;CALL LEDSHOW
;CALL BEEP
MOV A,0CH
MOV LCD1,A
JMP WE
CSJT1: ;长时间工作警
MOV A,86H
MOV LCD1,A
CLR Q2
CLR Q3
CALL BEEP
JMP WE
QHOT1:
CALL LEDSHOW
CALL BEEP
CALL LEDSHOW
;CALL BEEP
MOV A,88H
MOV LCD2,A
MOV LCD3,A
JMP WORK10
QCOL1: ;
CALL LEDSHOW
CALL BEEP
CALL LEDSHOW
;CALL BEEP
MOV A,0C7H
MOV LCD2,A
MOV LCD3,A
JMP WORK10
WE:
NOP
JMP START1
;*****************************************************
;按键查询
KEYIN PROC
MOV A,04H
MOV AA,A
MOV A,00000011B ;设置系统8分频为采样时钟
MOV ACSR,A
MOV A,00011010B ;通道2采样
MOV ADCR,A
KEYAD1:
CLR ADCR.7 ;
SET ADCR.7 ;AD转换复位
CLR ADCR.7 ;开始AD转换
KEYAD2:
CALL LEDSHOW
SZ ADCR.6
JMP KEYAD2
MOV A,ADRH
MOV ADDATA1,A
MOV A,ADRL
MOV ADDATA2,A
SDZ AA
JMP KEYAD1
MOV A,85H ;?1?:
MOV TEMPL,A
MOV A,40H
MOV TEMPH,A
MOV A,ADDATA2
SUB A,TEMPL
MOV A,ADDATA1
SBC A,TEMPH
SNZ C
JMP KEY1
MOV A,85H ;?1?:
MOV TEMPL,A
MOV A,9AH
MOV TEMPH,A
MOV A,ADDATA2
SUB A,TEMPL
MOV A,ADDATA1
SBC A,TEMPH
SNZ C
JMP KEY2
JMP KEYEND3
KEY2:
CALL BEEP ;开机标志
SNZ OPEN
JMP KEY21
CLR OPEN
JMP KEYEND1
KEY21:
SET OPEN
JMP KEYEND1
KEY1:
CALL BEEP ;工作状态标志
SNZ ZS ;是否在造水状态
JMP KEY10
NOP ;是
CLR GG
SET QZCX ;启动强制冲洗
CLR TJI
JMP KEYEND1
KEY10:
SNZ ZDCX ;是否在自动冲洗状态
JMP KEYEND1
NOP ;是
CLR GG
SET QZCX ;启动强制冲洗
CLR TJI
JMP KEYEND1
KEY3:
CALL LEDSHOW
;加热标志
SNZ PA.6
JMP KEY3
SNZ HOT
JMP KEY31
CLR HOT
CALL BEEP
JMP KEYEND
KEY31:
CALL BEEP
SET HOT
JMP KEYEND
KEY4: ;制冷标志
CALL LEDSHOW
SNZ PA.7
JMP KEY4
SNZ COL
JMP KEY41
CLR COL
CALL BEEP
JMP KEYEND
KEY41:
CALL BEEP
SET COL
JMP KEYEND
KEYEND1:
CALL LEDSHOW
MOV A,00000011B ;设置系统8分频为采样时钟
MOV ACSR,A
MOV A,00011010B ;通道2采样
MOV ADCR,A
CLR ADCR.7 ;
SET ADCR.7 ;AD转换复位
CLR ADCR.7 ;开始AD转换
KEYEND2:
CALL LEDSHOW
SZ ADCR.6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -