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

📄 weide_3led.asm

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

;*********  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
	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	music_count
	
	mov	a,8
	mov	beat_count,a
	
	clr	music_fre
	clr	music_repeat_count
	
	mov	a,MUSIC_CT_MAX
	mov	music_ct,a
	
	clr	slow_l
	;clr	pb_out
	clr	slow_heat_count
	clr	out_delay_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



;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


;*****************************************************************
;name: 蜂鸣器处理子程序
;input: buz_s_time 蜂鸣器短鸣次数寄存器
;	BUZ_S
;	buzer.buz_long 蜂鸣器长鸣一声标志
;	buzer.music 一段音乐
buz_con:
	inc	buz_count
	sz	buz_s_time
	jmp	buz_short
	sz	buzer.buz_long
	jmp	buz_long_con
	sz	buzer.music
	jmp	buz_music
	mov	a,BUZOFF
	mov	tmrc,a
	clr	buz_count
	ret
buz_short:
	mov	a,buz_count
	sub	a,BUZ_S
	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
	sub	a,BUZ_S*2
	sz	c
	jmp	buz_short_off
buz_off:	
	mov	a,BUZOFF
	mov	tmrc,a
	
	ret
buz_short_off:
	clr	buz_count
	dec	buz_s_time
	ret

buz_long_con:	
	mov	a,buz_count
	sub	a,BUZ_LONG_MAX
	sz	c
	jmp	buz_long_off_p
	jmp	buz_on
	
buz_long_off_p:
	mov	a,buz_count
	sub	a,BUZ_LONG_MAX+5
	snz	c
	jmp	buz_off
buz_long_off:
	clr	buz_count
	sz	buzer.buz_warning
	jmp	buz_long_warning
	clr	buzer.buz_long
	ret
buz_long_warning:
	mov	a,buz_s_bak
	mov	buz_s_time,a
	ret

buz_music:
	mov	a,buz_count
	sub	a,beat_count
	sz	c
	jmp	music_beat_end
play_music:
	mov	a,music_count
	add	a,016h
	mov	tblp,a
	tabrdl	music_fre
	mov	a,tblh
	mov	music_loop,a
	mov	a,music_fre
	sub	a,0ffh			;if music_fre =0ffh, then end.
	sz	acc
	jmp	play_m01
	mov	a,BUZOFF		;play music end
	mov	tmrc,a
	clr	music_count
	clr	buz_count
	sdz	music_ct
	ret
	clr	buzer.music
	ret
play_m01:
	mov	a,music_fre
	add	a,00h
	mov	tblp,a
	tabrdl	acc
	mov	tmr,a
	sz	acc
	jmp	play_m02
	mov	a,BUZOFF		;if =0, stop voice
	jmp	play_m03

play_m02:	
	mov	a,BUZON
play_m03:	
	mov	tmrc,a
	mov	a,MUSIC_BEAT
	mov	beat_count,a
	
beat_loop:	
	sdz	music_loop
	jmp	beat_rl	
	ret
beat_rl:
	rl	beat_count
	jmp	beat_loop	

music_beat_end:
	clr	buz_count
	inc	music_count
	ret
;Tone frequency tab
;
;3rd			4th		5th
;C	130.81	1	261.63	/1	523.25		1046.52		0
;C#	138.59		277.18		554.37		1108.72		1
;D	146.83	2	293.66		587.33		1174.64		2
;D#	155.56		311.13		622.25		1244.52		3
;E	164.81	3	329.63		659.26		1318.52		4
;F	174.61	4	349.23		698.46		1396.92		5
;F#	185.00		369.99		739.99		1479.96		6
;G	196.00	5	392.00		783.99		1568.00		7
;G#	207.65		415.30		830.61		1661.20		8
;A	220.00	6	440.00		880.00		1760.00		9
;A#	233.08		466.16		932.23		1864.64		a
;B	246.94	7	496.48		987.77		1985.92		b
;
	
;	org	300h
;	dc	137,143,150,156,161,167,172,176,181,185,189,193,0,0,0,0
;	dc	196,200,203,206,209,211,214,216,218,220,222,225,0,0,0,0
;	         1       2       3   4       5       6       7
;	dc	226,228,229,231,232,234,235,236,237,238,239,240,0,0,0,0
;	dc	241,242,243,243,244,245,245,246,247,247,248,248

	         
	org	300h
;		    1   2   3 	4   5   6   7          1  2  3  4  5  6  7
	dc	00;,137,150,161,167,176,185,193	;^  0, 1  2, 3  4  5, 6, 7
	dc	   196,203,209,211,216,220,225	;      8, 9, a  b  c  d  e
	dc	   226,229,232,234,236,238,240	;_     f 10 11 12 13 14 15
	dc	   241,243,244,245,246,247,248	;     16,17 18,19,1a,1b,1c 
	
	org	316h
	;dc	20dh,10dh,10ch,20ah,20ch	;music世上只有妈妈好
	;dc	20fh,10dh,10ch,30dh
	;dc	20ah,10ch,10dh,20ch,20ah
	;dc	108h,106h,10ch,10ah,309h
	;dc	209h,109h,10ah,20ch,10ch,10dh
	;dc	20ah,209h,308h
	;dc	20ch,10ch,10ah,109h,108h,106h,108h
	;dc	405h,0ffh
	
	dc	20ch,209h,20ch,20ch,20ch,200h;,200h	;找点空闲
	dc	20ch,208h,209h,209h,208h,200h;,200h	;带点时间
	dc	206h,208h,209h,209h,209h,200h,208h	;领着孩子
	dc	209h,209h,206h,205h,305h,100h		;回家看看
	dc	208h,208h,205h,308h,206h,200h		;妈妈准备了
	dc	208h,209h,10bh,10ah,209h,309h,200h	;一些唠叨
	dc	208h,209h,20ch,30bh,20ah,30ah		;爸爸张罗了
	dc	209h,109h,10ah,1208h,209h,309h,200h	;一桌好饭
	dc	20ch,10ch,10ah,10ah,10ch,209h,200h,100h,20ch	;生活的烦恼跟
	dc	20dh,20ch,109h,10ah,208h,308h,200h	;妈妈说说
	dc	206h,108h,108h,10ah,109h,209h,309h,200h,209h	;工作的事情向
	dc	20ah,209h,10ch,10dh,20ch,30ch,20ch		;爸爸谈谈
	dc	30ch,20ch,20ch,20ch
	dc	200h,200h
	;dc	300h,300h,300h,200h
	dc	30ch,20bh,20ch,20fh,20dh,20dh,20ch		;常回家看看
	dc	20bh,20ch,20fh,20dh,20dh,20ch,30ch		;回家看看
	dc	309h,10ch,10ah,20ch,20dh,20dh,20ch,10ch,10ah	;哪怕帮妈妈刷刷
	dc	10ch,10ah,20ah,20ch,10ah,109h,309h,209h		;筷子洗洗碗
	dc	209h,109h,10ah,209h,20ah,20ch,209h,10ch,10ah,20ch	;老人不图儿女为家
	dc	20ah,20dh,20dh,10ah,109h,209h,109h,107h,306h		;做多大贡献呀
	dc	109h,209h,109h,208h,209h,20bh,10bh,10bh,109h,209h	;一辈子不容易就图个
	dc	20ch,30ch,10fh,10dh,30ch,20ch,200h			;团团园园
	
	dc	30ch,20bh,20ch,20fh,20dh,20dh,20ch		;常回家看看
	dc	20bh,20ch,20fh,20dh,20dh,20ch,30ch		;回家看看
	dc	309h,10ch,10ah,20ch,20dh,20dh,20ch,10ch,10ah	;哪怕帮妈妈刷刷
	dc	10ch,10ah,20ah,20ch,10ah,109h,309h,209h		;筷子洗洗碗
	dc	209h,109h,10ah,209h,20ah,20ch,209h,10ch,10ah,20ch	;老人不图儿女为家
	dc	20ah,20dh,20dh,10ah,109h,209h,109h,107h,306h		;做多大贡献呀
	dc	109h,209h,109h,208h,209h,20bh,10bh,10bh,109h,209h	;一辈子不容易就图个
	;dc	20ch,30ch,10fh,10dh,30ch,20ch				;团团园园
	
	
	dc	20ch,30ch,10fh,10dh,30ch,20ch		;平平安安
	dc	30ch,30ch,300h,300h,0ffh
	
	
;	dc	30dh,20dh,20ch,30ah,30ch	;music世上只有妈妈好
;	dc	30fh,20dh,20ch,40dh
;	dc	30ah,20ch,20dh,30ch,30ah
;	dc	208h,206h,20ch,20ah,409h
;	dc	309h,209h,20ah,30ch,20ch,20dh
;	dc	30ah,309h,408h
;	dc	30ch,20ch,20ah,209h,208h,206h,208h
;	dc	505h,0ffh
	
	
;	dc	26h,15h,23h,25h
;	dc	28h,16h,15h,36h
;	dc	23h,15h,16h,25h,13h,12h
;	dc	11h,16h,15h,13h,32h
;	dc	22h,13h,25h,26h
;	dc	23h,22h,31h
;	dc	25h,13h,12h,11h,16h,11h
;	dc	45h,0ffh
	end


	end

⌨️ 快捷键说明

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