📄 mainloop.asm
字号:
start:
nop
call pdelay
@rst_wdt
call pdelay
@rst_wdt
call pdelay
call PortInitial
b0bts1 fnt0
jmp start10
call RAMInitial
start10:
call SysInitial
call PortInitial
mov a,#5 ;三声BUZZER
mov buzcount,a
b0bclr t500msflag
clr timer500ms
clr timer10ms
b0bclr t10msflag
b0bset buzzerflag
b0bset ptled2
start15:
@rst_wdt
call timing
b0bts1 t500msflag
jmp start15
b0bclr t500msflag
notbit buzzerflag
decms buzcount
jmp start15
b0bclr buzzerflag
call initdisplay
standby:
@rst_wdt
b0bclr fp00ien
b0bclr fp00irq
b0bclr temphumiflag
b0bclr ptled1
b0bclr ptmg2
b0bclr ptcompres
b0bclr ptfanh
b0bclr ptfanl
b0bclr pttop123
b0bclr ptmg1
; b0bset ptled2
call timing
b0bts1 t15sflag
jmp standby10
b0bclr t15sflag
b0bset ptled2
standby10:
call mnkey
b0bts1 testmodef
jmp standby80
b0bclr ptled2 ;开启背光
clr t15s
b0bclr t15sflag
b0bts1 keyerrflag1
jmp standby50
clr Flag
b0bset testmodef
b0bts0 testmfirf
jmp standby40
b0bset testmfirf
b0bclr t500msflag
clr timer500ms
; clr timer10ms
; b0bclr t10msflag
b0bset buzzerflag
mov a,#1
mov buzcount,a
jmp start15
standby40:
call SetLCD
jmp standby
standby50:
call SetLCD
b0bts1 t5sflag
jmp standby
b0bclr testmodef
b0bset ptled2
standby80:
call turnofflcd
b0bts1 keyflag ;AN2是否按下
jmp standby
b0bclr keyflag
b0bclr ptled2 ;开启背光
clr t15s
b0bclr t15sflag
clr keycode
clr Flag
clr Flag1
clr flag3
clr flag6
clr flag7
b0bts0 firstandbyf
jmp mainadd
b0bset firstandbyf
clr keycodeold
;;;;;;;;;;;;;;;;;;;
clr flag3old
b0bset lcdt1flag
b0bclr lcdt2flag
b0bclr lcdt3flag
mov a,flag3
mov flag3old,a
b0bset ptcompres
b0bset ptfanl
b0bclr ptfanh
b0bset ptcompresf
b0bset ptfanlf
b0bclr ptfanhf
mov a,flag6
mov flag6old,a
mov a,flag7
mov flag7old,a
mov a,#0
mov preset_dis,a
mov preset_disold,a
mainadd:
b0bclr t500msflag
clr timer500ms
; clr timer10ms
; b0bclr t10msflag
b0bset buzzerflag
b0bset lcdt1flag
mov a,#1
mov buzcount,a
b0bclr tempfirflag ;开机时取消温湿度的误差限制
b0bclr humidfirflag
; mov buzcountold,a
mainadd80: ;恢复保存值
@rst_wdt
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; mov a,Flagold
; mov Flag,a
b0bclr nooperationf
; b0bclr flash456f
; b0bclr lindwarfirf
; b0bclr lindwarfirf2
b0bts1 ptled1f ;闪动变成789,闪动时不保留其状态,pt789f仍为闪之前状态,以此进行恢复
jmp mainadd0
b0bset ptled1
b0bset ptled1f
jmp mainadd00
mainadd0:
b0bclr ptled1
b0bclr ptled1f
mainadd00:
mov a,keycodeold
mov keycode,a
; mov a,buzcountold
; mov buzcount,a
mov a,preset_disold
mov preset_dis,a
mov a,flag3old
mov flag3,a
mov a,flag6old
mov flag6,a
mov a,flag7old
mov flag7,a
b0bclr keepflag
b0bts1 ptcompresf
jmp mainadd81
b0bset turnonflag
jmp mainadd82
mainadd81:
b0bclr ptcompres
mainadd82:
b0bts1 ptfanhf
jmp mainadd83
b0bset ptfanh
jmp mainadd84
mainadd83:
b0bclr ptfanh
mainadd84:
b0bts1 ptfanlf
jmp mainadd85
b0bset ptfanl
jmp mainadd86
mainadd85:
b0bclr ptfanl
mainadd86:
b0bts1 pt789f
jmp mainadd87
b0bset pt789
jmp mainadd88
mainadd87:
b0bclr pt789
mainadd88:
; b0bts1 ptled1f
; jmp mainadd89
; b0bset ptled1
; jmp mainadd90
;mainadd89:
; b0bclr ptled1
mainadd90:
b0bts1 ptmg2f
jmp mainadd91
b0bclr ptmg2
b0bclr ptmg2f
jmp mainadd92
mainadd91:
b0bclr ptmg2
b0bclr ptmg2f ;恢复时抽水机不工作
mainadd92:
; b0bts1 pttop123f
; jmp mainadd93
; b0bset pttop123
; jmp mainadd94
;mainadd93:
; b0bclr pttop123
mainadd94:
b0bts1 ptmg1f
jmp mainadd95
b0bclr ptmg1
b0bclr ptmg1f
jmp mainadd96
mainadd95:
b0bclr ptmg1
b0bclr ptmg1f
mainadd96:
;预设值
b0mov y,#lcdwtable$m
b0mov z,#lcdwtable$l
swap preset_dis
and a,#0fh
add z,a
movc
mov seg18,a
mov a,r
mov seg17,a
b0mov y,#lcdwtable$m
b0mov z,#lcdwtable$l
mov a,preset_dis
and a,#0fh
add z,a
movc
mov seg16,a
mov a,r
or a,#00010000b
mov seg15,a
mov a,seg14
or a,#00010000b
mov seg14,a
; call LCDON
main:
@rst_wdt
call timing
b0bts0 nooperationf ;为1时LIND WATER超过两分钟不进行其他动作
jmp main19
mov a,buzcount
b0bts0 fz
jmp main10
b0bts1 t500msflag
jmp main10
notbit buzzerflag
b0bclr t500msflag
decms buzcount
jmp main10
b0bclr buzzerflag
main10:
b0bts1 flashflag
jmp main11
b0bts1 tim500msflag
jmp main11
b0bclr tim500msflag
; b0bts1 flashfirf
; jmp main11
; b0bclr flashfirf
notbit lcdt4flag
; jmp main13
;main11:
; b0bset flashfirf
main11:
b0bts1 turnonflag ;压缩机保护
jmp main13
b0bts1 t3minflag
jmp main13
b0bset ptcompres
b0bset ptcompresf
b0bclr turnonflag
b0bclr firturnoffflg
main13:
b0bts1 t15sflag
jmp main14
b0bclr t15sflag
b0bset ptled2
main14:
call tempretp
b0bts1 detctflag
jmp main15
b0bclr detctflag
mov a,temp4
mov data1,a
mov a,temp5
mov data2,a
call detector
b0bset detctflag1
main15:
call humidretp
b0bts1 humidcomflag ;湿度是否小于预设值
jmp main16
b0bclr humidcomflag
mov a,humid_dis_i
sub a,preset_dis
b0bts0 fc
jmp main16add
b0bclr lcdt1flag
b0bclr lcdt2flag
b0bclr lcdt3flag
b0bset flashflag
b0bts0 firturnoffflg
jmp main15add
b0bset firturnoffflg
clr t1min ;压缩机保护
clr t3min
b0bclr t3minflag
main15add:
b0bclr turnonflag
b0bclr ptcompres
b0bclr ptfanl
b0bclr ptfanh
b0bclr ptcompresf
b0bclr ptfanlf
b0bclr ptfanhf
b0bclr pt789
b0bclr pt789f
b0bclr lcdt5flag
jmp main16
main16add:
b0bts0 hightolflag
jmp main16add1
b0bset lcdt1flag
b0bclr lcdt2flag
b0bclr lcdt3flag
b0bset turnonflag
; b0bset ptcompres
b0bset ptfanl
b0bclr ptfanh
; b0bset ptcompresf
b0bset ptfanlf
b0bclr ptfanhf
jmp main16
main16add1:
b0bclr lcdt1flag
b0bset lcdt2flag
b0bset lcdt3flag
b0bset turnonflag
; b0bset ptcompres
b0bset ptfanh
b0bclr ptfanl
; b0bset ptcompresf
b0bset ptfanhf
b0bclr ptfanlf
main16:
b0bts1 ptcompresf ;是否要除霜
jmp main19
b0bts1 detctflag1
jmp main18
b0bclr detctflag1
mov a,temp_dis_i
sub a,#00010110b ;BCD 16 #00010110b
b0bts0 fc
jmp main17
b0bset frogflag
jmp main18
main17:
b0bclr frogfirsf
b0bclr frogflag
b0bclr frogisflag
b0bclr lcdt5flag
b0bclr pt789
b0bclr pt789f
b0bts1 ptcompresf
jmp main17add
b0bset turnonflag
jmp main18
main17add:
b0bclr ptcompres
main18:
b0bts1 frogflag ;除霜
jmp main19
b0bts0 frogfirsf
jmp main18add1
b0bset frogfirsf
b0bts0 testflag
jmp main18a1
clr t40min
clr t60s
b0bclr t40minflag
jmp main18add1
main18a1:
clr time8s
b0bclr time8sflag
main18add1:
b0bts1 testflag
jmp main18a2
b0bts1 time8sflag
jmp main18add2
b0bclr time8sflag
b0bset frogisflag
clr time2s
b0bclr time2sflag
jmp main18add2
main18a2:
b0bts1 t40minflag
jmp main18add2
b0bclr t40minflag
b0bset frogisflag
clr t10min
clr t60s
b0bclr t10minflag
main18add2:
b0bts1 frogisflag
jmp main19
b0bset lcdt5flag
b0bset pt789
b0bset pt789f
b0bts0 firturnoffflg
jmp main18add3
b0bset firturnoffflg
clr t1min ;压缩机保护
clr t3min
b0bclr t3minflag
main18add3:
b0bclr turnonflag
b0bclr ptcompres
; b0bclr ptcompresf
b0bts1 testflag
jmp main18a3
b0bts1 time2sflag
jmp main19
b0bclr time2sflag
jmp main18a4
main18a3:
b0bts1 t10minflag
jmp main19
b0bclr t10minflag
main18a4:
b0bclr frogisflag
b0bclr frogfirsf
b0bset ptcompres
; b0bset ptcompresf
b0bclr lcdt5flag
b0bclr pt789
b0bclr pt789f
main19:
call mnkey
b0bts0 nooperationf ;为1时LIND WATER超过两分钟不进行其他动作
jmp main35
b0bts1 keyflag ;AN2有按下时
jmp main30
b0bclr keyflag
b0bclr ptled2 ;开启背光
clr t15s
b0bclr t15sflag
b0bclr t500msflag
clr timer500ms
; clr timer10ms
b0bset buzzerflag
mov a,#1
add buzcount,a
b0bts0 hightolflag
jmp main20
b0bset lcdt1flag
b0bclr lcdt2flag
b0bclr lcdt3flag
b0bset turnonflag
; b0bset ptcompres
b0bset ptfanl
b0bclr ptfanh
; b0bset ptcompresf
b0bset ptfanlf
b0bclr ptfanhf
jmp main21
main20:
b0bclr lcdt1flag
b0bset lcdt2flag
b0bset lcdt3flag
b0bset turnonflag
; b0bset ptcompres
b0bset ptfanh
b0bclr ptfanl
; b0bset ptcompresf
b0bset ptfanhf
b0bclr ptfanlf
main21:
b0bset flashflag
clr ww0
mov a,keycode
sub a,#1
mov ww1,a
main22:
mov a,ww1
b0bts0 fz
jmp main25
mov a,#5
add ww0,a
decms ww1
nop
jmp main22
main25:
mov a,#30
add a,ww0
mov r0,a
call CHA_HEX1BTOBCD
mov a,r2
mov preset_dis,a
b0mov y,#lcdwtable$m
b0mov z,#lcdwtable$l
swap preset_dis
and a,#0fh
add z,a
movc
mov seg18,a
mov a,r
mov seg17,a
b0mov y,#lcdwtable$m
b0mov z,#lcdwtable$l
mov a,preset_dis
and a,#0fh
add z,a
movc
mov seg16,a
mov a,r
or a,#00010000b
mov seg15,a
mov a,seg14
or a,#00010000b
mov seg14,a
main30:
b0bts1 an1flag
jmp main35
b0bclr an1flag
b0bclr ptled2 ;开启背光
clr t15s
b0bclr t15sflag
b0bclr t500msflag
clr timer500ms
; clr timer10ms
; b0bclr t10msflag
; b0bclr tim500msflag
b0bset buzzerflag
mov a,#1
add buzcount,a
b0bts0 ledfirf
jmp main31
b0bset ptled1
b0bset ptled1f
b0bset ledfirf
jmp main32
main31:
b0bclr ptled1
b0bclr ptled1f
b0bclr ledfirf
main32:
main35:
b0bts0 lindwarisf ;已处于警示状态
b0bclr lindflag
b0bts1 lindflag
jmp main37
b0bclr lindflag
b0bts0 ptled1f
jmp main36
b0bset mg1flag
b0bclr mg2flag
b0bclr ptmg2
b0bclr ptmg2f
b0bclr mg1firsf
b0bclr mgendflag
jmp main37
main36:
b0bset mg2flag
b0bclr mg1flag
b0bclr ptmg1
b0bclr ptmg1f
b0bclr mg1firsf
b0bclr mgendflag
main37:
b0bts1 mg1flag ;MG1自动抽水
jmp main42
b0bts0 mg1firsf
jmp main38
b0bset mg1firsf
b0bset ptmg1
b0bset ptmg1f
clr t1000ms
mov a,#3
mov tns,a
b0bclr mgendflag
b0bclr kipflag
main38:
b0bts0 kipflag
jmp main39
mov a,tns
b0bts1 fz
jmp main40
b0bclr ptmg1
b0bclr ptmg1f
clr t1000ms
mov a,#2
mov tns,a
b0bset kipflag
main39:
b0bts0 mgendflag
jmp main40
mov a,tns
b0bts1 fz
jmp main40
b0bset ptmg1
b0bset ptmg1f
clr t1000ms
mov a,#30
mov tns,a
b0bset mgendflag
main40:
b0bts1 mgendflag
jmp main42
mov a,tns
b0bts1 fz
jmp main42
b0bclr ptmg1
b0bclr ptmg1f
b0bclr mg1flag
b0bclr mg1firsf
b0bclr mgendflag
main42:
;MG2自动抽水
b0bts1 mg2flag
jmp main52
b0bts0 mg1firsf
jmp main45
b0bset mg1firsf
b0bset ptmg2
b0bset ptmg2f
clr t1000ms
mov a,#3
mov tns,a
b0bclr mgendflag
b0bclr kipflag
main45:
b0bts0 kipflag
jmp main46
mov a,tns
b0bts1 fz
jmp main48
b0bclr ptmg2
b0bclr ptmg2f
clr t1000ms
mov a,#2
mov tns,a
b0bset kipflag
main46:
b0bts0 mgendflag
jmp main48
mov a,tns
b0bts1 fz
jmp main48
b0bset ptmg2
b0bset ptmg2f
clr t1000ms
mov a,#120
mov tns,a
b0bset mgendflag
main48:
b0bts1 mgendflag
jmp main52
mov a,tns
b0bts1 fz
jmp main52
b0bclr ptmg2
b0bclr ptmg2f
b0bclr mg2flag
b0bclr mg1firsf
b0bclr mgendflag
main52:
b0bts1 lindwarflag ;警示
jmp main52add
b0bset lindwarisf
b0bclr mg1flag
b0bclr mg2flag
; b0bclr lindwarflag
main52add:
b0bts1 lindwarisf
jmp main60
b0bts0 lindwarfirf2
jmp main53
b0bset lindwarfirf2
clr t1000ms
clr timerms
clr timer5min
b0bclr time5minf
b0bts0 ptled1f
jmp main52add00
b0bset ptmg1
b0bclr ptmg2
jmp main53
main52add00:
b0bset ptmg2
b0bclr ptmg1
main53:
b0bts1 time5minf
jmp main60
b0bclr ptmg1
b0bclr ptmg2
b0bts0 lindwarflag
jmp main53add
b0bclr flash456f
b0bclr lindwarisf
b0bclr lindwarfirf
b0bclr lindwarfirf2
b0bclr buzzerflag
b0bclr nooperationf
b0bclr keepflag
jmp mainadd80 ;恢复原先值
main53add:
b0bts0 lindwarfirf
jmp main55
b0bset lindwarfirf
clr t1000ms
mov a,#30
mov tns,a
main55:
mov a,tns
b0bts0 fz
jmp main56
b0bts1 t500msflag
jmp main60
b0bclr t500msflag
notbit buzzerflag
jmp main60
main56: ;30秒后
call turnofflcd
; b0bclr lindwarisf
; b0bclr lindwarfirf
; b0bclr lindwarfirf2
; b0bclr time5minf
; b0bclr ptmg2
b0bts0 firturnoffflg
jmp main56add
b0bset firturnoffflg
clr t1min ;压缩机保护
clr t3min
b0bclr t3minflag
main56add:
b0bclr ptcompres
b0bclr ptfanh
b0bclr ptfanl
b0bclr ptmg1
b0bclr ptmg2
b0bclr buzzerflag
b0bclr ptbuzz
b0bclr fp00ien
b0bclr fp00irq
b0bclr temphumiflag
; b0bclr ptmg2f
; b0bclr ptcompresf
; b0bclr ptfanhf
; b0bclr ptfanlf
; b0bclr ptmg1f
b0bset ptled2
b0bset keepflag
b0bset flash456f ;led1闪
b0bset nooperationf
jmp main
main57:
main60:
;保存状态
b0bts0 keepflag
jmp main30add1
mov a,keycode
mov keycodeold,a
mov a,preset_dis
mov preset_disold,a
mov a,flag3
mov flag3old,a
mov a,flag6
mov flag6old,a
mov a,flag7
mov flag7old,a
main30add1:
b0bts1 offflag ;关机
jmp main30add2
b0bclr offflag
b0bclr t500msflag
clr timer500ms
b0bset buzzerflag
mov a,#1
mov buzcount,a
b0bset ptled2
b0bts0 firturnoffflg
jmp main30adda
b0bset firturnoffflg
clr t1min ;压缩机保护
clr t3min
b0bclr t3minflag
main30adda:
b0bclr ptcompres
b0bclr ptfanl
b0bclr ptfanh
b0bset keyerrflag1
b0bset keepflag
b0bclr pt789
b0bclr pt789f
jmp start15
main30add2:
b0bts1 topflag ;key top
jmp main80
b0bset keepflag
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; mov a,Flag
; mov Flagold,a
b0bset pttop123
b0bset pttopfirf2
b0bts0 pttopfirf
jmp main81
b0bset pttopfirf
b0bclr t500msflag
clr timer500ms
; clr timer10ms
; b0bclr t10msflag
b0bset buzzerflag
mov a,#19 ;10声 2*n-1
mov buzcount,a
main81:
b0bts0 firturnoffflg
jmp main81add
b0bset firturnoffflg
clr t1min ;压缩机保护
clr t3min
b0bclr t3minflag
main81add:
b0bclr turnonflag
b0bclr ptcompres
b0bclr ptfanl
b0bclr ptfanh
; b0bclr ptcompresf
; b0bclr ptfanlf
; b0bclr ptfanhf
b0bset pttop123
; b0bset pttop123f
b0bset lcdt6flag
jmp main85
main80:
b0bclr pttop123
b0bclr pttop123f
b0bclr pttopfirf
b0bclr lcdt6flag
b0bts1 pttopfirf2
jmp main80add
b0bclr pttopfirf2
jmp mainadd80
main80add:
main85:
call display
jmp main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -