📄 ups300w16f73.asm
字号:
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 + -