📄 dc082.asm
字号:
bts1 r_waterkeycnt1.7
jmp watercheck_ret
mov_1 r_waterkeycnt1,01111111b
bclr b_waterkey_err
watercheck_ret:
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
ledkeyscan:
cpjz r_keyvalue,no_key
b0mov a,r_keyvalue
xor a,r_keybuf
b0bts0 fz
jmp have_key
cpjnz r_keybuf,ledkeyscanret
no_key:
clr r_keybyte
mov_2 r_keybuf,r_keyvalue
bts0 b_keylong
jmp ledkeyscanret
clr r_keycnt
jmp ledkeyscanret
have_key:
incms r_keycnt
nop
mov a,#3;7
xor a,r_keycnt
b0bts1 fz
jmp ledkeyscanret
bset b_keyon
ledkeyscanret:
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
read_key:
b0bts0 b_keylong
ret
b0bts1 b_keyon
ret
b0bts0 b_keysame
ret
bclr b_keyon
bset b_keysame
b0mov a,r_keyvalue
xor a,#6
b0bts0 fz
jmp deal_keyonoff
b0mov a,r_keyvalue
xor a,#3
b0bts0 fz
jmp deal_keyhum ;关机可开启加湿
bts1 b_run
ret
b0mov a,r_keyvalue
xor a,#5
b0bts0 fz
jmp deal_keymode
b0mov a,r_keyvalue
xor a,#1
b0bts0 fz
jmp deal_keyflz
b0mov a,r_keyvalue
xor a,#4
b0bts0 fz
jmp deal_keytime
b0mov a,r_keyvalue
xor a,#2
b0bts0 fz
jmp deal_keysw
ret
;---------------------------------------------------------------------
deal_keyonoff:
bts0 b_run
jmp deal_speed
clr r_zcf_time
mov_1 r_zcfdispay_cnt,0
bset b_run
bclr b_settime
mov_1 r_speedbyte1,1;1节
mov_1 r_speedbyte_buf,1;显示速度
clr r_swbyte
clr r_lsw_time
clr r_rsw_time ;开机不摇头
bclr b_ion
mov_1 r_modebyte,1 ;普通风
mov_1 r_speedbyte2,1;抵挡
cpjz r_ad_error,keybuz
b0bclr p_backled;有键按下亮背光
mov_1 r_backled_cnt,60;亮背光时间为60S
mov_1 r_buz_count,5
mov_1 r_buz_time,20
mov_1 r_buz_timecnt,125
ret
;-----------------------------------------------------
deal_speed:
bts1 b_zcf
jmp deal_speed30
b0mov a,r_speedbyte1
xor a,#9
b0bts0 fz
jmp deal_speed10
incms r_speedbyte1
nop
mov_2 r_speedbyte_buf,r_speedbyte1
jmp deal_speed20
deal_speed10:
mov_1 r_speedbyte1,1
mov_1 r_speedbyte2,1
mov_1 r_speedbyte_buf,1
jmp keybuz
deal_speed20:
b0mov a,r_speedbyte1
sub a,#4
b0bts1 fc
jmp keybuz ;<4
b0mov a,r_speedbyte1
sub a,#7
mov a,#4 ;>=7高档
b0bts1 fc
mov a,#2 ;3<speedbyte1<7中档
b0mov r_speedbyte2,a
jmp keybuz
deal_speed30:
b0bclr fc ;自然、睡眠风时按SPEED键为高中低自然、睡眠风
rlcm r_speedbyte2
bts1 b_nospeed
jmp deal_keymode10
mov_1 r_speedbyte2,1
jmp deal_keymode10
;--------------------------------------------------------
deal_keysw:
clr r_time_1s
;bset b_start_sw ;按摇头键置开始往左摇头标志
mov_1 r_swdelay,1 ;按下摇头键1秒后开始摇头
clr r_rsw_time
cpjnz r_swbyte,deal_sw10
mov_1 r_swbyte,1
mov_1 r_lsw_time,8;4 ;按摇头后先左摇头4秒90度
mov_2 r_lsw_timebuf,r_lsw_time
jmp keybuz
deal_sw10:
b0bclr fc
rlcm r_swbyte
bts1 b_nosw
jmp deal_sw20
clr r_lsw_time ;取消摇头
clr r_swbyte
jmp keybuz
deal_sw20:
mov a,#16;8 ;16秒180
bts1 b_sw180
mov a,#30;15 ;30秒360
b0mov r_lsw_time,a
b0mov r_lsw_timebuf,a
jmp keybuz
;-----------------------------------------------------------
deal_keytime:
bset b_settime
cpjz r_settime,deal_keytime40;r_settime显示上一次时间
b0mov a,r_timebyte2
cmprs a,#18
jmp deal_keytime10
clr r_timebyte1
clr r_timebyte2
jmp deal_keytime30
deal_keytime10:
b0mov a,r_timebyte1
cmprs a,#0
jmp deal_keytime20
mov_1 r_timebyte1,30
jmp deal_keytime30
deal_keytime20:
incms r_timebyte2
nop
clr r_timebyte1
deal_keytime30:
mov_1 r_settime,4
mov_2 r_timebyte1_buf,r_timebyte1
mov_2 r_timebyte2_buf,r_timebyte2
jmp deal_keytime50
deal_keytime40:
mov_1 r_settime,4
mov_2 r_timebyte1,r_timebyte1_buf
mov_2 r_timebyte2,r_timebyte2_buf
deal_keytime50:
clr r_flashcnt;闪烁时间寄存器
clr r_time_sec
clr r_time_min
clr r_time_2s
jmp keybuz
;-----------------------------------------------------------------
deal_keyhum:
mov a,#00000100b
xor r_sysflag,a
bts0 b_waterkey_err
clr r_flashcnt1
bts1 b_hum
bts0 b_run
jmp keybuz
b0bset p_backled
jmp keybuz10
;---------------------------------------------------------
deal_keyflz:
mov a,#00000010b
xor r_sysflag,a
jmp keybuz
;---------------------------------------------------
deal_keymode:
b0bclr fc
rlcm r_modebyte
bts1 b_nomode
jmp deal_keymode10
mov_1 r_modebyte,1
mov a,#0
bts0 b_lowspeed
mov a,#3
bts0 b_midspeed
mov a,#6
bts0 b_higspeed
mov a,#9
nop
b0mov r_speedbyte1,a
b0mov r_speedbyte_buf,a
jmp keybuz
deal_keymode10:
mov_1 r_BreezeByte,1
clr r_BreezeByte1
mov a,#c_time5s;高速下先中档运行5s
bts0 b_higspeed
mov r_timer_fanrun,a
bts0 b_higspeed
jmp deal_keymode20
mov a,#c_time1s;中速先运行1s
bts0 b_midspeed
mov r_timer_fanrun,a
bts0 b_midspeed
jmp deal_keymode20
mov a,#c_time4s;低速先运行4s
mov r_timer_fanrun,a
deal_keymode20:
bts1 b_smf
jmp deal_modekey40
deal_modekey60:
clr r_Time30MinCnt;睡眠风先清运行30分钟寄存器
;bclr b_time_60s
clr r_time_60s
bts0 b_lowspeed
jmp deal_modekey40 ;低速睡眠风
bts0 b_midspeed
jmp deal_modekey50 ;中速睡眠风
bts1 b_higspeed
jmp deal_modekey_end
mov a,#11110000b
and r_Usertrigger,a
mov a,#00000010b ;高速睡眠风
or r_Usertrigger,a
jmp deal_modekey_end
deal_modekey50:
mov a,#11110001b
and r_Usertrigger,a
jmp deal_modekey_end
deal_modekey40:
mov a,#11110000b ;低速睡眠风为低档自然风
and r_Usertrigger,a
deal_modekey_end:
jmp keybuz
keybuz:
b0bclr p_backled;有键按下亮背光
mov_1 r_backled_cnt,30;亮背光时间为60S
keybuz10:
bts0 b_keylong1
ret
bts0 b_keylong
ret
mov_1 r_buz_time,c_buz_short
ret
zero_deal:
b0mov y,#tabel_stoptime$m
b0mov z,#tabel_stoptime$l
b0mov a,r_speedbyte1
b0add z,a
movc
nop
b0mov r_timezero_buf,a
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
read_keylong:
mov a,r_keycnt
sub a,#50;135 ;1.5s长按
b0bts1 fc
jmp read_keylongret
mov a,r_keyvalue
xor a,#4
b0bts1 fz
jmp read_keylong10
bset b_keylong
mov_1 r_keycnt,40;110
jmp deal_keytime
read_keylong10:
mov a,r_keycnt
sub a,#94;250 ;3s长按
b0bts1 fc
jmp read_keylongret
mov a,r_keyvalue
xor a,#6
b0bts1 fz
jmp read_keylongret
bset b_keylong
mov_1 r_keycnt,95;251
read_keylong20:
bclr b_run ;关机
bclr b_hum ;关加湿
b0bset p_backled
b0mov a,r_speedbyte1
sub a,#7 ;速度是否≥7节
b0bts1 fc
jmp read_keylong30
bset b_offdelay
jmp read_keylongret
read_keylong30:
clr r_speedbyte1;小于7直接关机
read_keylongret:
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
ad_deal:
;b0bset fadenb
;call dealy100us
;mov_1 p4con,03h
;mov_1 adr,01010000b
mov_1 adm,10010001b ;通道1
;b0bset adm.0
clr r_keyvalue
nop
nop
nop
b0bset fads
ad_wait00:
b0bts1 feoc
jmp ad_wait00
b0bclr fadenb
b0mov a,adb
b0mov r_keyad_buf,a
sub a,#240
b0bts0 fc
jmp ad_dealend ;ad值大于240无按键按下
check_key:
b0mov a,r_keyvalue
sub a,#6
b0bts0 fc
jmp ad_dealkey10;查6次以后还未查到退出
incms r_keyvalue
nop
b0mov y,#table_key$m
b0mov z,#table_key$l
b0mov a,r_keyvalue
b0add z,a
nop
movc
sub a,r_keyad_buf
b0bts1 fc
jmp check_key
jmp ad_dealend
ad_dealkey10:
clr r_keyvalue
ad_dealend:
ret
;---------------------------------------------------------
ad_temp:
b0bset fadenb
call dealy100us
mov_1 p4con,03h
mov_1 adr,01010000b
mov_1 adm,90h ;通道0温度
nop
nop
nop
b0bset fads
ad_wait:
b0bts1 feoc ;To skip,if end of converting=1
jmp ad_wait
b0bclr fadenb
b0mov a,adb
add r_ad_buf_low,a
mov a,#0
adc r_ad_buf_hig,a
incms r_adc_sp ;加256次AD值在r_ad_buf_hig
ret
b0mov a,r_ad_buf_hig
sub a,#5
b0mov r_ad_buf_hig,a;误差
sub a,#245
b0bts1 fc
jmp ad_deal10
bts0 b_offerr
jmp ad_deal_ret
bset b_offerr
ad_buz:
bts1 b_run
jmp ad_deal_ret
mov_1 r_buz_count,5
mov_1 r_buz_time,20
mov_1 r_buz_timecnt,125
jmp ad_deal_ret
ad_deal10:
b0mov a,r_ad_buf_hig
sub a,#10
b0bts0 fc
jmp ad_deal20
bts0 b_openerr
jmp ad_deal_ret
bset b_openerr
jmp ad_buz
ad_deal20:
clr r_ad_error
bts0 b_f
jmp ad_deal40
b0mov a,r_ad_buf_hig
sub a,#55 ;------------
b0bts0 fc
jmp ad_deal30
mov_1 r_adtemp,15
jmp ad_deal_ret
ad_deal30:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -