?? nt02.asm
字號:
sta on_min ; auto power on one time availability
jsr lcd_on
jmp power_k_com
power_off_k:
lda #power_on_f_n
and powerflag
sta powerflag
stz h_motor_t ; clear high motor
lda #00h
sta off_hour ;
sta off_min ; auto power off one time availability
jsr lcd_off
stz back_light_t ;when key press then back light off
power_k_com:
stz clock_setting_m ;clear clock setting display flag
stz dispflag ;clear clock setting display flag
stz auto_mode ; realy auto mode contorl
stz really_act_3min
stz really_act_20sec
rts
;***********************************************
; mode key
;***********************************************
;-----------
;0=speed ;1=cold; 2= hot ; 3= sleep
mode_k: ;air control action mode
stz really_act_3min
stz auto_mode
lda speedmode
and #0fh
cmp #speed_motor_aut
beq mode_k2
mode_k0:
inc actionmode
lda actionmode
cmp #cold_mode
beq mode_k01
bcs mode_k1
rts
mode_k01:
lda powerflag
and #t_set_rang_f
bne mode_k_ret
lda t_setting_m
cmp #26
bcs mode_k_ret
lda #26
sta t_setting_m
rts
mode_k1:
cmp #hot_mode
beq mode_k_ret
lda #speed_mode
sta actionmode
rts
mode_k2:
lda actionmode
cmp #cold_mode
bne mode_k3
lda #hot_mode
sta actionmode
rts
mode_k3:
lda #cold_mode
sta actionmode
jmp mode_k01
mode_k_ret:
rts
;***********************************************
; speed key
;***********************************************
;-----------
speed_k: ;motor control
stz really_act_3min
stz auto_mode
jsr buzzer_on
lda actionmode
cmp #speed_mode
beq nornal_speed_k ; actino mode =speed mode
lda speedmode
cmp #speed_motor_aut
bcs speed_k1
beq speed_k1
speed_k0:
inc speedmode
rts
speed_k1:
stz speedmode
rts
nornal_speed_k:
lda speedmode
cmp #speed_motor_h
bcs speed_k1
beq speed_k1
inc speedmode
rts
speed_k_ret:
rts
;***********************************************
; clock key press
;***********************************************
; =00h idel
; =01h clk hour setting mode ;02h clk min setting mode
; =03h power on hour setting mode ;04h power on min setting mode
; =05h power off hour setting mode ;06h power off min setting mode
; =07h temperature calibration mode
;-----------------------------------------------
clock_k:
lda clock_setting_m
cmp #06h
bne clock_k0
clock_clear:
stz clock_setting_m
lda powerflag
and #power_on_f
bne clock_clear_ret
jsr lcd_off ; settin clock setting finish then set LCD off
stz back_light_t ; back light turn off
stz clock_setting_t ; clear clock setting dealy 5 sec
clock_clear_ret:
rts
clock_k0:
cmp #07h
beq clock_clear
cmp #08h
beq clock_clear
inc clock_setting_m
lda clock_setting_m
cmp #clock_hour_set
beq clock_k1
jmp clock_k2
clock_k1:
lda powerflag
and #power_on_f
bne clock_k4
stz disset
jsr dis_ram_clr
jsr lcd_on ; setting clock time when turn off then set LCD on
lda #8 ; base time 640msc
sta clock_setting_t ; display flash 5 sec
rts
clock_k2:
lda powerflag
and #power_on_f
beq clock_k4
lda clock_setting_m ; can't setting power on time when power on
cmp #on_hour_set
bne clock_k3
lda #off_hour_set
sta clock_setting_m
jmp clock_k4
clock_k3:
lda clock_setting_m
cmp #on_min_set
bne clock_k4
lda #off_hour_set
sta clock_setting_m
clock_k4:
lda #8 ; base time 640msc
sta clock_setting_t ; display flash 5 sec
rts
;***********************************************
; up key press
;***********************************************
;-----------
up_k:
lda clock_setting_m
cmp #00h
beq up_k1_0 ; temperature setting
lda #8 ; base time 640msc
sta clock_setting_t ; flash display 5 sec
lda clock_setting_m
cmp #clock_hour_set
beq up_clk_hour_s ; clock hour setting
cmp #clock_min_set
beq up_clk_min_s ; clock minute setting
cmp #on_hour_set
beq up_power_on_hour_s ; power on hour setting
cmp #on_min_set
beq up_power_on_min_s ; power on minute setting
cmp #off_hour_set
beq up_power_off_hour_s ; power off hour setting
cmp #off_min_set
beq up_power_off_min_s ; power off minute setting
cmp #tem_cal_set
beq up_tem_cal_s ; temperature calibration setting
jmp clock_clear
up_k1_0:
jmp up_k1
;----------------relly clcok increa setting
up_clk_hour_s:
lda clk_hour
cmp #23 ; check if =23 then clear
bne up_clk_hour_s0
; stz clk_hour
rts
up_clk_hour_s0:
inc clk_hour
jsr buzzer_on ; buzzer on
rts
up_clk_min_s:
lda clk_min
cmp #59 ; check if =59 then clear
bne up_clk_min_s0
; stz clk_min
rts
up_clk_min_s0:
inc clk_min
jsr buzzer_on ; buzzer on
rts
;-----------------power on time increa setting
up_power_on_hour_s:
lda on_hour
cmp #23 ; check if =23 then clear
bne up_power_on_hour_s0
; stz off_hour
rts
up_power_on_hour_s0:
inc on_hour
jsr buzzer_on ; buzzer on
rts
up_power_on_min_s:
lda on_min
cmp #59 ; check if =59 then clear
bne up_power_on_min_s0
; stz on_min
rts
up_power_on_min_s0:
inc on_min
jsr buzzer_on ; buzzer on
rts
;----------------power off time increa setting
up_power_off_hour_s:
lda off_hour
cmp #23 ; check if =23 then clear
bne up_power_off_hour_s0
; stz off_hour
rts
up_power_off_hour_s0:
inc off_hour
jsr buzzer_on ; buzzer on
rts
up_power_off_min_s:
lda off_min
cmp #59 ; check if =59 then clear
bne up_power_off_min_s0
; stz off_min
rts
up_power_off_min_s0:
inc off_min
jsr buzzer_on ; buzzer on
rts
;----------------------; temperature calibration setting
up_tem_cal_s:
lda com_hour
cmp #60
beq up_tem_cal_s_0
lda com_min
cmp #9
bne up_tem_cal_s_1
stz com_min
lda com_hour
cmp #60
bne up_tem_cal_s_2
up_tem_cal_s_0
stz com_min
rts
up_tem_cal_s_1:
inc com_min
jmp up_tem_cal_s_3
up_tem_cal_s_2:
inc com_hour
up_tem_cal_s_3:
jsr temp_warp ; tempereture warp calc
jsr buzzer_on ; buzzer on
up_tem_cal_s_ret:
rts
;-----------------temperature increa setting mode
up_k1:
stz auto_mode
stz really_act_3min
stz really_act_20sec
lda t_setting_m ; temperature setting mode ,temperature range max 40 ℃
cmp #40 ;
beq up_k_ret
inc t_setting_m
jsr buzzer_on ; buzzer on
jmp up_k_ret
up_k_ret:
rts
;***********************************************
; down key
;***********************************************
;-----------
down_k:
lda clock_setting_m
cmp #00h
beq down_k1_0 ; temperature setting
lda #8 ; base time 640msc
sta clock_setting_t ; flash display 5 sec
lda clock_setting_m
cmp #clock_hour_set
beq down_clk_hour_s ; clock hour setting
cmp #clock_min_set
beq down_clk_min_s ; clock minute setting
cmp #on_hour_set
beq down_power_on_hour_s ; power on hour setting
cmp #on_min_set
beq down_power_on_min_s ; power on minute setting
cmp #off_hour_set
beq down_power_off_hour_s ; power off hour setting
cmp #off_min_set
beq down_power_off_min_s ; power off minute setting
cmp #tem_cal_set
beq down_tem_cal_s ; temperature calibration setting
jmp clock_clear
down_k1_0:
jmp down_k1
;----------------relly clcok dec setting
down_clk_hour_s:
lda clk_hour
cmp #00 ; check if hour=00 then setting 23
bne down_clk_hour_s0
; lda #23
; sta clk_hour
rts
down_clk_hour_s0:
dec clk_hour
jsr buzzer_on ; buzzer on
rts
down_clk_min_s:
lda clk_min
cmp #00 ; check if min=00 then setting 59
bne down_clk_min_s0
; lda #59
; sta clk_min
rts
down_clk_min_s0:
dec clk_min
jsr buzzer_on ; buzzer on
rts
;-----------------power on time dec setting
down_power_on_hour_s:
lda off_hour
cmp #00 ; check if hour=00 then setting 23
bne down_power_on_hour_s0
; lda #23
; sta off_hour
rts
down_power_on_hour_s0:
dec off_hour
jsr buzzer_on ; buzzer on
rts
down_power_on_min_s:
lda off_min
cmp #00 ; check if min=00 then setting 59
bne down_power_on_min_s0
; lda #59
; sta off_min
rts
down_power_on_min_s0:
dec off_min
jsr buzzer_on ; buzzer on
rts
;----------------power off time dec setting
down_power_off_hour_s:
lda off_hour
cmp #00 ; check if hour=00 then setting 23
bne down_power_off_hour_s0
; lda #59
; sta off_hour
rts
down_power_off_hour_s0:
dec off_hour
jsr buzzer_on ; buzzer on
rts
down_power_off_min_s:
lda off_min
cmp #00 ; check if min=00 then setting 59
bne down_power_off_min_s0
; lda #59
; sta off_min
rts
down_power_off_min_s0:
dec off_min
jsr buzzer_on ; buzzer on
rts
;----------------temperature calibration setting
down_tem_cal_s:
lda com_min
cmp #00
bne down_tem_cal_s_0
lda com_hour
cmp #00
bne down_tem_cal_s_1
rts
down_tem_cal_s_0:
dec com_min
jmp down_tem_cal_s_2
down_tem_cal_s_1:
lda #9
sta com_min
dec com_hour
down_tem_cal_s_2:
jsr temp_warp ; temperature warp calc
jsr buzzer_on ; buzzer on
down_tem_cal_s_ret:
rts
;-----------------temperature dec setting mode
down_k1: ; action temperature setting
stz auto_mode
stz really_act_3min
stz really_act_20sec
lda powerflag
and #t_set_rang_f
beq down_k3
down_k2:
lda t_setting_m ; t_set_rang_f=1 cold mode range 10~40 ℃,hot mode range 10~40 ℃
cmp #10
beq down_k_ret
dec t_setting_m
jsr buzzer_on ; buzzer on
jmp down_k_ret
down_k3:
lda actionmode ;t_set_rang_f=0 cold mode range 26~40 ℃,hot mode range 10~40 ℃
cmp #cold_mode ;
bne down_k2 ; not in cold mode
down_k4:
lda t_setting_m
cmp #26 ; 26℃
beq down_k_ret
cmp #10
beq down_k_ret
dec t_setting_m
jsr buzzer_on ; buzzer on
down_k_ret:
rts
;***********************************************
; clock&mode key
;***********************************************
;----------- calibration temperature
tem_cal_mode_k:
lda #10 ;when key press then back light on
sta back_light_t ; setting back light 6.4sec
lda #8 ; base time 640msc
sta clock_setting_t ; flash display 5 sec
jsr buzzer_on
lda tem_cal_f
and #tem_cal_t_st
beq tem_cal_mode_k_st
lda #tem_cal_t_st_n
and tem_cal_f
sta tem_cal_f
lda #07h
sta clock_setting_m
stz dispflag
lda temperature_h
sta com_hour
lda temperature_l
sta com_min
tem_cal_mode_k_ret:
rts
tem_cal_mode_k_st:
lda #tem_cal_t_st
ora tem_cal_f
sta tem_cal_f
stz tem_cal_t
stz clock_setting_m
stz dispflag
rts
;------------temperature warp value calc
temp_warp:
lda com_hour
cmp temp_check_h
beq temp_w_1 ; if com_hour=temperature_h
bcs temp_w_2 ; if com_hour>temperature_h
lda temp_check_h ; if com_hour<temperature_h
sta temp
lda temp_check_l
cmp com_min
bcs temp_w_0
dec temp ; if com_hour<temperature_h ,and com_min<temperature_l
lda #10
clc
adc temp_check_l
temp_w_0:
sec ; if com_hour<temperature_h ,and com_min>temperature_l
sbc com_min
sta tem_cal_l
lda temp
sec
sbc com_hour
sta tem_cal_h
jmp low_com
temp_w_1: ; if com_hour=temperature_h
stz tem_cal_h
lda com_min
cmp temp_check_l
beq tem_cal_l_zero
bcs temp_w_1_0 ;
lda temp_check_l ;if com_hour=temperature_h ,and com_min<temperature_l
sec
sbc com_min
sta tem_cal_l
jmp low_com
temp_w_1_0: ;if com_hour=temperature_h ,and com_min>temperature_l
lda com_min
sec
sbc temp_check_l
sta tem_cal_l
jmp high_com
tem_cal_l_zero:
stz tem_cal_l
rts
temp_w_2: ;if com_hour>temperature_h
lda com_hour
sta temp
lda com_min
cmp temp_check_l
bcs temp_w_2_0
dec temp ;if com_hour>temperature_h ,and com_min<temperature_l
lda #10
clc
adc com_min
temp_w_2_0: ;if com_hour>temperature_h ,and com_min>temperature_l
sec
sbc temp_check_l
sta tem_cal_l
lda temp
sec
sbc temp_check_h
sta tem_cal_h
jmp high_com
low_com:
lda #tem_cal_h_f_n
and tem_cal_f ; if on the low side, then clear flag
sta tem_cal_f
rts
high_com:
lda #tem_cal_h_f
ora tem_cal_f ; if on the high side, then setting flag
sta tem_cal_f
rts
;***********************************************
;***********************************************
key_function_ret:
key_natct:
rts
key_table:
dw power_k
dw clock_k
dw mode_k
dw speed_k
dw up_k
dw down_k
dw tem_cal_mode_k
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
dw key_natct
jmp reset
;///////////////////////////////////////////////;
; ;
; lcd display ;
; ;
;///////////////////////////////////////////////;
lcd_display:
lda powerflag
and #demo_dis_f
bne demo_dis ; turn on display all segement
lda powerflag
and #power_on_f
beq clk_set_dis ; clock setting only display clock setting segment when turn off
n_display:
jsr mode_dis
jsr level_dis
jsr room_tem_dis
jsr setting_tem_dis
jsr clock_dis
lda clock_setting_t
cmp #00h
bne lcd_display_ret
lda dispflag
and #clk_set_end_f
beq clk_set_dis_0
rts
clk_set_dis:
jsr clock_dis
lda clock_setting_t
cmp #00h
bne lcd_display_ret
lda dispflag
and #clk_set_end_f
bne lcd_display_ret
jsr lcd_off
rts
clk_set_dis_0:
stz clock_setting_m
lda #hour_flash_f_n
and dispflag
sta dispflag
lda #min_flash_f
and dispflag
sta dispflag ; clear clock setting display flag
lda #clk_set_end_f ; setting end delay display
ora dispflag
sta dispflag
lcd_display_ret:
rts
;-------------power on display
demo_dis:
lda back_light_t
cmp #00h
bne power_on_dis_ret
lda #demo_dis_f_n
and powerflag
sta powerflag
lda #00h
sta disset
jsr dis_ram_clr
jsr lcd_off
power_on_dis_ret:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -