📄 func.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.02
*******************************************************
; dspac -v2xx -iC:/ti/c2400/cgtools/include func.c C:\DOCUME~1\jjd\LOCALS~1\Temp\func.if
; dspopt NOT RUN
; dspcg -o -v2xx -o C:\DOCUME~1\jjd\LOCALS~1\Temp\func.if C:\DOCUME~1\jjd\LOCALS~1\Temp\func.asm C:\DOCUME~1\jjd\LOCALS~1\Temp\func.tmp
.port
.bss _pwm_half_per,1,1
.bss _timer2_per,1
.bss _num_f_d,1
.bss _i,1
.bss _adc_res,1
.bss _a,1
.bss _index_pwm,1
.bss _b,1
.bss _c,1
.bss _aaa,1
.bss _period,1
.bss _duty,1
.bss _fv_cn,2,1
.bss _F_V_radio,2,1
.bss _b_time,2,1
.bss _I_result,2048
.file "func.c"
.file "f2407_c.h"
.globl _portFF0F
.globl _portFFFF
.file "C:/ti/c2400/cgtools/include\math.h"
.globl _asin
.globl _acos
.globl _atan
.globl _atan2
.globl _ceil
.globl _cos
.globl _cosh
.globl _exp
.globl _fabs
.globl _floor
.globl _fmod
.globl _frexp
.globl _ldexp
.globl _log
.globl _log10
.globl _modf
.globl _pow
.globl _sin
.globl _sinh
.globl _sqrt
.globl _tan
.globl _tanh
.file "var.h"
.sect ".cinit"
.word 1,_num_f_d
.word 33
.sym _num_f_d,_num_f_d,14,2,16
.globl _num_f_d
.word 2,_b_time
.float 3.e-1
.sym _b_time,_b_time,6,2,32
.globl _b_time
.word 1,_pwm_half_per
.word 2000
.sym _pwm_half_per,_pwm_half_per,14,2,16
.globl _pwm_half_per
.word 1,_timer2_per
.word 1000
.sym _timer2_per,_timer2_per,14,2,16
.globl _timer2_per
.word 2,_F_V_radio
.float 1.2
.sym _F_V_radio,_F_V_radio,6,2,32
.globl _F_V_radio
.file "func.c"
.globl _period
.globl _duty
.word 1,_index_pwm
.word 0
.sym _index_pwm,_index_pwm,14,2,16
.globl _index_pwm
.globl _a
.globl _b
.globl _c
.word 1,_aaa
.word 0
.sym _aaa,_aaa,14,2,16
.globl _aaa
.globl _sin_table
.word 1,_adc_res
.word 500
.sym _adc_res,_adc_res,14,2,16
.globl _adc_res
.globl _I_result
.word 1,_i
.word 0
.sym _i,_i,14,2,16
.globl _i
.word 2,_fv_cn
.float 0.
.sym _fv_cn,_fv_cn,6,2,32
.globl _fv_cn
.text
.sym _ini,_ini,32,2,0
.globl _ini
.func 23
;>>>> void ini(void)
******************************************************
* FUNCTION DEF : _ini
******************************************************
_ini:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 5
;>>>> *SCSR1 = 0x00FD;
LARK AR3,28696
LACK 253
SACL *+
.line 22
;>>>> *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
LACK 11
OR *
ANDK 15
SACL *
.line 34
;>>>> *WDCR = 0x00E8;
LACK 232
ADRK 16
SACL * ,AR0
.line 45
;>>>> WSGR = 0x0040;
LACK 64
SACL *
OUT * ,0ffffh,AR3
.line 56
;>>>> *MCRA = 0x0fc0; /* group A pins */
ADRK 103
SPLK #4032,*
.line 76
;>>>> *MCRB = 0xFE00; /* group B pins */
ADRK 2
SPLK #65024,*
.line 96
;>>>> *MCRC = 0x0000; /* group C pins */
LACK 0
ADRK 2
SACL *
.line 118
;>>>> *PFDATDIR = *PFDATDIR | 0x2000;
LACK 8192
ADRK 2
OR *
SACL * ,AR4
.line 122
;>>>> *T1CON = 0x0000; /* disable timer 1 */
LARK AR4,29700
LACK 0
SACL *
.line 123
;>>>> *T2CON = 0x0000; /* disable timer 2 */
ADRK 4
SACL *
.line 125
;>>>> *GPTCONA = 0x0080; /* configure GPTCONA */
LACK 128
SBRK 8
SACL *+
.line 142
;>>>> *T1CNT = 0x0000; /* clear timer counter */
LACK 0
SACL *
.line 143
;>>>> *T1PR = pwm_half_per; /* set timer period */
ADRK 2
BLKD #_pwm_half_per,*
.line 144
;>>>> *DBTCONA = 0x0000; /* deadband units off */
ADRK 18
SACL *
.line 146
;>>>> *ACTRA = 0x0666; /* PWM1 pin set active high */
SBRK 2
SPLK #1638,*
.line 158
;>>>> *COMCONA = 0x8200; /* configure COMCON register */
SBRK 2
SPLK #33280,*
.line 169
;>>>> *T1CON = 0x0840; /* configure T1CON register */
SBRK 13
SPLK #2112,*+
.line 185
;>>>> *T2CNT = 0x0000; /* clear timer counter */
SACL *
.line 186
;>>>> *T2PR = timer2_per; /* set timer period */
ADRK 2
BLKD #_timer2_per,*+
.line 188
;>>>> *T2CON = 0xD740; /* configure T2CON register */
SPLK #55104,* ,AR1
.line 202
;>>>> fv_cn = (312500.0/(num_f_d*U_DC*F_V_radio));
RPTK 1
BLKD _F_V_radio+0,*+
LDPK _num_f_d
LT _num_f_d
MAR * ,AR0
LACK 24
SACL *
MPYU *
SPL *
ZALS * ,AR1
CALL F$$UTOF
CALL F$$MUL
LALK FL0
RPTK 1
TBLR *+
CALL F$$DIV
MAR *-
ZALH *-
ADDS * ,AR5
SACL _fv_cn
SACH _fv_cn+1
.line 206
;>>>> *IMR = 0x0000; /* clear the IMR register */
LARK AR5,4
LACK 0
SACL *
.line 207
;>>>> *IFR = 0x003F; /* clear any pending core interrupts */
LACK 63
ADRK 2
SACL *
.line 208
;>>>> *IMR = 0x0004; /* enable desired core interrupts (in1,in3)*/
LACK 4
SBRK 2
SACL * ,AR4
.line 211
;>>>> *EVAIFRA = 0xFFFF; /* clear all EVA group A interrupts */
ADRK 39
SPLK #65535,*+
.line 212
;>>>> *EVAIFRB = 0xFFFF; /* clear all EVA group B interrupts */
SPLK #65535,*+
.line 213
;>>>> *EVAIFRC = 0xFFFF; /* clear all EVA group C interrupts */
SPLK #65535,* ,AR5
.line 214
;>>>> *EVAIMRA = 0x0000; /* enable desired EVA group A interrupts */
SBRK 4
MAR * ,AR4
SBRK 5
SAR AR5,*+,AR5
.line 215
;>>>> *EVAIMRB = 0x0001; /* enable desired EVA group B interrupts ENABLE TIME2*/
MAR *+,AR4
SAR AR5,*+,AR5
.line 216
;>>>> *EVAIMRC = 0x0000; /* enable desired EVA group C interrupts */
MAR *-,AR4
SAR AR5,* ,AR5
.line 218
;>>>> *EVBIFRA = 0xFFFF; /* clear all EVB group A interrupts */
LARK AR5,29999
SPLK #65535,*+
.line 219
;>>>> *EVBIFRB = 0xFFFF; /* clear all EVB group B interrupts */
SPLK #65535,*+
.line 220
;>>>> *EVBIFRC = 0xFFFF; /* clear all EVB group C interrupts */
SPLK #65535,* ,AR4
.line 221
;>>>> *EVBIMRA = 0x0000; /* enable desired EVB group A interrupts */
LACK 0
ADRK 254
SACL *+
.line 222
;>>>> *EVBIMRB = 0x0000; /* enable desired EVB group B interrupts */
SACL *+
.line 223
;>>>> *EVBIMRC = 0x0000; /* enable desired EVB group C interrupts */
SACL * ,AR1
EPI0_1:
.line 225
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 247,000000000H,1
.sym _init_adc,_init_adc,32,2,0
.globl _init_adc
.func 250
;>>>> void init_adc(void)
******************************************************
* FUNCTION DEF : _init_adc
******************************************************
_init_adc:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> *ADCTRL1=0x00;
LARK AR3,28832
LACK 0
SACL *+
.line 4
;>>>> *ADCTRL2=0x0504;
SPLK #1284,*+
.line 5
;>>>> *MAX_CONV=0x07;
LACK 7
SACL *+
.line 6
;>>>> *CHSELSEQ1=0x3210;
SPLK #12816,*+
.line 7
;>>>> *CHSELSEQ2=0x7654;
SPLK #30292,* ,AR1
EPI0_2:
.line 8
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 257,000000000H,1
.sym _adc_soc,_adc_soc,32,2,0
.globl _adc_soc
.func 259
;>>>> void adc_soc(void)
******************************************************
* FUNCTION DEF : _adc_soc
******************************************************
_adc_soc:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> *T4CON=*T4CON|0x40;
LARK AR3,29960
LACK 64
OR *
SACL * ,AR1
EPI0_3:
.line 4
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 262,000000000H,1
.sym _adcint,_adcint,32,2,0
.globl _adcint
.func 264
;>>>> void interrupt adcint(void)
******************************************************
* FUNCTION DEF : _adcint
******************************************************
_adcint:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" clrc SXM");
clrc SXM
.line 9
;>>>> if(!(i%I_DIV))
.line 11
;>>>> adc_res=*RESULT5>>6;
LARK AR3,28845
RSXM
MAR * ,AR3
LAC * ,9
LDPK _adc_res
SACH _adc_res,1
.line 12
;>>>> I_result[i/I_DIV]=*RESULT0>>6;
SBRK 5
LAC * ,9,AR1
SACH * ,1,AR0
LAC _i
ADLK _I_result+0,0
SACL *
LAR AR4,* ,AR1
LAC * ,AR4
SACL *
.line 13
;>>>> if(adc_res>0x3fe)adc_res=0x3fe;
ZALS _adc_res
SUBK 1022
BLEZ L2
SPLK #1022,_adc_res
L2:
.line 14
;>>>> if(adc_res<0x01)adc_res=0x01;
LAC _adc_res
BNZ L3
LACK 1
SACL _adc_res
L3:
.line 15
;>>>> *ADCTRL2|=0x4200;
MAR * ,AR3
SBRK 7
LACK 16896
OR *
SACL * ,AR1
.line 16
;>>>> *T2PR=1.76*adc_res+200;
LALK FL1
RPTK 1
TBLR *+
ZALS _adc_res
CALL F$$UTOF
LALK FL2
RPTK 1
TBLR *+
CALL F$$MUL
CALL F$$ADD
CALL F$$FTOU
LARK AR4,29703
MAR * ,AR4
SACL *
.line 17
;>>>> b_time=fv_cn/((float)*T2PR);
ZALS * ,AR1
CALL F$$UTOF
RPTK 1
BLKD _fv_cn+0,*+
CALL F$$DIV
MAR *-
ZALH *-
ADDS *
SACL _b_time
SACH _b_time+1
.line 18
;>>>> if(b_time>1)b_time=1;
LALK FL3
RPTK 1
TBLR *+
RPTK 1
BLKD _b_time+0,*+
CALL F$$GT
BZ L4
LALK FL3
LRLK AR5,_b_time+0
MAR * ,AR5
RPTK 1
TBLR *+
L4:
.line 21
;>>>> i++;
LDPK _i
LAC _i
ADDK 1
SACL _i
.line 22
;>>>> if(i>=I_LOOP)
ZALS _i
SUBK 2048
BLZ L5
.line 23
;>>>> i = 0;
LACK 0
SACL _i
L5:
.line 24
;>>>> asm(" CLRC INTM");
CLRC INTM
EPI0_4:
.line 25
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 288,000000000H,1
.sym _timer2_isr,_timer2_isr,32,2,0
.globl _timer2_isr
.func 292
;>>>> interrupt void timer2_isr(void)
******************************************************
* FUNCTION DEF : _timer2_isr
******************************************************
_timer2_isr:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 4
;>>>> *EVAIFRB = *EVAIFRB & 0x0001; /* clear T2PINT flag */
LARK AR3,29744
LACK 1
AND *
SACL * ,AR1
.line 5
;>>>> a=*CMPR1=b_time*pwm_half_per*(0.5+0.5*sin_table[index_pwm%num_f_d]);
BLKD _num_f_d+0,*+
LDPK _index_pwm
ZALS _index_pwm
CALL I$$UMOD
MAR * ,AR0
SACL *
LAC * ,1
ADLK _sin_table+0,0
SACL *
LAR AR4,* ,AR4
LAC *+,AR1
SACL *+,AR4
LAC *-,AR1
SACL *+
LALK FL4
RPTK 1
TBLR *+
CALL F$$MUL
LALK FL4
RPTK 1
TBLR *+
CALL F$$ADD
ZALS _pwm_half_per
CALL F$$UTOF
RPTK 1
BLKD _b_time+0,*+
CALL F$$MUL
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SBRK 25
SACL *+,AR1
SACL _a
.line 6
;>>>> b=*CMPR2=b_time*pwm_half_per*(0.5+0.5*sin_table[(index_pwm+((2*num_f_d)/3))%num_f_d]);
BLKD _num_f_d+0,*+
LACK 3
SACL *+,AR0
LT _num_f_d
LACK 2
SACL *
MPYU *
SPL *
ZALS * ,AR1
CALL I$$UDIV
ADDS _index_pwm
ANDK 0FFFFh
CALL I$$UMOD
MAR * ,AR0
SACL *
LAC * ,1
ADLK _sin_table+0,0
SACL *
LAR AR4,* ,AR4
LAC *+,AR1
SACL *+,AR4
LAC *-,AR1
SACL *+
LALK FL4
RPTK 1
TBLR *+
CALL F$$MUL
LALK FL4
RPTK 1
TBLR *+
CALL F$$ADD
ZALS _pwm_half_per
CALL F$$UTOF
RPTK 1
BLKD _b_time+0,*+
CALL F$$MUL
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SACL *+,AR1
SACL _b
.line 7
;>>>> c=*CMPR3=b_time*pwm_half_per*(0.5+0.5*sin_table[(index_pwm+((num_f_d)/3))%num_f_d]);
BLKD _num_f_d+0,*+
LACK 3
SACL *+
ZALS _num_f_d
CALL I$$UDIV
ADDS _index_pwm
ANDK 0FFFFh
CALL I$$UMOD
MAR * ,AR0
SACL *
LAC * ,1
ADLK _sin_table+0,0
SACL *
LAR AR4,* ,AR4
LAC *+,AR1
SACL *+,AR4
LAC *-,AR1
SACL *+
LALK FL4
RPTK 1
TBLR *+
CALL F$$MUL
LALK FL4
RPTK 1
TBLR *+
CALL F$$ADD
ZALS _pwm_half_per
CALL F$$UTOF
RPTK 1
BLKD _b_time+0,*+
CALL F$$MUL
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SACL *
SACL _c
.line 13
;>>>> index_pwm++;
LAC _index_pwm
ADDK 1
SACL _index_pwm
.line 14
;>>>> if(index_pwm>=num_f_d)index_pwm=0;
ZALS _index_pwm
SUBS _num_f_d
BLZ L6
LACK 0
SACL _index_pwm
L6:
EPI0_5:
.line 16
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 307,000000000H,1
.sym _I_result,_I_result,62,2,32768,,2048
.globl _I_result
.sym _a,_a,14,2,16
.globl _a
.sym _b,_b,14,2,16
.globl _b
.sym _c,_c,14,2,16
.globl _c
.sym _duty,_duty,14,2,16
.globl _duty
.sym _period,_period,14,2,16
.globl _period
*************************************************
* DEFINE FLOATING POINT CONSTANTS *
*************************************************
.text
FL0: .float 3.125e5
FL1: .float 2.e2
FL2: .float 1.76
FL3: .float 1.
FL4: .float 5.e-1
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global F$$UTOF
.global F$$MUL
.global F$$DIV
.global F$$ADD
.global F$$FTOU
.global F$$GT
.global I$$SAVE
.global I$$REST
.global I$$UMOD
.global I$$UDIV
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -