📄 weide_3led.asm
字号:
;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 + -