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

📄 ups300w16f73.asm

📁 工频后备式UPS-300W
💻 ASM
📖 第 1 页 / 共 5 页
字号:
AcNotNormal
        MOVLW   FOUR_SECOND
        MOVWF   ACDly_Timer
        RETURN
DET_VIN_REG
        MOVLW   CONV_START_OFF
        MOVWF   ConvStartFlag
        MOVLW   POWER_220VAC
        MOVWF   Pow_Stataus
        MOVLW   CUT_NOT
        MOVWF   CutFlag
        MOVLW   PWM_REG_RATE
        MOVWF   PWMRegValue
        MOVLW   TURN_ON
        MOVWF   TurnOffFlag
        MOVLW   VOLT_NORMAL
        MOVWF   Volt_Prot
        MOVLW   BUZPS_LONG
        MOVWF   BuzpsStataus
        MOVLW   PWM_INIT
        MOVWF   PWMStartFlag        

        MOVF    RelayState,W
        XORLW   RelayReg3
        BTFSC   STATUS,Z
        GOTO    DET_VIN_RELAY3
        MOVF    RelayState,W
        XORLW   RelayReg2
        BTFSC   STATUS,Z
        GOTO    DET_VIN_RELAY2

        MOVLW   VIN_235V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_RELAY1_209V
        MOVLW   RelayReg1
        MOVWF   RelayState
        RETURN
DET_RELAY1_209V 
        MOVLW   VIN_208V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_RELAY1_LOW
        MOVLW   RelayReg2
        MOVWF   RelayState
        RETURN
DET_RELAY1_LOW 
        MOVLW   RelayReg3
        MOVWF   RelayState
        RETURN
;====================================
DET_VIN_RELAY2 
        MOVLW   VIN_242V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_RELAY2_209V
        MOVLW   RelayReg1
        MOVWF   RelayState
        RETURN

DET_RELAY2_209V 
        MOVLW   VIN_208V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_RELAY2_LOW
        MOVLW   RelayReg2
        MOVWF   RelayState
        RETURN

DET_RELAY2_LOW 
        MOVLW   RelayReg3
        MOVWF   RelayState
        RETURN

;=====================================
DET_CONV_VOLT 
        MOVF    Pow_Stataus,W
        XORLW   POWER_CONVERT
        BTFSS   STATUS,Z
        RETURN
        MOVF    TestStataus,W
        XORLW   TEST_ON
        BTFSS   STATUS,Z
        GOTO    DET_CONV_CONT
        MOVF    Test_Timer,F
        BTFSS   STATUS,Z
        RETURN
        MOVLW   TEST_OFF
        MOVWF   TestStataus
	BCF     UserFlag,TestFlag
DET_CONV_CONT
        MOVLW   VIN_265V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_VIN_180V
CONFAIL_HIGH
        MOVLW   VOLT_HIGH
        MOVWF   Volt_Prot
        MOVLW   POWER_CONVERT
        MOVWF   PowConvStataus 
        RETURN
DET_VIN_180V
        MOVLW   VIN_175V
        SUBWF   VIn_ADValue,W
        BTFSS   STATUS,C
        GOTO    CONFAIL_LOW
        MOVF    PowConvStataus,W
        XORLW   CONV_TO_AC
        BTFSC   STATUS,Z
        GOTO    DET_CONV_TEST
        MOVLW   CONV_TO_AC
        MOVWF   PowConvStataus
        MOVLW   SIX_SECOND
        MOVWF   ConvDly_Timer
        RETURN
;*******************************************
DET_CONV_TEST: 
        MOVF    ConvDly_Timer,W		;启动DC----->AC 供电
        BTFSC   STATUS,Z
        GOTO    DET_VIN_REG		;开始检测输出电压
        RETURN
        
;*****************************************
CONFAIL_LOW 
        MOVLW   VOLT_LOW
        MOVWF   Volt_Prot
;        MOVLW   VIN_NO_REGULATE
;        MOVWF   Volt_Reg
        MOVLW   POWER_CONVERT
        MOVWF   PowConvStataus
        RETURN

;=========================================
DET_POWER_CONV 
        MOVF    SystemStataus,W
        XORLW   SYSTEM_NORMAL
        BTFSS   STATUS,Z
        GOTO    CONV_BATT_EXIT
        MOVF    Pow_Stataus,W
        XORLW   POWER_220VAC
        BTFSC   STATUS,Z
        GOTO    CONV_BATT_EXIT
        MOVF    TurnOffFlag,W
        XORLW   TURN_OFF
        BTFSC   STATUS,Z
        GOTO    TURN_OFF_EXIT
        MOVF    TestStataus,W
        XORLW   TEST_ON                   ;TEST DEAL
        BTFSS   STATUS,Z
        GOTO    DET_CONV_START
        MOVF    Test_Timer,F
        BTFSS   STATUS,Z
        GOTO    DET_CONV_START
        MOVF    Volt_Prot,W
        XORLW   VOLT_NORMAL
        BTFSS   STATUS,Z
        GOTO    DET_CONV_START

        MOVLW   PWM_INIT
        MOVWF   PWMStartFlag        

        MOVLW   TEST_OFF
        MOVWF   TestStataus
        MOVLW   POWER_220VAC
        MOVWF   Pow_Stataus
        BCF     UserFlag,TestFlag
        MOVLW   BUZPS_LONG
        MOVWF   BuzpsStataus
        BSF     PORTB,_LOAD_REG
        BSF     PORTC,_PWM1
        BSF     PORTC,_PWM2
        GOTO    CONV_BATT_EXIT
DET_CONV_START 
        MOVF    PWMStartFlag,W
        XORLW   PWM_START                 ;Detect load state after convert
        BTFSS   STATUS,Z
        RETURN
        CALL    DET_CONV_VOLT
        CALL    DET_VOUT_REG
        CALL    DET_BATT_VOLT
         
        RETURN

CONV_BATT_EXIT 
        CALL    DET_BATT_VOLT
        RETURN

TURN_OFF_EXIT 
        CALL    DET_CONV_VOLT	;当电池欠压保护待机状态时等待市电恢复。
        RETURN

;========================================
DET_VOUT_REG 
        MOVF    ConvStartFlag,W
        XORLW   CONVERT_START
        BTFSS   STATUS,Z
        GOTO    VOUT_PROCESS
        MOVLW   CONV_START_OFF
        MOVWF   ConvStartFlag
        MOVLW   TWO_SECOND		;电池开机时PWM逐渐展开时间.
        MOVWF   ConvStart_Timer
 
        ;CLRF    PWMRegStataus
        MOVLW   PWM_START_RATE
        MOVWF   PWMRegValue
        RETURN

VOUT_PROCESS
        MOVF    PowConvStataus,W
        XORLW   POWER_220VAC
        BTFSS   STATUS,Z
        GOTO    DET_VOUT_START
        MOVLW   TWO_SECOND		;市电测试时,
        MOVWF   LoadTest_Timer
        MOVLW   POWER_CONVERT
        MOVWF   PowConvStataus

DET_VOUT_START
;改为采用公式计算PWM来源(U=Up√2Ton/T) 
 	

	MOVLW   HIGH_LIMIT
        SUBWF   VOut_ADValue,W;
	BTFSC	STATUS,C
	GOTO	set_min_pwm			;
;输出电压很小,设置最大脉宽
;逆变输出脉宽计算:(120V输出反馈常量/反馈变量)的平方/256。
;122V对应常量为135,

	CLRF	WR1
	MOVF	VOut_ADValue,W
	MOVWF	WR0			;载入除数
	
	MOVLW	PWM_DUTY_50Hz
	XORWF	OutputFreq,0
	BTFSC	STATUS,Z
	GOTO	Load_50HzDateACC
;OutPuT122V60HzValue	EQU	3980H
;OutPuT122V50HzValue	EQU	3E58H	
	MOVLW	LOW OutPuT122V60HzValue	;载入被除数2905(6A9H)
	MOVWF	WR6
	MOVLW	HIGH OutPuT122V60HzValue	;载入被除数
	MOVWF	WR7	;被除数高位	
DEL_PWM_Start	
	BSF	PCLATH,3
	CALL	Div_16Bit	;(WR7,WR6)/(WR1,WR0)=(WR3,WR2)
	BCF	PCLATH,3
;平方运算
	MOVF	WR2,0
	MOVWF	WR6
	MOVWF	WR0		;乘数高位
	
	MOVF	WR3,0
	MOVWF	WR7
	MOVWF	WR1		;乘数低位

	BSF	PCLATH,3
	CALL	MULL_16Bit	;(WR7,WR6)*(WR1,WR0)=(WR5,WR4)		
	BCF	PCLATH,3
;除以10
	MOVLW	0FFH
	MOVWF	WR0
	CLRF	WR1
	MOVF	WR4,0
	MOVWF	WR6
	MOVF	WR5,0
	MOVWF	WR7
	BSF	PCLATH,3
	CALL	Div_16Bit
	BCF	PCLATH,3
	MOVF    ConvStart_Timer,W
        BTFSS   STATUS,Z
        GOTO	DET_CONV_INIT	
	MOVF	PWM_MAX_RATE,W
	SUBWF	WR2,W			;60Hz=100,50Hz=118
	BTFSC	STATUS,C
	GOTO	set_max_pwm
	MOVF	WR2,W
	SUBLW	.20
	BTFSC	STATUS,C
	GOTO	set_min_pwm
	MOVF	PWMRegValue,W		;上次数与此次比较
	SUBWF	WR2,W
	BTFSC	STATUS,Z
	GOTO	CUN_PWM_Date_Exit	;与上次相等退出
	MOVWF	WR0
	BTFSC	STATUS,C		;大于上次
	GOTO	DATA_COUNT
	COMF	WR0
	INCF	WR0,F
DATA_COUNT
	MOVLW	.1
	SUBWF	WR0,W
	BTFSS	STATUS,C
	
	GOTO	CUN_PWM_Date_Exit
	MOVF    ConvStart_Timer,W
        BTFSS   STATUS,Z
        GOTO	DET_CONV_INIT
	MOVF	WR2,W
	MOVWF	PWMRegValue	
	 
CUN_PWM_Date_Exit	
	RETURN
Load_50HzDateACC
	MOVLW	LOW OutPuT122V50HzValue	;载入被除数3222(6A9H)
	MOVWF	WR6
	MOVLW	HIGH OutPuT122V50HzValue	;载入被除数
	MOVWF	WR7	;被除数高位			
	GOTO	DEL_PWM_Start	
set_max_pwm

	MOVF	PWM_MAX_RATE,W
	MOVWF	PWMRegValue
	RETURN
set_min_pwm

	MOVLW	PWM_START_RATE
	MOVWF	PWMRegValue
	RETURN
DET_CONV_INIT 
        
        INCF    PWMRegValue,F
        MOVF    WR2,W
        SUBWF   PWMRegValue,W
        BTFSS   STATUS,C
        GOTO    CONV_INIT_EXIT

        MOVF    WR2,W
        MOVWF   PWMRegValue
CONV_INIT_EXIT 

        RETURN
;========================================
DET_BATT_VOLT 
        MOVLW   BATT_10V
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_BATT_FAILED
        MOVLW   BATT_11V
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_BATT_LOW
        MOVLW   BATT_11V5
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_BATT_STATE2
        MOVLW   BATT_11V8
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_BATT_STATE3
        MOVLW   BATT_12V5
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO    DET_BATT_STATE4
        GOTO    DET_BATT_STATE5
DET_BATT_STATE3
        MOVLW   04H
        MOVWF   BattDLY_State
        MOVLW   BATT_11V5
        SUBWF   VBatt_ADValue,W
        BTFSC   STATUS,C
        GOTO    DET_BATT_BASE
        GOTO    DET_BATT_NORMAL
DET_BATT_BASE 

        GOTO    DET_BATT_NORMAL
DET_BATT_STATE4 
        MOVLW   08H
        MOVWF   BattDLY_State
        GOTO    DET_BATT_NORMAL
DET_BATT_STATE5 
        MOVLW   10H
        MOVWF   BattDLY_State
DET_BATT_NORMAL 

	MOVLW	BATT_LOW
	XORWF	Batt_Stataus,W
	BTFSC	STATUS,Z
	GOTO	check_if_still_low

det_batt_ee	
        MOVLW   BATT_NORMAL
        MOVWF   Batt_Stataus
        MOVLW   TURN_ON
        MOVWF   TurnOffFlag
        RETURN
check_if_still_low:
	MOVLW	BATT_11V5	;电池恢复正常电压
	SUBWF	VBatt_ADValue,W
	BTFSC	STATUS,C
	GOTO	det_batt_ee
DET_BATT_LOW
        MOVLW   01H
        MOVWF   BattDLY_State
        MOVLW   BATT_LOW
        MOVWF   Batt_Stataus
        MOVLW   TURN_ON
        MOVWF   TurnOffFlag
        RETURN

DET_BATT_STATE2 
        MOVLW   02H
        MOVWF   BattDLY_State
        RETURN

DET_BATT_FAILED
        INCF   	Batt_JumpValue
        MOVF   	Batt_JumpValue,W
        SUBLW  	.30
        BTFSC  	STATUS,C
        RETURN
        CLRF   	Batt_JumpValue
        CLRF    BattDLY_State
        MOVLW   BATT_FAILED
        MOVWF   Batt_Stataus
        MOVLW   TURN_OFF
        MOVWF   TurnOffFlag
        RETURN
;-----------------------------------------------
DET_LOAD_VOLT

        MOVF    Pow_Stataus,W
        XORLW   POWER_220VAC
        BTFSS   STATUS,Z
        GOTO    DecideConLoad		
  
        
	;市电时负载处理.
	MOVLW	.30			;市电短路数据
	SUBWF	CurrentAvgValue,W
	BTFSC	STATUS,C	
	GOTO	AC_Short_Load
	MOVLW	.14			;市电过载参数
	SUBWF	CurrentAvgValue,W
	BTFSC	STATUS,C
	GOTO	DetLoad67
	BTFSS	UserFlag,AC_OverLoad
	GOTO	Load_Normal
	MOVLW	.12			;市电过载恢复参数
	SUBWF	CurrentAvgValue,W
	BTFSC	STATUS,C
	GOTO	DetLoad67
Load_Normal
	BCF     UserFlag,Full_Load
        BCF     UserFlag,AC_OverLoad
;        BCF	UserFlag,DC_OverLoad
        MOVLW	.250
        MOVWF	OverLoad_DelayProtectTime
        MOVLW	.10
        MOVWF	OverExtLoadTime        
        RETURN
DetLoad67
	
        BCF     UserFlag,Full_Load
        BSF     UserFlag,AC_OverLoad
        RETURN
	
DecideConLoad
	MOVLW	.15
	SUBWF	CurrentAvgValue,W		;立即关机
	BTFSC	STATUS,C
	GOTO	Setting_DC_OverLoad
	MOVLW	.14				;逆变过载参数
	SUBWF	CurrentAvgValue,W
	BTFSS	STATUS,C
	GOTO	Load_Normal			;负载正常			
	MOVF	OverLoad_DelayProtectTime,F	;延时关机
	BTFSC	STATUS,Z
	GOTO	Setting_DC_OverLoad
UPS_Output_FullLoad
	MOVLW	.10
        MOVWF	OverExtLoadTime			;2秒关机
	BSF     UserFlag,Full_Load
	RETURN
Setting_DC_OverLoad
	MOVF	OverExtLoadTime,F
	BTFSC	STATUS,Z
	GOTO	DC_OverLoadProtect
	BSF     UserFlag,Full_Load	
	RETURN
DC_OverLoadProtect
	BSF	UserFlag,DC_OverLoad		;过载关机
	RETURN	
AC_Short_Load
	RETURN
;--------------------------------------------------------
;60Hz负载载处理程序
;--------------------------------------------------------

;----------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;FD=TAG-09R0-ET9
Display_module: 
        MOVF    SystemStataus,W		;2BH
        XORLW   SYSTEM_NORMAL
        BTFSC   STATUS,Z
        GOTO    DLY_PROCESS

⌨️ 快捷键说明

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