⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weide_timer3.asm.bak

📁 威迪家电控制电路
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	;mov	a,div_res
	;sub	a,TEMPER_98	;temper >98C ?
	;sz	c
	;jmp	fast_heat_2
	;sz	flag.w1s	;1 second?
	;inc	t98_count
	;mov	a,t98_count
	;sub	a,180		;T>98C, and time > 3Min
	;sz	c
	;jmp	set_re_heat_end
	sz	pc.water_h
	jmp	heat_on_ret
	jmp	set_slow_heat

fast_heat_1:
	jmp	heat_on_ret

;fast_heat_2:
;	mov	a,div_res
;	sub	a,TEMPER_85
;	sz	c
;	jmp	fast_heat_1	;>85C, skip
;	clr	t98_count
;	sz	pc.water_h
;	jmp	heat_on_ret	;无泡沫,继续加热

set_slow_heat:
	set	flag.slow_heat	;设置延煮状态标志
	set	flag.heat_stop
	clr	slow_l
	clr	flag.slow_h
	clr	slow_heat_count
	jmp	heat_off_ret
	
slow_heat_pro:
	snz	flag.w1s	
	jmp	main_ret
	
	inc	heat1_count	;延煮状态,慢加热7分钟
	mov	a,heat1_count
	sub	a,60
	snz	c
	jmp	slow_heat_1
	clr	heat1_count	; 1 Mintue
	
	inc	heat2_count
	mov	a,heat2_count
	sub	a,RE_HEAT_MAX
	snz	c
	jmp	slow_heat_1
	clr	heat2_count
	jmp	set_re_heat_end

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
	clr	set_status
;	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:
	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:
	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
	
	clr	set_status
	
	;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	pu_delay
	clr	check_pc
	clr	check_count
		
	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,30
	snz	c
	jmp	heat_out_disable

output_c1:
	mov	a,pa_delay
	mov	pa,a
	
	clr	pbc
	;mov	a,pb_out
	;mov	PB,A
	
	set	pcc.water_h
	set	pcc.water_l
	ret 

heat_out_disable:
	inc	out_delay_count
	clr	pa_delay.power_out
	clr	pa_delay.hm_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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -