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

📄 ups300w16f73.asm

📁 工频后备式UPS-300W
💻 ASM
📖 第 1 页 / 共 5 页
字号:

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
        ups_disp ON;++++++++++++++++++++++++
        CALL	OUTPUT_VOLT_DISP;++++++++++++++
        MOVF    Pow_Stataus,W
        XORLW   POWER_220VAC
        BTFSS   STATUS,Z
        GOTO    DLY_CONVERT	;逆变时显示
	;交流供电时显示
;+++++++++++++++++++++++++++++
	BTFSC	UserFlag,AC_OverLoad	
	GOTO	DLY_ACLOAD_PROT
	MOVLW	0BH		;00001011
	MOVWF	Seg4RAM
	MOVLW	080H		;10000000
	BCF	0B6H,1
	CALL	STATAUS_DISPLAY
	BSF	Seg2RAM,Normal
	BSF	0B6H,1	
AC_batt_cap_dly
	MOVLW   BATT_13V5
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO	DIII
        GOTO    set_batt_d_5
DIII
        BTFSC	BattDLY_State,0
        GOTO	batt_d_0
        BTFSC	BattDLY_State,1
        GOTO	batt_d_0
        BTFSC	BattDLY_State,2
        GOTO	batt_d_1
        BTFSC	BattDLY_State,3
        GOTO	batt_d_2
        BTFSS	BattDLY_State,4
        GOTO	batt_d_0
Upwards_12V5
       	MOVLW   BATT_12V8
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO	batt_d_3 
        MOVLW   BATT_13V5
        SUBWF   VBatt_ADValue,W
        BTFSS   STATUS,C
        GOTO	batt_d_4
        GOTO	set_batt_d_5
batt_d_0	
	MOVLW	.5
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_0
batt_d_1
	MOVLW	.7
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_1
batt_d_2
	MOVLW	.9
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_2
batt_d_3
	MOVLW	.11
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_3
batt_d_4
	MOVLW	.13
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_4
batt_d_5
	MOVLW	.15
	SUBWF	chargTime,W
	BTFSS	STATUS,C
	GOTO	set_batt_d_5
        CLRF	chargTime
        RETURN
DLY_ACLOAD_PROT
	MOVLW	07H
	MOVWF	Seg4RAM  
	BCF	0B6H,1
	MOVLW	0C0H			;11100000
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
	GOTO	AC_batt_cap_dly
;+++++++++++++++++++++++++++
set_batt_d_0
	MOVLW	0H
	CALL	STATAUS_DISPLAY
	GOTO	DLY_START
set_batt_d_1
	MOVLW	10H
	CALL	STATAUS_DISPLAY
	GOTO	DLY_START
	
set_batt_d_2
	MOVLW	11H
	CALL	STATAUS_DISPLAY
	GOTO	DLY_START
set_batt_d_3
	MOVLW	13H
	CALL	STATAUS_DISPLAY
	GOTO	DLY_START
set_batt_d_4
	MOVLW	17
	CALL	STATAUS_DISPLAY	
        GOTO    DLY_START
set_batt_d_5
       	MOVLW	1FH
	CALL	STATAUS_DISPLAY	
        GOTO    DLY_START
;++++++++++++++++++++++++++++++++++
DLY_CONVERT
	BCF	Seg2RAM,Normal 
        
        BTFSC	UserFlag,ConvertShort		;短路显示
        GOTO    ConvertShort_DLY		
        BTFSC	UserFlag,DC_OverLoad		;逆变过载显示
        GOTO    DLY_LOAD_PROT
	BTFSC	UserFlag,Full_Load		;逆变满载显示
	GOTO	Disp_FullLoad
	MOVF    TurnOffFlag,W
        XORLW   TURN_OFF
        BTFSC   STATUS,Z
        GOTO    DLY_BATT_FAULT
;+++++++++++++++++++++++++++++++++++++++++ 
	MOVLW	01H
	MOVWF	Seg4RAM       
	MOVLW	0A0H
	BCF	0B6H,1
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
;+++++++++++++++++++++++++++++++++++
Battery_Capacity_Seg

	MOVF	BattDLY_State,W
	BTFSC	STATUS,Z
	GOTO	set_batt_d_0
	BTFSC	BattDLY_State,0
	GOTO	set_batt_d_1
	BTFSC	BattDLY_State,1
	GOTO	set_batt_d_2
	BTFSC	BattDLY_State,2
	GOTO	set_batt_d_3
	BTFSC	BattDLY_State,3
	GOTO	set_batt_d_4
	GOTO	set_batt_d_5
;;============================================
DLY_LOAD_PROT
	MOVLW	01H
	MOVWF	Seg4RAM  
	BCF	0B6H,1
	MOVLW	0E0H		;11100000
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
	GOTO	set_batt_d_3
	
Disp_FullLoad
	MOVLW	07H
	MOVWF	Seg4RAM  
	BCF	0B6H,1
	MOVLW	0E0H		;11100000
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
	GOTO	Battery_Capacity_Seg
;???????????????????????????????????
DLY_BATT_FAULT
	MOVLW	07H
	MOVWF	Seg4RAM  
	BCF	0B6H,1
	MOVLW	0A0H
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
	GOTO	set_batt_d_0
ConvertShort_DLY
	MOVLW	07H
	MOVWF	Seg4RAM  
	BCF	0B6H,1
	MOVLW	0E0H
	CALL	STATAUS_DISPLAY
	BSF	0B6H,1
	GOTO	set_batt_d_3

;=====================================
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 $
	RETURN
;+++++++++++++++++++++++++++++
;入口: WR1 COMMAND HIGH Byte
;      WR2 COMMAND LOW Byte (only high 4 bits used)
;出口:无
;+++++++++++++++++++++++++++++
GO_WRIT_LCDCOMM:	
	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
;        ORG     0577H
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
	SWAPF	Seg0RAM,W
	CALL	WriteData
	
	MOVF	Seg1RAM,W
	CALL	WriteData
	SWAPF	Seg1RAM,W
	CALL	WriteData
	
	MOVF	Seg2RAM,W
	CALL	WriteData
	SWAPF	Seg2RAM,W
	CALL	WriteData
	
	MOVF	Seg3RAM,W
	CALL	WriteData
	SWAPF	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
        MOVF    SystemStataus,W
        XORLW   SYSTEM_NORMAL
        BTFSS   STATUS,Z
        GOTO    OUTPUT_EXIT
        BTFSC	UserFlag,DC_OverLoad
        GOTO    OUTPUT_MOD_EXIT

        BTFSC	UserFlag,ConvertShort
        GOTO    OUTPUT_MOD_EXIT		;过载/短路不在检测
        
        CALL    VOLT_REGULATE
OUTPUT_MOD_EXIT 
        CALL    BUZPS_REMIND

OUTPUT_EXIT 
        RETURN
;-------------------------------------------------------------
KEY_RESPONSE 
        MOVF    SystemStataus,W
        XORLW   SYSTEM_NORMAL
        BTFSC   STATUS,Z
        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     PORTB,_RELAY1
        MOVLW   SYSTEM_NORMAL
        MOVWF   SystemStataus
        MOVLW   BUZPS_INIT
        MOVWF   BuzpsStataus
        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     PORTB,_RELAY1
        BSF     PORTB,_ASIS_POWER
        MOVLW   SYSTEM_NORMAL
        MOVWF   SystemStataus
        RETURN
SYS_START_EXIT 
        MOVF    KeyCode,W
        XORLW   KEY_SHORT
        BTFSC   STATUS,Z
        GOTO    SYS_START_FAILED
        RETURN
SYS_START_FAILED 
        BCF     PORTB,_RELAY3
        BCF     PORTB,_ASIS_POWER
        
        ;MOVLW   SYSTEM_INIT
        ;MOVWF   SystemStataus
        
        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   BUZPS_INIT
        MOVWF   BuzpsStataus
        MOVLW   FOUR_TEN_SECOND
        MOVWF   Buzps_Timer
        GOTO    KEY_PROC_EXIT
;        ORG     05F1H
;=========================================
KEY_LONG_CONV 
        BTFSC	UserFlag,DC_OverLoad
        GOTO    LONG_LOAD_OVER
        MOVLW   TURN_OFF
        MOVWF   ShutDownFlag
        MOVLW   BUZPS_INIT
        MOVWF   BuzpsStataus
        MOVLW   FOUR_TEN_SECOND
        MOVWF   Buzps_Timer
        GOTO    KEY_PROC_EXIT
;========================================
LONG_LOAD_OVER 
;        MOVF    BuzpsStataus,W
;        XORLW   BUZPS_STOP
;        BTFSS   STATUS,Z
;        GOTO    KEY_LDOV_EXIT
;        BTFSC   PORTC,_LED_RED
;        GOTO    LOAD_LED_OFF
        MOVLW   BUZPS_CANCLE
        MOVWF    BuzpsStataus
        BCF     PORTB,_ASIS_POWER
KEY_LDOV_EXIT 
        GOTO    KEY_PROC_EXIT
;========================================
KEY_BUZPS_STOP 
        BCF     PORTB,_BUZPS
        MOVLW   BUZPS_STOP
        MOVWF   BuzpsStataus
        GOTO    KEY_PROC_EXIT
;===============================================
KEY_SHORT_PROC 
        MOVF    Pow_Stataus,W
        XORLW   POWER_220VAC
        BTFSS   STATUS,Z
        GOTO    KEY_SHORT_CONV
        MOVLW   TEST_ON
        MOVWF   TestStataus
        BSF     UserFlag,TestFlag

        MOVLW   FOUR_SECOND
        MOVWF   Test_Timer
        MOVLW   POWER_CONVERT
        MOVWF   Pow_Stataus
        MOVLW   CUT_START
        MOVWF   CutFlag
        GOTO    KEY_PROC_EXIT
;        ORG     0612H
;=========================================
KEY_SHORT_CONV
 
        BTFSC	UserFlag,DC_OverLoad
        GOTO    SHORT_LOAD_OVER
        
        BTFSC	UserFlag,ConvertShort
        GOTO	CONVERTSHORT_KEY	;短路保护时手动关机
        
        MOVF    BuzpsStataus,W
        XORLW   BUZPS_STOP
        BTFSS   STATUS,Z
        GOTO    KEY_BUZPS_STOP
        MOVF    Batt_Stataus,W
        XORLW   BATT_NORMAL
        BTFSS   STATUS,Z
        G

⌨️ 快捷键说明

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