?? ups600w16f73.asm
字號:
; ************************************
; *電氣參數:600W 220V 50/60Hz自動 *
; *通信方式:智能通信UPSilon2000 *
;
; ************************************
; 優化記錄
; ———————————————————————————————————————————————————————————————————————————————————————————————————————————————
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
Ten_Second EQU .50
THIRTY_SECOND EQU .150 ;30s
;------------------------------------------------
VIN_300V EQU .105
;------------------------------------------------
Vin_125 EQU .90 ;275
Vin_120 EQU .88 ;265 ;*
Vin_110 EQU .79 ;242
Vin_105 EQU .76 ;235 ;6DH
Vin_95 EQU .69 ;208 ;65H
Vin_90 EQU .67 ;203 ;62H
Vin_80 EQU .56 ;170 ;*54H
Vin_75 EQU .53 ;165
VIN_DOT EQU 10h;1AH ;修改
SHORT_AD EQU .50;2.53VDC>>>>>>>>>>>>>>>>>>
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 0ah;35H
VOUT_INIT EQU 8CH
PWM_DUTY_60Hz EQU .102 ;60Hz頻率
PWM_DUTY_50Hz EQU .122 ;50Hz頻率
PWM_START_RATE EQU .20
PWM_REG_RATE EQU .40
PWM_FAST_RATE EQU .40
PWM_MAX_RATE60Hz EQU .99
PWM_MAX_RATE50Hz EQU .118
HIGH_LIMIT EQU .200
LOW_LIMIT EQU .30
OUT_SAMPLE_TIME EQU .3 ;逆變采樣在輸出電壓中點
;VBATT_10V EQU 0A4H ;
;VBATT_1V EQU 12H ;通信時電池電壓計算
BATT_10V EQU .100
BATT_11V EQU .110 ;0B7H ;0BDH
BATT_11V5 EQU .115
BATT_11V8 EQU .118 ;0C5H
BATT_12V5 EQU .125 ;0CEH
BATT_12V8 EQU .128
BATT_13V1 EQU .131
BATT_13V5 EQU .135 ;0DEH++++++++++
ChargeVolHigh equ .150
ChargeVolLow equ .80
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
;----------------------------------------------
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
POWER_220VAC EQU 00H
POWER_CONVERT EQU 55H
AC_TO_CONV EQU 0AAH
CONV_TO_AC EQU 0BBH
RelayReg1 EQU 00H
RelayReg2 EQU 05H
RelayReg3 EQU 0AH
BATT_LOW EQU 05H
BATT_NORMAL EQU 55H
BATT_NOT_SURE EQU 0AAH
BATT_FAILED EQU 0FFH
BUZPS_AcNormal EQU 56H
BUZPS_LoadOneMinOff EQU 23
BUZPS_LoadOneMinOn EQU 45
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 ;過載報警后設置
Stopbuz_key EQU 30H
TEST_OFF EQU 00H
TEST_ON EQU 55H
PWM_INIT EQU 25H
PWM1_IN_PROC EQU 55H
PWM2_IN_PROC EQU 0AAH
PWM_START EQU 55H
PWM_DELAY EQU 0DDH
OutPuT122V60HzValue EQU 35ECH;5200H
OutPuT122V50HzValue EQU 3AE6H;4273H;5930H
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 00H
RECI_READY EQU 22H
RECI_PROC EQU 55H
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_CC EQU 5BH
ASCII_JJ EQU 5DH
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
_DLY_SO equ 1 ;Serial com clk
_ASIS_POWER equ 2 ;Assist power control
_LOAD_REG equ 3 ;
_BUZPS equ 5 ;Buz output
_PWM1 equ 6
_PWM2 equ 7
;---------------------PortC defination
_RELAY3 equ 0
_RELAY2 equ 1 ;RC1,Convert signal output2(PWM)
_RELAY1 equ 2 ;RC2,Convert signal output1(PWM)
_KEY_INPUT equ 3 ;RC3,
_DLY_CS equ 4 ;RC4,Serial com output
_DLY_SCK equ 5 ;RC5,Serial com input
_COM_TX equ 6 ;RC6,
_COM_RX equ 7 ;RC7,
;-----------------------------ram defination
System_Timer EQU 20h ;0H
Off_Timer EQU 21H
Off_Timer1 EQU 22h ;1H
KeyInput_Timer EQU 23h ;2H
Startup_Timer EQU 24h ;3H
Test_Timer EQU 25h ;5H
Buzps_Timer EQU 26h ;6H
PWMDuty_Timer EQU 27h ;7H
PWMRate_Timer EQU 28h ;8H
TwoMinuteCounterLow EQU 29H
TwoMinuteCounterHigh EQU 2Ah
PWM_MAX_RATE EQU 2BH
Delay_Timer EQU 2Ch
Pow_Stataus EQU 2Dh ;0DH
Batt_JumpValue EQU 2EH
Volt_Prot EQU 2Fh ;0FH
Batt_Stataus EQU 30h ;11H
RelayState EQU 31h ;12H
PWMST_Timer EQU 32h ;16H
BuzpsStataus EQU 33h ;17H
TestStataus EQU 34h ;18H
Catch_RAM EQU 35h ;1AH
Catch_RAMH EQU 36h ;19H
CutFlag EQU 37h ;14H
VIn_ADValueH EQU 38h ;1CH
VIn_ADValue EQU 39h ;1EH
VBatt_ADValue EQU 3Ah
PWMRegValue EQU 3Bh ;22H
KeyCode EQU 3ch ;24H
Control_Time EQU 3dh ;28H
ConvDly_Timer EQU 3Eh
PowConvStataus EQU 3Fh
ACDly_Timer EQU 40h
TurnOffFlag EQU 41h
AC_Battery_Timer EQU 42h
FastStartFlagH EQU 43h
FastShortTime EQU 44h ;;;;;;;;;;;
ConvStartFlag EQU 45h
ConvStart_Timer EQU 46h
ShutDownFlag EQU 47h
LoadTest_Timer EQU 48h
WenBatWorkAcSampTime EQU 49h
LoadDLY_State EQU 4Ah
BattDLY_State EQU 4Bh
Frequency EQU 4Ch ;NOT USE res 2
FrequencyCnt EQU 4Eh ;NOT USE res 2
UserFlag EQU 50h ;NOT USE
Batt_Base_Value EQU 51h
TAB_Buffer EQU 52h
LoadFlag EQU 53H
ADC_Buffer EQU 54h
Crurrent_N EQU 05AH
PWMStataus EQU 05BH
CurrentAvgValue EQU 5cH
Buzz_Status1 EQU 5DH
CurrSumLow EQU 5EH
CurrSumHi EQU 5FH
SampCurrCount EQU 60H
;==========User Flag Define
;--------------------------------Working ram buffer defination
WR0 EQU 61h
WR1 EQU 62h
WR2 EQU 63h
WR3 EQU 64h
WR4 EQU 65h
WR5 EQU 66h
WR6 EQU 67h
WR7 EQU 68h
WR8 EQU 69h
WR9 EQU 6Ah
VoutSamlp_Point EQU 6Bh
OutputFreq EQU 6Ch ;未用
VOut_ADValue EQU 6Dh ;未用
WR13 EQU 6Eh
Load_LinkTime EQU 6Fh
direction_Value EQU 70h
TwoMinuteCounterLow1 EQU 76h
TwoMinuteCounterHigh1 EQU 77H
BcdMi EQU 78H
BcdLo EQU 79H
SampCurr10MS EQU 07AH
DOWN_LOWTIME EQU 07BH
ON_HIGETIME EQU 07CH
PchSave EQU 7dH
StatusSave EQU 7eh
WSave EQU 7fh
;---------------------------------------------
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
COMWR6 EQU 0B6H
COMWR4 EQU 0B7H
COMWR5 EQU 0B8H
COMWR7 EQU 0B9H
COM_Buffer EQU 0BAh
HPCREG EQU 0FBH
HWR13 EQU 0FCh
HWR14 EQU 0FDh
HWR15 EQU 0FEh
HWR16 EQU 0FFh
;use HT1621 Display
;
;Segment connect as follow
; COM0 COM1 COM2
;S0 Normal LoadA BatteryCapacity1
;S1 Battery LoadB BatteryCapacity2
;S2 Charge LoadC BatteryCapacity3
;S3 OverLoad LoadD BatteryCapacity4
;S4 Fault LoadE BatteryCapacity5
;
;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 PORTB,_DLY_SO ;RC3
ELSE
BCF PORTB,_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;(54h)
Normal EQU 0
LoadA EQU 1
BatteryCapacity1 EQU 2
Seg1RAM EQU ADC_Buffer+1
Battery EQU 0
LoadB EQU 1
BatteryCapacity2 EQU 2
Seg2RAM EQU ADC_Buffer+2
Charge EQU 0
LoadC EQU 1
BatteryCapacity3 EQU 2
Seg3RAM EQU ADC_Buffer+3
OverLoad EQU 0
LoadD EQU 1
BatteryCapacity4 EQU 2
Seg4RAM EQU ADC_Buffer+4
Fault EQU 0
LoadE EQU 1
BatteryCapacity5 EQU 2
ON EQU 43
OFF EQU 78
HIGHO EQU 99
LOWO EQU 31
BATTCAPDLY MACRO sseg
IF sseg==0
BCF Seg0RAM,BatteryCapacity1
BCF Seg1RAM,BatteryCapacity2
BCF Seg2RAM,BatteryCapacity3
BCF Seg3RAM,BatteryCapacity4
BCF Seg4RAM,BatteryCapacity5
ENDIF
IF sseg==1
BSF Seg0RAM,BatteryCapacity1
BCF Seg1RAM,BatteryCapacity2
BCF Seg2RAM,BatteryCapacity3
BCF Seg3RAM,BatteryCapacity4
BCF Seg4RAM,BatteryCapacity5
ENDIF
IF sseg==2
BSF Seg0RAM,BatteryCapacity1
BSF Seg1RAM,BatteryCapacity2
BCF Seg2RAM,BatteryCapacity3
BCF Seg3RAM,BatteryCapacity4
BCF Seg4RAM,BatteryCapacity5
ENDIF
IF sseg==3
BSF Seg0RAM,BatteryCapacity1
BSF Seg1RAM,BatteryCapacity2
BSF Seg2RAM,BatteryCapacity3
BCF Seg3RAM,BatteryCapacity4
BCF Seg4RAM,BatteryCapacity5
ENDIF
IF sseg==4
BSF Seg0RAM,BatteryCapacity1
BSF Seg1RAM,BatteryCapacity2
BSF Seg2RAM,BatteryCapacity3
BSF Seg3RAM,BatteryCapacity4
BCF Seg4RAM,BatteryCapacity5
ENDIF
IF sseg==5
BSF Seg0RAM,BatteryCapacity1
BSF Seg1RAM,BatteryCapacity2
BSF Seg2RAM,BatteryCapacity3
BSF Seg3RAM,BatteryCapacity4
BSF Seg4RAM,BatteryCapacity5
ENDIF
ENDM
LOADDLY: MACRO sseg
IF sseg==0
BCF Seg0RAM,LoadA
BCF Seg1RAM,LoadB
BCF Seg2RAM,LoadC
BCF Seg3RAM,LoadD
BCF Seg4RAM,LoadE
ENDIF
IF sseg==1
BSF Seg0RAM,LoadA
BCF Seg1RAM,LoadB
BCF Seg2RAM,LoadC
BCF Seg3RAM,LoadD
BCF Seg4RAM,LoadE
ENDIF
IF sseg==2
BSF Seg0RAM,LoadA
BSF Seg1RAM,LoadB
BCF Seg2RAM,LoadC
BCF Seg3RAM,LoadD
BCF Seg4RAM,LoadE
ENDIF
IF sseg==3
BSF Seg0RAM,LoadA
BSF Seg1RAM,LoadB
BSF Seg2RAM,LoadC
BCF Seg3RAM,LoadD
BCF Seg4RAM,LoadE
ENDIF
IF sseg==4
BSF Seg0RAM,LoadA
BSF Seg1RAM,LoadB
BSF Seg2RAM,LoadC
BSF Seg3RAM,LoadD
BCF Seg4RAM,LoadE
ENDIF
IF sseg==5
BSF Seg0RAM,LoadA
BSF Seg1RAM,LoadB
BSF Seg2RAM,LoadC
BSF Seg3RAM,LoadD
BSF Seg4RAM,LoadE
ENDIF
ENDM
NORMALDLY MACRO III
IF III==ON
BSF Seg0RAM,Normal
ELSE
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -