📄 xqb5030a.asm
字号:
; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
; ◆◆ "漂洗"过程 ◆◆
; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
WASH_RINSEING
MOVW A,#0
MOV A,LED_1ST
MOVW A,#TAB_RINSE_PROG
CLRC
ADDCW A
MOVW EP,A
MOV A,@EP
MOV R7,A ; 程序偏移
MOVW A,#0
MOV A,WASH_STEPS
MOVW A,#TAB_RINSE ; "漂洗"过程表首址
CLRC
ADDCW A ; + 步骤偏移
ADDC A,R7
MOVW EP,A
MOVW A,@EP ; 取数据
MOVW TIME_SECH,A ; 临时保存分步运行时间
MOV A,TIME_SECH
AND A,#11110000B ; 判正在进行哪个过程?
CMP A,#30H
BEQ JMP_300
CMP A,#90H
BEQ JMP_301
CMP A,#40H
BEQ JMP_302
CMP A,#50H
BEQ JMP_303
CMP A,#60H
BEQ JMP_304
CMP A,#70H
BEQ JMP_305
CMP A,#00H
BEQ JMP_306
CMP A,#10H
BEQ JMP_307
CMP A,#20H
BEQ JMP_308
CMP A,#0A0H
BEQ JMP_309
RET
JMP_300
JMP STEP_OUTWATER ; 排水
JMP_301
JMP STEP_OUTWATER_1MIN ; 续排 1′
JMP_302
JMP STEP_SPIN_ONOFF ; 间断脱水
JMP_303
JMP STEP_SPIN_CONT ; 连续脱水
JMP_304
JMP STEP_SPIN_INERTIA ; 惯性脱水
JMP_305
JMP STEP_SPIN_BRAKE ; 刹车
JMP_306
JMP STEP_INWATER ; 进水
JMP_307
JMP STEP_RINSE_WASH ; 漂洗
JMP_308
JMP STEP_RINSE_BALANCE ; 平衡控制
JMP_309
JMP STEP_SPIN_CON_GENTLE ; 轻柔脱水
; ▲▲▲ 排水 ▲▲▲
STEP_OUTWATER
BBC TEST_OUTWATER,_OUTWATER_START
CLRB TEST_OUTWATER
MOV A,#0 ; 判是否空桶
CMP A,FLAG_WATLVL
BNE _OUTWATER_START
CLRB TIME_SUB ; 减计时停止
SETB SPINING_DELAY9S ; 延时 9.5″开电机
MOV A,WASH_STEPS
CLRC
ADDC A,#2 ; 步骤 + 2
MOV WASH_STEPS,A
MOV A,WASHTIME_PROC ; 计时时间 - 2′
CLRC
SUBC A,#2
DAS ; BCD 码调整
MOV WASHTIME_PROC,A
CALL GET_DISPDATA ; 取数码管显示值
MOV TIME_SUB_4MS,#0
MOV TIME_SUB_1SEC,#0
JMP _OUTWATER_END
_OUTWATER_START
MOVW A,#120 ; 2′
MOVW A,TIME_MAIN_SECH
CMPW A ; 排水是否超过 2′?
BHS _OUTWATER_3
CLRB TIME_SUB ; 减计时停止
JMP _OUTWATER_4
_OUTWATER_3
SETB TIME_SUB ; 减计时开始
_OUTWATER_4
MOVW A,#240 ; 4′
MOVW A,TIME_MAIN_SECH
CMPW A ; 排水是否超过 4′?
BHS _OUTWATER_1
SETB OUTWATER_OVERTIME ; 排水超时报警标志
SETB FLAG_ALARM ; 有报警标志
MOV LED_4ST,#086H ; "E"
MOV LED_5ST,#0F9H ; "1"
MOV ELECTRO_STEPS,#0 ; 报警鸣响周期
MOV TIME_MAIN_4MS,#0 ; 清主计时单元
MOV TIME_MAIN_SECH,#0
MOV TIME_MAIN_SECL,#0
MOV TIME_BUZZER_4MS,#0 ; 清鸣响计时单元
MOV COUNT_WARNING,#0 ; 蜂鸣次数单元清零
CLRB BUZZER_ONOFF ; 置 ON 标志
SETB BUZZER_ALARM_START ; 开始周期鸣响
RET
_OUTWATER_1
MOV A,#0 ; 判是否达到设定水位?
CMP A,FLAG_WATLVL
BEQ _OUTWATER_END
SETB F_OUTWATER ; 打开排水牵引器
CLRB F_INWATER ; 关闭进水阀
RET
_OUTWATER_END ; 达到设定水位
MOV A,WASH_STEPS
CLRC
ADDC A,#2 ; 步骤 + 2
MOV WASH_STEPS,A
SETB F_OUTWATER ; 打开排水牵引器
CLRB F_INWATER ; 关闭进水阀
MOV TIME_STEP_4MS,#0 ; 清分步计时单元
MOV TIME_STEP_SECH,#0
MOV TIME_STEP_SECL,#0
RET
; ▲▲▲ 续排 1′ ▲▲▲
STEP_OUTWATER_1MIN
MOVW A,#120 ; 2′
MOVW A,TIME_MAIN_SECH
CMPW A ; 排水是否超过 2′?
BHS _OUTWATER_1MIN_1
CLRB TIME_SUB ; 减计时停止
_OUTWATER_1MIN_1
MOV A,TIME_SECH ; 判是否续排完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO _OUTWATER_1MIN_END
SETB F_OUTWATER ; 打开排水牵引器
CLRB F_INWATER ; 关闭进水阀
RET
_OUTWATER_1MIN_END
MOVW A,#120 ; 2′
MOVW A,TIME_MAIN_SECH
CMPW A ; 排水是否超过 2′?
BLO _OUTWATER_END
MOV A,WASHTIME_PROC
CLRC
SUBC A,#1
DAS ; BCD 码调整
MOV WASHTIME_PROC,A
CALL GET_DISPDATA ; 取数码管显示值
MOV TIME_SUB_4MS,#0
MOV TIME_SUB_1SEC,#0
JMP _OUTWATER_END
; ▲▲▲ 间断脱水 ▲▲▲
STEP_SPIN_ONOFF
SETB TIME_SUB ; 减计时开始
SETB _HOLD_SPINING ; 正在脱水状态
; CALL WARN_OPENCOVER ; 脱水时开盖检测
BBS FLAG_ALARM,_SPIN_QUIT ; 是否有报警?
BBS ADJUST,_SPIN_QUIT ; 是否"调整脱水不平衡"?
MOV A,TIME_SECH ; 判是否间断脱水完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO JMP_280 ; 间脱完成
SETB F_OUTWATER ; 打开排水牵引器
CALL CTRL_SPIN30S ; 间断脱水
_SPIN_QUIT
RET
; ▲▲▲ 连续脱水 ▲▲▲
STEP_SPIN_CONT
SETB TIME_SUB ; 减计时开始
SETB _HOLD_SPINING ; 正在脱水状态
; CALL WARN_OPENCOVER ; 脱水时开盖检测
BBS FLAG_ALARM,_SPIN_QUIT ; 是否有报警?
BBS ADJUST,_SPIN_QUIT ; 是否"调整脱水不平衡"?
MOV A,TIME_SECH ; 判是否连续脱水完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO _SPIN_CONT_END ; 连续脱水完成
SETB F_OUTWATER ; 打开排水牵引器
CLRB F_INWATER ; 关闭进水阀
BBS LED_GENTLE,GENTLE_NORMAL
CALL CTRL_SPINGENTLE ; 轻柔脱水
RET
GENTLE_NORMAL
SETB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
RET
_SPIN_CONT_END
CLRB _HOLD_SPINING ; 不是脱水状态
CLRB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
JMP_280
JMP _OUTWATER_END
; ▲▲▲ 惯性脱水 ▲▲▲
STEP_SPIN_INERTIA
SETB TIME_SUB ; 减计时开始
BBS KEY_DOOR,JMP_280 ; 门盖是否打开?
MOV A,TIME_SECH ; 判是否惯性脱水完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO JMP_280 ; 惯性脱水完成
CLRB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
SETB F_OUTWATER ; 打开排水牵引器
CLRB F_INWATER ; 关闭进水阀
RET
; ▲▲▲ 刹车 ▲▲▲
STEP_SPIN_BRAKE
SETB TIME_SUB ; 减计时开始
MOV A,TIME_SECH ; 判是否刹车完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO _SPIN_BRAKE_END ; 刹车完成
CLRB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
CLRB F_OUTWATER ; 关闭排水牵引器
CLRB F_INWATER ; 关闭进水阀
RET
_SPIN_BRAKE_END
MOV CTRL_OUTPUT,#0
BBS PROC_RINSE,_SPIN_BRAKE_99 ; 判是"漂洗"过程或"脱水"过程?
NOP ; "脱水"过程
CLRB PROC_SPIN ; 清"脱水"标志
SETB LED_SPIN ; "脱水"指示灯暗
JMP WASH_SET
_SPIN_BRAKE_99 ; "漂洗"过程
CLRB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
CLRB F_OUTWATER ; 关闭排水牵引器
CLRB F_INWATER ; 关闭进水阀
MOV A,WASH_STEPS
CLRC
ADDC A,#2 ; 步骤 + 2
MOV WASH_STEPS,A
MOV TIME_STEP_4MS,#0 ; 清分步计时单元
MOV TIME_STEP_SECH,#0
MOV TIME_STEP_SECL,#0
MOV ELECTRO_STEPS,#0 ; 洗涤周期
RET
; ▲▲▲ 漂洗 ▲▲▲
STEP_RINSE_WASH
SETB TIME_SUB ; 减计时开始
MOV A,TIME_SECH ; 判是否漂洗完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO _SPIN_BRAKE_99
MOVW A,#60 ; 后1′搅拌时同时进水
MOVW A,TIME_STEP_SECH
CMPW A
BHS _RINSE_WASH_1
MOV A,FLAG_WATLVL ; 判是否达到溢水水位
CMP A,#6
BEQ _RINSE_WASH_2
SETB F_INWATER ; 打开进水阀
JMP _RINSE_WASH_1
_RINSE_WASH_2
CLRB F_INWATER ; 关闭进水阀
_RINSE_WASH_1
CLRB F_OUTWATER ; 关闭排水牵引器
CALL CTRL_WASHING ; 搅拌洗衣
RET
; ▲▲▲ 平衡控制 ▲▲▲
STEP_RINSE_BALANCE
SETB TIME_SUB ; 减计时开始
MOV A,TIME_SECH ; 判是否平衡控制完成
AND A,#00001111B
MOV TIME_SECH,A
MOVW A,TIME_SECH
MOVW A,TIME_STEP_SECH
CMPW A
BLO RINSE_BALANCE_END
CALL CTRL_BALANCE ; 平衡控制
RET
RINSE_BALANCE_END ; 平衡控制完成
CLRB F_ELECMOTOR_Z ; 电机正转
CLRB F_ELECMOTOR_F ; 电机反转
CLRB F_OUTWATER ; 关闭排水牵引器
CLRB F_INWATER ; 关闭进水阀
BBC ADJUST,_BALANCE_4 ; 是否"调整脱水不平衡"?
BBS ADJUST_FORM,WASH_RINSEING_END ; "脱水"过程中调整脱水不平衡,转
NOP ; "漂洗"过程中调整脱水不平衡
JMP _BALANCE_5
_BALANCE_4
BBC LED_SPEEDY,WASH_RINSEING_END ; 是否"快速"程序?
BBS _RINSE_1_2,WASH_RINSEING_END ; 判第几次漂洗?是第二次漂洗,则结束漂洗过程
SETB _RINSE_1_2 ; 置"第二次漂洗"
_BALANCE_5
MOV WASH_STEPS,#0 ; 重新第一步开始
MOV TIME_STEP_4MS,#0 ; 清分步计时单元
MOV TIME_STEP_SECH,#0
MOV TIME_STEP_SECL,#0
MOV ELECTRO_STEPS,#0 ; 洗涤周期
RET
; ▲▲▲ 漂洗过程完成 ▲▲▲
WASH_RINSEING_END
CLRB PROC_RINSE ; 清"漂洗"标志
SETB LED_RINSE ; "漂洗"指示灯暗
JMP WASH_SET
; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
; ◆◆ "脱水"过程 ◆◆
; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
WASH_SPINING
SETB LED_RINSE ; "漂洗"指示灯暗
MOVW A,#0
MOV A,LED_1ST
MOVW A,#TAB_SPIN_PROG
CLRC
ADDCW A
MOVW EP,A
MOV A,@EP
MOV R7,A ; 程序偏移
MOVW A,#0
MOV A,WASH_STEPS
MOVW A,#TAB_SPIN ; "脱水"过程表首址
CLRC
ADDCW A ; + 步骤偏移
ADDC A,R7
MOVW EP,A
MOVW A,@EP ; 取数据
MOVW TIME_SECH,A ; 临时保存分步运行时间
MOV A,TIME_SECH
AND A,#11110000B ; 判正在进行哪个过程?
CMP A,#30H
BEQ JMP_400
CMP A,#90H
BEQ JMP_401
CMP A,#40H
BEQ JMP_402
CMP A,#50H
BEQ JMP_403
CMP A,#60H
BEQ JMP_404
CMP A,#70H
BEQ JMP_405
RET
JMP_400
JMP STEP_OUTWATER ; 排水
JMP_401
JMP STEP_OUTWATER_1MIN ; 续排 1′
JMP_402
JMP STEP_SPIN_ONOFF ; 间断脱水
JMP_403
JMP STEP_SPIN_CONT ; 连续脱水
JMP_404
JMP STEP_SPIN_INERTIA ; 惯性脱水
JMP_405
JMP STEP_SPIN_BRAKE ; 刹车
; ■■■■■■■■■■■■■■■■■■■■■■■■■
; ■■ ■■
; ■■ 以下为洗衣机程序流程表 ■■
; ■■ ■■
; ■■■■■■■■■■■■■■■■■■■■■■■■■
; ◆◆ 浸洗 ◆◆
TAB_SOAK
.DATA.W 0078H ; 进水 2′
.DATA.W 10B4H ; 搅拌 3′
.DATA.W 8078H ; 浸泡 2′
.DATA.W 103CH ; 搅拌 1′
.DATA.W 821CH ; 浸泡 9′ 15'
.DATA.W 103CH ; 搅拌 1′
.DATA.W 821CH ; 浸泡 9′ 25'
.DATA.W 103CH ; 搅拌 1′
.DATA.W 821CH ; 浸泡 9′ 35'
.DATA.W 103CH ; 搅拌 1′
.DATA.W 821CH ; 浸泡 9′ 45'
TAB_SOAK_PROG
.DATA.B 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,03H,02H,00H ; 低水位
.DATA.B 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,04H,03H,00H ; 中水位
.DATA.B 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,05H,04H,00H ; 高水位
; 说明: 本表对应表 TAB_SOAK ↑ ↑
; 右面的2个数据位置由 LED_1ST 的值产生 ┃ ┗ "标准"程序的浸泡过程中的浸泡次数
; ┗ "加强" ...
; ◆◆ 洗涤 ◆◆
TAB_WASH
; 标准 -- 低水位
.DATA.W 0078H ; 进水 2′
.DATA.W 1258H ; 搅拌 10′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 标准 -- 中水位
.DATA.W 0078H ; 进水 2′
.DATA.W 12D0H ; 搅拌 12′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 标准 -- 高水位
.DATA.W 0078H ; 进水 2′
.DATA.W 1384H ; 搅拌 15′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 加强 -- 低水位
.DATA.W 0078H ; 进水 2′
.DATA.W 1258H ; 搅拌 10′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 加强 -- 中水位
.DATA.W 0078H ; 进水 2′
.DATA.W 12D0H ; 搅拌 12′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 加强 -- 高水位
.DATA.W 0078H ; 进水 2′
.DATA.W 1384H ; 搅拌 15′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
; 轻柔
.DATA.W 0078H ; 进水 2′
.DATA.W 10B4H ; 搅拌 3′
.DATA.W 2000H ; 平衡 0″
.DATA.W 0
.DATA.W 0078H ; 进水 2′
.DATA.W 10B4H ; 搅拌 3′
.DATA.W 2000H ; 平衡 0″
.DATA.W 0
.DATA.W 0078H ; 进水 2′
.DATA.W 10B4H ; 搅拌 3′
.DATA.W 2000H ; 平衡 0″
.DATA.W 0
; 快速
.DATA.W 0078H ; 进水 2′
.DATA.W 1168H ; 搅拌 6′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
.DATA.W 0078H ; 进水 2′
.DATA.W 1168H ; 搅拌 6′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
.DATA.W 0078H ; 进水 2′
.DATA.W 1168H ; 搅拌 6′
.DATA.W 201EH ; 平衡 30″
.DATA.W 0
TAB_WASH_PROG
.DATA.B 00H,00H,00H,00H,00H,00H,00H,48H,00H,00H,00H,30H,00H,18H,00H,00H
; 说明: 本表对应表 TAB_WASH ↑ ↑ ↑ ↑
; 右面的4个数据位置由 LED_1ST 的值产生 ┃ ┃ ┃ ┗ "标准"程序的洗涤过程在上表中的起始地址
; ┃ ┃ ┗ "加强" ...
; ┃ ┗ "轻柔" ...
; ┗ "快速" ...
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -