; 讀取 18B20 溫度(簡化,實際需復雜時序)
READ_DS18B20:
; 此處省略 18B20 讀取時序代碼
RET
; 模擬 EEPROM 保存參數(shù)(實際可使用外部 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 讀取參數(shù)(實際可使用外部 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:
; 進入?yún)?shù)設置模式,此處省略具體設置代碼
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