📄 hr52_10_p4.asm
字号:
;;..........................P4.................................
.PUBLIC JP_GET_NUM ;浸泡中的洗洗停停
JP_GET_NUM: .PROC
TST CX_COUNT,0 ; 22 20 19 10 9 0
BEQ XDW_CX0
LDA BT_M ;25-----22
CMP #23
BCC CX0_BTD0
SET FLAG2,FLAG_JPW ;洗
CX0_BTD0:
LDA BT_M ;22-------20
CMP #23
BCS CX0_BTD2
LDA BT_M
CMP #21
BCC CX0_BTD2
CLR FLAG2,FLAG_JPW
CX0_BTD2:
LDA BT_M ;20-------19
CMP #21
BCS CX0_BTD3
LDA BT_M
CMP #20
BCC CX0_BTD3
SET FLAG2,FLAG_JPW
CX0_BTD3:
LDA BT_M ;19-------10
CMP #20
BCS CX0_BTD4
LDA BT_M
CMP #11
BCC CX0_BTD4
CLR FLAG2,FLAG_JPW
CX0_BTD4:
LDA BT_M ;10-------9
CMP #11
BCS CX0_BTD5
LDA BT_M
CMP #10
BCC CX0_BTD5
SET FLAG2,FLAG_JPW
CX0_BTD5:
LDA BT_M ;9-----------0
CMP #10
BCS CX0_BTD6
CLR FLAG2,FLAG_JPW
CX0_BTD6:
XDW_CX0:
TST CX_COUNT,1 ; 32 30 29 20 19 10 9 0
BEQ XDW_CX1
LDA BT_M ;35--------32
CMP #33
BCC CX1_BTD0
SET FLAG2,FLAG_JPW ;洗
CX1_BTD0:
LDA BT_M ;32-------30
CMP #33
BCS CX1_BTD2
LDA BT_M
CMP #31
BCC CX1_BTD2
CLR FLAG2,FLAG_JPW
CX1_BTD2:
LDA BT_M ;30-------29
CMP #31
BCS CX1_BTD3
LDA BT_M
CMP #30
BCC CX1_BTD3
SET FLAG2,FLAG_JPW
CX1_BTD3:
LDA BT_M ;29----------20
CMP #30
BCS CX1_BTD4
LDA BT_M
CMP #21
BCC CX1_BTD4
CLR FLAG2,FLAG_JPW
CX1_BTD4:
LDA BT_M ;20----------19
CMP #21
BCS CX1_BTD5
LDA BT_M
CMP #20
BCC CX1_BTD5
SET FLAG2,FLAG_JPW
CX1_BTD5:
LDA BT_M ;19--------------10
CMP #20
BCS CX1_BTD7
LDA BT_M
CMP #11
BCC CX1_BTD7
CLR FLAG2,FLAG_JPW
CX1_BTD7:
LDA BT_M ;10---9
CMP #11
BCS CX1_BTD6
LDA BT_M
CMP #10
BCC CX1_BTD6
SET FLAG2,FLAG_JPW
CX1_BTD6:
LDA BT_M ;9-----------0
CMP #10
BCS CX1_BTD8
CLR FLAG2,FLAG_JPW
CX1_BTD8:
XDW_CX1:
RTS
.ENDP
;................获取水流........................
.PUBLIC GET_SL
GET_SL: .PROC
TST CX_COUNT,0
BEQ SL_N00
JMP SL_03S
SL_N00:
TST CX_COUNT,3
BEQ SL_N0
SL_03S:
LDA #18
STA XD_Z1
LDA #21
STA XD_Z2
LDA #39
STA XD_Z3
LDA #42
STA XD_Z4
LDA #20
STA SW_C
SL_N0:
TST CX_COUNT,1
BEQ SL_N1
LDA #22
STA XD_Z1
LDA #26
STA XD_Z2
LDA #48
STA XD_Z3
LDA #52
STA XD_Z4
LDA #25
STA SW_C
SL_N1:
TST CX_COUNT,2
BEQ SL_N2
LDA #9
STA XD_Z1
LDA #13
STA XD_Z2
LDA #22
STA XD_Z3
LDA #26
STA XD_Z4
LDA #12
STA SW_C
SL_N2:
TST FLAG1,N_MH ;模糊洗
BEQ XD_NMH
LDA #12
STA XD_Z1
LDA #24
STA XD_Z2
LDA #36
STA XD_Z3
LDA #48
STA XD_Z4
LDA #23
STA SW_C
XD_NMH:
TST FLAG2,FLAG_PHX
BEQ XD_NPH
LDA #3
STA XD_Z1
LDA #8
STA XD_Z2
LDA #11
STA XD_Z3
LDA #16
STA XD_Z4
LDA #7
STA SW_C
XD_NPH:
RTS
.ENDP
.PUBLIC FINISH_W
FINISH_W: .PROC
LDA #0
STA WASH_TIMES
LDA #0 ;关输出
STA PD
LDA #00000100B
STA PC
LDA #12
STA WARM_T
SET FLAG3,WARM_FLAG
LOOP_FW:
JSR CHECK_P
TST FLAG3,WARM_FLAG
BNE FW_NE
JMP END_FW
FW_NE:
;..........无水中检测程序键.................
TST FLAG3,SW_WORK
BEQ FW_NK3
;.......灯的效果..........................
CLR FLAG1,WORK
CLR FLAG2,BF_BG
TST FLAG1,MH_SHINE
BEQ FW_NND
CLR FLAG1,MH_SHINE
INV FLAG1,FLAG_JP
TST FLAG1,FLAG_JP
BEQ SH_11
LDA #255
STA LED_BUF1
STA LED_BUF2
STA LED_BUF3
STA LED_BUF4
STA LED_BUF5
JMP SH_12
SH_11:
LDA #0
STA LED_BUF1
STA LED_BUF2
STA LED_BUF3
STA LED_BUF4
STA LED_BUF5
SH_12:
FW_NND:
TST KEY_S,2
BEQ FW_NK3
TST KEY_L,2
BNE FW_NK3
JSR Delay
TST KEY_S,2
BEQ FW_NK3
SET KEY_L,2
CLR FLAG3,WARM_FLAG
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
JSR BUZ
ASL WS_MODE
JSR WS_LED
ldX #C_STACK_BOTTOM ;设置堆栈,将指针指想栈顶
txs
LDA #0
STA KEY_S
STA FLAG1
STA FLAG2
LDA FLAG3
AND #10000000B
STA FLAG3
JMP AAA
FW_NK3:
JMP LOOP_FW
END_FW:
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
RTS
.ENDP
.PUBLIC WARM
WARM: .PROC
;关撞桶检测
LDA #0 ;关输出
STA PD
LDA #00000100B
STA PC
JSR Delay
JSR Delay
JSR Delay
JSR Delay
JSR Delay
JSR Delay
JSR Delay
JSR Delay
LDA #10
STA WARM_T
SET FLAG3,WARM_FLAG
SET FLAG1,7
TST E_FLAG,YY_AQKG
BNE YY_SXS
LDA SHINE2_H
STA LED_BUF2
LDA SHINE3_H
STA LED_BUF3
YY_SXS:
TST E_FLAG,YY_AQKG
BEQ YY_WARM
LDA #97H
STA W_S1
LDA #DDH
STA W_S2
YY_WARM:
TST E_FLAG,AQKG ;安全开盖
BEQ E_NANKG
LDA #97H
STA W_S1
LDA #9EH
STA W_S2
E_NANKG:
TST E_FLAG,SWQ ;水位器
BEQ E_NSWQ
LDA #87H
STA W_S1
LDA #48H
STA W_S2
CLR E_FLAG,SWQ
LOOP_DIR:
LDA #0
STA LED_BUF1
STA LED_BUF2
STA LED_BUF3
TST FLAG1,MH_SHINE
BEQ SS_SHINEN
LDA W_S1
STA LED_BUF5
LDA W_S2
STA LED_BUF4
JMP SS_SHINE2N
SS_SHINEN:
LDA #0
STA LED_BUF5
STA LED_BUF4
SS_SHINE2N:
JSR CHECK_P
JMP LOOP_DIR
E_NSWQ:
TST E_FLAG,JS_CS ;进水超时
BEQ E_NJSCS
LDA #97H
STA W_S1
LDA #4BH
STA W_S2
E_NJSCS:
TST E_FLAG,PS_CS ;排水超时
BEQ E_NPSCS
LDA #97H
STA W_S1
LDA #48H
STA W_S2
E_NPSCS:
TST E_FLAG,ZT3C ;撞桶3次
BEQ E_NZT3C
LDA #97H
STA W_S1
LDA #5EH
STA W_S2
E_NZT3C:
CLR LED_BUF4,5 ;;关掉那一点
;.......开关盖恢复.................
JSR OC_DOOR
LDA #02H
STA LED_BUF5
STA LED_BUF4
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
CLR FLAG3,WARM_FLAG
CLR FLAG1,7
LDA #0
STA E_FLAG
JSR Delay
JSR Delay
JSR Delay
JSR Delay
JSR Delay
RTS
.ENDP
;................开关盖恢复.............................
.PUBLIC OC_DOOR
OC_DOOR: .PROC
CLR FLAG3,FLAG_DOOR
OC_LOOP:
TST PB,MG ;门盖开
BEQ OC_NKG
JSR Delay
TST PB,MG
BEQ OC_NKG
SET FLAG3,FLAG_DOOR
OC_NKG:
TST FLAG1,MH_SHINE
BEQ SS_SHINE
LDA W_S1
STA LED_BUF5
LDA W_S2
STA LED_BUF4
JMP SS_SHINE2
SS_SHINE:
LDA #0
STA LED_BUF5
STA LED_BUF4
SS_SHINE2:
TST FLAG3,FLAG_DOOR
BEQ OC_KG
TST PB,MG
BNE OC_KG
JSR Delay
TST PB,MG
BNE OC_KG
JMP END_OC
OC_KG:
JSR CHECK_P
JMP OC_LOOP
END_OC:
RTS
.ENDP
;................撞桶检测...............................
;...........................................................................
.PUBLIC ZT_CHECK
ZT_CHECK: .PROC
;测撞桶
tst ZT_FLAG,ZT_ALLOW
beq NCZT
tst ZT_FLAG,ZT_MG
beq ZT1
;
tst PA,ZT
BNE ZT1 ;BEQ
;
ldx ZT_COUNT ;小于60则是干扰
cpx #30
bcs ZT2
ldX #0
stx ZT_COUNT
CLR ZT_FLAG,ZT_MG
jmp NCZT
ZT2:
LDX ZT_COUNT
CPX #30
BCC ZT1
CLR ZT_FLAG,ZT_ALLOW
SET ZT_FLAG,CF_ZT
;........撞桶...........
ZT1:
tst PA,ZT ;当门盖打开时
BEQ NCZT
set ZT_FLAG,ZT_MG
inc ZT_COUNT
LDA ZT_COUNT
CMP #100
BCC NCZT
CLR ZT_FLAG,ZT_ALLOW
SET ZT_FLAG,CF_ZT
NCZT:
RTS
.ENDP
.PUBLIC PH_WASH
PH_WASH: .PROC
LDA #0
STA PD
LDA #00000100B ;关所有口
STA PC
;改灯
LDA #10000001B
STA SHINE3_H
LDA #00000001B
STA SHINE3_L
;加时间
INC WASH_TIMES
INC WASH_TIMES
INC WASH_TIMES
INC WASH_TIMES
INC WASH_TIMES
CLR FLAG3,FLAG_TS ;关脱水标记
JSR W_INPUT ;进水
SET FLAG2,FLAG_PHX
LDA #1
STA BT_M
LDA #60
STA BT_S
JSR XD_WORK
CLR FLAG2,FLAG_PHX
;读回灯状态
LDA ZT_L_H
STA SHINE3_H
LDA ZT_L_L
STA SHINE3_L
JSR W_OUTPUT ;排水
RTS
.ENDP
.PUBLIC T_LC1
T_LC1: .PROC
;排水
TST CX_COUNT,3
BNE JP_PS2
JSR W_OUTPUT
JMP NPS_30
JP_PS2:
JSR PS_30S
NPS_30:
;....保存时间.............
LDA WASH_TIMES
STA ZT_T_SM
LDA SYS_S
STA ZT_T_SS
;保存灯
LDA SHINE3_H
STA ZT_L_H
LDA SHINE3_L
STA ZT_L_L
;第一次间脱周期判断
TST CX_COUNT,0
BEQ JT1_N0
LDA #4
JT1_N0:
TST CX_COUNT,1
BEQ JT1_N1
LDA #4
JT1_N1:
TST CX_COUNT,2
BEQ JT1_N2
LDA #7
JT1_N2:
TST CX_COUNT,3
BEQ JT1_N3
LDA #3
JT1_N3:
STA JT_T_SET
JSR JT_WORK
TST CX_COUNT,2 ;(如果是轻柔程序就跳过连脱)
BNE CX3_NLT
;连脱
TST CX_COUNT,0
BEQ LT1_N0
LDA #2
STA LT_M
LDA #30
STA LT_S
LT1_N0:
TST CX_COUNT,1
BEQ LT1_N1
LDA #2
STA LT_M
LDA #30
STA LT_S
LT1_N1:
TST CX_COUNT,3
BEQ LT1_N3
LDA #1
STA LT_M
LDA #30
STA LT_S
LT1_N3:
JSR LT_WORK
CX3_NLT:
;关脱
LDA #1
STA BT_M
LDA #30
STA BT_S
TST CX_COUNT,3
BEQ GT_NCX4
LDA #1
STA BT_M
LDA #15
STA BT_S
GT_NCX4:
JSR GT_WORK
;停5S
JSR D5_S
;进水
JSR W_INPUT
;.....................洗时间判断....
TST CX_COUNT,0
BEQ PX1_NCX0
LDA #2
STA BT_M
LDA #60
STA BT_S
PX1_NCX0:
TST CX_COUNT,1
BEQ PX1_NCX1
LDA #2
STA BT_M
LDA #60
STA BT_S
PX1_NCX1:
TST CX_COUNT,2
BEQ PX1_NCX2
LDA #2
STA BT_M
LDA #60
STA BT_S
PX1_NCX2:
TST CX_COUNT,3
BEQ PX1_NCX3
LDA #2
STA BT_M
LDA #20
STA BT_S
PX1_NCX3:
;.......判断是不是需要溢注..........
TST CX_COUNT,3
BEQ PX1_NYZ
SET FLAG3,YZ
PX1_NYZ:
;
JSR XD_WORK
; INC WASH_TIMES
;
CLR FLAG3,YZ
;........16s的平衡洗..........
SET FLAG2,FLAG_PHX
LDA #1
STA BT_M
LDA #16
STA BT_S
JSR XD_WORK
CLR FLAG2,FLAG_PHX
;INC WASH_TIMES
;INC WASH_TIMES
RTS
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -