imvcf07.asm

来自「2407的交流电机控制程序」· 汇编 代码 · 共 1,275 行 · 第 1/2 页

ASM
1,275
字号
	MAR	* ,AR0
	SSXM ;;;
L5:
***	-----------------------g5:
*** 189	-----------------------    offset_ia = 0u;
	.line	11
	LACK	0
	LDPK	_offset_ia
	SACL	_offset_ia
*** 190	-----------------------    offset_ib = 0u;
	.line	12
	LDPK	_offset_ib
	SACL	_offset_ib
*** 192	-----------------------    if ( (i = 0) >= 64 ) goto g11;
	.line	14
	LARK	AR6,0
	SAR	AR6,*
	LAC	* 
	SUBK	64
	BGEZ	L11
	MAR	* ,AR1
L7:
***	-----------------------g7:
*** 194	-----------------------    get_adc_pair1();
	.line	16
	CALL	_get_adc_pair1,AR1
*** 195	-----------------------    i_a_offset = ad_res_0>>1;
	.line	17
	RSXM
	LDPK	_ad_res_0
	LAC	_ad_res_0,14
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACH	*+,1
*** 196	-----------------------    i_b_offset = ad_res_1>>1;
	.line	18
	LDPK	_ad_res_1
	LAC	_ad_res_1,14
	SACH	*-,1
*** 197	-----------------------    i_a = i_a_offset>>5;
	.line	19
	LAC	*+,10
	LDPK	_i_a
	SACH	_i_a,1
*** 198	-----------------------    i_b = i_b_offset>>5;
	.line	20
	LAC	* ,10,AR0
	LDPK	_i_b
	SACH	_i_b,1
*** 199	-----------------------    offset_ia += i_a;
	.line	21
	LDPK	_i_a
	LAC	_i_a
	LDPK	_offset_ia
	ADD	_offset_ia
	SACL	_offset_ia
*** 200	-----------------------    offset_ib += i_b;
	.line	22
	LDPK	_i_b
	LAC	_i_b
	LDPK	_offset_ib
	ADD	_offset_ib
	SACL	_offset_ib
*** 201	-----------------------    if ( (j = 0) >= 32 ) goto g10;
	.line	23
	LARK	AR7,0
	SAR	AR7,*
	SSXM
	LAC	* 
	SUBK	32
	BGEZ	L10
	MAR	* ,AR5
L9:
***	-----------------------g9:
*** 203	-----------------------    i_ww = 0;
	.line	25
	LARK	AR5,0
*** 203	-----------------------    ++i_ww;
	MAR	*+,AR7
*** 201	-----------------------    if ( (++j) < 32 ) goto g9;
	.line	23
	MAR	*+,AR0
	SAR	AR7,*
	LAC	* ,AR5
	SUBK	32
	BLZ	L9
L10:
***	-----------------------g10:
*** 192	-----------------------    if ( (++i) < 64 ) goto g7;
	.line	14
	MAR	* ,AR6
	MAR	*+,AR0
	SAR	AR6,*
	LAC	* ,AR1
	SUBK	64
	BLZ	L7
L11:
***	-----------------------g11:
*** 207	-----------------------    offset_ia += 32u;
	.line	29
	LDPK	_offset_ia
	LAC	_offset_ia
	ADDK	32
	SACL	_offset_ia
*** 208	-----------------------    offset_ib += 32u;
	.line	30
	LDPK	_offset_ib
	LAC	_offset_ib
	ADDK	32
	SACL	_offset_ib
*** 209	-----------------------    offset_ia >>= 6;
	.line	31
	RSXM
	LDPK	_offset_ia
	LAC	_offset_ia,9
	SACH	_offset_ia,1
*** 210	-----------------------    offset_ia *= 64u;
	.line	32
	LAC	_offset_ia,6
	SACL	_offset_ia
*** 211	-----------------------    offset_ib >>= 6;
	.line	33
	LDPK	_offset_ib
	LAC	_offset_ib,9
	SACH	_offset_ib,1
*** 212	-----------------------    offset_ib *= 64u;
	.line	34
	LAC	_offset_ib,6
	SACL	_offset_ib
*** 214	-----------------------    i_a = 0;
	.line	36
	LACK	0
	LDPK	_i_a
	SACL	_i_a
*** 215	-----------------------    i_b = 0;
	.line	37
	LDPK	_i_b
	SACL	_i_b
*** 187	-----------------------    if ( (++i_wwww) < 10 ) goto g5;
	.line	9
	SSXM
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	SUBK	10
	BLZ	L5
***	-----------------------g12:
***  	-----------------------    return;
EPI0_9:
	.line	39
	MAR	* ,AR1
;	<restore register vars>
	MAR	*-
	LAR	AR7,*-
	LAR	AR6,*
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	217,0000000c0H,4

	.sym	_init_logger,_init_logger,32,2,0
	.globl	_init_logger

	.func	226
******************************************************
* FUNCTION DEF : _init_logger
******************************************************
_init_logger:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

*** 228	-----------------------    log_count = 0u;
	.line	3
	LACK	0
	LDPK	_log_count
	SACL	_log_count
*** 229	-----------------------    log_time = 0u;
	.line	4
	LDPK	_log_time
	SACL	_log_time
***  	-----------------------    return;
EPI0_10:
	.line	5
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	230,000000000H,1

	.sym	_logger,_logger,32,2,0
	.globl	_logger

	.func	239
******************************************************
* FUNCTION DEF : _logger
******************************************************
_logger:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

*
* AR5	assigned to variable  crt_p
*
*** 241	-----------------------    if ( log_time < log_indx || log_indx == 0xffffu ) goto g6;
	.line	3
	LDPK	_log_time
	ZALS	_log_time
	LDPK	_log_indx
	SUBS	_log_indx
	BLZ	L18
	ZALS	_log_indx
	RSXM
	SUBK	-1
	BZ	L18
*** 243	-----------------------    crt_p = &log_p[0];
	.line	5
	LRLK	AR5,_log_p
*** 244	-----------------------    if ( !*crt_p ) goto g4;
	.line	6
	MAR	* ,AR5
	LAC	* 
	BZ	L16
L15:
***	-----------------------g3:
*** 246	-----------------------    log_table[log_count++] = **crt_p++;
	.line	8
	LAR	AR3,*+,AR0
	LDPK	_log_count
	LAC	_log_count
	ADDK	1
	SACL	_log_count
	SUBK	1
	ADLK	_log_table+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR5
*** 244	-----------------------    if ( *crt_p ) goto g3;
	.line	6
	LAC	* 
	BNZ	L15
L16:
***	-----------------------g4:
*** 248	-----------------------    if ( log_count < log_size ) goto g6;
	.line	10
	LDPK	_log_count
	ZALS	_log_count
	LDPK	_log_size
	SUBS	_log_size
	BLZ	L18
*** 248	-----------------------    log_indx = 0xffffu;
	LDPK	_log_indx
	SPLK	#65535,_log_indx
L18:
***	-----------------------g6:
*** 250	-----------------------    ++log_time;
	.line	12
	LDPK	_log_time
	LAC	_log_time
	ADDK	1
	SACL	_log_time
***  	-----------------------    return;
EPI0_11:
	.line	13
	MAR	* ,AR1
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	251,000000000H,1

	.sym	_init_reference,_init_reference,32,2,0
	.globl	_init_reference

	.func	260
******************************************************
* FUNCTION DEF : _init_reference
******************************************************
_init_reference:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

*** 262	-----------------------    ref_long = ref_HL[0];
	.line	3
	LDPK	_ref_HL
	ZALS	_ref_HL
	LDPK	_ref_HL+1
	ADDH	_ref_HL+1
	LDPK	_ref_long
	SACL	_ref_long
	SACH	_ref_long+1
*** 263	-----------------------    ref_time = 1u;
	.line	4
	LACK	1
	LDPK	_ref_time
	SACL	_ref_time
*** 264	-----------------------    ref_indx = 1u;
	.line	5
	LDPK	_ref_indx
	SACL	_ref_indx
***  	-----------------------    return;
EPI0_12:
	.line	6
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	265,000000000H,1

	.sym	_reference,_reference,36,2,0
	.globl	_reference

	.func	275
******************************************************
* FUNCTION DEF : _reference
******************************************************
_reference:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+

*** 281	-----------------------    if ( ref_long > 0L ) goto g2;
	.sym	_crtInc,1,5,1,32
	.sym	_retval,3,4,1,16
	.sym	_crtTime,4,14,1,16
	.line	7
	BNV	$+2
	LDPK	_ref_long
	LT	_ref_long
	MPYK	1
	LPH	_ref_long+1
	LACK	0
	SPAC
	BNV	$+6
	BGZ	L20
	B	$+4
	BLZ	L20
*** 282	-----------------------    retval = (int)(ref_long-32768L>>16)+1;
	.line	8
	ZALS	_ref_long
	ADDH	_ref_long+1
	SSXM
	ADLK	65535,15
	MAR	* ,AR0
	SACH	*
	LAC	*,AR2
	ADDK	1
	LARK	AR2,3
	MAR	*0+
	SACL	* 
*** 282	-----------------------    goto g3;
	B	L21
L20:
***	-----------------------g2:
*** 281	-----------------------    retval = ref_long+32768L>>16;
	.line	7
	LALK	1,15
	ADDS	_ref_long
	ADDH	_ref_long+1
	MAR	* ,AR0
	SACH	*
	SSXM
	LAC	*,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
L21:
***	-----------------------g3:
*** 284	-----------------------    if ( ref_cycles == 1u ) goto g9;
	.line	10
	LDPK	_ref_cycles
	LAC	_ref_cycles
	SUBK	1
	BZ	L27
*** 286	-----------------------    crtTime = ref_time_val[ref_indx];
	.line	12
	LDPK	_ref_indx
	LAC	_ref_indx
	ADLK	_ref_time_val+0,0
	MAR	*+,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	SACL	* ,AR0
*** 287	-----------------------    crtInc = ref_HL[ref_indx];
	.line	13
	LAC	_ref_indx,1
	ADLK	_ref_HL+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	ZALS	*+
	ADDH	*-,AR2
	SBRK	3
	SACL	*+
	SACH	*-
*** 288	-----------------------    ref_long += crtInc;
	.line	14
	LDPK	_ref_long
	ZALS	_ref_long
	ADDH	_ref_long+1
	ADDS	*+
	ADDH	* 
	SACL	_ref_long
	SACH	_ref_long+1
*** 289	-----------------------    if ( crtTime > ref_time++ || (crtTime = ref_time_val[(++ref_indx)]) ) goto g9;
	.line	15
	LDPK	_ref_time
	ZALS	_ref_time
	ADDK	1
	SACL	_ref_time
	SUBK	1
	ANDK	0FFFFh
	ADRK	2
	SUBS	* 
	BLZ	L27
	LDPK	_ref_indx
	LAC	_ref_indx
	ADDK	1
	SACL	_ref_indx
	ADLK	_ref_time_val+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	SACL	* 
	ANDK	0FFFFh
	BNZ	L27
*** 294	-----------------------    if ( ref_cycles <= 1u ) goto g7;
	.line	20
	LDPK	_ref_cycles
	ZALS	_ref_cycles
	SUBK	1
	BLEZ	L25
*** 296	-----------------------    --ref_cycles;
	.line	22
	SACL	_ref_cycles
L25:
***	-----------------------g7:
*** 298	-----------------------    if ( ref_cycles == 1u ) goto g9;
	.line	24
	LAC	_ref_cycles
	SUBK	1
	BZ	L27
*** 300	-----------------------    ref_indx = 1u;
	.line	26
	LACK	1
	LDPK	_ref_indx
	SACL	_ref_indx
*** 301	-----------------------    ref_time = 1u;
	.line	27
	LDPK	_ref_time
	SACL	_ref_time
*** 302	-----------------------    ref_long = ref_HL[0];
	.line	28
	LDPK	_ref_HL
	ZALS	_ref_HL
	LDPK	_ref_HL+1
	ADDH	_ref_HL+1
	LDPK	_ref_long
	SACL	_ref_long
	SACH	_ref_long+1
L27:
***	-----------------------g9:
*** 307	-----------------------    return retval;
	.line	33
	LARK	AR2,3
	MAR	*0+
	LAC	* 
EPI0_13:
	.line	34
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	308,000000000H,5

	.sym	_init_field_pos,_init_field_pos,32,2,0
	.globl	_init_field_pos

	.func	318
******************************************************
* FUNCTION DEF : _init_field_pos
******************************************************
_init_field_pos:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

*** 320	-----------------------    C_omg = 26841;
	.line	3
	LDPK	_C_omg
	SPLK	#26841,_C_omg
*** 321	-----------------------    Sh_omg = 2;
	.line	4
	LACK	2
	LDPK	_Sh_omg
	SACL	_Sh_omg
*** 322	-----------------------    C_slip = 84;
	.line	5
	LACK	84
	LDPK	_C_slip
	SACL	_C_slip
*** 323	-----------------------    Sh_slip = 0;
	.line	6
	LACK	0
	LDPK	_Sh_slip
	SACL	_Sh_slip
*** 324	-----------------------    theta = 0;
	.line	7
	LDPK	_theta
	SACL	_theta
*** 325	-----------------------    theta_low = 0;
	.line	8
	LDPK	_theta_low
	SACL	_theta_low
*** 326	-----------------------    theta_inc = 0;
	.line	9
	LDPK	_theta_inc
	SACL	_theta_inc
***  	-----------------------    return;
EPI0_14:
	.line	10
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	327,000000000H,1

	.sym	_reset_Error_ACPM,_reset_Error_ACPM,32,2,0
	.globl	_reset_Error_ACPM

	.func	336
******************************************************
* FUNCTION DEF : _reset_Error_ACPM
******************************************************
_reset_Error_ACPM:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+
;	<save register vars>
	SAR	AR6,*+

*
* AR5	assigned to variable  i
* AR6	assigned to variable  k
*
*** 339	-----------------------    cfgiopc1();
	.line	4
	CALL	_cfgiopc1
*** 340	-----------------------    resetiopc1();
	.line	5
	CALL	_resetiopc1
*** 341	-----------------------    if ( (i = 1) > 1000 ) goto g3;
	.line	6
	LARK	AR5,1
	MAR	* ,AR0
	SAR	AR5,*
	SSXM
	LAC	* 
	SUBK	1000
	BGZ	L30
	MAR	* ,AR6
L29:
***	-----------------------g2:
*** 343	-----------------------    ++k;
	.line	8
	MAR	*+,AR5
*** 341	-----------------------    if ( (++i) <= 1000 ) goto g2;
	.line	6
	MAR	*+,AR0
	SAR	AR5,*
	LAC	* ,AR6
	SUBK	1000
	BLEZ	L29
L30:
***	-----------------------g3:
*** 345	-----------------------    setiopc1();
	.line	10
	CALL	_setiopc1,AR1
***  	-----------------------    return;
EPI0_15:
	.line	11
;	<restore register vars>
	MAR	*-
	LAR	AR6,*
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	346,000000040H,1

	.sym	_ref_cycles,_ref_cycles,14,2,16
	.globl	_ref_cycles

	.sym	_ref_time,_ref_time,14,2,16
	.globl	_ref_time
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	_init_pi_reg_id
	.global	_init_pi_reg_iq
	.global	_init_pi_reg_pos
	.global	_init_pi_reg_omg
	.global	_get_adc_pair1
	.global	_cfgiopc1
	.global	_resetiopc1
	.global	_setiopc1
	.end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?