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

📄 ysjkz.asm

📁 这是一个饮水机的控制软件 包括上水出水温度检测 加热等功能控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
#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 + -