?? ups600w16f73.asm
字號:
Batt_Voltage_Ture
BCF STATUS,RP0
MOVF VBatt_ADValue,0
MOVWF WR6
CLRF WR7
MOVLW .100
MOVWF WR0
CLRF WR1
CALL MULL_16Bit ;(WR7,WR6)*(WR1,WR0)=(WR5,WR4)
MOVF WR5,W
MOVWF WR7
MOVF WR4,W
MOVWF WR6
MOVLW .162
MOVWF WR0
MOVLW 0
MOVWF WR1
CALL Div_16Bit ;(WR7,WR6)/(WR1,WR0)=(WR3,WR2)
RETURN
;----------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;FD=TAG-09R0-ET9
Display_module:
BTFSC UserFlag,4
GOTO DLY_PROCESS
set_disp_off ;不顯示
CLRF Seg0RAM
CLRF Seg1RAM
CLRF Seg2RAM
CLRF Seg3RAM
CLRF Seg4RAM
GOTO DLY_START
;=============================================
DLY_PROCESS
MOVF ShutDownFlag,W
XORLW TURN_OFF
BTFSC STATUS,Z
GOTO set_disp_off
;************************************
MOVF Pow_Stataus,W
XORLW POWER_220VAC
BTFSC STATUS,Z
GOTO AcBatteryDecide
;************************************
set_batt_cap_dly
MOVLW .0
XORWF BattDLY_State,W
BTFSC STATUS,Z
GOTO set_batt_d_0
MOVLW .1
XORWF BattDLY_State,W
BTFSC STATUS,Z
GOTO set_batt_d_1
MOVLW .2
XORWF BattDLY_State,W
BTFSC STATUS,Z
GOTO set_batt_d_2
MOVLW .3
XORWF BattDLY_State,W
BTFSC STATUS,Z
GOTO set_batt_d_3
BATTCAPDLY 5
GOTO set_load_dly; DLY_START
AcBatteryDecide
btfsc LoadFlag,1
goto DLY_LOAD_AC2
; BCF LoadFlag,1 ;加上此條時短路LM317輸出和輸入時來回跳動,去掉此條需重新開機.
MOVF VBatt_ADValue,W
SUBLW BATT_13V1
BTFSC STATUS,C
GOTO RRRTURN_DISP
MOVLW 88H
MOVWF Batt_Base_Value
GOTO set_batt_d_4
RRRTURN_DISP
MOVLW 88H
XORWF Batt_Base_Value,W
BTFSS STATUS,Z
GOTO TURNRUN_DISPLAY
MOVF VBatt_ADValue,W
SUBLW .130
BTFSS STATUS,C
GOTO set_batt_d_4
TURNRUN_DISPLAY
MOVLW .5
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_00
MOVLW .6
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_0
MOVLW .7
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_1
MOVLW .8
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_2
MOVLW .10
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_3
MOVLW .12
SUBWF AC_Battery_Timer,W
BTFSS STATUS,C
GOTO set_batt_d_4
CLRF AC_Battery_Timer
RETURN
set_batt_d_00
BATTCAPDLY 0
GOTO set_load_dly
set_batt_d_0
BATTCAPDLY 1
GOTO set_load_dly
set_batt_d_1
BATTCAPDLY 2
GOTO set_load_dly
set_batt_d_2
BATTCAPDLY 3
GOTO set_load_dly
set_batt_d_3
BATTCAPDLY 4
GOTO set_load_dly
set_batt_d_4
BATTCAPDLY 5
GOTO set_load_dly
set_load_dly
BCF Seg3RAM,OverLoad
MOVF Pow_Stataus,W
XORLW POWER_220VAC
BTFSC STATUS,Z
GOTO AcLoadDecide
BTFSC UserFlag,5
GOTO DLY_LOAD_PROT ;負載標志常顯示.
BTFSC LoadFlag,3
GOTO DLY_LOAD_PROT2 ;負載標志閃爍.
GOTO SegRamDisp
AcLoadDecide
BTFSS LoadFlag,5
GOTO SegRamDisp
BTFSC UserFlag,5
GOTO DLY_LOAD_AC1
FAULTDLY OFF
GOTO DLY_LOAD_AC
DLY_LOAD_AC2
NORMALDLY ON
FAULTDLY ON
CHARGEDLY ON
OVERLOAD OFF
BATTDLY OFF
GOTO DLY_START
SegRamDisp
MOVLW .0
XORWF LoadDLY_State,W
BTFSC STATUS,Z
GOTO set_load_dly0
MOVLW .1
XORWF LoadDLY_State,W
BTFSC STATUS,Z
GOTO set_load_dly1
MOVLW .2
XORWF LoadDLY_State,W
BTFSC STATUS,Z
GOTO set_load_dly2
MOVLW .3
XORWF LoadDLY_State,W
BTFSC STATUS,Z
GOTO set_load_dly3
MOVLW .4
XORWF LoadDLY_State,W
BTFSC STATUS,Z
GOTO set_load_dly4
LOADDLY 5
GOTO AcOrDcDisp; set_batt_cap_dly
set_load_dly0
LOADDLY 0
GOTO AcOrDcDisp; set_batt_cap_dly
set_load_dly1
LOADDLY 1
GOTO AcOrDcDisp; set_batt_cap_dly
set_load_dly2
LOADDLY 2
GOTO AcOrDcDisp; set_batt_cap_dly
set_load_dly3
LOADDLY 3
GOTO AcOrDcDisp; set_batt_cap_dly
set_load_dly4
LOADDLY 4
; GOTO AcOrDcDisp; set_batt_cap_dly
AcOrDcDisp
MOVF Pow_Stataus,W
XORLW POWER_220VAC
BTFSS STATUS,Z
GOTO DLY_CONVERT ;逆變時顯示
;交流供電時顯示
NORMALDLY ON
CHARGEDLY ON
FAULTDLY OFF
;OVERLOAD OFF
; LOADDLY 0
BATTDLY OFF
GOTO DLY_START
DLY_CONVERT
MOVF TurnOffFlag,W
XORLW TURN_OFF
BTFSC STATUS,Z
GOTO DLY_BATT_FAULT
BTFSC UserFlag,1
GOTO DLY_BATT_FAULT ;過載顯示故障
NORMALDLY OFF
CHARGEDLY OFF
FAULTDLY OFF
OVERLOAD OFF
BATTDLY ON
GOTO DLY_START
; GOTO set_load_dly
;============================================
DLY_LOAD_PROT2
MOVF Load_LinkTime,F
BTFSS STATUS,Z
GOTO DLY_LOAD_PROT3
BTFSS LoadFlag,7
GOTO Dly_LoadOn
BCF LoadFlag,7
OVERLOAD OFF
MOVLW .2
MOVWF Load_LinkTime
GOTO DLY_LOAD_PROT1
Dly_LoadOn
MOVLW .2
MOVWF Load_LinkTime
BSF LoadFlag,7
GOTO DLY_LOAD_PROT
DLY_LOAD_PROT3
BTFSC LoadFlag,7
GOTO DLY_LOAD_PROT
OVERLOAD OFF
GOTO DLY_LOAD_PROT1
DLY_LOAD_PROT
OVERLOAD ON
DLY_LOAD_PROT1
NORMALDLY OFF
CHARGEDLY OFF
FAULTDLY OFF
BATTDLY ON
LOADDLY 5
GOTO DLY_START
DLY_LOAD_AC1
FAULTDLY ON
DLY_LOAD_AC
NORMALDLY ON
CHARGEDLY ON
OVERLOAD ON
BATTDLY OFF
LOADDLY 5
GOTO DLY_START
;=================================================
DLY_BATT_FAULT
; OVERLOAD OFF
BTFSS UserFlag,1
GOTO DispBattOver
OVERLOAD ON
DispBattOver
NORMALDLY OFF
CHARGEDLY OFF
FAULTDLY ON
LOADDLY 0
BATTDLY OFF
GOTO DLY_START
; GOTO set_batt_cap_dly
;=====================================
DLY_START
CALL WriteDisplayData
RETURN
;=====================================
;將12 BIT COMMAND分成8+4位方式存放
;入口: W: CODE ID
;出口: 無
WriteCommand:
MOVWF WR0
BCF STATUS,C
RLF WR0,F
MOVLW LOW COMMAND_ID_TAB
ADDWF WR0,W
MOVWF TAB_Buffer
CALL GetCommand
MOVWF WR1 ;COMMAND HIGH Byte
PAGESEL $
INCF WR0,W
ADDLW LOW COMMAND_ID_TAB
MOVWF TAB_Buffer
CALL GetCommand
MOVWF WR2 ;COMMAND LOW Byte
PAGESEL $
;入口: WR1 COMMAND HIGH Byte
; WR2 COMMAND LOW Byte (only high 4 bits used)
;出口:無
MOVLW 0x08 ;send high byte of command
MOVWF WR3
CS LOWO ;片選有效
WriteHighNext
DATA_PIN HIGHO
RLF WR1,F
BTFSS STATUS,C
DATA_PIN LOWO
MAKEWRCLK
DECFSZ WR3,F
GOTO WriteHighNext
MOVLW 0x04 ;Send Low 4 bits of command
MOVWF WR3
writeLowNext
DATA_PIN HIGHO
RLF WR2,F
BTFSS STATUS,C
DATA_PIN LOWO
MAKEWRCLK
DECFSZ WR3,F
GOTO writeLowNext
CS HIGHO ;片選無效
RETURN
;===================================================
GetCommand:
MOVLW HIGH COMMAND_ID_TAB
MOVWF PCLATH
MOVF TAB_Buffer,W
MOVWF PCL
;
;Write Data To Ht1621 Display RAM (only successive address writing be used)
;Source data : Seg0RAM->Seg4RAM LOW 4 bits
;Ht1621 Display RAM Start Address :0x00 (6bit)
;Only write address 0-5
WriteDisplayData:
;First Write Control Code & Start Address
MOVLW 0xA0 ;Control Code & Start Address 8 Bits (9 Bits Total)
MOVWF WR1
MOVLW 0x08 ;Write 8 bits First
MOVWF WR3
CS LOWO ;Select HT1621
writebit
DATA_PIN HIGHO
RLF WR1,F
BTFSS STATUS,C
DATA_PIN LOWO
MAKEWRCLK
DECFSZ WR3,F
GOTO writebit
DATA_PIN LOWO ;Control Code & Start Address 1 Bit(9 Bits Total)
MAKEWRCLK
MOVF Seg0RAM,W
CALL WriteData
MOVF Seg1RAM,W
CALL WriteData
MOVF Seg2RAM,W
CALL WriteData
MOVF Seg3RAM,W
CALL WriteData
MOVF Seg4RAM,W
CALL WriteData
CS HIGHO
RETURN
;==================
;入口: W
WriteData:
MOVWF WR1
MOVLW 0x04
MOVWF WR3
writenext
DATA_PIN HIGHO
RRF WR1,F
BTFSS STATUS,C
DATA_PIN LOWO
MAKEWRCLK
DECFSZ WR3,F
GOTO writenext
RETURN
;========================
Output_module:
CALL KEY_RESPONSE
BTFSS UserFlag,4
GOTO OUTPUT_EXIT
BTFSC UserFlag,5
GOTO OUTPUT_MOD_EXIT
; BTFSC UserFlag,1
; GOTO OUTPUT_EXIT ;過載/短路不在檢測
; BTFSC LoadFlag,3
; GOTO OUTPUT_MOD_EXIT
CALL VOLT_REGULATE
CALL BUZPS_REMIND
RETURN
OUTPUT_MOD_EXIT
BSF PORTB,_BUZPS
OUTPUT_EXIT
RETURN
;-------------------------------------------------------------
KEY_RESPONSE
BTFSC UserFlag,4
GOTO SYS_KEY_PROC
MOVF KeyCode,W
XORLW KEY_LONG
BTFSS STATUS,Z
GOTO SYS_START_EXIT
MOVF Pow_Stataus,W
XORLW POWER_220VAC
BTFSS STATUS,Z
GOTO BATT_START
BSF PORTB,_ASIS_POWER
BSF PORTC,_RELAY1
BSF UserFlag,4
MOVLW FOUR_TEN_SECOND
MOVWF Buzps_Timer
RETURN
BATT_START
MOVF Batt_Stataus,W
XORLW BATT_NOT_SURE
BTFSC STATUS,Z
GOTO BATT_START_EXIT
MOVF Batt_Stataus,W
XORLW BATT_FAILED
BTFSC STATUS,Z
GOTO BATT_START_EXIT
BCF PORTC,_RELAY1
BSF PORTB,_ASIS_POWER
BSF UserFlag,4
RETURN
SYS_START_EXIT
MOVF KeyCode,W
XORLW KEY_SHORT
BTFSC STATUS,Z
GOTO SYS_START_FAILED
RETURN
SYS_START_FAILED
BCF PORTC,_RELAY3
BCF PORTB,_ASIS_POWER
RETURN
BATT_START_EXIT
RETURN
SYS_KEY_PROC
MOVF KeyCode,W
XORLW KEY_CLR
BTFSC STATUS,Z
GOTO KEY_PROC_EXIT
MOVF KeyCode,W
XORLW KEY_REPEAT
BTFSS STATUS,Z
GOTO SYS_KEY_AFFECT
RETURN
SYS_KEY_AFFECT
MOVF KeyCode,W
XORLW KEY_LONG
BTFSS STATUS,Z
GOTO KEY_SHORT_PROC
MOVF Pow_Stataus,W
XORLW POWER_220VAC
BTFSS STATUS,Z
GOTO KEY_LONG_CONV
MOVLW TURN_OFF
MOVWF ShutDownFlag
MOVLW FOUR_TEN_SECOND
MOVWF Buzps_Timer
GOTO KEY_PROC_EXIT
;=========================================
KEY_LONG_CONV
BTFSC UserFlag,5
GOTO LONG_LOAD_OVER
MOVLW TURN_OFF
MOVWF ShutDownFlag
MOVLW FOUR_TEN_SECOND
MOVWF Buzps_Timer
GOTO KEY_PROC_EXIT
;========================================
LONG_LOAD_OVER
BCF PORTB,_ASIS_POWER
KEY_LDOV_EXIT
GOTO KEY_PROC_EXIT
;========================================
;======================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -