📄 ups390w r23.asm
字号:
xor a,Computer_command1
sz Z
jmp UPS_Answer_Q1 ;发送UPS的:A,输入电压;输入故障电压;输出电压;输出电流;
mov a,ASCII_CR
XOR a,Computer_command1
SZ Z
jmp Soft_Offandonbeep
clr Sent_Data_Star ; 发送完成禁止发送 准备接收指令
clr Send_StarFlag ;关发送数据;
jmp exit_RS232_Necet
Soft_Offandonbeep:
cpl Buzzer_Cry_Sta
clr Sent_Data_Star ; 发送完成禁止发送 准备接收指令
clr Send_StarFlag ;关发送数据;
jmp exit_RS232_Necet
UPS_Answer_Q1:
mov a,0aah
mov mp0,a
mov a,ASCII_START
mov [00h],a
inc mp0
;输入电压处理发送.
;--------------------------------
mov a,In_ADValueL;In_ADValueL
mov wr1,a
mov a,In_ADValueH;OutCurrenRAM_H;In_ADValueH
mov wr0,a
;---------------------------------
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
;故障电压
mov a,ASCII_1
mov [00h],a
inc mp0
mov a,ASCII_6
mov [00h],a
inc mp0
mov a,ASCII_5
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
;输出电压处理
sz Ac_Status_Flag
jmp Inverter_OutVol
sz Relay_Flag2
jmp Bypass_OutVol
sz Relay_Flag1
jmp ADD_VoltaOut
;降压输出
SUB_VoltaOut:
mov a,37
mov Ll2,a ;载入乘数
mov a,0
mov Lh2,a
mov a,In_ADValueL
mov Ll,a
mov a,In_ADValueH
mov Lh,a
call MULL_OF_16Bit
mov a,Ll
mov tmp5,a
mov a,Lh
mov tmp4,a ;载入被除数。
mov a,0 ;
mov Lh2,a ;载入除数100。
mov a,42
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
mov a,Lh
mov wr0,a
mov a,Ll
mov wr1,a
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
jmp Out_LoadCapa
;升压输出电压
ADD_VoltaOut:
mov a,52
mov Ll2,a ;载入乘数
mov a,0
mov Lh2,a
mov a,In_ADValueL
mov Ll,a
mov a,In_ADValueH
mov Lh,a
call MULL_OF_16Bit
mov a,Ll
mov tmp5,a
mov a,Lh
mov tmp4,a ;载入被除数。
mov a,0 ;
mov Lh2,a ;载入除数。
mov a,45
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
mov a,Lh
mov wr0,a
mov a,Ll
mov wr1,a
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
jmp Out_LoadCapa
;旁路输出电压
Bypass_OutVol:
mov a,wr3
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
jmp Out_LoadCapa
;逆变输出电压(未处理)
Inverter_OutVol:
mov a,PWM_on_data
sub a,97
sz c
jmp InvVoltMaxPwm ; 脉宽最大时电压处理.
mov a,ASCII_2
mov [00h],a
inc mp0
clr Load_Sege
mov a,2
sz Load_1Sege
addm a,Load_Sege
sz Load_2Sege
addm a,Load_Sege
sz Load_3Sege
addm a,Load_Sege
sz Load_4Sege
addm a,Load_Sege
sz Load_5Sege
addm a,Load_Sege
mov a,30
subm a,Load_Sege
mov a,Load_Sege
mov wr1,a
clr wr0
call BCD_CONVER
mov a,30h
addm a,wr2
addm a,wr1
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
jmp Out_LoadCapa
InvVoltMaxPwm: ;Vout=OUT_AD*0.985(√0.97)
mov a,25
mov Ll2,a ;载入乘数
mov a,0
mov Lh2,a
mov a,OUT_ADValueL
mov Ll,a
mov a,OUT_ADValueH
mov Lh,a
call MULL_OF_16Bit
mov a,Ll
mov tmp5,a
mov a,Lh
mov tmp4,a ;载入被除数。
mov a,0 ;
mov Lh2,a ;载入除数100。
mov a,44
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
mov a,Lh
mov wr0,a
mov a,Ll
mov wr1,a
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
;输出负载量的处理
Out_LoadCapa:
clr wr1
mov a,20
sz Load_1Sege
addm a,wr1
sz Load_2Sege
addm a,wr1
sz Load_3Sege
addm a,wr1
sz Load_4Sege
addm a,wr1
sz Load_5Sege
addm a,wr1
mov a,wr1
mov Load_Sege,a
mov a,0
mov wr0,a
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
Work_Frequency:
sz Ac_Status_Flag
jmp Inverter_Freq
mov a,10204%256
mov tmp5,a
mov a,10204/256
mov tmp4,a ;载入被除数。
mov a,0 ;
mov Lh2,a ;载入除数100。
mov a,Frequency_data
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
mov a,Lh
mov wr0,a
mov a,Ll
mov wr1,a
call BCD_CONVER
mov a,30h
addm a,wr2
addm a,wr1
mov a,wr2
mov [00h],a
inc mp0
mov a,wr1
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
jmp Battery_Capa
batter_Full_rs232:
mov a,0
mov wr0,a
mov a,135
mov wr1,a
jmp Batter_CapacDeal
Inverter_Freq:
mov a,ASCII_5
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
Battery_Capa:
sz Batter_Full
jmp batter_Full_rs232
mov a,100
mov Ll2,a ;载入乘数
mov a,0
mov Lh2,a
mov a,BAT_ADValueL
mov Ll,a
mov a,BAT_ADValueH
mov Lh,a
call MULL_OF_16Bit
mov a,Ll
mov tmp5,a
mov a,Lh
mov tmp4,a ;载入被除数。
mov a,325/256 ;
mov Lh2,a ;
mov a,325%256
mov Ll2,a
call DIV_OF_16Bit ;商=(Lh,Ll)
mov a,Lh
mov wr0,a
mov a,Ll
mov wr1,a
mov Rs232BattGist,a
sub a,133 ;电池电压高于13.3V时电池充满电.
sz c
set Batter_Full
Batter_CapacDeal:
call BCD_CONVER
mov a,30h
addm a,wr3
addm a,wr2
addm a,wr1
mov a,wr3 ;高位先发
mov [00h],a
inc mp0
mov a,wr2
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,WR1
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_DOT
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_SPACE
mov [00h],a
inc mp0
RS232_Status:
sz Ac_Status_Flag
jmp Inver_Statu
mov a,ASCII_0
mov [00h],a
inc mp0
mov a,ASCII_0
mov [00h],a
inc mp0
BYpass_Or_Active:
mov a,ASCII_0
mov [00h],a
inc mp0
UPS_FailOrNalmal:
sz System_Stat_Flag
jmp Fail_Massege
mov a,ASCII_0
mov [00h],a
inc mp0
jmp UPS_TyP
Fail_Massege:
mov a,ASCII_1
mov [00h],a
inc mp0
UPS_TyP:
mov a,ASCII_1
mov [00h],a
inc mp0
snz Normal_INV_Test
jmp NO_INV_TeST
mov a,ASCII_1
mov [00h],a
inc mp0
jmp Shutdown_Active
Inver_Statu:
SZ Normal_INV_Test
jmp Inver_TestStatu
mov a,ASCII_1
mov [00h],a
inc mp0
jmp Batt_Status
Inver_TestStatu:
mov a,ASCII_0
mov [00h],a
inc mp0
Batt_Status:
sz Battery_Lack
jmp Batt_Low
mov a,ASCII_0
mov [00h],a
inc mp0
jmp BYpass_Or_Active
Batt_Low:
mov a,ASCII_1
mov [00h],a
inc mp0
jmp BYpass_Or_Active
NO_INV_TeST:
mov a,ASCII_0
mov [00h],a
inc mp0
Shutdown_Active:
mov a,ASCII_0 ;此处未处理实际情况.
mov [00h],a
inc mp0
Buzzer_CryStatus:
mov a,0ffh
xor a,Buzzer_Cry_Sta
sz Z
jmp Buz_OFF
mov a,ASCII_1
mov [00h],a
inc mp0
jmp exit_Q1_Set
Buz_OFF:
mov a,ASCII_0
mov [00h],a
inc mp0
exit_Q1_Set:
mov a,ASCII_CR
mov [00h],a
jmp Filsh_RS232Data
;---------------------------------------------------------------
UPS_Answer_I:
mov a,0aah
mov mp0,a
mov a,0h
mov tblp,a
go_toNextTab:
tabrdl acc
mov [00h],a
inc tblp
inc mp0
xor a,ASCII_CR
snz Z
jmp go_toNextTab
Filsh_RS232Data:
mov a,0aah
mov mp0,a
mov a,[00h]
mov Send_DataBuffer,a
mov a,8
mov Send_DataBit,a ;8位发送位。
mov a,3
mov Data_Effic_Cunt,a
set Send_StarFlag ;启动发送位。
clr Send_Date_Flag
exit_RS232_Necet:
mov a,0a5h
mov mp1,a
exit_RS232:
ret
RS232_Message_run endp
;***********************************
BCD_CONVER proc
clr wr2
clr wr3
clr wr4
BCD_CON100:
mov a,wr1
sub a,100
mov wr1,a
mov a,wr0
sbc a,wr4
snz c
jmp BCD_CON10
mov wr0,a
inc wr3
jmp BCD_CON100
BCD_CON10:
mov a,100
addm a,wr1
BCD_C10_loop:
mov a,wr1
sub a,10
mov wr1,a
snz c
jmp BCD_CON1
inc wr2
jmp BCD_C10_loop
BCD_CON1:
mov a,10
addm a,wr1
ret
BCD_CONVER endp
;******************************************************
;回答I
ORG 0f00h ;共39位
DC ASCII_BE ;#
DC ASCII_O
DC ASCII_O
DC ASCII_L
DC ASCII_D
DC ASCII_S
DC ASCII_O
DC ASCII_U
DC ASCII_R
DC ASCII_C
DC ASCII_E
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_U
DC ASCII_P
DC ASCII_S
DC ASCII_GON
DC ASCII_3
DC ASCII_9
DC ASCII_0
DC ASCII_M
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_V
DC ASCII_E
DC ASCII_R
DC ASCII_SPACE
DC ASCII_7
DC ASCII_DOT
DC ASCII_0
DC ASCII_0
DC ASCII_SPACE
DC ASCII_SPACE
DC ASCII_CR
;回答Q1
ORG 0F28H
DC ASCII_BE
DC ASCII_2
DC ASCII_2
DC ASCII_5
DC ASCII_DOT
DC ASCII_0
DC ASCII_SPACE
DC ASCII_3
DC ASCII_DOT
DC ASCII_2
DC ASCII_SPACE
DC ASCII_1
DC ASCII_2
DC ASCII_DOT
DC ASCII_0
DC ASCII_0
DC ASCII_SPACE
DC ASCII_5
DC ASCII_0
DC ASCII_DOT
DC ASCII_0
DC ASCII_CR
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -