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

📄 nt02.asm

📁 空调控制器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		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 + -