📄 ups390w r23.asm
字号:
jmp Next_Sample
set_adc_over:
mov a,wr6
or a,wr7
snz Z
jmp End_ACSample
_is_return_zero:
clr In_ADV_BufL
clr In_ADV_BufH
ret
Next_Sample:
call sampl_Delay100uS
jmp wait_adc_act_over
;采样一周后计算平均值.
End_ACSample:
clr c
rrc wr6
rrc wr7
mov a,wr5
mov tmp5,a
mov a,wr4
mov tmp4,a ;载入被除数。
mov a,wr6 ;
mov Lh2,a ;载入除数。
mov a,wr7
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
; clr c
; rlc Ll
; rlc Lh
Input_Voltage_deal: ;采样值乘以76。
mov a,110;78 ;(76仿真器,77芯片用数对应5V电压))
mov Ll2,a ;载入乘数
mov a,0
mov Lh2,a
call MULL_OF_16Bit
;********缩小100倍
mov a,Ll
mov tmp5,a
mov a,Lh
mov tmp4,a ;载入被除数。
mov a,0 ;
mov Lh2,a ;载入除数100。
mov a,143;100
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
The_InVol_Value:
mov a,Ll
mov In_ADValueL,a
mov a,Lh
mov In_ADValueH,a
mov a,140
sub a,In_ADValueL
mov a,0
sbc a,In_ADValueH
sz c
jmp Set_InputClr
mov a,In_ADValueL
sub a,3
mov In_ADValueL,a
mov a,In_ADValueH
sbc a,wr8
mov In_ADValueH,a
snz Ac_Status_Flag
jmp exit_AcinputSam
inc Inv_resut_AC_Cunt
mov a,Inv_resut_AC_Cunt
sub a,5
snz c
jmp Set_InputClr
ret
Set_InputClr:
clr In_ADValueH
clr In_ADValueL
exit_AcinputSam:
ret
ADC_Input endp
;---------------------------------------
sampl_Delay100uS proc
mov a,2
mov SampDelaytime,a
Loop_100us:
sz SampDelaytime
jmp Loop_100us
ret
sampl_Delay100uS endp
;*********BATTERY VALUE SAMPLE*********
ADC_BAT proc
snz Sent_Data_Star ;发送数据时不采样电流.
jmp Sampling_Batter
sz Send_StarFlag
jmp exit_ADC_Curren
Sampling_Batter:
clr emi
Samp_BAT_set
ADC_RUN_start
Sample_BAT_loop:
sz EOCB
jmp Sample_BAT_loop
mov a,ADRH
mov ADC_ValueL,a ;4DH
mov a,ADRL
and a,0C0H ;11000000B
mov ADC_ValueH,a ;4EH
set emi
call ADC_Value_Deal
mov a,ADC_ValueL
mov BAT_ADValueL,a
mov a,ADC_ValueH
mov BAT_ADValueH,a
batter_Sample_exit:
ret
ADC_BAT endp
;***********************************************
Out_curren_Sample proc
snz Sent_Data_Star ;发送数据时不采样电流.
jmp Curren_SampleRun
sz Send_StarFlag
jmp exit_ADC_Curren
Curren_SampleRun:
clr emi
Samp_OutCurren
ADC_RUN_start
OutCurren_Wait:
sz EOCB
jmp OutCurren_Wait
mov a,ADRH
mov ADC_ValueL,a ;4DH
mov a,ADRL
and a,0C0H ;4EH
mov ADC_ValueH,a
set emi
ADC_AMOut_next:
call ADC_Value_Deal
mov a,ADC_ValueL
mov OutCurrenRAM_L,a
mov a,ADC_ValueH
mov OutCurrenRAM_H,a
exit_ADC_Curren:
ret
Out_curren_Sample endp
;***********ADC数据转换*************************
ADC_Value_Deal proc
clr c
rlc ADC_ValueH
rlc ADC_ValueL
rlc ADC_ValueH
rlc ADC_ValueL
rlc ADC_ValueH
mov a,3h
and a,ADC_ValueH
mov ADC_ValueH,a
ret
ADC_Value_Deal endp
;********LCD COMMAND SEND****************
;---------------------------------
delay_100us proc
mov a,10
mov delay_10ms_timer,a
delay_1ms_wait:
nop
nop
nop
nop
sdz delay_10ms_timer
jmp delay_1ms_wait
ret
delay_100us endp
;**************************************
display_LED proc
snz system_DisSwitch
jmp Turn_Off_LED
call short_AdSampLoad
call OutPut_Load
call battery_sege
snz Ac_Status_Flag
jmp set_AcNormal ;市电工作时显示
INV_WORK_DISPL:
GreLed_OFF
sz Battery_Low ;电池欠压保护开红灯
jmp TurnOnRedLed
sz Over_Load
jmp Only_TurnOnRedLed
sz Out_Load_Short
jmp Only_TurnOnRedLed
sz Battery_Lack
jmp BattLow_YelBlink
SZ Normal_INV_Test
jmp BattTest_RedBlink
YelLed_ON
RedLed_OFF
GreLed_OFF
ret
Only_TurnOnRedLed:
YelLed_OFF
GreLed_OFF
TurnOnRedLed:
RedLed_ON
ret
Turn_Off_LED:
RedLed_OFF
YelLed_OFF
GreLed_OFF
RET
BattTest_RedBlink:
YelLed_ON
sz LEDBlink_Timer
ret
snz pc4
jmp BlinkOff_RED
RedLed_OFF
jmp Red_Blink_LoadTime
BlinkOff_RED:
RedLed_ON
Red_Blink_LoadTime:
mov a,Led_Blink_Time
mov LEDBlink_Timer,a
ret
BattLow_YelBlink:
sz LEDBlink_Timer
ret
sz pc2
jmp BlinkOff_Yel
YelLed_ON
jmp Load_time
BlinkOff_Yel:
YelLed_OFF
jmp Load_time
set_AcNormal:
YelLed_OFF
sz Relay_Flag2
jmp BypassMode_Dis
GrenLed_Blink:
sz LEDBlink_Timer
jmp If_OverLoad
snz pc3
jmp BlinkOn_GreLed
BlinkOff_GreLed:
GreLed_OFF
jmp Load_time
BlinkOn_GreLed:
GreLed_ON
Load_time:
mov a,Led_Blink_Time
mov LEDBlink_Timer,a
jmp If_OverLoad
BypassMode_Dis:
GreLed_ON
If_OverLoad:
sz AC_Power_Load
jmp Set_FaultRedLed
RedLed_OFF
ret
Set_FaultRedLed:
RedLed_ON
ret
display_LED endp
;*******************************
;----------------------------------
short_AdSampLoad proc
snz Ac_Status_Flag
jmp Short_SamplExit
SZ Over_Load
jmp Short_SamplExit
sz Out_Load_Short
jmp Short_SamplExit
sz Battery_Low
jmp Short_SamplExit
sz DC_Status_Flag
jmp Short_SamplExit
Samp_SHORT_set
ADC_RUN_start
; clr emi
SamplShort_Wait:
sz EOCB
jmp SamplShort_Wait
mov a,ADRH
; set emi
mov wr00,a
sub a,40h ;4DH
sz c
jmp Set_Short_Status
clr Shor_Count
No_OverLoa:
clr Out_Load_Short
ret
Set_Short_Status:
inc Shor_Count
mov a,1
sub a,Shor_Count
sz c
jmp No_OverLoa
set System_Stat_Flag
set Out_Load_Short
mov a,30
mov Cut_Power_Time,a ;三十钞关电源
Short_SamplExit:
ret
short_AdSampLoad endp
OutPut_Load proc
snz system_POWER
jmp exit_LoadCap
sz Out_Load_Short
jmp exit_LoadCap
sz Over_Load
jmp exit_LoadCap
call Out_curren_Sample
sz Ac_Status_Flag
jmp Inverter_Load
SNZ AC_Power_Load
jmp Set_OutLoadSegs
mov a,ACOut650W%256 ;如果输出过载未关机则看是否减负载。
sub a,OutCurrenRAM_L
mov a,ACOut650W/256
sbc a,OutCurrenRAM_H
snz c
jmp AC_OverLoad
clr Ac_OverLoadDelayCount
clr Over_Load
clr AC_Power_Load
Set_OutLoadSegs:
clr AC_Power_Load
mov a,ACOut700W%256
sub a,OutCurrenRAM_L
mov a,ACOut700W/256
sbc a,OutCurrenRAM_H
snz c
jmp AC_OverLoad ;市电过载长鸣
mov a,ACOut400W%256
sub a,OutCurrenRAM_L
mov a,ACOut400W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load05
clr INV_FullLoad_Flag
clr FullLoadDelaTime
mov a,ACOut320W%256
sub a,OutCurrenRAM_L
mov a,ACOut320W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load04
mov a,ACOut240W%256
sub a,OutCurrenRAM_L
mov a,ACOut240W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load03
mov a,ACOut160W%256
sub a,OutCurrenRAM_L
mov a,ACOut160W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load02
mov a,ACOut80W%256
sub a,OutCurrenRAM_L
mov a,ACOut80W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load01
clr Forst_LoadSetCunt
clr Load_SegBufferCunt
jmp Set_Load00
;******************************************
Inverter_Load:
mov a,Ac_voltage_lower%256
sub a,OUT_ADValueL
mov a,Ac_voltage_lower/256
sbc a,OUT_ADValueH
sz c
jmp Load_Over ;增加输出欠压保护功能(2006-9-25)
mov a,DC_Short_AD%256
sub a,OutCurrenRAM_L
mov a,DC_Short_AD/256
sbc a,OutCurrenRAM_H
snz c
jmp Load_Short
mov a,DCOut550W%256 ;逆变过载关机点
sub a,OutCurrenRAM_L
mov a,DCOut550W/256
sbc a,OutCurrenRAM_H
snz c
jmp Load_Over
snz INV_FullLoad_Flag ;有无超载?
jmp DC_No_OverLoad
mov a,DCOut450W%256 ;
sub a,OutCurrenRAM_L
mov a,DCOut450W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_FullOverLoad
clr FullLoadDelaTime
clr INV_FullLoad_Flag
DC_No_OverLoad:
clr Over_Load
clr AC_Power_Load
mov a,DCOut500W%256 ;
sub a,OutCurrenRAM_L
mov a,DCOut500W/256
sbc a,OutCurrenRAM_H
snz c
jmp InvFullLoad
mov a,DCOut400W%256
sub a,OutCurrenRAM_L
mov a,DCOut400W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load05
mov a,DCOut320W%256
sub a,OutCurrenRAM_L
mov a,DCOut320W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load04
mov a,DCOut240W%256
sub a,OutCurrenRAM_L
mov a,DCOut240W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load03
mov a,DCOut160W%256
sub a,OutCurrenRAM_L
mov a,DCOut160W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load02
mov a,DCOut80W%256
sub a,OutCurrenRAM_L
mov a,DCOut80W/256
sbc a,OutCurrenRAM_H
snz c
jmp Set_Load01
clr Forst_LoadSetCunt
clr Load_SegBufferCunt
jmp Set_Load00
;---------------------------------
Set_Load00:
clr Load_1Sege
clr Load_2Sege
clr Load_3Sege
clr Load_4Sege
clr Load_5Sege
ret
Set_Load01:
set Load_1Sege
clr Load_2Sege
clr Load_3Sege
clr Load_4Sege
clr Load_5Sege
ret
Set_Load02:
set Load_1Sege
set Load_2Sege
clr Load_3Sege
clr Load_4Sege
clr Load_5Sege
ret
Set_Load03:
set Load_1Sege
set Load_2Sege
set Load_3Sege
clr Load_4Sege
clr Load_5Sege
ret
Set_Load04:
set Load_1Sege
set Load_2Sege
set Load_3Sege
set Load_4Sege
clr Load_5Sege
ret
Set_Load05:
set Load_1Sege
set Load_2Sege
set Load_3Sege
set Load_4Sege
set Load_5Sege
ret
InvFullLoad:
mov a,20
sub a,FullLoadDelaTime
snz c
jmp Set_Load05
inc FullLoadDelaTime
mov a,FullLoadDelaTime
sub a,20
snz c
jmp Set_Load05
mov a,60
mov Cut_Power_Time,a
Set_FullOverLoad:
set INV_FullLoad_Flag
jmp Set_Load05
AC_OverLoad:
mov a,Ac_OverLoadDelayCount
sub a,125
sz c
jmp exit_LoadCap
inc Ac_OverLoadDelayCount
mov a,Ac_OverLoadDelayCount
sub a,125
snz c
jmp Set_Load05
set AC_Power_Load
jmp exit_LoadCap
Load_Over:
sz Battery_Low
jmp Set_Load00
inc Over_Count
mov a,10
sub a,Over_Count
sz c
jmp Set_Load05
mov a,30
mov Cut_Power_Time,a ;三十钞关电源
set System_Stat_Flag
set Over_Load
exit_LoadCap:
ret
Load_Short:
set System_Stat_Flag
set Out_Load_Short
mov a,30
mov Cut_Power_Time,a ;三十钞关电源
RET
OutPut_Load endp
;-------------------------------------------------------
battery_sege proc
call ADC_BAT
snz Ac_Status_Flag
jmp AC_CHANGE_BatCAP
sz Battery_Low
ret
mov a,Bat12V5%256
sub a,BAT_ADValueL
mov a,Bat12V5/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Batt5Seg
clr Batter_Full
mov a,Bat12V0%256
sub a,BAT_ADValueL
mov a,Bat12V0/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Batt4Seg
mov a,Bat11V5%256
sub a,BAT_ADValueL
mov a,Bat11V5/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Batt3Seg
mov a,Bat11V0%256
sub a,BAT_ADValueL
mov a,Bat11V0/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Batt2Seg
mov a,Bat10V0%256
sub a,BAT_ADValueL
mov a,Bat10V0/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Batt1Seg
inc Batt_Low_Count
mov a,20
sub a,Batt_Low_Count
sz c
jmp set_Batt0Seg
set Battery_Low
set Battery_Lack
mov a,30
mov Cut_Power_Time,a
jmp set_Batt0Seg
set_Battfull:
set_Batt5Seg:
set Batter_Full
clr Battery_Lack
clr Battery_Low
set Batt_1sege
set Batt_2sege
set Batt_3sege
set Batt_4sege
set Batt_5sege
ret
set_Batt4Seg:
clr Battery_Lack
clr Battery_Low
set Batt_1sege
set Batt_2sege
set Batt_3sege
set Batt_4sege
clr Batt_5sege
ret
set_Batt3Seg:
clr Battery_Lack
clr Battery_Low
set Batt_1sege
set Batt_2sege
set Batt_3sege
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -