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

📄 weide_timer3.asm.bak

📁 威迪家电控制电路
💻 BAK
📖 第 1 页 / 共 2 页
字号:
;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 + -