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

📄 ups300w46r23.asm

📁 工频后备式UPS-300W
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	clr	Batt_4sege
	clr	Batt_5sege
	ret	
set_Batt2Seg:
	clr	Battery_Lack
	clr	Battery_Low
	set	Batt_1sege
	set	Batt_2sege
	clr	Batt_3sege
	clr	Batt_4sege
	clr	Batt_5sege
	ret	
set_Batt1Seg:
	clr	Battery_Low
	set	Battery_Lack
	set	Batt_1sege
	clr	Batt_2sege
	clr	Batt_3sege
	clr	Batt_4sege
	clr	Batt_5sege
	ret	
set_Batt0Seg:
	
	clr	Batt_1sege
	clr	Batt_2sege
	clr	Batt_3sege
	clr	Batt_4sege
	clr	Batt_5sege
	ret	

		
AC_CHANGE_BatCAP:
	sz	Batter_Full
	jmp	Batter_NotFull
	mov	a,Bat13V4%256
	sub	a,BAT_ADValueL
	mov	a,Bat13V4/256
	sbc	a,BAT_ADValueH
	SNZ	c
	jmp	set_Battfull
	
	mov	a,Ac_Charge_KineTime
	sub	a,2
	SNZ	c
	jmp	set_Batt0Seg
	mov	a,Ac_Charge_KineTime
	sub	a,4
	SNZ	c
	jmp	set_Batt1Seg
	mov	a,Ac_Charge_KineTime
	sub	a,6
	SNZ	c
	jmp	set_Batt2Seg
	mov	a,Ac_Charge_KineTime
	sub	a,8
	SNZ	c
	jmp	set_Batt3Seg
	mov	a,Ac_Charge_KineTime
	sub	a,10
	SNZ	c
	jmp	set_Batt4Seg
	mov	a,Ac_Charge_KineTime
	sub	a,14
	SNZ	c
	jmp	set_Batt5Seg
	clr	Ac_Charge_KineTime
	ret
Batter_NotFull:

	mov	a,Bat12V9%256
	sub	a,BAT_ADValueL
	mov	a,Bat12V9/256
	sbc	a,BAT_ADValueH
	
	SZ	c
	jmp	Clear_Full
	jmp	set_Batt5Seg
	
Clear_Full:
	clr	Batter_Full	
	ret
battery_sege		endp




AC_Adjust_OutVoltage	proc
	
	call	ADC_Input
	clr	pb7
	snz	system_POWER
	jmp	exit_AC_Working
	call	AC_InputHi_Low
	sz	Ac_Status_Flag
	ret
	set	Inverter_INI		;冷启动缓开通去掉.	
	sz	Relay_Flag1		;升压
	jmp	OUT_Hoist_Reset
	sz	Relay_Flag2		;旁路
	jmp	OUT_Bypass_Reset
	sz	Relay_Flag3		;降压
	jmp	Set_OutLower_Reset
	jmp	exit_AC_Adjust
exit_AC_Working:
	CUT_InputAC
	sz	Battery_Low
	jmp	Ac_Fault_Reset
	ret	
;---------------------------------------	
Set_OutLower_Reset:
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_230V%256
	sub	a,In_ADValueL
	mov	a,AC_230V/256
	sbc	a,wr0
	snz	c						
	jmp	Set_Relay_Flag3		;230V>Vin	
	
	
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_200V%256
	sub	a,In_ADValueL
	mov	a,AC_200V/256
	sbc	a,wr0
	snz	c		;
	
	jmp	Set_Relay_Flag2
	jmp	Set_Relay_Flag1	;200V>Vin
	
;----------------------------------------
OUT_Bypass_Reset:
		
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_240V%256
	sub	a,In_ADValueL
	mov	a,AC_240V/256
	sbc	a,wr0
	snz	c				
	jmp	Set_Relay_Flag3	;240V<Vin
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_200V%256
	sub	a,In_ADValueL
	mov	a,AC_200V/256
	sbc	a,wr0
	sz	c		
	
	jmp	Set_Relay_Flag1	;200V≥Vin
	jmp	Set_Relay_Flag2	;200V<Vin
		
	
;-----------------------------------		
OUT_Hoist_Reset:
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_210V%256
	sub	a,In_ADValueL
	
	mov	a,AC_210V/256
	sbc	a,wr0
	
	sz	c
	jmp	Set_Relay_Flag1	;200V≥Vin
	
	mov	a,In_ADValueH	
	mov	wr0,a
	mov	a,AC_240V%256
	sub	a,In_ADValueL
	mov	a,AC_240V/256
	sbc	a,wr0
	snz	c		;
	jmp	Set_Relay_Flag3
	jmp	Set_Relay_Flag2	;200<Vin≤240V		;
;---------------------------------------
Ac_Fault_Reset:
	
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_265V%256
	sub	a,In_ADValueL
	
	mov	a,AC_265V/256
	sbc	a,wr0
	snz	c
	ret
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_175V%256
	sub	a,In_ADValueL
	
	mov	a,AC_175V/256
	sbc	a,wr0
	sz	c
	jmp	exit_ACreset	;

	sz	AC_RelayDelayTime
	ret	
	sz	Battery_Low	;如果是电池欠压则不进行逆变零点检测。
	jmp	AC_Power_reset
	
wait_AC_0Poin01:

	sz	Frequency_dataBuffer
	jmp	wait_AC_0Poin01
wait_Ac_0poin:	
	mov	a,95
	sub	a,Frequency_dataBuffer
	sz	c
	
	jmp	wait_Ac_0poin
	mov	a,Frequency_dataBuffer
	mov	AC_Direction,a

PWM_Zore_Wait:	
	mov	a,PWM_Flag
	xor	a,2
	snz	Z
	jmp	PWM_Zore_Wait
	sz	PWM_on_time
	jmp	PWM_Zore_Wait
AC_Power_reset:
	clr	Ac_Status_Flag	;置市电正常
	clr	Battery_Low
	set	system_POWER
	clr	Shut_Down_Flag
	TurnOn_InputAC
	clr	PWM_on_time
	clr	PWM_off_time

exit_ACreset:
	ret
	
	
				
Set_Relay_Flag1:
	OUT_HoistVoltage
	set	Relay_Flag1
	clr	Relay_Flag2
	clr	Relay_Flag3
	

	ret
Set_Relay_Flag2:
	OUT_BypassVoltage
	clr	Relay_Flag1
	set	Relay_Flag2
	clr	Relay_Flag3

	ret	
Set_Relay_Flag3:
	OUT_LowerVoltage
	clr	Relay_Flag1
	clr	Relay_Flag2
	set	Relay_Flag3

exit_AC_Adjust:
	ret
AC_Adjust_OutVoltage	endp

;******************************************
AC_InputHi_Low	proc
	snz	Normal_INV_Test		;为测试请求状态?
	jmp	Working_Ac_Pres

	sz	TestInvTime
	jmp	Set_Vin_Over		;测试逆变时间未到
	clr	Normal_INV_Test
Working_Ac_Pres:	
	sz	Ac_Status_Flag
	jmp	Ac_Fault_Reset
	
	mov	a,In_ADValueH
	mov	wr0,a
	mov	a,AC_275V%256
	sub	a,In_ADValueL
	
	mov	a,AC_275V/256
	sbc	a,wr0
	snz	c
	jmp	Set_Vin_Over
	
	mov	a,AC_165V%256
	sub	a,In_ADValueL
	
	mov	a,AC_165V/256
	sbc	a,wr0
	sz	c
	jmp	Set_Vin_Over
	clr	Inv_resut_AC_Cunt
	;市电正常

	clr	Buzzer_Cry_Sta		;开蜂鸣器
	set	DC_Status_Flag
	

	
	TurnOn_InputAC
	ret
Set_Vin_Over:
Take_0Poine:
	sz	Frequency_dataBuffer
	jmp	Take_0Poine
make_RelayCutPoin:
	mov	a,60
	sub	a,Frequency_dataBuffer
	sz	c
	jmp	make_RelayCutPoin
	CUT_InputAC
	mov	a,55
	mov	Start_Run_Time,a
	set	Ac_Status_Flag
	ret
AC_InputHi_Low	endp
;******************************************



System_Fault_Judgement		proc
	sz	Out_Load_Short
	jmp	System_Fault_run
	sz	Battery_Low
	jmp	TurnOff_PowerWait
	clr	Battery_Low_Cunt
	sz	Over_Load
	jmp	System_Fault_run
	sz	INV_FullLoad_Flag
	jmp	System_LoadFull
	ret
TurnOff_PowerWait:
	inc	Battery_Low_Cunt
	mov	a,Battery_Low_Cunt
	sub	a,10
	sz	c
	jmp	System_Fault_run
	ret
System_LoadFull:

	sz	Cut_Power_Time
	jmp	exit_SysPower_Cut
	clr	system_POWER
	clr	system_DisSwitch
	clr	pd1
	jmp	exit_SysPower_Cut
System_Fault_run:
	snz	Ac_Status_Flag
	jmp	exit_SysPower_Cut
	clr	system_POWER
	sz	Cut_Power_Time
	jmp	exit_SysPower_Cut
	clr	system_DisSwitch
	clr	pd1
exit_SysPower_Cut:
	ret		
System_Fault_Judgement		endp
;*****************************************

Buzzer_WorkingControl		proc
	mov	a,Long_Key
	xor	a,KEY_STATUS
	sz	Z
	jmp	LongTime_Cry
	sz	System_Stat_Flag
	jmp	LongTime_Cry	
	snz	system_POWER
	jmp	Buzzer_Unusul
	sz	INV_FullLoad_Flag
	jmp	LongTime_Cry
	sz	DC_Status_Flag
	jmp	Buzzer_NoINV
	sz	Battery_Lack
	jmp	Buzzer_Crying	;电池欠压不判断是否消音。
	mov	a,0ffh
	xor	a,Buzzer_Cry_Sta
	sz	Z
	jmp	Buzzer_OFF
Buzzer_Crying:
	sz	Buzzer_CryTime
	jmp	exit_Buzzer
	snz	pa3
	jmp	Turn_on_Buz
	sz	Battery_Lack
	jmp	Fast_Cry_Space
	mov	a,30
	mov	Buzzer_CryTime,a
	clr	pa3
	jmp	exit_Buzzer
Fast_Cry_Space:
	mov	a,6
	mov	Buzzer_CryTime,a
	clr	pa3
	jmp	exit_Buzzer
Turn_on_Buz:
	
	mov	a,3
	mov	Buzzer_CryTime,a
	set	pa3
	jmp	exit_Buzzer
Buzzer_Unusul:
	
	sz	Out_Load_Short
	jmp	LongTime_Cry
	sz	Over_Load
	jmp	LongTime_Cry
	jmp	Buzzer_OFF
Buzzer_NoINV:
	snz	AC_Power_Load
	jmp	Buzzer_OFF
LongTime_Cry:
	set	pa3
	ret		
Buzzer_OFF:
	clr	PA3
exit_Buzzer:		
	ret
Buzzer_WorkingControl		endp
;****************************************
;16位乘法。

MULL_OF_16Bit		proc
	
	mov	a,Ll2
mull_0:
	
	mov	wr2,a		;乘数低字节
	mov	a,Ll		;被乘数低字节
	clr	wr1
	clr	wr0
	clr	wr3

	set	wr3.3
mull_1:
	clr	c
	sz	wr2.0
	addm	a,wr1
	rrc	wr1		;积右移一位。
	rrc	wr0
	rrc	wr2
	sdz	wr3
	jmp	mull_1
	mov	a,wr0
	mov	tmp4,a
	mov	a,wr1
	mov	tmp5,a
	
	mov	a,Ll2
	mov	wr2,a
	mov	a,Lh
	clr	wr1
	clr	wr0
	clr	wr3
	set	wr3.3
mull_2:
	clr	c
	sz	wr2.0
	addm	a,wr1
	rrc	wr1
	rrc	wr0
	rrc	wr2
	sdz	wr3
	jmp	mull_2
	
	mov	a,wr0
	addm	a,tmp5
	
	mov	a,Lh2
	mov	wr2,a
	mov	a,Ll
	clr	wr1
	clr	wr0
	clr	wr3
	set	wr3.3
mull_3:
	clr	c
	sz	wr2.0
	addm	a,wr1
	rrc	wr1
	rrc	wr0
	rrc	wr2
	sdz	wr3
	jmp	mull_3
	mov	a,wr0
	add	a,tmp5
	mov	Lh,a		;得积高位(91h)
	mov	a,tmp4		
	mov	Ll,a		;得积低位(92h)
	ret
MULL_OF_16Bit		endp
;********************************************
;16位除法子程序。
DIV_OF_16Bit		proc
;	mov	a,32h		;被除数高字节
;	mov	tmp4,a		
;	mov	a,56h		;被除数低字节
;	mov	tmp5,a
;	mov	a,08h		;除数高字节
;	mov	Lh2,a
;	mov	a,07h		;除数低字节
;	mov	Ll2,a
Divul_0:
	mov	a,10h
	mov	wr3,a
	clr	Ll
	clr	Lh
	clr	wr1
	clr	wr2
Divul_1:
	clr	c
	rlc	tmp5
	rlc	tmp4
	rlc	wr2
	rlc	wr1
	mov	a,wr2
	sub	a,Ll2
	mov	a,Lh2
	mov	wr0,a
	snz	c
	inc	wr0
	mov	a,wr1
	sub	a,wr0
	snz	c
	jmp	Divul_2
	mov	a,wr2
	sub	a,Ll2
	mov	wr2,a
	mov	a,wr1
	sbc	a,Lh2
	mov	wr1,a
	set	c
	jmp	Divul_3
Divul_2:
	clr	c
Divul_3:
	rlc	Ll		;商的低字节
	rlc	Lh		;商的高字节
	sdz	wr3
	jmp	Divul_1
	
	ret
DIV_OF_16Bit		endp
;*********************************************
Shut_Down_Control	proc
;	snz	Ac_Status_Flag
;	jmp	ExitShutDown		;有市电时不执行软件关机。
	SNZ	Shut_Down_Flag		;有软件关机执行?
	jmp	ExitShutDown
	sz	Soft_ShutDownTM
	jmp	ExitShutDown
	sz	Soft_ShutDownTS
	jmp	ExitShutDown
	clr	system_POWER
	clr	system_DisSwitch
	set	pc0
	set	pc1
	set	pa0
	clr	pa2
	clr	pa4
	clr	pa5
	clr	pd1
ExitShutDown:
	ret
Shut_Down_Control	endp
;*********************************************************************
RS232_Message_run	proc
	snz	Send_StarFlag
	snz	Sent_Data_Star		;计算机命令接收完成?停止接收,等待回答。
	jmp	exit_RS232
	mov	a,0aah
	mov	mp0,a
CLRE_SendData:
	clr	[00h]
	inc	mp0
	mov	a,0d8h
	sub	a,mp0
	snz	Z
	jmp	CLRE_SendData
	mov	a,ASCII_C		;判断是否消除关机或测试指令。
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_C
	mov	a,ASCII_F		;回答UPS的额定电压\电流\电池电压\频率。
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_F
	
	mov	a,ASCII_Q		;
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_Q		;UPS报警控制。
	
	mov	a,ASCII_I		;回答UPS的商标\型号\版本号。
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_I
	
	
	
	mov	a,ASCII_S		;
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_S		;
	
	mov	a,ASCII_T		;
	xor	a,Computer_command
	sz	Z
	jmp	UPS_Answer_T		;市电测试逆变状态
	clr	Sent_Data_Star		; 发送完成禁止发送 准备接收指令	
	clr	Send_StarFlag		;关发送数据;
	jmp	exit_RS232_Necet
UPS_Answer_S:
	sz	Shut_Down_Flag
	jmp	Reset_exitAnsw	
	mov	a,ASCII_DOT		;
	xor	a,Computer_command1
	snz	Z
	jmp	UPS_Answer_SM		;N分钟关机
UPS_Answer_SS:				
	mov	a,Computer_command2
;	mov	Looking_Data,a
	sub	a,30h
	mov	wr0,a			;乘以6把分还原为秒.
	clr	c
	rlc	wr0
	mov	a,wr0
	clr	c
	rlc	wr0
	addm	a,wr0
	mov	a,wr0
	mov	Soft_ShutDownTS,a
	mov	A,10
	mov	ShareTime_1s,A
	set	Shut_Down_Flag
	jmp	Reset_exitAnsw
UPS_Answer_SM:
	
	mov	a,ASCII_1		;
	xor	a,Computer_command1
	snz	Z
	jmp	IN_10MinutShut
	mov	a,10
	mov	Soft_ShutDownTM,a
	mov	a,60
	mov	Timer_1Mimuter,a
	set	Shut_Down_Flag
	jmp	Reset_exitAnsw
IN_10MinutShut:
	mov	a,Computer_command2
;	mov	Looking_Data,a	
	sub	a,30h
	mov	Soft_ShutDownTM,a
	mov	a,60
	mov	Timer_1Mimuter,a
	set	Shut_Down_Flag
	jmp	Reset_exitAnsw
;-----------------------------------------
UPS_Answer_T:

	set	Normal_INV_Test		;自我测试10s钟.
	mov	a,Test_INV_DelayTime
	mov	TestInvTime,a
	jmp	Reset_exitAnsw


;----------------------------------------		
UPS_Answer_C:
;	clr	Shut_down_time
	clr	TestInvTime
Reset_exitAnsw:	
	clr	Sent_Data_Star		;发送完成禁止发送 准备接收指令	
	clr	Send_StarFlag		;关发送数据;
	jmp	exit_RS232_Necet
;------------------------------------------------
UPS_Answer_F:
	mov	a,0aah
	mov	mp0,a
	mov	a,28h
	mov	tblp,a
	jmp	go_toNextTab

;---------------------------------------------------------
UPS_Answer_Q:
	mov	a,ASCII_1		;回答UPS的商标\型号\版本号。

⌨️ 快捷键说明

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