📄 hilon.asm
字号:
ljmp answer_module_normal_name
not_ask_module_name:
cmpb bxh,#02h
jne not_ask_sequence_num
ljmp answer_module_sequence_num
not_ask_sequence_num:
cmpb bxh,#04h
jne not_ask_dead_zone
ljmp answer_dead_zone_value
not_ask_dead_zone:
ljmp do_modify_funcerr
answer_setting_00:
ldb bxl,bxh
subb bxl,#setting_min_code
cmpb bxl,#setting_num
jh exit_answer_setting
stb bxh,[sndpt]+ ; the group number of modify setting
ldbze ax,bxl
shl ax,#01
ld ax,answer_setting_add[ax]
br [ax]
answer_setting_add:
dcw answer_short_set
dcw answer_instant_set
dcw answer_ground_set
dcw answer_lwvolt_set
dcw answer_ovvolt_set
dcw answer_lwfreq_set
dcw answer_ovfreq_set
dcw answer_lwpf_set
dcw answer_ptctrate_set
dcw answer_first_relay_time
dcw answer_second_relay_time
dcw answer_third_relay_time
dcw answer_fourth_relay_time
dcw answer_current_relay
dcw answer_voltage_relay
dcw answer_freq_relay
dcw answer_powerfactor_relay
dcw answer_system_type_set
dcw answer_inputfunc_set
exit_answer_setting:
ljmp do_modify_funcerr
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_short_set:
ld ax,#shortset
answer_alarm_setting_com:
ldb sndlen,#0dh
ldb dxl,#2
move_setting_data_01:
ld bx,[ax]+
ld cx,[ax]+
stb cxh,[sndpt]+
stb cxl,[sndpt]+
stb bxh,[sndpt]+
stb bxl,[sndpt]+
djnz dxl,move_setting_data_01
ld bx,[ax]+
stb bxh,[sndpt]+
stb bxl,[sndpt]+
ldb bxl,[ax]+
stb r0,[sndpt]+
stb bxl,[sndpt]+
ljmp do_answer_ending
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_instant_set:
ld ax,#instset
sjmp answer_alarm_setting_com
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_ground_set:
ld ax,#gndset
sjmp answer_alarm_setting_com
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_lwvolt_set:
ld ax,#lowvset
sjmp answer_alarm_setting_com
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_ovvolt_set:
ld ax,#overvset
sjmp answer_alarm_setting_com
;----------------------------------------------------------
answer_lwfreq_set:
ld ax,#lowfset
sjmp answer_alarm_setting_com
;----------------------------------------------------------
answer_ovfreq_set:
ld ax,#overfset
sjmp answer_alarm_setting_com
;----------------------------------------------------------
answer_lwpf_set:
ld ax,#lowpfset
sjmp answer_alarm_setting_com
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_ptctrate_set:
ldb sndlen,#09h
ld cx,ptrateh
stb cxh,[sndpt]+
stb cxl,[sndpt]+
ld cx,ptratel
stb cxh,[sndpt]+
stb cxl,[sndpt]+
ld cx,ctrate
stb cxh,[sndpt]+
stb cxl,[sndpt]+
ld cx,nctrate
stb cxh,[sndpt]+
stb cxl,[sndpt]+
ljmp do_answer_ending
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_first_relay_time:
ld cx,#0
sjmp answer_relay_time_com
answer_second_relay_time:
ld cx,#2
sjmp answer_relay_time_com
answer_third_relay_time:
ld cx,#4
sjmp answer_relay_time_com
answer_fourth_relay_time:
ld cx,#6
sjmp answer_relay_time_com
answer_relay_time_com:
ldb sndlen,#02h
ld ax,yk_time[cx]
divub ax,#20
stb axl,[sndpt]
ljmp do_answer_ending
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
answer_current_relay:
ld cx,#00
sjmp answer_linkrelay_com
answer_voltage_relay:
ld cx,#01
sjmp answer_linkrelay_com
answer_freq_relay:
ld cx,#02
sjmp answer_linkrelay_com
answer_powerfactor_relay:
ld cx,#03
sjmp answer_linkrelay_com
answer_linkrelay_com:
ldb sndlen,#02h
ldb axl,linkrelayI[cx]
stb axl,[sndpt]
ljmp do_answer_ending
;---------------------------------------------------------------
answer_system_type_set:
ldb sndlen,#02h
ldb axl,systemtype
stb axl,[sndpt]
ljmp do_answer_ending
;---------------------------------------------------------------
answer_inputfunc_set:
ldb sndlen,#09h
ldb cxl,#08
ld bx,#inputfunc
move_inputfunc_data:
ldb axl,[bx]+
stb axl,[sndpt]+
djnz cxl,move_inputfunc_data
ljmp do_answer_ending
;----------------------------------------------------------------
modify_forbid_broadcast:
clrbit brdcastf
ret
modify_substat_set:
jbsm brdcastf,modify_forbid_broadcast
incb cxl
ldb bxh,[cx]+
cmpb bxh,#setting_min_code
jnc modify_substat_not_setting
ljmp modify_setting_00
modify_substat_not_setting:
cmpb r0,bxh
jne not_substat_clear_set
ldb axl,reclen
cmpb axl,#substat_clr_len
je substat_clr_process
ljmp md_setting_fail
substat_clr_process:
ldb bxh,[cx]+
jbc bxh,7,not_permit_auto_send
setbit crcpassf
setbit autosendf
orb status,#80h
stb flag1a,flagbk
sjmp not_modify_auto_send
not_permit_auto_send:
jbc bxh,6,not_modify_auto_send
setbit crcpassf
clrbit autosendf
andb status,#7fh
stb flag1a,flagbk
not_modify_auto_send:
jbc bxh,3,not_clear_energy
setbit crcpassf ; for save into flash
push bx
call clear_all_energy ; clear all energy
pop bx
not_clear_energy:
jbc bxh,2,not_clear_pulse
setbit crcpassf ; for save into flash
push bx
call clr_all_remote_pulse ; clear all remote pulse count
pop bx
not_clear_pulse:
jbc bxh,1,not_clear_alarm_flag
push bx
call clear_protect ; return protect
pop bx
not_clear_alarm_flag:
jbc bxh,0,not_clear_soe
call clear_all_soe ; delete all SOE
not_clear_soe:
ljmp do_modify_suc
not_substat_clear_set:
cmpb bxh,#04h
jne not_modify_dead_zone
ljmp modify_dead_zone_value
not_modify_dead_zone: ; 不是修改遥测死区
cmpb bxh,#05h
jne not_clear_part_pulse
ljmp clr_part_remote_pulse
not_clear_part_pulse:
cmpb bxh,#06h
jne not_clear_part_energy
ljmp clear_part_energy
not_clear_part_energy:
cmpb bxh,#0ch
jne not_modify_sequence_num
ljmp modify_module_sequence_num
not_modify_sequence_num:
ljmp do_modify_funcerr
modify_setting_00:
setbit crcpassf
cmpb bxh,#re_md_addr
jne modify_setting_01
ljmp md_station_address
modify_setting_01:
subb bxh,#setting_min_code
cmpb bxh,#setting_num
jh exit_modify_setting
ldbze ax,bxh
shl ax,#01
ld ax,modify_setting_add[ax]
br [ax]
modify_setting_add:
dcw modify_short_set
dcw modify_instant_set
dcw modify_ground_set
dcw modify_lwvolt_set
dcw modify_ovvolt_set
dcw modify_lwfreq_set
dcw modify_ovfreq_set
dcw modify_lwpf_set
dcw modify_ptctrate_set
dcw modify_first_relay_time
dcw modify_second_relay_time
dcw modify_third_relay_time
dcw modify_fourth_relay_time
dcw modify_current_relay
dcw modify_voltage_relay
dcw modify_freq_relay
dcw modify_powerfactor_relay
dcw do_modify_funcerr
dcw modify_inputfunc_set
exit_modify_setting:
ljmp do_modify_funcerr
;---------------------------------------------------------------
clear_all_energy:
; clear all quantity of electricity
setbit crcpassf
bmovm #energy_buf,#zero_buf,#16
bmovm #eng_sum_buf,#zero_buf,#12 ; clear energy add up register
ret
;----------------------------------------------------------------
clr_all_remote_pulse:
setbit crcpassf
bmovm #pulse_buf,#zero_buf,#16
ret
;----------------------------------------------------------------
clear_protect:
; andb ctrlcode,#0fbh ; clear protect flag
andb status,#0fbh
clrb phsAprt
clrb phsBprt
clrb phsCprt
st r0,prt_i_sw
st r0,prt_u_sw
st r0,prt_f_sw
st r0,prt_pf_sw
bmovm #prtctbuf,#zero_buf,#24
ret
;----------------------------------------------------------------
clear_all_soe:
stb r0,soenum
andb status,#0feh
ret
;----------------------------------------------------------------
md_station_address:
ldb axl,reclen
cmpb axl,#set_stat_len
jne md_station_fail
ld ax,#set_stat_byte
ldb exl,#04
md_stat_cmp_code:
ldb bxh,[cx]+
ldb bxl,[ax]+
cmpb bxh,bxl
jne md_station_fail
djnz exl,md_stat_cmp_code
ldb axl,#7dh
stb axl,stationbk
stb axl,station
ldb axl,#02
stb axl,baudrate
clrbit rec_readyf
clrbit sendf
call init_82c200
setbit saveflashf
call save_csboot0
clrbit rec_readyf
clrb reclen
ret
md_station_fail:
ljmp do_modify_dataerr
;----------------------------------------------------------------
modify_short_set:
ld dx,#shortset
save_setting_set_current:
ldb axl,reclen
cmpb axl,#alarm_set_len
jne md_setting_fail
ldb exl,#02h
save_setting_set_01:
ldb bxh,[cx]+
ldb bxl,[cx]+
ldb axh,[cx]+
ldb axl,[cx]+
cmp r0,bx
jne md_setting_fail
cmp ax,#60000
jh md_setting_fail
st ax,[dx]+
st bx,[dx]+
djnz exl,save_setting_set_01
ldb axh,[cx]+
ldb axl,[cx]+
cmp ax,#60000
jh md_setting_fail
st ax,[dx]+ ; set delay time
incb cxl
ldb axl,[cx]+
cmpb axl,#1
jh md_setting_fail
stb axl,[dx]+ ; set enable
ld ex,#shortset
ld fx,#shortseti
call change_current_set
ld ex,#instset
ld fx,#instseti
call change_current_set
ld ex,#gndset
ld fx,#gndseti
call change_ground_current_set
ljmp do_modify_suc
md_setting_fail:
ljmp do_modify_dataerr
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_instant_set:
ld dx,#instset
sjmp save_setting_set_current
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_ground_set:
ld dx,#gndset
sjmp save_setting_set_current
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_lwvolt_set:
ld dx,#lowvset
save_setting_set_voltage:
ldb axl,reclen
cmpb axl,#alarm_set_len
jne md_setting_fail_01
ldb exl,#02h
save_setting_set_02:
ldb bxh,[cx]+
ldb bxl,[cx]+
ldb axh,[cx]+
ldb axl,[cx]+
ld gx,#0d40h ; hx_gx: 200000
ld hx,#3
cmpl ax,gx
jh md_setting_fail_01
st ax,[dx]+
st bx,[dx]+
djnz exl,save_setting_set_02
ldb axh,[cx]+
ldb axl,[cx]+
cmp ax,#18000
jh md_setting_fail_01
st ax,[dx]+ ; set delay time
incb cxl
ldb axl,[cx]+
cmpb axl,#1
jh md_setting_fail_01
stb axl,[dx]+ ; set enable
call change_lowvolt_set
call change_overvolt_set
ljmp do_modify_suc
md_setting_fail_01:
ljmp do_modify_dataerr
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_ovvolt_set:
ld dx,#overvset
sjmp save_setting_set_voltage
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_lwfreq_set:
ld dx,#lowfset
save_setting_set_freq:
ldb axl,reclen
cmpb axl,#alarm_set_len
jne md_setting_fail_02
ldb exl,#02h
save_setting_set_03:
ldb bxh,[cx]+
ldb bxl,[cx]+
ldb axh,[cx]+
ldb axl,[cx]+
cmp r0,bx
jne md_setting_fail_02
cmp ax,#999
jh md_setting_fail_02
st ax,[dx]+
st bx,[dx]+
djnz exl,save_setting_set_03
ldb axh,[cx]+
ldb axl,[cx]+
cmp ax,#18000
jh md_setting_fail_02
st ax,[dx]+ ; set delay time
incb cxl
ldb axl,[cx]+
cmpb axl,#1
jh md_setting_fail_02
stb axl,[dx]+ ; set enable
call change_lowfreq_set
call change_overfreq_set
call change_lowpfactor_set
ljmp do_modify_suc
md_setting_fail_02:
ljmp do_modify_dataerr
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_ovfreq_set:
ld dx,#overfset
sjmp save_setting_set_freq
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_lwpf_set:
ld dx,#lowpfset
sjmp save_setting_set_freq
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_ptctrate_set:
ldb axl,reclen
cmpb axl,#ptrate_len
jne md_ptctrate_end
ldb bxh,[cx]+
ldb bxl,[cx]+
ldb axh,[cx]+
ldb axl,[cx]+
ld gx,#9298h
ld hx,#98h
cmpl ax,gx
jnh md_ptctrate_01
md_ptctrate_end:
ljmp do_modify_dataerr
md_ptctrate_01:
st bx,ptrateh
st ax,ptratel
ldb axh,[cx]+
ldb axl,[cx]+
cmp ax,#9999
jh md_ptctrate_end
st ax,ctrate
ldb axh,[cx]+
ldb axl,[cx]+
cmp ax,#9999
jh md_ptctrate_end
st ax,nctrate
bmovm #energy_buf,#zero_buf,#16 ; clear all energy when transducer setting change
bmovm #eng_sum_buf,#zero_buf,#12 ; clear energy add up register
call get_energy_const
ljmp do_modify_suc
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_first_relay_time:
ld dx,#0
sjmp modify_relay_time_com
modify_second_relay_time:
ld dx,#2
sjmp modify_relay_time_com
modify_third_relay_time:
ld dx,#4
sjmp modify_relay_time_com
modify_fourth_relay_time:
ld dx,#6
modify_relay_time_com:
ldb axl,reclen
cmpb axl,#set0_len
jne md_relay_time_data_error
ldb axl,[cx]+
cmpb axl,#99
jh md_relay_time_data_error
cmpb r0,ykdoing
jne not_modi_relay_time
mulub axl,#20
st ax,yk_time[dx]
ljmp do_modify_suc
not_modi_relay_time:
ljmp do_modify_oper_fail
md_relay_time_data_error:
md_link_relay_data_error:
ljmp do_modify_dataerr
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
modify_current_relay:
ld dx,#0
sjmp modify_linkrelay_com
modify_voltage_relay:
ld dx,#1
sjmp modify_linkrelay_com
modify_freq_relay:
ld dx,#2
sjmp modify_linkrelay_com
modify_powerfactor_relay:
ld dx,#3
modify_linkrelay_com:
ldb axl,reclen
cmpb axl,#set0_len
jne md_link_relay_data_error
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -