📄 weide_3led1129.asm
字号:
slow_heat_1:
sz flag.heat_stop
jmp slow_stop
;solw heat on
inc slow_heat_count
mov a,slow_heat_count
snz pc.water_h
jmp slow_no_over
sub a,4 ;无挂泡,开4秒
jmp slow_on
slow_no_over:
sub a,2 ;有挂泡,开2秒
slow_on:
sz c
jmp set_heat_stop
jmp heat_on_ret
set_heat_stop:
set flag.heat_stop
clr slow_heat_count
jmp heat_off_ret
slow_stop:
;sz flag.w1s ;1秒到?
inc slow_heat_count
mov a,slow_heat_count ;加热器关10秒
sub a,10
sz c
jmp clr_heat_stop
jmp heat_off_ret
clr_heat_stop:
clr flag.heat_stop
clr slow_heat_count
jmp heat_on_ret
set_re_heat_end: ;到这里,豆浆制作全部结束,进入保温程序
mov a,STAT_WARM
call set_status_end
mov a,60
mov buz_s_time,a
;mov a,1
;mov buz_s_time,a
;set buzer.music
clr buz_count
mov a,1
mov set_status,a
; set buzer.sp_repeat
;mov a,60
;mov music_repeat_count,a
jmp off_ret
heat_disable:
snz flag.w1s
jmp main_ret
inc slow_heat_count
mov a,slow_heat_count ;加热器关10秒
sub a,10
sz c
jmp clr_heat_disable
jmp heat_off_ret
clr_heat_disable:
clr flag.h_disable
clr slow_heat_count
jmp wk_re_heat_2
;保温程序
;****************hold warm*********************8
wk_warm:
call stop_key_con
sz pc.water_l
jmp water_too_low
snz flag.w1s
jmp main_ret
inc warm_count
mov a,warm_count
sub a,22
sz c
jmp clr_warm_count
mov a,warm_count
sub a,3
sz c
jmp heat_off_ret
sz buz_s_time
jmp heat_on_ret
mov a,2
mov buz_s_time,a
jmp heat_on_ret
clr_warm_count:
clr warm_count
inc warm_time
mov a,warm_time ;81*22s=30Min
sub a,81
sz c
jmp set_all_end
jmp main_ret
set_all_end:
mov a,STAT_END
call set_status_end
jmp main_ret
;********* waiting 1 second *****************************
wait_1s:
clr flag.w1s
sdz w1s_count ;假设20MS调用一次
ret
mov a,W1S_COUNT_MAX
mov w1s_count,a
set flag.w1s
ret
;***正常结束***************************************************
wk_end:
;mov a,2
;mov buz_s_time,a
;snz flag.w1s
;jmp off_ret
;sdz music_repeat_count
jmp off_ret
;clr buzer.music_repeat
;jmp off_ret
;jmp main_ret
;***出错处理模块************************************************
wk_warning:
clr out_delay_count
snz flag.water_low
jmp off_ret
sz pc.water_l
jmp water_low_1 ;
inc water_normal_c
mov a,water_normal_c
sub a,40
sz c
jmp water_normal_1
clr buzer.buz_long
;clr buzer.buz_warning
jmp off_ret
water_low_1:
set buzer.buz_long
;set buzer.buz_warning
jmp off_ret
water_normal_1:
clr water_normal_c
clr flag.water_low
clr buzer.buz_long
;clr buzer.buz_warning
; mov a,2
; mov buz_s_time,a
clr buz_count
mov a,wk_stat_bak
mov wk_status,a
jmp off_ret
main_ret:
jmp main
;*****自检处理模块************************************************
wk_check:
sza check_pc
jmp wk_check_0
jmp check_1 ;1st, check water switch high
wk_check_0:
sdz acc
jmp wk_check_1
jmp check_2 ;2st, check heat on
wk_check_1:
sdz acc
jmp wk_check_2
jmp check_3 ;3rd, check motor on.
wk_check_2:
sdz acc
jmp wk_check_3
jmp check_4 ;4th, check water_high,work led on
wk_check_3:
sdz acc
jmp power_on_reset
jmp check_5 ;4th, work water_low,ok led on
check_1:
; clr pa.power_out
; clr pa.hm_out
; clr pa.work
; clr pa.ok
clr pa
snz pc.water_h
jmp check_warning
snz pc.water_l
jmp check_warning
jmp check_pc_inc
check_warning:
set buzer.buz_long
jmp check_in
check_2:
set pa.power_out
check_21:
inc check_count
mov a,check_count
sub a,55
sz c
jmp check_pc_inc
jmp check_in
check_pc_inc:
clr check_count
mov a,1
mov buz_s_time,a
set buzer.short
clr buz_count
inc check_pc
jmp check_in
check_3:
set pa.hm_out
jmp check_21
check_4:
clr pa.power_out
clr pa.hm_out
sz pc.water_h
jmp check_in
jmp check_pc_inc
check_5:
;set pa.work
sz pc.water_l
jmp check_in
check_pc_end:
;clr pa.work
;set pa.ok
clr check_pc
clr check_count
mov a,3
mov buz_s_time,a
mov a,STAT_END
mov wk_status,a
jmp check_in
;上电初始化RAM子程序**********************************************
ram_ini:
clr intc
mov a,BUZOFF
mov tmrc,a
clr acc
mov tmr,a
clr tmr
mov a,00000000b
mov pac,a
clr pbc
mov a,03h ;water high/low check
mov pcc,a
clr pa
;clr pb
clr pc
mov a,1
mov set_status,a
;mov a,4
;mov wk_status,a
clr wk_status
clr wk_stat_bak
mov a,W1S_COUNT_MAX
mov w1s_count,a
clr motor_count
mov a,MOTOR_TIME_MAX
mov motor_time,a
clr heat1_count
clr heat2_count
;clr count1
;clr count2
clr flag
clr key
clr pa_out
clr pa_delay
clr led_count
clr water_normal_c
clr buzer
clr buz_count
clr buz_s_time
clr buz_s_bak
clr slow_l
;clr pb_out
clr slow_heat_count
clr out_delay_count
clr warm_time
clr warm_count
clr check_pc
clr check_count
clr key_new
clr key_old
clr key_flag
mov a,00000000b
mov display,a
mov a,7
mov wdts,a
ret
;*****************************************************************
;output_con
;main function: when heat output change (0->1) delay 0.5s output
output_con:
mov a,00000000b
mov pac,a
mov a,pa_out
mov pa_delay,a
mov a,out_delay_count
sub a,75
snz c
jmp out_disable
output_c1:
mov a,pa_delay ;display --> PA for led display
and a,00001100b
set acc.key_in
or a,display
mov pa_delay,a
clr acc
mov pac,a
mov a,pa_delay
mov pa,a
set pcc.water_h
set pcc.water_l
ret
out_disable:
inc out_delay_count
clr pa_delay.power_out
jmp output_c1
;*****************************************************************
;name: 按键扫描子程序
;input:
;利用led显示输出管脚切换到输入模式交替扫描得到按键值
;sourse: status flag bit: auto,heat, pin define bit
; key.no_key, heat_1,heat_ok, auto_1,auto_ok.
;key_scan:
; snz pa.auto
; jmp key_auto_push
;no_key_push:
;
; set key.no_key
; clr key.auto_1
; ret
;
;key_auto_push:
; sz key.auto_1
; jmp auto_key_pd
; sz key.no_key
; jmp auto_key_pd
; ret
;auto_key_pd:
; clr key.no_key
; sz key.auto_1
; jmp auto_key_ok
; set key.auto_1
; ret
;auto_key_ok:
; set key.auto_ok
; ret
;
;*****************************************************************
;name: 延时子程序
;input: ACC=需要延时的时间值(ms) @ 4MHz
delay:
mov count2,a
delay_st:
mov a,230
mov count1,a
delay_loop:
sdz count1
jmp delay_loop
mov a,100
mov count1,a
delay_loop1:
sdz count1
jmp delay_loop1
sdz count2
jmp delay_st
ret
;*****************************************************************
;name: 蜂鸣器处理子程序
;input: buz_s_time 蜂鸣器短鸣次数寄存器
; BUZ_S
; buzer.buz_long 蜂鸣器长鸣标志
buz_con:
inc buz_count
sz buz_s_time
jmp buz_short
sz buzer.buz_long
jmp buz_on
clr buz_count
buz_off:
mov a,BUZOFF
mov tmrc,a
ret
buz_short:
mov a,buz_count
sz buzer.short
jmp short_10
sub a,BUZ_S
jmp short_11
short_10:
sub a,10
short_11:
sz c
jmp buz_short_off_p
buz_on:
mov a,BUZ_FRE
mov tmr,a
mov a,BUZON
mov tmrc,a
ret
buz_short_off_p:
mov a,buz_count
sz buzer.short
jmp short_20
sub a,BUZ_S*2
jmp short_21
short_20:
sub a,20
short_21:
snz c
jmp buz_off
buz_short_off:
clr buz_count
dec buz_s_time
ret
;key.asm
;output: key_new
scan_key_con:
mov a,11110010b
mov pac,a
mov a,key_new
mov key_old,a
clr key_new
clr pac.key4 ;key4 push?
nop
nop
set pa.key4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sz pa.key_in
set key_new.key4
set pac.key4 ;key3 push
clr pac.key3
nop
nop
set pa.key3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sz pa.key_in
set key_new.key3
set pac.key3 ;key2 push
clr pac.key2
nop
nop
set pa.key2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sz pa.key_in
set key_new.key2
set pac.key2 ;key1 push
clr pac.key1
nop
nop
set pa.key1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sz pa.key_in
set key_new.key1
mov a,key_new
sz acc
jmp key_comp
set key_flag.ready
jmp key_end
key_comp:
mov a,key_new
sub a,key_old
snz z
jmp key_end
comp_ok:
snz key_flag.ready
jmp key_end
set key_flag.key_ok
clr key_flag.ready
jmp key_end
key_end:
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -