📄 func.asm
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00
*******************************************************
; C:\TIC2XX\C2000\CGTOOLS\BIN\DSPAC.EXE -v2xx func.c C:\WINDOWS\TEMP\func.if
; dspopt NOT RUN
; C:\TIC2XX\C2000\CGTOOLS\BIN\DSPCG.EXE -o -v2xx -o C:\WINDOWS\TEMP\func.if C:\WINDOWS\TEMP\func.asm C:\WINDOWS\TEMP\func.tmp
.port
.bss _hall,1,1
.bss _time_cnt,1
.bss _dir,1
.bss _ldd,1
.bss _PWM_DUTY,1
.bss _i,1
.bss _adc_res,1
.file "func.c"
.file "f2407_c.h"
.globl _portFF0F
.globl _portFFFF
.file "var.h"
.globl _i
.sect ".cinit"
.word 1,_hall
.word 0
.sym _hall,_hall,14,2,16
.globl _hall
.word 1,_time_cnt
.word 20
.sym _time_cnt,_time_cnt,14,2,16
.globl _time_cnt
.file "C:\tic2xx\c2000\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 "func.c"
.globl _adc_res
.word 1,_dir
.word 0
.sym _dir,_dir,14,2,16
.globl _dir
.word 1,_ldd
.word 0
.sym _ldd,_ldd,14,2,16
.globl _ldd
.word 1,_PWM_DUTY
.word 1500
.sym _PWM_DUTY,_PWM_DUTY,14,2,16
.globl _PWM_DUTY
.text
.sym _ini,_ini,32,2,0
.globl _ini
.func 17
;>>>> 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
;>>>> *PADATDIR = *PADATDIR&0xc7ff;
LACK 51199
ADRK 4
AND *
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 = 0x0000; /* configure GPTCONA */
SBRK 8
SACL *+
.line 142
;>>>> *T1CNT = 0x0000; /* clear timer counter */
SACL *
.line 143
;>>>> *T1PR = pwm_half_per; /* set timer period */
ADRK 2
SPLK #2000,*
.line 144
;>>>> *DBTCONA = 0x0000; /* deadband units off */
ADRK 18
SACL *
.line 145
;>>>> *CMPR3=*CMPR2=*CMPR1=PWM_DUTY; /* set PWM1 duty cycle */
LDPK _PWM_DUTY
LAC _PWM_DUTY
ADRK 2
SACL *+
SACL *+
SACL *
.line 147
;>>>> *ACTRA = 0x0fff; /* PWM1 pin set active high */
SBRK 6
SPLK #4095,*
.line 159
;>>>> *COMCONA = 0x8200; /* configure COMCON register */
SBRK 2
SPLK #33280,*
.line 170
;>>>> *T1CON = 0x0840; /* configure T1CON register */
SBRK 13
SPLK #2112,*+
.line 186
;>>>> *T2CNT = 0x0000; /* clear timer counter */
LACK 0
SACL *
.line 187
;>>>> *T2PR = timer2_per; /* set timer period */
ADRK 2
SPLK #5000,*+
.line 189
;>>>> *T2CON = 0xD740; /* configure T2CON register */
SPLK #55104,* ,AR5
.line 205
;>>>> *IMR = 0x0000; /* clear the IMR register */
LARK AR5,4
SACL *
.line 206
;>>>> *IFR = 0x003F; /* clear any pending core interrupts */
LACK 63
ADRK 2
SACL *
.line 207
;>>>> *IMR = 0x0007; /* enable desired core interrupts (in2,in3)*/
LACK 7
SBRK 2
SACL * ,AR4
.line 210
;>>>> *EVAIFRA = 0xFFFF; /* clear all EVA group A interrupts */
ADRK 39
SPLK #65535,*+
.line 211
;>>>> *EVAIFRB = 0xFFFF; /* clear all EVA group B interrupts */
SPLK #65535,*+
.line 212
;>>>> *EVAIFRC = 0xFFFF; /* clear all EVA group C interrupts */
SPLK #65535,*
.line 213
;>>>> *EVAIMRA = 0x0200; /* enable desired EVA group A interrupts */
SBRK 5
SPLK #512,* ,AR5
.line 214
;>>>> *EVAIMRB = 0x0001; /* enable desired EVA group B interrupts ENABLE TIME2*/
SBRK 3
MAR * ,AR4
MAR *+
SAR AR5,*+,AR5
.line 215
;>>>> *EVAIMRC = 0x0000; /* enable desired EVA group C interrupts */
MAR *-,AR4
SAR AR5,* ,AR5
.line 217
;>>>> *EVBIFRA = 0xFFFF; /* clear all EVB group A interrupts */
LARK AR5,29999
SPLK #65535,*+
.line 218
;>>>> *EVBIFRB = 0xFFFF; /* clear all EVB group B interrupts */
SPLK #65535,*+
.line 219
;>>>> *EVBIFRC = 0xFFFF; /* clear all EVB group C interrupts */
SPLK #65535,* ,AR4
.line 220
;>>>> *EVBIMRA = 0x0000; /* enable desired EVB group A interrupts */
LACK 0
ADRK 254
SACL *+
.line 221
;>>>> *EVBIMRB = 0x0000; /* enable desired EVB group B interrupts */
SACL *+
.line 222
;>>>> *EVBIMRC = 0x0000; /* enable desired EVB group C interrupts */
SACL * ,AR1
EPI0_1:
.line 224
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 240,000000000H,1
.sym _init_adc,_init_adc,32,2,0
.globl _init_adc
.func 242
;>>>> void init_adc(void)
******************************************************
* FUNCTION DEF : _init_adc
******************************************************
_init_adc:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> *T4CNT=0x0000l;
LARK AR3,29957
LACK 0
SACL *
.line 4
;>>>> *T4CON=0x170c;
ADRK 3
SPLK #5900,*-
.line 5
;>>>> *T4PR=0x75;
LACK 117
SACL *
.line 6
;>>>> *GPTCONB=0x400;
SBRK 7
SPLK #1024,*
.line 7
;>>>> *EVBIFRB=0xffff;
ADRK 48
SPLK #65535,* ,AR4
.line 8
;>>>> *ADCTRL1=0x10;
LARK AR4,28832
LACK 16
SACL *+
.line 9
;>>>> *ADCTRL2=0x8404;
SPLK #33796,*+
.line 10
;>>>> *MAX_CONV=0x03;
LACK 3
SACL *+
.line 11
;>>>> *CHSELSEQ1=0x3210;
SPLK #12816,* ,AR1
EPI0_2:
.line 12
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 253,000000000H,1
.sym _adc_soc,_adc_soc,32,2,0
.globl _adc_soc
.func 255
;>>>> 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 258,000000000H,1
.sym _adcint,_adcint,32,2,0
.globl _adcint
.func 260
;>>>> 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 4
;>>>> adc_res=*RESULT2>>6;
LARK AR3,28842
RSXM
MAR * ,AR3
LAC * ,9
LDPK _adc_res
SACH _adc_res,1
.line 5
;>>>> if(adc_res>0x2cf)adc_res=0x2cf;
ZALS _adc_res
SUBK 719
BLEZ L1
SPLK #719,_adc_res
L1:
.line 6
;>>>> if(adc_res<0x38)adc_res=0x38;
ZALS _adc_res
SUBK 56
BGEZ L2
LACK 56
SACL _adc_res
L2:
.line 7
;>>>> *ADCTRL2|=0x4200;
SBRK 9
LACK 16896
OR *
SACL *
.line 8
;>>>> PWM_DUTY=1200+(adc_res-0x38);
LAC _adc_res
ADDK 1144
SACL _PWM_DUTY
.line 9
;>>>> if(PWM_DUTY<1200)PWM_DUTY=1200;
ZALS _PWM_DUTY
SUBK 1200
BGEZ L3
SPLK #1200,_PWM_DUTY
L3:
.line 10
;>>>> if(PWM_DUTY>1800)PWM_DUTY=1800;
ZALS _PWM_DUTY
SUBK 1800
BLEZ L4
SPLK #1800,_PWM_DUTY
L4:
.line 11
;>>>> asm(" CLRC INTM");
CLRC INTM
EPI0_4:
.line 12
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 271,000000000H,1
.sym _stop,_stop,32,2,0
.globl _stop
.func 273
;>>>> void stop(void)
;>>>> unsigned int i,j;
******************************************************
* FUNCTION DEF : _stop
******************************************************
_stop:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR3
.sym _i,1,14,1,16
.sym _j,2,14,1,16
.line 4
;>>>> *ACTRA=0x0333;
LARK AR3,29715
SPLK #819,* ,AR2
.line 5
;>>>> for(i=0;i<10;i++)
LACK 0
LARK AR2,1
MAR *0+
SACL *
ZALS *
SUBK 10
BGEZ L6
MAR *+
RSXM ;;;
L5:
.line 6
;>>>> for(j=0;j<40000;j++);
LACK 0
SACL *
ZALS *
BNV $+2
MAR *+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 40000
SPAC
BNV $+6
BGZ L8
B $+4
BLEZ L8
SBRK 2
L7:
LAC *
ADDK 1
SACL *
ZALS *
BNV $+2
MAR *+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 40000
SPAC
SBRK 2
BNV $+6
BLZ L7
B $+4
BGZ L7
L8:
.line 5
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *+
SUBK 10
BLZ L5
L6:
EPI0_5:
.line 7
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 279,000000000H,5
.sym _timer2_isr,_timer2_isr,32,2,0
.globl _timer2_isr
.func 286
;>>>> interrupt void timer2_isr(void)
******************************************************
* FUNCTION DEF : _timer2_isr
******************************************************
_timer2_isr:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" SETC INTM");
SETC INTM
.line 5
;>>>> *EVAIFRB = *EVAIFRB & 0x0001; /* clear T2PINT flag */
LARK AR3,29744
LACK 1
MAR * ,AR3
AND *
SACL *
.line 7
;>>>> if(time_cnt==0)
LDPK _time_cnt
LAC _time_cnt
BNZ L9
.line 9
;>>>> ldd=!ldd;
LAC _ldd
LARK AR4,1
BZ LL8
LARK AR4,0
LL8:
SAR AR4,_ldd
.line 14
;>>>> time_cnt=C_TIME;
LACK 20
SACL _time_cnt
L9:
.line 16
;>>>> time_cnt--;
SUBK 1
SACL _time_cnt
.line 18
;>>>> asm(" CLRC INTM");
CLRC INTM
EPI0_6:
.line 19
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 304,000000000H,1
.sym _inter2_isr,_inter2_isr,32,2,0
.globl _inter2_isr
.func 308
;>>>> interrupt void inter2_isr(void)
******************************************************
* FUNCTION DEF : _inter2_isr
******************************************************
_inter2_isr:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 4
;>>>> *EVAIFRA = *EVAIFRA & 0x0200;
LARK AR3,29743
LACK 512
AND *
SACL * ,AR4
.line 5
;>>>> hall=*PADATDIR&0x0038;
LARK AR4,28824
LACK 56
AND *
LDPK _hall
SACL _hall
.line 6
;>>>> if(*PIVR==0x0029) /*time1 overbelow interrupt*/
;>>>> switch(hall)
;>>>> case 0x08: /*PWM1-PWM6 ANC*/
SBRK 122
LAC *
SUBK 41
BNZ L10
B L11
L12:
.line 12
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L13
.line 13
;>>>> *ACTRA=0x03fd;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #1021,*
B L15
L13:
.line 15
;>>>> *ACTRA=0x0df3;
LARK AR3,29715
MAR * ,AR3
SPLK #3571,*
.line 16
;>>>> break;
;>>>> case 0x18: /*PWM3-PWM6 BNC*/
B L15
L16:
.line 20
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L17
.line 21
;>>>> *ACTRA=0x03df;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #991,*
B L15
L17:
.line 23
;>>>> *ACTRA=0x0d3f;
LARK AR3,29715
MAR * ,AR3
SPLK #3391,*
.line 24
;>>>> break;
;>>>> case 0x10: /*PWM3-PWM2 BNA*/
B L15
L19:
.line 28
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L20
.line 29
;>>>> *ACTRA=0x0fd3;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #4051,*
B L15
L20:
.line 31
;>>>> *ACTRA=0x0f3d;
LARK AR3,29715
MAR * ,AR3
SPLK #3901,*
.line 32
;>>>> break;
;>>>> case 0x30: /*PWM5-PWM2 CNA*/
B L15
L22:
.line 36
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L23
.line 37
;>>>> *ACTRA=0x0df3;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #3571,*
B L15
L23:
.line 39
;>>>> *ACTRA=0x03fd;
LARK AR3,29715
MAR * ,AR3
SPLK #1021,*
.line 40
;>>>> break;
;>>>> case 0x20: /*PWM5-PWM4 CNB*/
B L15
L25:
.line 44
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L26
.line 45
;>>>> *ACTRA=0x0d3f;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #3391,*
B L15
L26:
.line 47
;>>>> *ACTRA=0x03df;
LARK AR3,29715
MAR * ,AR3
SPLK #991,*
.line 48
;>>>> break;
;>>>> case 0x28: /*PWM1-PWM4 ANB*/
B L15
L28:
.line 52
;>>>> if(dir==0)
LDPK _dir
LAC _dir
BNZ L29
.line 53
;>>>> *ACTRA=0x0f3d;
;>>>> else
LARK AR3,29715
MAR * ,AR3
SPLK #3901,*
B L15
L29:
.line 55
;>>>> *ACTRA=0x0fd3;
LARK AR3,29715
MAR * ,AR3
SPLK #4051,*
.line 56
;>>>> break;
;>>>> default:
B L15
L31:
.line 60
;>>>> *ACTRA=0x0fff;
LARK AR3,29715
MAR * ,AR3
SPLK #4095,*
B L15
L11:
.line 8
ZALS _hall
SUBK 8
BZ L12
SUBK 8
BZ L19
SUBK 8
BZ L16
SUBK 8
BZ L25
SUBK 8
BZ L28
SUBK 8
BZ L22
B L31
L15:
.line 63
;>>>> *CMPR3=*CMPR2=*CMPR1=PWM_DUTY;
LDPK _PWM_DUTY
LAC _PWM_DUTY
ADRK 4
SACL *+
SACL *+
SACL *
L10:
EPI0_7:
.line 75
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 382,000000000H,1
.sym _i,_i,14,2,16
.globl _i
.sym _adc_res,_adc_res,14,2,16
.globl _adc_res
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global I$$SAVE
.global I$$REST
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -