📄 rmp_cntl.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04
*******************************************************
; dspac -i../src -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include rmp_cntl.c C:\DOCUME~1\liuping\LOCALS~1\Temp\rmp_cntl.if
; dspopt NOT RUN
; dspcg -o -v2xx -o C:\DOCUME~1\liuping\LOCALS~1\Temp\rmp_cntl.if C:\DOCUME~1\liuping\LOCALS~1\Temp\rmp_cntl.asm C:\DOCUME~1\liuping\LOCALS~1\Temp\rmp_cntl.tmp
.port
.file "rmp_cntl.c"
.file "../src\rmp_cntl.h"
.stag .fake0,128
.member _TargetValue,0,4,8,16
.member _RampDelayMax,16,4,8,16
.member _RampLowLimit,32,4,8,16
.member _RampHighLimit,48,4,8,16
.member _RampDelayCount,64,4,8,16
.member _SetpointValue,80,4,8,16
.member _EqualFlag,96,4,8,16
.member _calc,112,148,8,16
.eos
.sym _RMPCNTL,0,8,13,128,.fake0
.sym _RMPCNTL_handle,0,24,13,16,.fake0
.globl _rmp_cntl_calc
.file "rmp_cntl.c"
.text
.sym _rmp_cntl_calc,_rmp_cntl_calc,32,2,0
.globl _rmp_cntl_calc
.func 16
;>>>> void rmp_cntl_calc(RMPCNTL *v)
******************************************************
* FUNCTION DEF : _rmp_cntl_calc
******************************************************
_rmp_cntl_calc:
LF1 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR2
.sym _v,-3+LF1,24,9,16,.fake0
.line 2
.line 3
;>>>> if ( v->TargetValue != v->SetpointValue)
LARK AR2,-3+LF1
MAR *0+
LAR AR3,*
LAR AR4,* ,AR4
SSXM
LAC * ,AR3
ADRK 5
SUB *
BZ L1
.line 5
;>>>> v->RampDelayCount ++;
MAR * ,AR4
ADRK 4
LAC *
ADDK 1
SACL *
.line 6
;>>>> if (v->RampDelayCount >= v->RampDelayMax)
LAC * ,AR3
SBRK 4
SUB *
BLZ L7
.line 8
;>>>> if (v->TargetValue >= v->SetpointValue)
MAR * ,AR4
SBRK 4
LAC * ,AR3
ADRK 4
SUB *
BLZ L3
.line 10
;>>>> v->SetpointValue ++; // _IQ(0.0000305),0.0000305 is resolution of Q15=0.999424
MAR * ,AR4
ADRK 5
LAC *
ADDK 1
SACL *
.line 11
;>>>> if (v->SetpointValue > v->RampHighLimit)
LAC * ,AR3
SBRK 2
SUB *
BLEZ L4
.line 12
;>>>> v->SetpointValue = v->RampHighLimit;
LAC * ,AR4
SACL *
L4:
.line 13
;>>>> v->RampDelayCount = 0;
;>>>> else
LACK 0
MAR * ,AR3
MAR *+
SACL *
B L7
L3:
.line 17
;>>>> v->SetpointValue --; // 0.0000305 is resolution of Q15
LAC *
SUBK 1
SACL *
.line 18
;>>>> if (v->SetpointValue < v->RampLowLimit)
LAC * ,AR4
ADRK 2
SUB *
BGEZ L6
.line 19
;>>>> v->SetpointValue = v->RampLowLimit;
MAR * ,AR3
SBRK 3
LAC * ,AR4
ADRK 3
SACL *
L6:
.line 20
;>>>> v->RampDelayCount = 0;
MAR * ,AR2
LAR AR3,* ,AR3
LACK 0
ADRK 4
SACL *
B L7
L1:
.line 24
;>>>> else v->EqualFlag = 0x7FFF;
MAR * ,AR4
ADRK 6
SPLK #32767,*
L7:
EPI0_1:
.line 25
MAR * ,AR1
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 40,000000000H,1
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -