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

📄 ups390w r23.asm

📁 工频后备式UPS-390W
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	jmp	Next_Sample
set_adc_over:
	mov	a,wr6
	or	a,wr7
	snz	Z
	jmp	End_ACSample
			
_is_return_zero:
	clr	In_ADV_BufL
	clr	In_ADV_BufH
	ret
Next_Sample:
	call	sampl_Delay100uS
	jmp	wait_adc_act_over

	
;采样一周后计算平均值.	
End_ACSample:
	clr	c
	rrc	wr6
	rrc	wr7
		
	mov	a,wr5
	mov	tmp5,a
	mov	a,wr4
	mov	tmp4,a			;载入被除数。
	mov	a,wr6		;
	mov	Lh2,a			;载入除数。
	mov	a,wr7
	mov	Ll2,a
	call	DIV_OF_16Bit		;商=(Lh,Ll)
;	clr	c
;	rlc	Ll
;	rlc	Lh
Input_Voltage_deal:			;采样值乘以76。	

	mov	a,110;78			;(76仿真器,77芯片用数对应5V电压))
	mov	Ll2,a			;载入乘数
	mov	a,0
	mov	Lh2,a
	call	MULL_OF_16Bit
;********缩小100倍	
	mov	a,Ll
	mov	tmp5,a
	mov	a,Lh
	mov	tmp4,a			;载入被除数。
	mov	a,0		;
	mov	Lh2,a			;载入除数100。
	mov	a,143;100
	mov	Ll2,a
	call	DIV_OF_16Bit		;商=(Lh,Ll)
The_InVol_Value:	

	
	mov	a,Ll
	mov	In_ADValueL,a
	mov	a,Lh
	mov	In_ADValueH,a
	
	mov	a,140
	sub	a,In_ADValueL
	mov	a,0
	sbc	a,In_ADValueH
	sz	c
	jmp	Set_InputClr
	
	mov	a,In_ADValueL	
	sub	a,3
	mov	In_ADValueL,a
	mov	a,In_ADValueH
	sbc	a,wr8
	mov	In_ADValueH,a

	snz	Ac_Status_Flag
	jmp	exit_AcinputSam
	inc	Inv_resut_AC_Cunt
	mov	a,Inv_resut_AC_Cunt
	sub	a,5
	snz	c
	jmp	Set_InputClr	
	ret
	
Set_InputClr:
	clr	In_ADValueH
	clr	In_ADValueL
exit_AcinputSam:		
	ret
ADC_Input	endp	
;---------------------------------------
sampl_Delay100uS	proc
	mov	a,2
	mov	SampDelaytime,a
Loop_100us:
	sz	SampDelaytime
	jmp	Loop_100us
	ret
sampl_Delay100uS	endp
;*********BATTERY VALUE SAMPLE*********
ADC_BAT		proc
	snz	Sent_Data_Star		;发送数据时不采样电流.
	jmp	Sampling_Batter
	sz	Send_StarFlag
	jmp	exit_ADC_Curren
Sampling_Batter:
	clr	emi
	Samp_BAT_set
	ADC_RUN_start
	
Sample_BAT_loop:
	sz 	EOCB 		
	jmp 	Sample_BAT_loop
	 
	mov	a,ADRH
	mov	ADC_ValueL,a	;4DH
	mov	a,ADRL
	and	a,0C0H		;11000000B
	mov	ADC_ValueH,a	;4EH
	set	emi
	call	ADC_Value_Deal
	mov	a,ADC_ValueL
	mov	BAT_ADValueL,a
	mov	a,ADC_ValueH
	mov	BAT_ADValueH,a
	
batter_Sample_exit:

	ret	
ADC_BAT		endp
;***********************************************

Out_curren_Sample	proc
	snz	Sent_Data_Star		;发送数据时不采样电流.
	jmp	Curren_SampleRun
	sz	Send_StarFlag
	jmp	exit_ADC_Curren
Curren_SampleRun:
	clr	emi
	Samp_OutCurren	
	ADC_RUN_start
	
OutCurren_Wait:
	sz 	EOCB 
	jmp	OutCurren_Wait	
	mov	a,ADRH
	mov	ADC_ValueL,a	;4DH
	mov	a,ADRL
	and	a,0C0H	;4EH
	mov	ADC_ValueH,a
	set	emi
ADC_AMOut_next:
	
	call	ADC_Value_Deal
	mov	a,ADC_ValueL
	mov	OutCurrenRAM_L,a
	mov	a,ADC_ValueH
	mov	OutCurrenRAM_H,a

exit_ADC_Curren:
	ret

Out_curren_Sample	endp	
;***********ADC数据转换*************************
ADC_Value_Deal	proc
	clr	c
	rlc	ADC_ValueH
	rlc	ADC_ValueL
	rlc	ADC_ValueH
	rlc	ADC_ValueL
	rlc	ADC_ValueH
	mov	a,3h
	and	a,ADC_ValueH
	mov	ADC_ValueH,a
	ret	
ADC_Value_Deal	endp
;********LCD COMMAND SEND****************

;---------------------------------
delay_100us		proc
	mov	a,10
	mov	delay_10ms_timer,a
delay_1ms_wait:
	nop
	nop
	nop
	nop	
	sdz	delay_10ms_timer
	jmp	delay_1ms_wait
	ret
delay_100us		endp
	
	
;**************************************
display_LED	proc
	
	snz	system_DisSwitch
	jmp	Turn_Off_LED
	call	short_AdSampLoad
	call	OutPut_Load
	call	battery_sege
	
	snz	Ac_Status_Flag
	jmp	set_AcNormal		;市电工作时显示

INV_WORK_DISPL:	
	GreLed_OFF
	sz	Battery_Low		;电池欠压保护开红灯
	jmp	TurnOnRedLed
		
	sz	Over_Load
	jmp	Only_TurnOnRedLed
	
	sz	Out_Load_Short
	jmp	Only_TurnOnRedLed
	
	sz	Battery_Lack
	jmp	BattLow_YelBlink
	
	SZ	Normal_INV_Test
	jmp	BattTest_RedBlink
		
	
	YelLed_ON
	RedLed_OFF
	GreLed_OFF
	ret
Only_TurnOnRedLed:
	YelLed_OFF
	GreLed_OFF	
TurnOnRedLed:
	RedLed_ON
	ret
	
Turn_Off_LED:
	RedLed_OFF
	YelLed_OFF
	GreLed_OFF
	RET
BattTest_RedBlink:
	YelLed_ON
	
	sz	LEDBlink_Timer
	ret
	
	snz	pc4
	jmp	BlinkOff_RED

	RedLed_OFF
	jmp	Red_Blink_LoadTime
	
BlinkOff_RED:
	RedLed_ON
Red_Blink_LoadTime:
	mov	a,Led_Blink_Time
	mov	LEDBlink_Timer,a
	ret

BattLow_YelBlink:
	sz	LEDBlink_Timer
	ret
	
	sz	pc2
	jmp	BlinkOff_Yel
	YelLed_ON
	jmp	Load_time

BlinkOff_Yel:
	YelLed_OFF
	jmp	Load_time

set_AcNormal:
	
	YelLed_OFF
	sz	Relay_Flag2
	jmp	BypassMode_Dis
	
	
GrenLed_Blink:
	sz	LEDBlink_Timer
	jmp	If_OverLoad
	snz	pc3
	jmp	BlinkOn_GreLed
BlinkOff_GreLed:
	GreLed_OFF
	jmp	Load_time	
BlinkOn_GreLed:
	GreLed_ON
Load_time:
	mov	a,Led_Blink_Time
	mov	LEDBlink_Timer,a
	jmp	If_OverLoad
		
BypassMode_Dis:
	GreLed_ON
	
If_OverLoad:
	sz	AC_Power_Load
	jmp	Set_FaultRedLed	
	RedLed_OFF
	ret
	
Set_FaultRedLed:
	RedLed_ON
	ret

display_LED	endp
;*******************************

;----------------------------------
short_AdSampLoad		proc
	snz	Ac_Status_Flag
	jmp	Short_SamplExit
	SZ	Over_Load
	jmp	Short_SamplExit
	sz	Out_Load_Short
	jmp	Short_SamplExit
	sz	Battery_Low
	jmp	Short_SamplExit
	sz	DC_Status_Flag
	jmp	Short_SamplExit
	Samp_SHORT_set
	ADC_RUN_start
;	clr	emi
SamplShort_Wait:
	sz 	EOCB 
	jmp	SamplShort_Wait
	mov	a,ADRH
;	set	emi
	mov	wr00,a
	sub	a,40h		;4DH
	sz	c	
	jmp	Set_Short_Status
	clr	Shor_Count
No_OverLoa:	
	clr	Out_Load_Short
	ret
Set_Short_Status:
	inc	Shor_Count
	mov	a,1
	sub	a,Shor_Count
	sz	c
	jmp	No_OverLoa
	set	System_Stat_Flag
	set	Out_Load_Short
	mov	a,30
	mov	Cut_Power_Time,a	;三十钞关电源

Short_SamplExit:
	ret	
	
short_AdSampLoad		endp

OutPut_Load		proc
	snz	system_POWER
	jmp	exit_LoadCap
	sz	Out_Load_Short
	jmp	exit_LoadCap
	sz	Over_Load
	jmp	exit_LoadCap
		
	call	Out_curren_Sample
	sz	Ac_Status_Flag	
	jmp	Inverter_Load	
	SNZ	AC_Power_Load
	jmp	Set_OutLoadSegs
	
	
	mov	a,ACOut650W%256		;如果输出过载未关机则看是否减负载。
	sub	a,OutCurrenRAM_L
	mov	a,ACOut650W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	AC_OverLoad
	clr	Ac_OverLoadDelayCount
	clr	Over_Load
	clr	AC_Power_Load
	
Set_OutLoadSegs:
	clr	AC_Power_Load
	mov	a,ACOut700W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut700W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	AC_OverLoad		;市电过载长鸣	
	mov	a,ACOut400W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut400W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load05
	clr	INV_FullLoad_Flag
	clr	FullLoadDelaTime
	
	mov	a,ACOut320W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut320W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load04
	mov	a,ACOut240W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut240W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load03
	mov	a,ACOut160W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut160W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load02
	mov	a,ACOut80W%256
	sub	a,OutCurrenRAM_L
	mov	a,ACOut80W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load01
	clr	Forst_LoadSetCunt
	clr	Load_SegBufferCunt
	jmp	Set_Load00
;******************************************	
Inverter_Load:
	mov	a,Ac_voltage_lower%256
	sub	a,OUT_ADValueL
	mov	a,Ac_voltage_lower/256
	sbc	a,OUT_ADValueH
	sz	c
	jmp	Load_Over		;增加输出欠压保护功能(2006-9-25)
	
	mov	a,DC_Short_AD%256
	sub	a,OutCurrenRAM_L
	mov	a,DC_Short_AD/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Load_Short

	mov	a,DCOut550W%256		;逆变过载关机点
	sub	a,OutCurrenRAM_L
	mov	a,DCOut550W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Load_Over
	snz	INV_FullLoad_Flag	;有无超载?
	jmp	DC_No_OverLoad
	
	mov	a,DCOut450W%256		;
	sub	a,OutCurrenRAM_L
	mov	a,DCOut450W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_FullOverLoad
	clr	FullLoadDelaTime
	clr	INV_FullLoad_Flag		
DC_No_OverLoad:
	clr	Over_Load		
	clr	AC_Power_Load
	mov	a,DCOut500W%256		;
	sub	a,OutCurrenRAM_L
	mov	a,DCOut500W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	InvFullLoad
	
	mov	a,DCOut400W%256
	sub	a,OutCurrenRAM_L
	mov	a,DCOut400W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load05
	
	mov	a,DCOut320W%256
	sub	a,OutCurrenRAM_L
	mov	a,DCOut320W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load04
	mov	a,DCOut240W%256
	sub	a,OutCurrenRAM_L
	mov	a,DCOut240W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load03
	mov	a,DCOut160W%256
	sub	a,OutCurrenRAM_L
	mov	a,DCOut160W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load02

	mov	a,DCOut80W%256
	sub	a,OutCurrenRAM_L
	mov	a,DCOut80W/256
	sbc	a,OutCurrenRAM_H
	snz	c
	jmp	Set_Load01
	clr	Forst_LoadSetCunt
	clr	Load_SegBufferCunt
	jmp	Set_Load00

;---------------------------------

Set_Load00:

	clr	Load_1Sege
	clr	Load_2Sege
	clr	Load_3Sege
	clr	Load_4Sege
	clr	Load_5Sege
	ret
	
Set_Load01:

	set	Load_1Sege
	clr	Load_2Sege
	clr	Load_3Sege
	clr	Load_4Sege
	clr	Load_5Sege
	ret
		
Set_Load02:

	set	Load_1Sege
	set	Load_2Sege
	clr	Load_3Sege
	clr	Load_4Sege
	clr	Load_5Sege
	ret	

Set_Load03:
	
	set	Load_1Sege
	set	Load_2Sege
	set	Load_3Sege
	clr	Load_4Sege
	clr	Load_5Sege
	ret	

Set_Load04:

	
	set	Load_1Sege
	set	Load_2Sege
	set	Load_3Sege
	set	Load_4Sege
	clr	Load_5Sege
	ret	

Set_Load05:

	set	Load_1Sege
	set	Load_2Sege
	set	Load_3Sege
	set	Load_4Sege
	set	Load_5Sege
	ret	
InvFullLoad:

	mov	a,20
	sub	a,FullLoadDelaTime
	snz	c
	jmp	Set_Load05
	inc	FullLoadDelaTime
	mov	a,FullLoadDelaTime
	sub	a,20
	snz	c
	jmp	Set_Load05
	mov	a,60
	mov	Cut_Power_Time,a
Set_FullOverLoad:
	set	INV_FullLoad_Flag	
	jmp	Set_Load05	
AC_OverLoad:	
	mov	a,Ac_OverLoadDelayCount
	sub	a,125
	sz	c
	jmp	exit_LoadCap
	inc	Ac_OverLoadDelayCount
	mov	a,Ac_OverLoadDelayCount
	sub	a,125
	snz	c
	jmp	Set_Load05	
	set	AC_Power_Load
	jmp	exit_LoadCap
		
Load_Over:
	sz	Battery_Low
	jmp	Set_Load00
	inc	Over_Count
	mov	a,10
	sub	a,Over_Count
	sz	c
	jmp	Set_Load05
	mov	a,30
	mov	Cut_Power_Time,a	;三十钞关电源
	set	System_Stat_Flag
	set	Over_Load

exit_LoadCap:
	ret
			
Load_Short:
	set	System_Stat_Flag
	set	Out_Load_Short
	mov	a,30
	mov	Cut_Power_Time,a	;三十钞关电源
	RET

OutPut_Load		endp				
;-------------------------------------------------------		
battery_sege		proc
	call	ADC_BAT
	snz	Ac_Status_Flag
	jmp	AC_CHANGE_BatCAP
	sz	Battery_Low
	ret
	
	mov	a,Bat12V5%256
	sub	a,BAT_ADValueL
	mov	a,Bat12V5/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Batt5Seg
	clr	Batter_Full
	mov	a,Bat12V0%256
	sub	a,BAT_ADValueL
	mov	a,Bat12V0/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Batt4Seg
	mov	a,Bat11V5%256
	sub	a,BAT_ADValueL
	mov	a,Bat11V5/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Batt3Seg
	mov	a,Bat11V0%256
	sub	a,BAT_ADValueL
	mov	a,Bat11V0/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Batt2Seg
	mov	a,Bat10V0%256
	sub	a,BAT_ADValueL
	mov	a,Bat10V0/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Batt1Seg
	inc	Batt_Low_Count
	mov	a,20
	sub	a,Batt_Low_Count
	sz	c
	jmp	set_Batt0Seg
	set	Battery_Low
	set	Battery_Lack
	mov	a,30
	mov	Cut_Power_Time,a
	jmp	set_Batt0Seg
set_Battfull:

set_Batt5Seg:
	set	Batter_Full
	clr	Battery_Lack
	clr	Battery_Low
	set	Batt_1sege
	set	Batt_2sege
	set	Batt_3sege
	set	Batt_4sege
	set	Batt_5sege
	ret	
set_Batt4Seg:
	clr	Battery_Lack
	clr	Battery_Low
	set	Batt_1sege
	set	Batt_2sege
	set	Batt_3sege
	set	Batt_4sege
	clr	Batt_5sege
	ret	
set_Batt3Seg:
	clr	Battery_Lack
	clr	Battery_Low
	set	Batt_1sege
	set	Batt_2sege
	set	Batt_3sege

⌨️ 快捷键说明

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