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

📄 ups600w16f73.asm

📁 工频后备式UPS-600W
💻 ASM
📖 第 1 页 / 共 5 页
字号:
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 + -