📄 ups300w16f73.asm
字号:
; ***********************************************************
; *电气参数:300W/220V/60Hz *
; *通信方式:智能通信UPSilon2000 *
; *负载能力:400W不保护,600-700立即保护。 *
; ***********************************************************
; 优化记录
; ————————————————————————————————————————————————————————————————————————————————————————————————————————
LIST P=16f73,F=inhx8m
INCLUDE "P16f73.INC"
;-------------------- Timer 0 define
TMR0_VALUE equ 5FH;0B8H ;80.5us
TMR1_VALUE equ 0F800H ;1ms
SYS_TIME EQU .138
; 2, 32us period
;----------------------<< Define system timer count value
FOUR_TEN_SECOND EQU .2 ;0.4s
ONE_SECOND EQU .5 ;1s
TWO_SECOND EQU .10 ;2s
THREE_SECOND EQU .15 ;3s
FOUR_SECOND EQU .20 ;4s
SIX_SECOND EQU .30 ;6s
THIRTY_SECOND EQU .150 ;30s
;------------------------------------------------
VIN_300V EQU .105
;------------------------------------------------
VIN_275V EQU .90;140V/.96,132v
VIN_265V EQU .87;132V/.94,122v ;*
VIN_242V EQU .79;126V/.86,120v
VIN_235V EQU .76;121V/.79,112v ;6DH
VIN_212V EQU .69;109V/.75,105V ;65H
VIN_208V EQU .67;103V/.71,100V ;62H
VIN_175V EQU .57;98V/.66,95V ;*54H
VIN_165V EQU .53;90V/.61,85V
VIN_DOT EQU 10h;1AH ;修改
VOLT_2VDC EQU 61H ;68H
VOLT_DC_HIGH EQU 64H
LIMIT_2VHI EQU 85H
LIMIT_2VLOW EQU 44H
VOUT_START EQU 98H ;输出电压计算参数(脉宽计算)
VOUT_START_LOW EQU 78H
DIM_VALUE EQU 02H
VOUT_SHORT EQU 15h;35H
VOUT_INIT EQU 8CH
PWM_DUTY_60Hz EQU .101 ;60Hz频率
PWM_DUTY_50Hz EQU .122 ;50Hz频率
UNIT_TIME EQU .122
AC_CUTTIME EQU .140
;PWM_DUTY_10MS EQU .101 ;频率调压参数(0.082)
PWM_MIN_RATE EQU .18
PWM_START_RATE EQU .25 ;2ms
PWM_REG_RATE EQU .39 ;5.16ms
PWM_FAST_RATE EQU .39
PWM_MAX_RATE60Hz EQU .99
PWM_MAX_RATE50Hz EQU .118
HIGH_LIMIT EQU .250
LOW_LIMIT EQU .88
OUT_SAMPLE_TIME EQU .3 ;逆变采样在输出电压中点
PwmStartTimeCount EQU .121
SetTestTime EQU .120
AcShutPwmTime EQU .40
BattShutHiTime EQU .10
LoadShutHiTime EQU .250
LoadJumpValue EQU .10
LoadCmpMaxValue EQU .150
TestPwmMaxCount EQU .20
TableLength40 EQU .6
TableLength32 EQU .12
TableLength26 EQU .13
TableLength20 EQU .16
TableLength12 EQU .22
TableLength60 EQU .31
;TableLength2 EQU .24
;TableLength1 EQU .27
LoadBaseLimit40 EQU 55H
LoadBaseLimit32 EQU 5CH
LoadBaseLimit26 EQU 60H
LoadBaseLimit20 EQU 65H
LoadBaseLimit12 EQU 6AH
LoadBaseLimit60 EQU 70H
VBATT_10V EQU 0A9H ;
VBATT_1V EQU 12H ;通信时电池电压计算
BATT_10V EQU 0A9H
BATT_11V EQU 0BDH;0B7H ;0BDH
BATT_11V5 EQU 0C7H
BATT_11V8 EQU 0CDH ;0C5H
BATT_12V5 EQU 0D7H ;0CEH
BATT_12V8 EQU 0D9H
BATT_13V5 EQU 0DBH ;0DEH++++++++++
REG_INIT EQU 00H
REG_DEC EQU 55H
REG_INC EQU 0AAH
MIN_SAMPLE_TIM EQU .150
MAX_SAMPLE_TIME EQU .250
;================================
CUT_NOT EQU 00H
CUT_START EQU 55H
CUT_ALREADY EQU 0AAH
;----------------------------------------------
OutPuT122V60HzValue EQU 3980H;5200H
OutPuT122V50HzValue EQU 3E58H;5930H
VOLT_LOW EQU 55H
VOLT_NORMAL EQU 00H
VOLT_HIGH EQU 0AAH
KEY_CLR EQU 00H
KEY_SHORT EQU 55H
KEY_LONG EQU 0AAH
KEY_REPEAT EQU 0BBH
SYSTEM_INIT EQU 00H
SYSTEM_NORMAL EQU 55H
SYSTEM_FAILED EQU 0AAH
POWER_220VAC EQU 00H
POWER_CONVERT EQU 55H
AC_TO_CONV EQU 0AAH
CONV_TO_AC EQU 0BBH
LOAD_NON EQU 00H
LOAD_NORMAL EQU 55H
LOAD_OVER EQU 0AAH
RelayReg1 EQU 00H ;lower voltage
RelayReg2 EQU 05H ;Bypass
RelayReg3 EQU 0AH ;exalt voltage
BATT_LOW EQU 00H
BATT_NORMAL EQU 55H
BATT_NOT_SURE EQU 0AAH
BATT_FAILED EQU 0FFH
BUZPS_OFF EQU 00H ;关机报警和交流状态时设置
BUZPS_INIT EQU 11H
BUZPS_ON EQU 55H ;在过载时设置此状态
BUZPS_SHORT EQU 77H ;慢节奏响
BUZPS_LONG EQU 88H ;快节奏响
BUZPS_STOP EQU 0AAH ;消声
BUZPS_CANCLE EQU 0BBH ;过载报警后设置
TEST_OFF EQU 00H
TEST_ON EQU 55H
PWM_INIT EQU 00H
PWM1_IN_PROC EQU 55H
PWM2_IN_PROC EQU 0AAH
PWM_START EQU 55H
PWM_DELAY EQU 0DDH
VIN_REGULATE EQU 55H
VIN_NO_REGULATE EQU 0AAH
TURN_ON EQU 00H
TURN_OFF EQU 55H
CONVERT_START EQU 55H
CONV_START_OFF EQU 0AAH
LOADOVER_DIS EQU 00H
LOADOVER_ENA EQU 55H
RECI_INIT EQU 033H
RECI_END EQU 0AAH
;------------------------------------------
SHUT_OFF EQU 00H
SHUT_ON EQU 55H
MAX_OFF EQU 00H
MAX_ON EQU 55H
;---------------------------------------
ASCII_SPACE EQU 20H
ASCII_BE EQU 23H
ASCII_START EQU 28H
ASCII_GON EQU 2DH
ASCII_DOT EQU 2EH
ASCII_0 EQU 30H
ASCII_1 EQU 31H
ASCII_2 EQU 32H
ASCII_3 EQU 33H
ASCII_4 EQU 34H
ASCII_5 EQU 35H
ASCII_6 EQU 36H
ASCII_7 EQU 37H
ASCII_8 EQU 38H
ASCII_9 EQU 39H
ASCII_A EQU 41H
ASCII_B EQU 42H
ASCII_C EQU 43H
ASCII_D EQU 44H
ASCII_E EQU 45H
ASCII_F EQU 46H
ASCII_G EQU 47H
ASCII_H EQU 48H
ASCII_I EQU 49H
ASCII_J EQU 4AH
ASCII_K EQU 4BH
ASCII_L EQU 4CH
ASCII_M EQU 4DH
ASCII_N EQU 4EH
ASCII_O EQU 4FH
ASCII_P EQU 50H
ASCII_Q EQU 51H
ASCII_R EQU 52H
ASCII_S EQU 53H
ASCII_T EQU 54H
ASCII_U EQU 55H
ASCII_V EQU 56H
ASCII_W EQU 57H
ASCII_X EQU 58H
ASCII_Y EQU 59H
ASCII_Z EQU 5AH
ASCII_CR EQU 0DH
;------------------------PortA Defination
_PROT_SIGN equ 0 ;Protect signal input
_VOLT_OUT equ 1 ;Output volt detect
_LOAD_IN equ 2 ;Output Current
_BATT_VOLT equ 3 ;Battery volt detect
_VOLT_IN equ 5 ;Input volt detect
;----------------------PortB defination
_BUZPS equ 1 ;RB1,Buz output
_KEY_INPUT equ 2 ;RB2,Key input
_ASIS_POWER equ 3 ;RB3,Assist power control
_LOAD_REG equ 4 ;RB4,Output load regulate
_RELAY3 equ 5 ;RB5,Volt regulate output
_RELAY1 equ 6 ;RB6,Power supply convert
_RELAY2 equ 7 ;RB7,Volt reg signal ouput
;---------------------PortC defination
_PWM2 equ 1 ;RC1,Convert signal output2(PWM)
_PWM1 equ 2 ;RC2,Convert signal output1(PWM)
_DLY_SO equ 3 ;RC3,Serial com clk
_DLY_SCK equ 4 ;RC4,Serial com output
_DLY_CS equ 5 ;RC5,Serial com input
_COM_TX equ 6 ;RC6,
_COM_RX equ 7 ;RC7,
;-----------------------------
RESET_VE EQU 00H
INT_VE EQU 04H
;-----------------------------ram defination
System_Timer equ 20h ;0H
Off_Timer1 equ 21h ;1H
KeyInput_Timer equ 22h ;2H
Startup_Timer equ 23h ;3H
chargTime EQU 24h ;+++++++++++++++++++++++
Test_Timer equ 25h ;5H
Buzps_Timer equ 26h ;6H
PWMDuty_Timer equ 27h ;7H
PWMRate_Timer equ 28h ;8H
VIN_LOW equ 29h ;9H
VIN_HIG equ 2ah ;0AH
Volt_Prot equ 2bh ;0BH
Delay_Timer equ 2ch
SystemStataus equ 2dh ;0CH
Pow_Stataus equ 2eh ;0DH
Batt_JumpValue EQU 2FH
Catch_RAM equ 30h ;0FH
Catch_RAMH equ 31h ;10H ;if not use?
Batt_Stataus equ 32h ;11H
RelayState equ 33h ;12H
CurrSumLow equ 34h ;???
CurrSumHi equ 35h ;1BH ;not use 11
SampCurrCount equ 36h ;23H ;not use 11
PWMST_Timer equ 37h ;16H
BuzpsStataus equ 38h ;17H
TestStataus equ 39h ;18H
PWMStataus equ 3ah ;19H
PWMRegStataus equ 3bh ;1AH
CutFlag equ 3Ch ;14H
VIn_ADValue equ 3dh ;1CH
VOut_ADValue equ 3eh ;1EH
VBatt_ADValue equ 3fh
PWMRegValue equ 40h ;22H
LoadState equ 41h ;15H
KeyCode equ 42h ;24H
PWMStartFlag equ 43h ;25H
VOutReg equ 44h ;28H
ConvDly_Timer equ 45h
PowConvStataus equ 46h
ACDly_Timer equ 47h
TurnOffFlag equ 48h
CurrentAvgValue equ 50h ;????
FastStartFlagH equ 51h
FastShortTime equ 52h
ConvStartFlag equ 53h
ConvStart_Timer equ 54h
ShutDownFlag equ 55h
LoadTest_Timer equ 56h
Crurrent_X equ 57h ;not use
LoadDLY_State equ 58h ;if use?
BattDLY_State equ 59h
Frequency equ 5ah ;NOT USE res 2
FrequencyCnt equ 5ch ;NOT USE res 2
OverLoad_DelayProtectTime equ 5Eh ;NOT USE +++++++++++++
OverExtLoadTime equ 60h
OutputFreq equ 61h
PWM_MAX_RATE equ 62h
WR004 equ 63h
TAB_Buffer equ 6ah
ADC_Buffer equ 6bh
;==========User Flag Define
UserFlag EQU 5FH
StartCntFreq EQU 0
ConvertShort: EQU 1
BankSave EQU 2
AcTurnOff EQU 3
TestFlag EQU 4
AC_OverLoad EQU 5
DC_OverLoad equ 6
Full_Load equ 7
;--------------------------------Working ram buffer defination
WR0 equ 49h
WR1 equ 4ah
WR2 equ 4bh
WR3 equ 4ch
WR4 equ 4dh
WR5 equ 4eh
WR6 equ 4fh
WR7 equ 64h ;NOT USE
WR8 equ 65h
WR9 equ 66h
WR005 equ 67h ;NOT USE
Off_Timer equ 68h ;0A1h
WR006 equ 69h ;NOT USE
PchSave EQU 7bH
WR13 equ 7ch
StatusSave EQU 7dh
WSave EQU 7eh
WR16 equ 7fh
WRRR1 EQU 7AH
OUT_CO EQU 0B5H
;---------------------------------------------
ReciStatus equ 0A0h
ReciCounter equ 0A1h
SendCounter equ 0A2h
SendLength equ 0A3h ;发送地址长.
ComReg1 equ 0A4h
ComReg2 equ 0A5h
COMWR0 equ 0A7h
COMWR1 equ 0A8h
COMWR2 equ 0A9h
COMWR3 equ 0AAh
ShutS_Timer equ 0ABh
ShutM_Timer equ 0ACh
BattFlag equ 0ADH
PWMMaxFlag equ 0AEH
Dotm_Timer equ 0AFH
Min_Timer equ 0B0H
Hour_Timer equ 0B1H
Shut_Stataus equ 0B2H
FSREG equ 0B3H
;PageStatus equ 0B4H
;Re_Stataus equ 0B5H
;Delay_Timer equ 0B6H
COMWR4 equ 0B7H
COMWR5 equ 0B8H
COM_Buffer equ 0BAh
HPCREG EQU 0FBH
HWR13 equ 0FCh
HWR14 equ 0FDh
HWR15 equ 0FEh
HWR16 equ 0FFh
;HT1621 接口定义
CS MACRO III
IF III==HIGHO
BSF PORTC,_DLY_CS ;RC5
ELSE
BCF PORTC,_DLY_CS
ENDIF
ENDM
DATA_PIN MACRO III
IF III==HIGHO
BSF PORTC,_DLY_SO ;RC3
ELSE
BCF PORTC,_DLY_SO
ENDIF
ENDM
MAKEWRCLK MACRO
BCF PORTC,_DLY_SCK ;RC4
CALL Delay_us
BSF PORTC,_DLY_SCK
CALL Delay_us
ENDM
;+++++++++++++++++++++++++++++++++++++++++++++
;RAM 结构定义
Seg0RAM EQU ADC_Buffer ;6BH
BATT_outline EQU 7
OverLoad EQU 6
Battery EQU 5
BatteryCapacity1 EQU 4
laugh EQU 3
Fault EQU 2
face EQU 1
dis_line EQU 0
Seg1RAM EQU ADC_Buffer+1 ;6CH
BatteryCapacity2 EQU 0
BatteryCapacity3 EQU 1
BatteryCapacity4 EQU 2
BatteryCapacity5 EQU 3
Seg2RAM EQU ADC_Buffer+2 ;6DH
Normal EQU 0
Seg3RAM EQU ADC_Buffer+3 ;6EH
Seg4RAM EQU ADC_Buffer+4 ;6FH
WOR_L EQU ADC_Buffer+5 ;70H
WOR_H EQU ADC_Buffer+6 ;71H
WR001 EQU ADC_Buffer+7 ;72H
WR002 EQU ADC_Buffer+8 ;73H
WR003 EQU ADC_Buffer+9 ;74H
;++++++++++++++++++++++++++++++++++++++++++++++
ON EQU 43
OFF EQU 78
HIGHO EQU 99
LOWO EQU 31
;++++++++++++++++++++++++++++++++++++++++
ups_disp MACRO iii
IF iii==ON
BSF Seg3RAM,BATT_outline ;
BSF Seg4RAM,dis_line ;
ELSE
BCF Seg4RAM,dis_line
ENDIF
ENDM
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++++++++++++++++++++++++++++++++++++++++
;---------------------Startup
ORG RESET_VE
GOTO START
;---------------------INTERRUPT VECTER ADDRESS
INTER ORG INT_VE
MOVWF WSave ;Save W
SWAPF WSave,F
SWAPF STATUS,W
MOVWF StatusSave ;Save STATUS
MOVF PCLATH,W
MOVWF PchSave
BCF PCLATH,3
BTFSC STATUS,RP0
GOTO INT_DEAL
BCF UserFlag,BankSave
GOTO INT_SERVICE
INT_DEAL
BCF STATUS,RP0
BSF UserFlag,BankSave
GOTO INT_SERVICE
START:
CLRF INTCON
;--------------------Port setting
BSF STATUS,RP0
MOVLW 0FFH
MOVWF TRISA
MOVLW 05H ;00000101
MOVWF TRISB
MOVLW 80H
MOVWF TRISC
BCF STATUS,RP0
MOVLW 010H ;11001000 Setting _PWM high
MOVWF PORTB
MOVLW 86H
MOVWF PORTC ;Setting PWM1 and PWM2 off.
CLRF PORTA
;---------------------TimeR0 Setting
BSF STATUS,RP0
MOVLW 88H ;INT 下降沿触发
MOVWF OPTION_REG
BCF STATUS,RP0
MOVLW TMR0_VALUE
MOVWF TMR0
;------------------------RAM clear
BCF STATUS,RP0
MOVLW 20H
MOVWF FSR
RAM_CLRL
CLRF INDF
INCF FSR,F
MOVLW 80H
SUBWF FSR,W
BTFSS STATUS,C
GOTO RAM_CLRL
MOVLW 0A0H
MOVWF FSR
RAM_CLRH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -