📄 nt02.asm
字号:
cmp #52h
beq r_c_high_mode_25
cmp #58h
beq r_c_low_mode_26
cmp #59h
beq r_c_mid_mode_26
cmp #5ah
beq r_c_high_mode_26
cmp #60h
beq r_c_low_mode_27
cmp #61h
beq r_c_mid_mode_27
cmp #62h
beq r_c_high_mode_27
cmp #68h
beq r_c_low_mode_28
cmp #69h
beq r_c_mid_mode_28
cmp #6ah
beq r_c_high_mode_28
cmp #70h
beq r_c_low_mode_29
cmp #71h
beq r_c_mid_mode_29
cmp #72h
beq r_c_high_mode_29
cmp #78h
beq r_c_low_mode_30
cmp #79h
beq r_c_mid_mode_30
cmp #7ah
beq r_c_high_mode_30
jmp remote_action_ret
;-----------------------------------------------;
r_c_low_mode_25:
jsr c_25_com
jmp r_cold_low_com
r_c_mid_mode_25:
jsr c_25_com
jmp r_cold_mid_com
r_c_high_mode_25:
jsr c_25_com
jmp r_cold_high_com
c_25_com:
lda powerflag
and #t_set_rang_f
bne c_25_com0
jsr mode_26
rts
c_25_com0:
jsr mode_25
rts
;-----------------------------------------------;
r_c_low_mode_26:
jsr mode_26
jmp r_cold_low_com
r_c_mid_mode_26:
jsr mode_26
jmp r_cold_mid_com
r_c_high_mode_26:
jsr mode_26
jmp r_cold_high_com
;-----------------------------------------------;
r_c_low_mode_27:
jsr mode_27
jmp r_cold_low_com
r_c_mid_mode_27:
jsr mode_27
jmp r_cold_mid_com
r_c_high_mode_27:
jsr mode_27
jmp r_cold_high_com
;-----------------------------------------------;
r_c_low_mode_28:
jsr mode_28
jmp r_cold_low_com
r_c_mid_mode_28:
jsr mode_28
jmp r_cold_mid_com
r_c_high_mode_28:
jsr mode_28
jmp r_cold_high_com
;-----------------------------------------------;
r_c_low_mode_29:
jsr mode_29
jmp r_cold_low_com
r_c_mid_mode_29:
jsr mode_29
jmp r_cold_mid_com
r_c_high_mode_29:
jsr mode_29
jmp r_cold_high_com
;-----------------------------------------------;
r_c_low_mode_30:
jsr mode_30
jmp r_cold_low_com
r_c_mid_mode_30:
jsr mode_30
jmp r_cold_mid_com
r_c_high_mode_30:
jsr mode_30
jmp r_cold_high_com
;-----------------------------------------------;
r_cold_low_com:
lda #cold_mode
sta actionmode
lda #speed_motor_l
sta speedmode
rts
r_cold_mid_com:
lda #cold_mode
sta actionmode
lda #speed_motor_m
sta speedmode
rts
r_cold_high_com:
lda #cold_mode
sta actionmode
lda #speed_motor_h
sta speedmode
rts
remote_action_ret:
rts
;-----------------------------------------------;
p_off_time_s:
lda #r_off_t_set
sta clock_setting_m
lda #8 ; base time 640msc
sta clock_setting_t ; off time display 5 sec
lda clk_min
sta off_min
lda clk_hour
sta off_hour
lda r_data1
cmp #1eh
beq hour_1_off
cmp #3ch
beq hour_2_off
cmp #5ah
beq hour_3_off
cmp #78h
beq hour_4_off
cmp #96h
beq hour_5_offl
cmp #b4h
beq hour_6_offl
cmp #d2h
beq hour_7_offl
cmp #00h
beq hour_offl
rts
hour_5_offl:
jmp hour_5_off
hour_6_offl:
jmp hour_6_off
hour_7_offl:
jmp hour_7_off
hour_offl:
jmp hour_off
hour_1_off:
lda off_hour
cmp #23 ; check if =23 then clear
bne hour_1_off0
lda #00
sta off_hour
rts
hour_1_off0:
inc off_hour
rts
hour_2_off:
lda off_hour
cmp #22 ; check if <22
bne hour_2_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #2
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_2_off0:
inc off_hour
inc off_hour
rts
hour_3_off:
lda off_hour
cmp #21 ; check if <21
bne hour_3_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #3
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_3_off0:
inc off_hour
inc off_hour
inc off_hour
rts
hour_4_off:
lda off_hour
cmp #20 ; check if <20
bne hour_4_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #4
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_4_off0:
inc off_hour
inc off_hour
inc off_hour
inc off_hour
rts
hour_5_off:
lda off_hour
cmp #19 ; check if <19
bne hour_5_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #5
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_5_off0:
clc
lda #5
adc off_hour
sta off_hour
rts
hour_6_off:
lda off_hour
cmp #18 ; check if <18
bne hour_6_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #6
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_6_off0:
clc
lda #6
adc off_hour
sta off_hour
rts
hour_7_off:
lda off_hour
cmp #17 ; check if <17
bne hour_7_off0
sec
lda #24
sbc off_hour
sta off_hour
lda #7
sta temp
lda off_hour
sec
sbc temp
sta off_hour
rts
hour_7_off0:
clc
lda #7
adc off_hour
sta off_hour
rts
hour_off:
lda #00h
sta off_min
lda #00h
sta off_hour
rts
;***********************************************;
;*** key scan form AD convert ***;
;***********************************************;
key_scan:
;------check power key
lda powerflag
and #demo_dis_f
bne key_scan_ret0 ; when demo then key no action
lda remote_f
and #rem_in_f
bne key_scan_ret0
lda keyflag
and #keyinf
bne key_scan_ret0
lda PB
and #power_key ; check power key press pb2
beq key_scan0 ; if power key press then
lda #10010010b ;
sta rADCC ; setting AD convert channal PA1
nop
nop
nop
nop
nop
nop
nop
nop
lda #11010010b
sta rADCC ; start AD convert
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lda rADCC
and #40h
beq key_scan1
jmp stop_ad_convert ; AD convert fail
key_scan_ret0:
rts
key_scan0:
stz keyval
jmp key_sscan_one ;
key_scan1:
lda rADCH
sta key_ad_h ; save AD convert rsult
jsr stop_ad_convert ; stop AD convert
lda key_ad_h
cmp #f0h
bcs key_scan70
cmp #12h ; simulator if acc> #20h then c=1
bcc key_scan7
cmp #28h ; simulator zgc mode& time val= 20 calc=1eb
bcs key_scan2 ; mode&time val=25h
lda #key_cal_mode ; clock key and mode key
sta keyval ; 20~2ah
jmp key_sscan_one
key_scan2:
cmp #2dh ; simulator
bcc key_scan7
cmp #40h ; simulator zgc clock key val=2d calc=2c9
bcs key_scan3 ; clock key val=34 35
lda #key_clock ; clock key 30~40h
sta keyval
jmp key_sscan_one
key_scan3:
cmp #45h ; simulator
bcc key_scan7
cmp #5eh ; simulator
bcs key_scan4 ;mode val=58 59
lda #key_mode ;mode key 55h~60h
sta keyval
jmp key_sscan_one
key_scan4:
cmp #6ah ; simulator
bcc key_scan7
cmp #85h ; simulator
bcs key_scan5 ; - val=7b
lda #key_down ;down key 75~85h
sta keyval
jmp key_sscan_one
key_scan5:
cmp #90h ; simulator
bcc key_scan7
cmp #aah ; simulator
bcs key_scan6 ; + val=a1 a2
lda #key_up ; up key 95~b0h
sta keyval
jmp key_sscan_one
key_scan6:
cmp #b6h ; simulator
bcc key_scan7
cmp #cfh ; simulator
bcs key_scan7 ; speed val=cb cc
lda #key_speed ; speed key c0h~d8h
sta keyval
jmp key_sscan_one
key_scan7:
cmp #f0h
bcc key_scan8 ; open key
key_scan70:
lda #key_open ; open key
sta keyval
jmp keyopen
key_scan8:
lda #key_error ; error key
sta keyval
jmp keyerror ; A=00h
key_sscan_one:
lda tem_cal_f
and #tem_cal_t_st
bne key_cal
jmp key_recheck
key_cal:
lda tem_cal_t
cmp #8 ; continue press key 0.64msec*8=5.1s
bne key_scan_ret
jmp kinok
key_recheck:
lda keyflag
and #keyconf ; continue key
bne key_continue
lda keyflag
and #keyopenf ; check open key
bne key_scan_ret
lda keyval
cmp oldkey
bne key_value_reload
lda keycount
cmp #02h
bne kinok1
stz keycount
kinok:
lda #keyinf
ora keyflag
sta keyflag ; setting keyscan ok flag
lda oldkey
sta keyval ; back up key value
lda #keyopenf
ora keyflag
sta keyflag ; setting keyscan ok no open key flag
rts
kinok1:
cmp #04h
bne kinok2
rts
kinok2:
inc keycount
rts
key_value_reload:
lda keyval
sta oldkey
inc keycount
rts
key_continue:
lda keyflag
and #keycon100f ; 100msec increa flag
beq key_continue0
lda t100msec ; if keycon100f=1 then increa
cmp #00h
bne key_scan_ret
jmp kinok
key_continue0:
lda keyflag
and #keycon800f ; 800msec
beq key_scan_ret
lda t800msec ; if keycon800f=1 then start increa
cmp #00h
bne key_scan_ret
jmp kinok
key_scan_ret:
rts
keyopen:
stz t800msec
stz t100msec
stz keycount
lda #fdh
sta oldkey
lda #00000001b
and keyflag ; clear keyinf,keyconf,keyerr,openkeyf keycon800f,keycon100f
sta keyflag ;
lda #tem_cal_t_st_n
and tem_cal_f
sta tem_cal_f
stz tem_cal_t
rts
keyerror:
lda #keyerrf
ora keyflag
and #keyinf_n
sta keyflag
rts
key_function_ret1:
rts
;***********************************************;
;*** Key function ***;
;***********************************************;
key_function:
lda remote_f
and #rem_in_f
bne key_function_ret1
lda keyflag
and #keyinf
beq key_function_ret1 ; if keyinf=0,no action
lda keyflag
and #keyinf_n
sta keyflag ; clear keyinf
lda keyval ; when power off state then check key value
cmp #key_power ;
beq bkjmp
lda powerflag
and #power_on_f
bne bkjmp ; when power on state
lda keyval ; when power off state then check key value
cmp #key_clock ;
beq bkjmp ; clock setting
lda clock_setting_m
cmp #00h
beq key_function_ret1
lda keyval ; when power off state check value for setting clock
cmp #key_up ;
beq bkjmp ;
lda keyval ; when power off state check value for setting clock
cmp #key_down ;
bne key_function_ret1 ; return
bkjmp:
lda #8 ;when key press then back light on
sta back_light_t ; setting back light 5sec
stz clock_setting_t
lda keyval
cmp #key_up ;
beq k_up
akjmp:
lda keyval
cmp #key_down
beq k_down
cmp #key_cal_mode
beq keyjmp
jmp keyjmp_0
k_down:
lda keyflag
and #keycon800f ;if keycon800f then delay 800msec
bne k_down1
jsr contset0
lda #keydownf
ora keyflag ; setting down key flag
sta keyflag
jmp k_down2
k_down1:
lda keyflag
and #keydownf
beq k_down3
jsr contset1
k_down2:
jmp concom
k_down3:
jsr contset0
lda keyflag
and #keycon100f_n
sta keyflag
jmp k_down2
k_up:
lda keyflag
and #keycon800f
bne k_up1
jsr contset0
lda #keyupf
ora keyflag ; setting up key flag
sta keyflag
jmp concom
k_up1:
jsr contset1
jmp concom
k_up2:
jsr contset0
lda keyflag
and #keycon100f_n
sta keyflag
jmp concom
contset0:
lda #80 ;delay 800msec
sta t800msec
lda #keycon800f ;
ora keyflag
sta keyflag
rts
contset1:
lda #20 ; delay 200msec
sta t100msec
lda #keycon100f ;
ora keyflag
sta keyflag
rts
concom:
lda #keyconf ; continue key flag
ora keyflag
sta keyflag
jmp keyjmp
keyjmp_0:
jsr buzzer_on ; buzzer on
keyjmp:
lda keyval
cmp #0fh
bcs key_value_max
asl A ;a<-a*2
tax ;x<-a
lda key_table,x ;a<-($key_table+x)
sta r_table_l
inx
lda key_table,x
sta r_table_h
jmp (r_table_l)
key_value_max:
jmp reset
;***********************************************
; power key press
;***********************************************
;----------
power_k: ;power key on/off
lda powerflag
and #power_on_f
bne power_off_k ;
power_on_k:
lda #power_on_f
ora powerflag
sta powerflag
lda #5
sta h_motor_t ; power on must be setting high motor 3sec
lda #00h
sta on_hour ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -