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

📄 nt02.asm

📁 空调控制器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		and	#motor_l_n
		ora	#buzzsr_sw
		sta	PC
		rts
		
p_on_op_action0:

		lda	actionmode
		cmp	#cold_mode
		beq	rel_cold_mode_0
		cmp	#hot_mode
		beq	rel_hot_mode_0

		jmp	rel_speed_mode
rel_cold_mode_0:
		jmp	rel_cold_mode
rel_hot_mode_0:
		jmp	rel_hot_mode
p_on_op_action1:
		jmp	power_off_output_action
		
;-----------------------------------------------

rel_speed_mode:	
		stz	auto_mode
		stz	really_act_3min
		stz	really_act_20sec
		
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA
rel_speed_mode_0:		
		lda	speedmode
		cmp	#speed_motor_h
		beq	rel_motor_h_on
		cmp	#speed_motor_m
		beq	rel_motor_m_on
		cmp	#speed_motor_l
		beq	rel_motor_l_on
		rts
rel_motor_l_on:
		lda	PA
		and	#motor_h_n
		sta	PA

		lda	PC
		and	#motor_m_n
		ora	#motor_l
		ora	#buzzsr_sw
		sta	PC
		rts
rel_motor_m_on:	
		lda	PA
		and	#motor_h_n
		sta	PA

		lda	PC
		and	#motor_l_n
		ora	#motor_m
		ora	#buzzsr_sw
		sta	PC
		rts
rel_motor_h_on:	
		lda	PA
		ora	#motor_h
		sta	PA

		lda	PC
		and	#motor_m_n
		and	#motor_l_n
		ora	#buzzsr_sw
		sta	PC
		rts

rel_all_output_off:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		and	#motor_h_n
		sta	PA

		lda	PC
		and	#motor_m_n
		and	#motor_l_n
		ora	#buzzsr_sw
		sta	PC
		rts
really_action_ret:
		rts
;-----------------------------------------------
rel_cold_mode:
		lda	PA
		and	#hot_sw_n		; turn off hot sw
		sta	PA

		lda	speedmode
		cmp	#speed_motor_aut
		beq	rel_cold_mode_au
		
		stz	auto_mode
		stz	really_act_3min
		stz	really_act_20sec

		lda	temperature_h
		cmp	t_setting_m		; if room check temperature > user setting temperature
		beq	cold_speed_com
		bcs	cold_sw_on		; then turn on cold sw
cold_sw_off:
		lda	PA
		and	#cold_sw_n
		sta	PA
		jmp	cold_speed_com
cold_sw_on:				
		lda	PA
		ora	#cold_sw
		sta	PA
cold_speed_com:
		jmp	rel_speed_mode_0
;-----------------------------------------------
rel_cold_mode_au:		
		lda	temperature_h
		cmp	t_setting_m		; 
		beq	cold_equ_speedj		; if room check temperature = user setting temperature 
		bcs	cold_min_speed		; if room check temperature > user setting temperature
		jmp	cold_max_speedj		; if room check temperature < user setting temperature

cold_equ_speedj:
		jmp	cold_equ_speed
cold_max_speedj:
		jmp	cold_max_speed
;-----------------------------------------------;
cold_min_speed:	
		lda	auto_mode
		cmp	#01h
		beq	cold_min_com
		
		cmp	#02h
		beq	cold_min_com
		
		cmp	#03h
		beq	cold_min_com		

		cmp	#04h
		beq	cold_min_com
		jmp	cold_min_speed1
cold_min_com:
		lda	really_act_20sec	; 20 sec
		cmp	#00h
		bne	nor_cold_ret
				
		lda	really_act_3min		; 3 min
		cmp	#00h
		bne	nor_cold_ret	

		lda	auto_mode
		cmp	#01h
		beq	cold_min_speed2
		cmp	#02h
		beq	cold_min_speed3
		cmp	#03h
		beq	cold_min_speed4

		
cold_min_speed1:
		lda	#01h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#cold_sw
		sta	PA			; turn on cold sw
		jmp	rel_motor_l_on

cold_min_speed2:

		lda	#02h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#cold_sw
		sta	PA			; turn on cold sw
		jmp	rel_motor_m_on

cold_min_speed3:
		lda	#03h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#cold_sw
		sta	PA			; turn on cold sw
		jmp	rel_motor_h_on

cold_min_speed4:
		lda	PA
		ora	#cold_sw
		sta	PA			; turn on cold sw
		jmp	rel_motor_h_on
cold_min_speed5_ret:
nor_cold_ret:
		rts
;-----------------------------------------------;
cold_equ_speed:
		lda	auto_mode
	
		cmp	#00h
		bne	cold_equ_speed_ret
		lda	#00h
		sta	auto_mode
		lda	PA
		and	#cold_sw_n
		sta	PA			; turn off cold sw
		jmp	rel_motor_l_on						
cold_equ_speed_ret:
		rts		
;-----------------------------------------------;
cold_max_speed:
		lda	auto_mode

		cmp	#07h
		beq	cold_max_com

		cmp	#08h
		beq	cold_max_com

		cmp	#09h
		beq	cold_max_com
		jmp	cold_max_speed0

cold_max_com:
		lda	really_act_20sec	; 20 sec
		cmp	#00h
		bne	cold_equ_speed_ret

		lda	really_act_3min		; 3 min
		cmp	#00h
		bne	cold_equ_speed_ret
		
		lda	auto_mode
		
		cmp	#07h
		beq	cold_max_speed1

		cmp	#08h
		beq	cold_max_speed2
		
		cmp	#09h
		beq	cold_max_speed3		

cold_max_speed0:
		lda	PA
		and	#cold_sw_n
		sta	PA			; turn off cold sw

		lda	#07h
		sta	auto_mode
		jsr	speed_3min_delay
		jmp	rel_motor_h_on

cold_max_speed1:
		lda	PA
		and	#cold_sw_n
		sta	PA			; turn off cold sw

		lda	#08h
		sta	auto_mode
		jsr	speed_3min_delay
		jmp	rel_motor_m_on
cold_max_speed2:
		lda	PA
		and	#cold_sw_n
		sta	PA			; turn off cold sw

		lda	#09h
		sta	auto_mode
		jmp	rel_motor_l_on
cold_max_speed3:
		rts
;-----------------------------------------------;		
raally_act_20sec:
		lda	#32			; unit 640msec
		sta	really_act_20sec	; delay 20sec
		rts
speed_3min_delay:
		lda	#03			; unit 1 min
		sta	really_act_3min		; delay 3 min
		rts	
;-----------------------------------------------
rel_hot_mode:	
		lda	speedmode
		cmp	#speed_motor_aut
		beq	rel_hot_mode_au

		stz	auto_mode		; clear auto mode buffer
		stz	really_act_3min
		stz	really_act_20sec

		lda	t_setting_m
		cmp	temperature_h		; if room check temperature < user setting temperature
		beq	hot_speed_com
		bcs	hot_sw_on		; then turn on hot sw
		
hot_sw_off:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA
		jmp	hot_speed_com
nor_hot_ret:
		rts
hot_sw_on:				
		lda	PA
		ora	#hot_sw
		ora	#cold_sw		
		sta	PA
hot_speed_com:
		jmp	rel_speed_mode_0
;-----------------------------------------------;		
rel_hot_mode_au:
		lda	temperature_h
		cmp	t_setting_m		;
		beq	hot_equ_speedj		; if room temperature = user settign temperature
		bcs	hot_max_speedj		; if room check temperature > user setting temperature
		jmp	hot_min_speed		; if room temperature < user settign temperature

hot_equ_speedj:
		jmp	hot_equ_speed
hot_max_speedj:
		jmp	hot_max_speed
;-----------------------------------------------;
hot_min_speed:	

		lda	auto_mode
		cmp	#01h
		beq	hot_min_com
		cmp	#02h
		beq	hot_min_com
		cmp	#03h
		beq	hot_min_com
		cmp	#04h
		beq	hot_min_com
		jmp	hot_min_speed1						

hot_min_com:	
		lda	really_act_20sec	; 20 sec
		cmp	#00h
		bne	hot_equ_speed_ret

		lda	really_act_3min		; 3 min
		cmp	#00h
		bne	hot_equ_speed_ret
		
		lda	auto_mode
		cmp	#00h
		beq	hot_min_speed1
		cmp	#01h
		beq	hot_min_speed2
		
		lda	auto_mode		
		cmp	#02h
		beq	hot_min_speed3
		cmp	#03h
		beq	hot_min_speed4
		cmp	#04h
		beq	hot_min_speed4
		
hot_min_speed1:
		lda	#01h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#hot_sw
		ora	#cold_sw
		sta	PA			; turn on hot sw
		jmp	rel_motor_h_on

hot_min_speed2:
		lda	#02h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#hot_sw
		ora	#cold_sw
		sta	PA			; turn on hot sw
		jmp	rel_motor_m_on

hot_min_speed3:
		lda	#03h
		sta	auto_mode
		jsr	speed_3min_delay
		lda	PA
		ora	#hot_sw
		ora	#cold_sw
		sta	PA			; turn on hot sw
		jmp	rel_motor_l_on

hot_min_speed4:

		lda	#04h
		sta	auto_mode
		lda	PA
		ora	#hot_sw
		ora	#cold_sw
		sta	PA			; turn on hot sw
		jmp	rel_motor_l_on

hot_min_speed5:

hot_min_speed5_ret:
		rts
;-----------------------------------------------;
hot_equ_speed:
		lda	auto_mode
		cmp	#00h
		bne	hot_equ_speed_ret
		
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA			; turn off hot sw
		jmp	rel_motor_h_on
hot_equ_speed_ret:
		rts	
;-----------------------------------------------;
hot_max_speed:
		lda	auto_mode
		cmp	#06h
		beq	hot_max_com

		cmp	#07h
		beq	hot_max_com

		cmp	#08h
		beq	hot_max_com
		
		cmp	#09h
		beq	hot_max_com
		jmp	hot_max_speed0
hot_max_com:
		lda	really_act_20sec	; 20 sec
		cmp	#00h
		bne	hot_equ_speed_ret

		lda	really_act_3min		; 3 min
		cmp	#00h
		bne	hot_equ_speed_ret
		
		lda	auto_mode

		cmp	#07h
		beq	hot_max_speed1

		cmp	#08h
		beq	hot_max_speed2
		cmp	#09h
		beq	hot_max_speed3
		
hot_max_speed0:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA			; turn off hot sw

		lda	#07h
		sta	auto_mode
		jsr	speed_3min_delay
		jmp	rel_motor_l_on

hot_max_speed1:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA			; turn off hot sw

		lda	#08h
		sta	auto_mode
		jsr	speed_3min_delay
		jmp	rel_motor_m_on
hot_max_speed2:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA			; turn off hot sw

		lda	#09h
		sta	auto_mode
		jsr	speed_3min_delay
		jmp	rel_motor_h_on
		rts
hot_max_speed3:
		lda	PA
		and	#hot_sw_n
		and	#cold_sw_n
		sta	PA			; turn off hot sw

		lda	#09h
		sta	auto_mode
		jmp	rel_motor_h_on
		rts

rel_hot_mode_ret:
		rts

raally_act_20sec_0:
		jmp	raally_act_20sec
;-----------------------------------------------
;-----------------------------------------------
power_off_output_action:
		jsr	rel_all_output_off	;
		lda	#00h
		ora	#buzzsr_sw
		sta	PC			; turn off hot sw;cold sw 
		rts
		
;///////////////////////////////////////////////;
;						;
;	buzzer action				;
;						;
;///////////////////////////////////////////////;
;-----------	
buzzer_action:		
		lda	key_buzzer_t
		cmp	#00h
		beq	buzzer_off
		rts
buzzer_on:
		lda	powerflag
		and	#demo_dis_f
		beq	buzzer_on_0
		
		lda	#80			; when power on then buzzer on
		sta	key_buzzer_t		; buzzer on 800msec
		jmp	buzzer_on_com		
buzzer_on_0:
		lda	#8			;when key press then buzzer on
		sta	key_buzzer_t		; buzzer on 100msec
buzzer_on_com:		
		lda	#00110000B		; pwm mode action,F32khz=32.768Khz,
		sta	T1C
		lda	#3			; 4khz
		sta	T1BF1
		lda	#3
		sta	T1BF2
		lda	PC
		ora	#buzzsr_sw
		sta	PC			; pc.2 can great 4khz PWM singnal ?
		lda	#80h
		ora	T1C
		sta	T1C
buzzer_on_ret:
		rts
buzzer_off:
		lda	#3fh
		and	T1C
		sta	T1C
		rts
;///////////////////////////////////////////////;
;						;
;	lcd backlight				;
;						;
;///////////////////////////////////////////////;
;-----------					
lcd_backlight:		
		lda	back_light_t
		cmp	#00h
		beq	backlight_off
		
backlight_on:
		lda	PC
		ora	#back_light
		ora	#buzzsr_sw
		sta	PC
		rts		
backlight_off:
		lda	PC
		and	#back_light_n
		ora	#buzzsr_sw
		sta	PC		
lcd_backlight_ret:
		rts
;------------
t10msec_ret_0:
		jmp	t10msec_ret
t20msec_ret_0:
		jmp	t20msec_ret		
;***********************************************;
;*** time manager			     ***;
;***********************************************;
time_manager:	
		lda	timeflag
		and	#t5msf_n		;clear 5msec flag
		sta	timeflag
				
;------10msec
		lda	timeflag
		and	#t10msf
		beq	t10msec_ret_0
		lda	timeflag
		and	#t10msf_n
		sta	timeflag
				
		lda	t800msec		;800msec timer
		cmp	#00h
		beq	t10msec_next0
		dec	t800msec
t10msec_next0:	
		lda	t100msec		; 100msec timer
		cmp	#00h
		beq	t10msec_next1
		dec	t100msec
t10msec_next1:	
		lda	key_buzzer_t		; key voice timer
		cmp	#00h
		beq	t10msec_next2
		dec	key_buzzer_t
t10msec_next2:
		
		nop
;------20msec
		lda	timeflag
		and	#t20msf
		beq	t20msec_ret_0
		lda	timeflag
		and	#t20msf_n
		sta	timeflag



;------40msec
		lda	timeflag
		and	#t40msf
		beq	t40msec_ret
		lda	timeflag
		and	#t40msf_n
		sta	timeflag



;------80msec
		lda	timeflag
		and	#t80msf
		beq	t80msec_ret
		lda	timeflag
		and	#t80msf_n
		sta	timeflag


;------160msec
		lda	timeflag
		and	#t160msf
		beq	t160msec_ret
		lda	timeflag
		and	#t160msf_n
		sta	timeflag



;------320msec
		lda	timeflag
		and	#t320msf
		beq	t320msec_ret
		lda	timeflag
		and	#t320msf_n
		sta	timeflag
;------640msec		
		lda	timeflag
		and	#t640msf
		beq	t640msec_ret
		lda	timeflag
		and	#t640msf_n
		sta	timeflag
		

		
		lda	back_light_t
		cmp	#00h
		beq	t640_next0
		dec	back_light_t
t640_next0:
		lda	clock_setting_t
		cmp	#00h
		beq	t640_next1
		lda	#clk_set_end_f_n
		and	dispflag
		sta	dispflag
		dec	clock_setting_t
		lda	clock_setting_t
		cmp	#00h
		bne	t640_next1
t640_next0_0:
		stz	clock_setting_m	
t640_next1:		
		lda	really_act_20sec	; 20 sec
		cmp	#00h
		beq	t640_next2
		dec	really_act_20sec
t640_next2:		

t640_next3:		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -