📄 ups300w46r23.asm
字号:
clr Batt_4sege
clr Batt_5sege
ret
set_Batt2Seg:
clr Battery_Lack
clr Battery_Low
set Batt_1sege
set Batt_2sege
clr Batt_3sege
clr Batt_4sege
clr Batt_5sege
ret
set_Batt1Seg:
clr Battery_Low
set Battery_Lack
set Batt_1sege
clr Batt_2sege
clr Batt_3sege
clr Batt_4sege
clr Batt_5sege
ret
set_Batt0Seg:
clr Batt_1sege
clr Batt_2sege
clr Batt_3sege
clr Batt_4sege
clr Batt_5sege
ret
AC_CHANGE_BatCAP:
sz Batter_Full
jmp Batter_NotFull
mov a,Bat13V4%256
sub a,BAT_ADValueL
mov a,Bat13V4/256
sbc a,BAT_ADValueH
SNZ c
jmp set_Battfull
mov a,Ac_Charge_KineTime
sub a,2
SNZ c
jmp set_Batt0Seg
mov a,Ac_Charge_KineTime
sub a,4
SNZ c
jmp set_Batt1Seg
mov a,Ac_Charge_KineTime
sub a,6
SNZ c
jmp set_Batt2Seg
mov a,Ac_Charge_KineTime
sub a,8
SNZ c
jmp set_Batt3Seg
mov a,Ac_Charge_KineTime
sub a,10
SNZ c
jmp set_Batt4Seg
mov a,Ac_Charge_KineTime
sub a,14
SNZ c
jmp set_Batt5Seg
clr Ac_Charge_KineTime
ret
Batter_NotFull:
mov a,Bat12V9%256
sub a,BAT_ADValueL
mov a,Bat12V9/256
sbc a,BAT_ADValueH
SZ c
jmp Clear_Full
jmp set_Batt5Seg
Clear_Full:
clr Batter_Full
ret
battery_sege endp
AC_Adjust_OutVoltage proc
call ADC_Input
clr pb7
snz system_POWER
jmp exit_AC_Working
call AC_InputHi_Low
sz Ac_Status_Flag
ret
set Inverter_INI ;冷启动缓开通去掉.
sz Relay_Flag1 ;升压
jmp OUT_Hoist_Reset
sz Relay_Flag2 ;旁路
jmp OUT_Bypass_Reset
sz Relay_Flag3 ;降压
jmp Set_OutLower_Reset
jmp exit_AC_Adjust
exit_AC_Working:
CUT_InputAC
sz Battery_Low
jmp Ac_Fault_Reset
ret
;---------------------------------------
Set_OutLower_Reset:
mov a,In_ADValueH
mov wr0,a
mov a,AC_230V%256
sub a,In_ADValueL
mov a,AC_230V/256
sbc a,wr0
snz c
jmp Set_Relay_Flag3 ;230V>Vin
mov a,In_ADValueH
mov wr0,a
mov a,AC_200V%256
sub a,In_ADValueL
mov a,AC_200V/256
sbc a,wr0
snz c ;
jmp Set_Relay_Flag2
jmp Set_Relay_Flag1 ;200V>Vin
;----------------------------------------
OUT_Bypass_Reset:
mov a,In_ADValueH
mov wr0,a
mov a,AC_240V%256
sub a,In_ADValueL
mov a,AC_240V/256
sbc a,wr0
snz c
jmp Set_Relay_Flag3 ;240V<Vin
mov a,In_ADValueH
mov wr0,a
mov a,AC_200V%256
sub a,In_ADValueL
mov a,AC_200V/256
sbc a,wr0
sz c
jmp Set_Relay_Flag1 ;200V≥Vin
jmp Set_Relay_Flag2 ;200V<Vin
;-----------------------------------
OUT_Hoist_Reset:
mov a,In_ADValueH
mov wr0,a
mov a,AC_210V%256
sub a,In_ADValueL
mov a,AC_210V/256
sbc a,wr0
sz c
jmp Set_Relay_Flag1 ;200V≥Vin
mov a,In_ADValueH
mov wr0,a
mov a,AC_240V%256
sub a,In_ADValueL
mov a,AC_240V/256
sbc a,wr0
snz c ;
jmp Set_Relay_Flag3
jmp Set_Relay_Flag2 ;200<Vin≤240V ;
;---------------------------------------
Ac_Fault_Reset:
mov a,In_ADValueH
mov wr0,a
mov a,AC_265V%256
sub a,In_ADValueL
mov a,AC_265V/256
sbc a,wr0
snz c
ret
mov a,In_ADValueH
mov wr0,a
mov a,AC_175V%256
sub a,In_ADValueL
mov a,AC_175V/256
sbc a,wr0
sz c
jmp exit_ACreset ;
sz AC_RelayDelayTime
ret
sz Battery_Low ;如果是电池欠压则不进行逆变零点检测。
jmp AC_Power_reset
wait_AC_0Poin01:
sz Frequency_dataBuffer
jmp wait_AC_0Poin01
wait_Ac_0poin:
mov a,95
sub a,Frequency_dataBuffer
sz c
jmp wait_Ac_0poin
mov a,Frequency_dataBuffer
mov AC_Direction,a
PWM_Zore_Wait:
mov a,PWM_Flag
xor a,2
snz Z
jmp PWM_Zore_Wait
sz PWM_on_time
jmp PWM_Zore_Wait
AC_Power_reset:
clr Ac_Status_Flag ;置市电正常
clr Battery_Low
set system_POWER
clr Shut_Down_Flag
TurnOn_InputAC
clr PWM_on_time
clr PWM_off_time
exit_ACreset:
ret
Set_Relay_Flag1:
OUT_HoistVoltage
set Relay_Flag1
clr Relay_Flag2
clr Relay_Flag3
ret
Set_Relay_Flag2:
OUT_BypassVoltage
clr Relay_Flag1
set Relay_Flag2
clr Relay_Flag3
ret
Set_Relay_Flag3:
OUT_LowerVoltage
clr Relay_Flag1
clr Relay_Flag2
set Relay_Flag3
exit_AC_Adjust:
ret
AC_Adjust_OutVoltage endp
;******************************************
AC_InputHi_Low proc
snz Normal_INV_Test ;为测试请求状态?
jmp Working_Ac_Pres
sz TestInvTime
jmp Set_Vin_Over ;测试逆变时间未到
clr Normal_INV_Test
Working_Ac_Pres:
sz Ac_Status_Flag
jmp Ac_Fault_Reset
mov a,In_ADValueH
mov wr0,a
mov a,AC_275V%256
sub a,In_ADValueL
mov a,AC_275V/256
sbc a,wr0
snz c
jmp Set_Vin_Over
mov a,AC_165V%256
sub a,In_ADValueL
mov a,AC_165V/256
sbc a,wr0
sz c
jmp Set_Vin_Over
clr Inv_resut_AC_Cunt
;市电正常
clr Buzzer_Cry_Sta ;开蜂鸣器
set DC_Status_Flag
TurnOn_InputAC
ret
Set_Vin_Over:
Take_0Poine:
sz Frequency_dataBuffer
jmp Take_0Poine
make_RelayCutPoin:
mov a,60
sub a,Frequency_dataBuffer
sz c
jmp make_RelayCutPoin
CUT_InputAC
mov a,55
mov Start_Run_Time,a
set Ac_Status_Flag
ret
AC_InputHi_Low endp
;******************************************
System_Fault_Judgement proc
sz Out_Load_Short
jmp System_Fault_run
sz Battery_Low
jmp TurnOff_PowerWait
clr Battery_Low_Cunt
sz Over_Load
jmp System_Fault_run
sz INV_FullLoad_Flag
jmp System_LoadFull
ret
TurnOff_PowerWait:
inc Battery_Low_Cunt
mov a,Battery_Low_Cunt
sub a,10
sz c
jmp System_Fault_run
ret
System_LoadFull:
sz Cut_Power_Time
jmp exit_SysPower_Cut
clr system_POWER
clr system_DisSwitch
clr pd1
jmp exit_SysPower_Cut
System_Fault_run:
snz Ac_Status_Flag
jmp exit_SysPower_Cut
clr system_POWER
sz Cut_Power_Time
jmp exit_SysPower_Cut
clr system_DisSwitch
clr pd1
exit_SysPower_Cut:
ret
System_Fault_Judgement endp
;*****************************************
Buzzer_WorkingControl proc
mov a,Long_Key
xor a,KEY_STATUS
sz Z
jmp LongTime_Cry
sz System_Stat_Flag
jmp LongTime_Cry
snz system_POWER
jmp Buzzer_Unusul
sz INV_FullLoad_Flag
jmp LongTime_Cry
sz DC_Status_Flag
jmp Buzzer_NoINV
sz Battery_Lack
jmp Buzzer_Crying ;电池欠压不判断是否消音。
mov a,0ffh
xor a,Buzzer_Cry_Sta
sz Z
jmp Buzzer_OFF
Buzzer_Crying:
sz Buzzer_CryTime
jmp exit_Buzzer
snz pa3
jmp Turn_on_Buz
sz Battery_Lack
jmp Fast_Cry_Space
mov a,30
mov Buzzer_CryTime,a
clr pa3
jmp exit_Buzzer
Fast_Cry_Space:
mov a,6
mov Buzzer_CryTime,a
clr pa3
jmp exit_Buzzer
Turn_on_Buz:
mov a,3
mov Buzzer_CryTime,a
set pa3
jmp exit_Buzzer
Buzzer_Unusul:
sz Out_Load_Short
jmp LongTime_Cry
sz Over_Load
jmp LongTime_Cry
jmp Buzzer_OFF
Buzzer_NoINV:
snz AC_Power_Load
jmp Buzzer_OFF
LongTime_Cry:
set pa3
ret
Buzzer_OFF:
clr PA3
exit_Buzzer:
ret
Buzzer_WorkingControl endp
;****************************************
;16位乘法。
MULL_OF_16Bit proc
mov a,Ll2
mull_0:
mov wr2,a ;乘数低字节
mov a,Ll ;被乘数低字节
clr wr1
clr wr0
clr wr3
set wr3.3
mull_1:
clr c
sz wr2.0
addm a,wr1
rrc wr1 ;积右移一位。
rrc wr0
rrc wr2
sdz wr3
jmp mull_1
mov a,wr0
mov tmp4,a
mov a,wr1
mov tmp5,a
mov a,Ll2
mov wr2,a
mov a,Lh
clr wr1
clr wr0
clr wr3
set wr3.3
mull_2:
clr c
sz wr2.0
addm a,wr1
rrc wr1
rrc wr0
rrc wr2
sdz wr3
jmp mull_2
mov a,wr0
addm a,tmp5
mov a,Lh2
mov wr2,a
mov a,Ll
clr wr1
clr wr0
clr wr3
set wr3.3
mull_3:
clr c
sz wr2.0
addm a,wr1
rrc wr1
rrc wr0
rrc wr2
sdz wr3
jmp mull_3
mov a,wr0
add a,tmp5
mov Lh,a ;得积高位(91h)
mov a,tmp4
mov Ll,a ;得积低位(92h)
ret
MULL_OF_16Bit endp
;********************************************
;16位除法子程序。
DIV_OF_16Bit proc
; mov a,32h ;被除数高字节
; mov tmp4,a
; mov a,56h ;被除数低字节
; mov tmp5,a
; mov a,08h ;除数高字节
; mov Lh2,a
; mov a,07h ;除数低字节
; mov Ll2,a
Divul_0:
mov a,10h
mov wr3,a
clr Ll
clr Lh
clr wr1
clr wr2
Divul_1:
clr c
rlc tmp5
rlc tmp4
rlc wr2
rlc wr1
mov a,wr2
sub a,Ll2
mov a,Lh2
mov wr0,a
snz c
inc wr0
mov a,wr1
sub a,wr0
snz c
jmp Divul_2
mov a,wr2
sub a,Ll2
mov wr2,a
mov a,wr1
sbc a,Lh2
mov wr1,a
set c
jmp Divul_3
Divul_2:
clr c
Divul_3:
rlc Ll ;商的低字节
rlc Lh ;商的高字节
sdz wr3
jmp Divul_1
ret
DIV_OF_16Bit endp
;*********************************************
Shut_Down_Control proc
; snz Ac_Status_Flag
; jmp ExitShutDown ;有市电时不执行软件关机。
SNZ Shut_Down_Flag ;有软件关机执行?
jmp ExitShutDown
sz Soft_ShutDownTM
jmp ExitShutDown
sz Soft_ShutDownTS
jmp ExitShutDown
clr system_POWER
clr system_DisSwitch
set pc0
set pc1
set pa0
clr pa2
clr pa4
clr pa5
clr pd1
ExitShutDown:
ret
Shut_Down_Control endp
;*********************************************************************
RS232_Message_run proc
snz Send_StarFlag
snz Sent_Data_Star ;计算机命令接收完成?停止接收,等待回答。
jmp exit_RS232
mov a,0aah
mov mp0,a
CLRE_SendData:
clr [00h]
inc mp0
mov a,0d8h
sub a,mp0
snz Z
jmp CLRE_SendData
mov a,ASCII_C ;判断是否消除关机或测试指令。
xor a,Computer_command
sz Z
jmp UPS_Answer_C
mov a,ASCII_F ;回答UPS的额定电压\电流\电池电压\频率。
xor a,Computer_command
sz Z
jmp UPS_Answer_F
mov a,ASCII_Q ;
xor a,Computer_command
sz Z
jmp UPS_Answer_Q ;UPS报警控制。
mov a,ASCII_I ;回答UPS的商标\型号\版本号。
xor a,Computer_command
sz Z
jmp UPS_Answer_I
mov a,ASCII_S ;
xor a,Computer_command
sz Z
jmp UPS_Answer_S ;
mov a,ASCII_T ;
xor a,Computer_command
sz Z
jmp UPS_Answer_T ;市电测试逆变状态
clr Sent_Data_Star ; 发送完成禁止发送 准备接收指令
clr Send_StarFlag ;关发送数据;
jmp exit_RS232_Necet
UPS_Answer_S:
sz Shut_Down_Flag
jmp Reset_exitAnsw
mov a,ASCII_DOT ;
xor a,Computer_command1
snz Z
jmp UPS_Answer_SM ;N分钟关机
UPS_Answer_SS:
mov a,Computer_command2
; mov Looking_Data,a
sub a,30h
mov wr0,a ;乘以6把分还原为秒.
clr c
rlc wr0
mov a,wr0
clr c
rlc wr0
addm a,wr0
mov a,wr0
mov Soft_ShutDownTS,a
mov A,10
mov ShareTime_1s,A
set Shut_Down_Flag
jmp Reset_exitAnsw
UPS_Answer_SM:
mov a,ASCII_1 ;
xor a,Computer_command1
snz Z
jmp IN_10MinutShut
mov a,10
mov Soft_ShutDownTM,a
mov a,60
mov Timer_1Mimuter,a
set Shut_Down_Flag
jmp Reset_exitAnsw
IN_10MinutShut:
mov a,Computer_command2
; mov Looking_Data,a
sub a,30h
mov Soft_ShutDownTM,a
mov a,60
mov Timer_1Mimuter,a
set Shut_Down_Flag
jmp Reset_exitAnsw
;-----------------------------------------
UPS_Answer_T:
set Normal_INV_Test ;自我测试10s钟.
mov a,Test_INV_DelayTime
mov TestInvTime,a
jmp Reset_exitAnsw
;----------------------------------------
UPS_Answer_C:
; clr Shut_down_time
clr TestInvTime
Reset_exitAnsw:
clr Sent_Data_Star ;发送完成禁止发送 准备接收指令
clr Send_StarFlag ;关发送数据;
jmp exit_RS232_Necet
;------------------------------------------------
UPS_Answer_F:
mov a,0aah
mov mp0,a
mov a,28h
mov tblp,a
jmp go_toNextTab
;---------------------------------------------------------
UPS_Answer_Q:
mov a,ASCII_1 ;回答UPS的商标\型号\版本号。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -