📄 weide_timer3.asm.bak
字号:
;File Name: weide_timer.asm
;Customer: WeiDe
;Editer: Jared Wu
;update date: 1-10-1 23:07
;主要功能
;1,预热7分钟
;2,在预热时,检测到泡沫进入打浆
;3,电机工作ON/OFF 18s/10s
;4,泡沫触发进入延煮7分钟,1,不挂泡,ON/OFF 4S/10S
; 2,挂泡,ON/OFF 2S/10S
;5,结束报警1min
;6,保温30min ON/OFF 2S/20S buz 2 short
;7, 改进1:打浆之后,禁止10秒不动作。
; 蜂鸣器声音间隔加长。
;8, 改进声音: 1,报警长鸣 1-10-25 11:12
; 2,间隔为响0.5秒,停0.5秒
; 3,上电不响
;9,报警指示灯不闪烁 1-10-25 11:13
;10,去掉启动键,改为工作指示灯,原来的加热灯改为OK灯 1-11-4 22:10
;11,加入自检测试程序 1-11-19 22:38
;12,保温状态下,带缺水保护 1-11-27 13:55
;function: 1 key --- auto key
; 1 led --- heat_led
; --- power_led
;
; ___ ___
; 1| \_/ |
; TEST -|PA3 PA4|-OK_LED
; TEST -|PA2 PA5|-WORK_LED
; -|PA1 PA6|-POWER_OUT
; -|PA0 PA7|-H/M_OUT, 1-M,0-H
; -|PB2 OS2|-
; BUZ1 -|PB1 OS1|-
; BUZ0 -|PB0 VDD|-
; -|VSS RES|-
; WATER_L -|PC0 PC1|-WATER_H
; |_________|
;
;----------------------------------------------------------------------
include ht48R05a-1.inc
;----------------------------------------------------------------------
STAT_STANDY EQU 00H
STAT_PRE_HEAT EQU 01H
STAT_MOTOR EQU 02H
STAT_RE_HEAT EQU 03H
STAT_WARM EQU 04h
STAT_END EQU 05H
STAT_WARNING EQU 06H
STAT_CHECK EQU 07H
BUZ_S EQU 25
BUZ_FRE EQU 235
BUZON EQU 10110100b
BUZOFF EQU 10100100b
PRE_HEAT_MAX EQU 7 ;test!!!!!! 7min
MOTOR_TIME_MAX EQU 4
MOTOR_OFF_TIME EQU 28
MOTOR_ON_TIME EQU 18
TEMP_H_COUNT_MAX EQU 5
W1S_COUNT_MAX EQU 50
RE_HEAT_MAX EQU 7 ;test!!!!! 7min
CHECK_KEY_DB EQU 100
;------------------------------------------------------------------------
;PA pin define
hm_out equ 7 ;out
power_out equ 6 ;out
work equ 5 ;out
ok equ 4 ;out
;------------------------------------------------------------------------
;PB pin define
;------------------------------------------------------------------------
;PC pin define
water_h equ 1
water_l equ 0
;----key flag define---------------------------------------------------
no_key equ 7
auto_1 equ 6
auto_ok equ 5
;----------flag-----------------
h_disable equ 7
w1s equ 6
slow_heat equ 5
heat_stop equ 4
hm_start equ 3
hm_end equ 2
water_low equ 1
slow_h equ 0
;--------buzer----
buz_long equ 7 ;define bit
;buz_warning equ 6
music equ 5
music_repeat equ 4
short equ 3
;------------------------------------------------------------------------
data .section 'data'
set_status db ?
wk_status db ?
wk_stat_bak db ?
w1s_count db ? ;wait 1s count
motor_count db ? ;motor run count 0~30s +1 ;needs ini
motor_time db ? ;motor run/stop time 4 -1 ;needs ini
heat1_count db ?
heat2_count db ?
count1 db ?
count2 db ?
flag db ?
key db ?
pa_out db ?
pa_delay db ?
led_count db ?
water_normal_c db ?
buzer db ?
buz_count db ?
buz_s_time db ?
buz_s_bak db ?
slow_l db ?
slow_heat_count db ? ;needs ini
out_delay_count db ?
warm_count db ?
warm_time db ?
pu_delay db ?
check_pc db ?
check_count db ?
;----------------------------------------------------------------------------
wcode .section 'code'
org 00h
sz TO ;判断是否是上电复位
jmp main ;TO=1, watchdog time out
power_on_reset:
call ram_ini
mov a,1
mov buz_s_time,a
jmp main
set_warning:
mov buz_s_bak,a
mov a,wk_status
mov wk_stat_bak,a
mov a,STAT_WARNING
mov wk_status,a
ret
main:
call output_con
call wait_1s
; call key_scan
call led_con
check_in:
clr wdt
call buz_con
;call wendu
;sz acc
;jmp temp_err_warning
;clr temp_err_count
;call get_wendu
;call div
;set pa.3
;nop
;nop
;nop
;nop
;nop
;nop
;nop
;nop
;nop
;nop
;clr pa.3
mov a,20
call delay
wk_work:
sza wk_status
jmp wk_work_0
jmp wk_standy ;stand_by
wk_work_0:
sdz acc
jmp wk_work_1
jmp wk_pre_heat ;pre_heat
wk_work_1:
sdz acc
jmp wk_work_2
jmp wk_motor ;motor
wk_work_2:
sdz acc
jmp wk_work_3
jmp wk_re_heat ;heat again
wk_work_3:
sdz acc
jmp wk_work_31
jmp wk_warm ;hold warm
wk_work_31:
sdz acc
jmp wk_work_4
jmp wk_end ;end
wk_work_4:
sdz acc
jmp wk_work_5
jmp wk_warning ;warning
wk_work_5:
sdz acc
jmp power_on_reset
jmp wk_check ;check itself
;led con
;set_status auto heat_led
;
; 0 off off
; 1 on off
; 3 off on
;warning flash flash
led_con:
inc led_count
clr pa_out.work
clr pa_out.ok
mov a,wk_status
sub a,STAT_STANDY
sz z
jmp led_disable
mov a,wk_status
sub a,STAT_WARNING
sz z
jmp led_warning
mov a,wk_status
sub a,STAT_WARM
sz z
jmp led_ok
mov a,wk_status
sub a,STAT_END
sz z
jmp led_ok
led_work:
set pa_out.work
ret
led_disable:
ret
led_ok:
set pa_out.ok
ret
led_warning:
sz led_count.5
ret
set pa_out.work
set pa_out.ok
ret
;**启动处理子程序**************
;in stand-by mode, start key con
start_con:
inc pu_delay
mov a,pu_delay
sub a,75
sz c
jmp pre_heat_start
mov a,00000100b
mov pac,a
set pa.3
nop
nop
nop
snz pa.2
ret
clr pa.3
nop
nop
nop
sz pa.2
ret
mov a,00001000b
mov pac,a
set pa.2
nop
nop
nop
snz pa.3
ret
clr pa.2
nop
nop
nop
sz pa.3
ret
set_check_stat:
mov a,00
mov pac,a
mov a,STAT_CHECK
jmp set_status_end
pre_heat_start:
clr pu_delay
mov a,1
mov set_status,a
mov a,STAT_PRE_HEAT
set_status_end:
mov wk_status,a
clr buz_count
clr out_delay_count
clr motor_count
clr flag
mov a,W1S_COUNT_MAX
mov w1s_count,a
mov a,MOTOR_TIME_MAX ;motor run 4 time
mov motor_time,a
ret
;set_heat_pro:
; clr key.heat_ok
; mov a,2
; mov set_status,a
; mov a,STAT_RE_HEAT
; jmp set_status_end
;
;***停止键处理子程序******
;stop_key_con:
; sz key.auto_ok
; jmp auto_stop_con
; sz key.heat_ok
; jmp heat_stop_con
; ret
;
;auto_stop_con:
; clr key.auto_ok
; mov a,set_status
;stop_key_pd:
; sub a,1
; sz acc
; ret
; jmp key_stop_con
;
;heat_stop_con:
; clr key.heat_ok
; mov a,set_status
; dec acc
; jmp stop_key_pd
;
;key_stop_con:
; clr set_status
; clr acc
; jmp set_status_end
;**待机处理模块*************************************************
wk_standy:
call start_con
clr out_delay_count
off_ret:
heat_off_ret:
clr pa_out.power_out
clr pa_out.hm_out
jmp main_ret
;****预加热模块********************************************
wk_pre_heat:
;call stop_key_con
sz pc.water_l
jmp water_too_low
snz pc.water_h
jmp water_over_high
water_normal:
;sz div_res_h
;jmp water_heat_1
;mov a,div_res
;sub a,TEMPER_80 ;temper >80C ?
;sz c
;jmp water_heat_1
;sdz temper_h_count
snz flag.w1s
jmp heat_on_ret
inc heat1_count
mov a,heat1_count
sub a,60
snz c
jmp heat_on_ret
clr heat1_count ; 1 Mintue
inc heat2_count
mov a,heat2_count
sub a,PRE_HEAT_MAX
snz c
jmp heat_on_ret
clr heat2_count
set_motor_status:
mov a,STAT_MOTOR
call set_status_end
jmp heat_off_ret
heat_on_ret:
set pa_out.power_out
clr pa_out.hm_out
jmp main_ret
water_too_low:
mov a,1
call delay
snz pc.water_l
jmp main_ret ;double check water low
set flag.water_low
mov a,2
jmp water_warning ;sencond OTP error in here.
water_over_high:
mov a,1
call delay ;delay 1ms
sz pc.water_h
jmp water_normal
jmp set_motor_status
water_warning:
call set_warning
jmp main_ret
;****电机打浆模块***************************************
wk_motor:
;call stop_key_con
sz pc.water_l
jmp water_too_low
;snz pc.water_h
;jmp water_too_high
snz flag.w1s
jmp main_ret
sz flag.hm_end
jmp wk_motor_end
sz flag.hm_start
jmp wk_motor_1
set flag.hm_start
motor_off_ret:
set pa_out.hm_out
clr pa_out.power_out
jmp main_ret
wk_motor_1:
inc motor_count ;1S 计数器
mov a,motor_count
sub a,MOTOR_ON_TIME
sz c
jmp motor_off_con_p
motor_on_ret:
set pa_out.hm_out
set pa_out.power_out
jmp main_ret
motor_off_con_p:
mov a,motor_count
sub a,MOTOR_OFF_TIME
snz c ;skip if a>off_time
jmp motor_off_ret
clr motor_count
sdz motor_time ;判断打浆4次到?
jmp main_ret
set flag.hm_end
jmp off_ret
wk_motor_end:
mov a,STAT_RE_HEAT
call set_status_end
set flag.h_disable
; mov wk_status,a
; clr flag.hm_start
; clr flag.hm_end
;mov a,RE_HEAT_TIME_MAX ;heat again ? time
;mov re_heat_time,a
jmp off_ret
;****再加热模块**********************************************
wk_re_heat:
;call stop_key_con
wk_re_heat_1:
sz pc.water_l
jmp water_too_low
sz flag.h_disable
jmp heat_disable
wk_re_heat_2:
sz flag.slow_heat
jmp slow_heat_pro
fast_heat:
;sz div_res_h
;jmp fast_heat_1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -