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

📄 dingshikaishui.dt

📁 采用义隆EM78P468单片机做的定时灌溉花园的程序.通过了测试,并已经用在实际的产品中.
💻 DT
📖 第 1 页 / 共 5 页
字号:
		INCA	LCDAR
		MOV	LCDAR, A
		XOR	A, @20
		JBS	SR, Z
		JMP	_Bnk32Lcd
		clr	R4		/*>*/
_PoEnd:		RET
/*------------------*/
_PoEdFQ:	MOV	A, COUNTH
		OR	A, COUNTL
		JBS	SR, Z
		JMP	_UpdataChk
		JBC	MODE, 2
		JMP	_PoRtnAuto
		JBC	DISPSW, 0	;\
		JMP	_PoEdFQoff	; |
		JBC	DISPSW, 1	; |
		JMP	LcdRrfh		; |
_PoEdFQoff:				;/ added on Dec 27, 07
		call	ClearLCD
		PAGE	2
		CALL	LightOFF2
		PAGE	0
		MOV	A, @0x01
		MOV	DISPSW, A
		RET
/*------------------*/
_UpdataChk:	JBS	MODE, 2
		JMP	_UpdataCnt
		JBS	DISPSW, 1
		JMP	_KcntChk
		JBS	OPTION, 6
		JMP	_PoRtnAuto
	;	JMP	_UpdataCnt
_UpdataCnt:	JBS	DISPSW, 1	;\ added on Dec 27, 07
		JMP	_PoEdFQoff	;/
		CALL	LcdRrfh
		PAGE	2
		CALL	LgtWtrCnt2
		PAGE	0
		RET
/*------------------*/
_KcntChk:	MOV	A, @0x7f
		AND	A, KCOUNT
		JBS	SR, Z
		JMP	LcdRrfh
_PoRtnAuto:	PAGE	1
		CALL	_TDMautoCom
		page	0
		RET
;========================================
RunClock:	JBC	OPTION, 7	; check test mode or normal mode.
		JMP	_RCincMin	; is test mode, jump to add minute.
		MOV	A, SECOND
		add	a, @0x01
		DAA
		MOV	SECOND, A
		SUB	A, @0x59
		JBC	SR, C
		JMP	ExitRTC
		CLR	SECOND
_RCincMin:	MOV	A, MINUTE	; add minute
		add	a, @0x01
		DAA
		MOV	MINUTE, A
		SUB	A, @0x59
		JBC	SR, C
		JMP	_RtcDoSch
		CLR	MINUTE
		MOV	A, HOUR		; add hour
		add	a, @0x01
		DAA
		MOV	HOUR, A
		SUB	A, @0x23
		JBC	SR, C
		JMP	_RtcDoSch
		CLR	HOUR
		MOV	A, WEEKDAY
		MOV	HOUR12, A	; for check the past day' water status.
		INC	WEEKDAY		; updata weekday
		JBS	WEEKDAY, 3
		JMP	_RCendDay
		MOV	A, @0x01
		MOV	WEEKDAY, A
_RCendDay:	call	DoAtDayS	; do schecule of everyday.
_RtcDoSch:	CALL	DoSched		; do schedule of every minute.
ExitRTC:	CALL	_DoSchQF	; added on Oct 30, 07
		RET
/*---------------------------------*/
ChkQorF:	JBS	MODE, 7
		JMP	$+3
		BC	MODE, 7
		RET
		JBS	MODE, 0
		RET
		JBS	MODE, 1
		RET
		JBS	MODE, 2
		jmp	_ChkFbSw
		MOV	DISPSW, DISPSW
		JBS	SR, Z
		RET
		call	ClearLCD
		jmp	_ChkQFcom	; add on Jan 11, 08
_ChkFbSw:	JBC	DISPSW, 1
		RET
		JBC	DISPSW, 0
		JMP	_ChkFbSw1
	;	JMP	_ChkFbSw0
_ChkFbSw0:	clr	KEYCNT
		INC	DISPSW
		ret
_ChkFbSw1:	JBS	MODE, 6
		RET
		BC	MODE, 6
_ChkQFcom:	PAGE	2
		call	LightWeek2
		call	LgtQvFcnt2
		CALL	LgtSwIcon2
		CALL	LightRain2
		CALL	LightBat2
		PAGE	0
		INC	DISPSW
		RET
/*---------------------------------*/
DoAtDayS:	MOV	A, WDUTY	; updata the day' flag[yesterday day and today]
		JBS	SR, Z
		JMP	_DADSduty
_DADSweek:	MOV	SCHDATA, SCHDATA
		JBC	SR, Z
		JMP	_ExtDADS2
		MOV	A, WEEKDAY
		PAGE	2
		CALL	WeekList2
		PAGE	0
		AND	A, SCHDATA
		JBC	SR, Z
		JMP	_ExtDADS2
		MOV	A, HOUR12
		PAGE	2
		CALL	WeekList2
		PAGE	0
		AND	A, SCHDATA
		JBC	SR, Z
		JMP	_ExtDADS1
		JMP	_ExtDADS0
_DADSduty:	DECA	SCHDATA
		MOV	SCHDATA, A
		JBS	SR, Z
		JMP	_ExtDADS2
		MOV	A, WDUTY
		MOV	SCHDATA, A
		XOR	A, @0x01
		JBS	SR, Z
		JMP	_ExtDADS1
_ExtDADS0:	JBS	WTRFLAG, 7
		JMP	_ExtDADS2
		BS	WTRFLAG, 4	/*today need water&yesterday water*/
		BC	SRFLAG, 3
		JBC	WTRFLAG, 6
		jmp	_ExtDADS
		jmp	_ExtDADS01
_ExtDADS1:	JBS	WTRFLAG, 7
		JMP	_ExtDADS2
		BS	WTRFLAG, 4	/*today need water&yesterday no water*/
		BC	SRFLAG, 3
_ExtDADS01:	CLR	SCHNO
		PAGE	3
		CALL	RdSchCnt3
		page	2		;
		call	_LtWtrNo2	;added on Dec05,07
		PAGE	0
		jmp	_ExtDADS
_ExtDADS2:	BS	SRFLAG, 3	/*today no need water*/
_ExtDADS:	page	2
		call	LightWeek2
		page	0
		MOV	A, WDUTY
		JBC	SR, Z
		RET
		PAGE	2
		CALL	LgtDuty2
		PAGE	0
		RET
/*---------------------------------*/
DoSched:	JBS	MODE, 1
		ret
		jbc	MODE, 0
		ret
_DoSchAuto:	JBS	WTRFLAG, 7
		RET
		JBC	WTRFLAG, 6	; judge open water or close water.
		JMP	_DSclsWtr
_DSOpnWtr:	JBC	SRFLAG, 3	; check open water time.
		RET			/**/
		MOV	A, HOUR
		XOR	A, WHOUR
		JBS	SR, Z
		RET			/**/
		MOV	A, MINUTE
		XOR	A, WMINUTE
		JBS	SR, Z
		RET
		page	2		;
		call	TestRain2	;
		page	0		;
		JBS	SRFLAG, 0	;
		jmp	_DSOpnDsp	;
		CLR	DISPSW		;
		PAGE	3		;
		call	ChkSchNo3	;
		CALL	RdSchedule3	; Added on Dec 20, 07
		call	RdSchCnt3	;
		PAGE	2		;
		CALL	LgtWtrNo2	;
		PAGE	0		;
		RET			;
_DSOpnDsp:	MOV	A, COUNTH
		OR	A, COUNTL
		JBC	SR, Z		; when schedule time less than 1 minute,
		inc	COUNTL		; set the time as 1 minute
		BS	OPTION, 6	; make open water switch flag.
		BS	MODE, 5
		CALL	ClearLCD
		PAGE	2
		CALL	LgtWtrCnt2	; display schedule water panel.
		CALL	LightWeek2
		CALL	LgtWtrNo2
		CALL	LightDuty2
		CALL	LightRate2
		call	LightAutoM2
		call	LgtSwIcon2
		PAGE	0
		RET			/**/
/*-----------*/
_DSclsWtr:	MOV	A, COUNTH	; judge schedule close water.
		OR	A, COUNTL
		JBC	SR, Z
		ret
__DScls0:	call	DecCount
		MOV	A, COUNTH
		OR	A, COUNTL
		JBC	SR, Z		; judge time ending,
		JMP	__DScls1
		PAGE	2
		CALL	LgtWtrCnt2	; no, updata the water time display.
		PAGE	0
		ret


	;=====================================
	; Check if current sch is overnight sch
	;======================================

__DScls1:	BC	SRFLAG, 6
		JBS	SRFLAG, 3
		BS	SRFLAG, 6
		
		PAGE 3
		CALL 	GschInfo	;Check if the schedule is overnight.
		PAGE	0
		JBC	SR, C		;jump if not over-night sch
		BC	SRFLAG, 6	;if same day sch, clear bit 6 of SRFLAG

	;=====================================
	; Close water Operation
	;======================================

		inc	SCHNO		;1106
		;BC	SRFLAG, 6
		;JBS	SRFLAG, 3
		;BS	SRFLAG, 6
__DScls2:	MOV	A, OPTION
		AND	A, @0x0e
		SUB	A, SCHNO	; judge the last schedule?
		JBC	SR, C
		JMP	__DScls9
		MOV	A, SCHNO
		PAGE	2
		call	PgmRaddr2
		PAGE	0
		ADD	A, @0x01
		MOV	TEMP, A		; read current schedule data.
		IOW	RAMAR
		IOR	RAMBR
		MOV	WHOUR, A	; read start water hour
		XOR	A, @0x24	; judge the ending schedule?
		JBC	SR, Z
		JMP	__DScls9
		INCA	TEMP
		IOW	RAMAR
		IOR	RAMBR
		MOV	WMINUTE, A	; read start water minute
		MOV	A, @0x06
		ADD	TEMP, A
		MOV	A, TEMP
		IOW	RAMAR
		IOR	RAMBR
		MOV	CLSHOUR, A	; read stop water hour
		INCA	TEMP
		IOW	RAMAR
		IOR	RAMBR
		MOV	CLSMINUTE, A	; read stop water minute
		CMPCLK	CLSHOUR,WHOUR
		JBC	SR, C
		JMP	__DScls6	/*[ClsHr]>[WHr]:in the same day*/
__DScls3:	CALL	JudgeDwtr	; overnight
		JBC	SRFLAG, 7	; added on Dec 19, 07
		JMP	$+3		;
		JBS	SRFLAG, 3	;
		JMP	__DScls7	;

		call	ChrWHr		/*[ClsHr]<[WHr]:overnight*/
		JBC	SR, C
		jmp	__DScls5	/*A*/
		call	ChrClsHr	/*[Hr]<[WHr]*/
		JBC	SR, C
		JMP	__DScls7	/*[Hr]>=[ClsHr]*/
__DScls4:	page	2
		call	CountMin2	; count schedule total time[minutes]
		page	0
		JMP	__DScls8
__DScls5:	MOV	A, CLSHOUR
		ADD	A, @0x24
		DAA
		MOV	TEMP, A
		MOV	A, CLSMINUTE
		MOV	TEMPM, A
		page	2
		call	_CNTmin2
		page	0
		JMP	__DScls8
__DScls6:	jbc	SRFLAG, 3	;1106
		jmp	__DScls12	;1106
		call	ChrWHr
		JBS	SR, C
		JMP	__DScls7	/*[Hr]<[WHr]*/
		call	ChrClsHr
		jbc	SR, C
		jmp	__DScls7	/*C*/
		page	2
		call	CountMin2
		page	0
		JMP	__DScls8
__DScls7:	INC	SCHNO
		JMP	__DScls2
__DScls8:	BS	OPTION, 6	;Continue the next available sch
		BS	WTRFLAG, 4
		PAGE	2
		CALL	LgtWtrCnt2
		CALL	LgtWtrNo2
		PAGE	0
		RET			/**/
__DScls9:	CLR	SCHNO
		jbs	SRFLAG, 6
		jmp	__DScls10
		BC	SRFLAG, 6
		jmp	__DScls2
__DScls10:	MOV	A, SCHNO
		PAGE	2
		CALL	PgmRaddr2
		PAGE	0
		MOV	TEMP, A
		IOW	RAMAR
		IOR	RAMBR
		MOV	WNUM, A
		INCA	TEMP
		MOV	TEMP, A
		IOW	RAMAR
		IOR	RAMBR
		MOV	WHOUR, A
		XOR	A, @0x24
		JBC	SR, Z
		JMP	__DScls12
		INCA	TEMP
		IOW	RAMAR
		IOR	RAMBR
		MOV	WMINUTE, A
		CMPCLK	WHOUR,HOUR
		JBC	SR, C
		jmp	__DScls11
		INC	SCHNO
		MOV	A, OPTION
		AND	A, @0x0e
		SUB	A, SCHNO
		JBS	SR, C
		JMP	__DScls10
		JMP	__DScls12
__DScls11:	BS	WTRFLAG, 4
		jbc	SRFLAG, 3	;1107
__DScls12:	BC	WTRFLAG, 4
__DScls13:	BC	OPTION, 6
		BC	MODE, 5
		CALL	ClearLCD
		PAGE	3
		CALL	RdSchedule3
		call	RdSchCnt3
		PAGE	2
		CALL	LightWeek2
		CALL	LgtClock2
		CALL	LgtWtrNo2
		CALL	LightDuty2
		CALL	LightRate2
		call	LightAutoM2
		CALL	LightRain2
		CALL	LightBat2
		call	LgtSwIcon2
		PAGE	0
		RET			/**/
/*---------------------------------*/
JudgeDwtr:	MOV	A, WDUTY
		JBS	SR, Z
		JMP	_JDduty
_JDweek:	DECA	WEEKDAY
		JBC	SR, Z
		MOV	A, @0x07
		PAGE	2
		CALL	WeekList2
		PAGE	0
		AND	A, SCHDATA
		JBC	SR, Z
		JMP	_JDnoWtr
_JDWtr:		BS	SRFLAG, 7
		RET
_JDduty:	DECA	WDUTY
		JBC	SR, Z
		JMP	_JDWtr
		XOR	A, SCHDATA
		JBC	SR, Z
		JMP	_JDWtr
_JDnoWtr:	BC	SRFLAG, 7
		RET
/*-------------------*/
_DoSchQF:	jbs	MODE, 0		;\
		RET			; |
		JBS	MODE, 1		; | added on Oct 30, 07
		RET			;/
		jbs	MODE, 2
		jmp	_DoSchF
_DoSchQ:	JBS	DISPSW, 1
		RET
		mov	a, COUNTH
		or	a, COUNTH+1
		jbc	SR, Z
		RET			/* wait add forbit mode */
		JBC	OPTION, 7
		JMP	_DoShQ
		DJZ	QFSECNT		;\
		RET			; | added on Oct 30, 07
		MOV	A, @60		; |
		MOV	QFSECNT, A	;/
_DoShQ:		call	DecCount
		mov	a, COUNTH
		or	a, COUNTH+1
		JBS	SR, Z
		JMP	_DoSQcnt
		BC	OPTION, 6
		PAGE	1
		call	_TDMautoCom
		page	0
		RET
_DoSQcnt:	PAGE	2
		CALL	LgtWtrCnt2
		PAGE	0
		ret
/*-----------*/
_DoSchF:	JBS	DISPSW, 0
		RET
		JBS	DISPSW, 1
		RET
		mov	a, COUNTH
		or	a, COUNTH+1
		jbc	SR, Z
		ret			/* wait add forbit mode */
		JBC	OPTION, 7
		JMP	_DoShF
		DJZ	QFSECNT		;\
		RET			; | added on Oct 30, 07
		MOV	A, @60		; |
		MOV	QFSECNT, A	;/
_DoShF:		call	DecCount
		mov	a, COUNTH
		or	a, COUNTH+1
		JBS	SR, Z
		jmp	_DoSQcnt
		BC	OPTION, 6
		PAGE	2
		CALL	LightOFF2
		CALL	LightRain2
		CALL	LightBat2
		PAGE	0
		CLR	DISPSW
		INC	DISPSW
		RET
DecCount:	d30020	COUNTH
		ret

ChrWHr:		CMPCLK	HOUR,WHOUR
		ret
/*########################################################################
subroutine(by call) define area
########################################################################*/
		ORG	0x03ff
P0resume:	JMP	POWER_ON
		ORG	0x0400
;----------------------------------------
OpenMotor1:	BC	ISR, P68CB
		BS	R5, 0
		IOR	WUCR
		or	A, @mWUE6LB		; Dec 12, 07
		IOW	WUCR
		IOR	P6PH
		AND	A, @0x3f
		OR	A, @0xc0
		IOW	P6PH
		IOR	P6PL
		AND	A, @0x3f
		IOW	P6PL
		MOV	A, PORT6
		AND	A, @0x3f
		OR	A, @0xc0
		MOV	PORT6, A
		;JMP	$+1		
		JMP	$+1
		MOV	PORT6, A
		;NOP
		BC	R5, 0
		IOR	IOC6
		AND	A, @0x3f
		IOW	IOC6
		BS	WTRFLAG, 5
		MOV	A, @0x0a
		MOV	MCHKCNT, A
		BS	

⌨️ 快捷键说明

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