; 读取 18B20 温度(简化,实际需复杂时序)
READ_DS18B20:
; 此处省略 18B20 读取时序代码
RET
; 模拟 EEPROM 保存参数(实际可使用外部 EEPROM)
SAVE_PARAMETERS:
MOV DPTR, #PARAM_ADDR
MOV A, WORK_TIME
MOVX @DPTR, A
INC DPTR
MOV A, MOTOR_TIME
MOVX @DPTR, A
INC DPTR
MOV A, TEMP_SET
MOVX @DPTR, A
INC DPTR
MOV A, DRAIN_FLAG
MOVX @DPTR, A
RET
; 模拟 EEPROM 读取参数(实际可使用外部 EEPROM)
LOAD_PARAMETERS:
MOV DPTR, #PARAM_ADDR
MOVX A, @DPTR
MOV WORK_TIME, A
INC DPTR
MOVX A, @DPTR
MOV MOTOR_TIME, A
INC DPTR
MOVX A, @DPTR
MOV TEMP_SET, A
INC DPTR
MOVX A, @DPTR
MOV DRAIN_FLAG, A
RET
; 按键扫描及处理
KEY_SCAN:
MOV A, P3
ANL A, #0FCH ; 屏蔽无关位
CJNE A, #0FCH, KEY_PRESSED
RET
KEY_PRESSED:
CALL DELAY
MOV A, P3
ANL A, #0FCH
CJNE A, #0FCH, KEY_HANDLING
RET
KEY_HANDLING:
JB Program_Key, CHECK_OTHER_KEYS
LCALL DELAY_LONG ; 检测长按
MOV A, P3
ANL A, #0FCH
CJNE A, #0FCH, LONG_PRESS_PROGRAM_KEY
SHORT_PRESS_PROGRAM_KEY:
MOV A, STATUS
CJNE A, #0, CHECK_STATUS_1
MOV STATUS, #1 ; 切换到清洗
SJMP KEY_EXIT
CHECK_STATUS_1:
CJNE A, #1, CHECK_STATUS_2
MOV STATUS, #2 ; 切换到烫染
SJMP KEY_EXIT
CHECK_STATUS_2:
MOV STATUS, #0 ; 切换到待机
SJMP KEY_EXIT
LONG_PRESS_PROGRAM_KEY:
; 进入参数设置模式,此处省略具体设置代码
SJMP KEY_EXIT
CHECK_OTHER_KEYS:
JB Inc_Key, CHECK_DEC_KEY
; 加键处理
MOV A, WORK_TIME
ADD A, #1
MOV WORK_TIME, A
SJMP KEY_EXIT
CHECK_DEC_KEY:
JB Dec_Key, CHECK_START_PAUSE_KEY
; 减键处理
MOV A, WORK_TIME
CLR C
SUBB A, #1
MOV WORK_TIME, A
SJMP KEY_EXIT
CHECK_START_PAUSE_KEY:
JB Start_Pause_Key, CHECK_WATER_LEVEL_KEY
; 启动暂停键处理
SJMP KEY_EXIT
CHECK_WATER_LEVEL_KEY:
JB Water_Level_Key, KEY_EXIT
; 水位开关键处理
SJMP KEY_EXIT