📄 dingshikaishui.dt
字号:
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 + -