⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hilon.asm

📁 hilon B协议编程
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	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 + -