📄 fun.asm
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00
*******************************************************
; C:\tic2xx\c2000\cgtools\bin\dspac.exe -v2xx fun.c C:\DOCUME~1\jjd\LOCALS~1\Temp\fun.if
; dspopt NOT RUN
; C:\tic2xx\c2000\cgtools\bin\dspcg.exe -o -v2xx -o C:\DOCUME~1\jjd\LOCALS~1\Temp\fun.if C:\DOCUME~1\jjd\LOCALS~1\Temp\fun.asm C:\DOCUME~1\jjd\LOCALS~1\Temp\fun.tmp
.port
.bss _pwm_half_per,1,1
.file "fun.c"
.file "f2407_c.h"
.globl _portFF0F
.globl _portFFFF
.file "fun.c"
.sect ".cinit"
.word 1,_pwm_half_per
.word 3000
.sym _pwm_half_per,_pwm_half_per,14,2,16
.globl _pwm_half_per
.text
.sym _sys_ini,_sys_ini,32,2,0
.globl _sys_ini
.func 7
;>>>> void sys_ini(void)
******************************************************
* FUNCTION DEF : _sys_ini
******************************************************
_sys_ini:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 4
;>>>> *SCSR1 = 0x00FD;
LARK AR3,28696
LACK 253
SACL *+
.line 21
;>>>> *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
LACK 11
OR *
ANDK 15
SACL *
.line 33
;>>>> *WDCR = 0x00E8;
LACK 232
ADRK 16
SACL * ,AR0
.line 44
;>>>> WSGR = 0x0040;
LACK 64
SACL *
OUT * ,0ffffh,AR3
.line 55
;>>>> *MCRA = 0x0fc0; /* group A pins */
ADRK 103
SPLK #4032,*
.line 75
;>>>> *MCRB = 0xFE00; /* group B pins */
ADRK 2
SPLK #65024,*
.line 95
;>>>> *MCRC = 0x0000; /* group C pins */
LACK 0
ADRK 2
SACL * ,AR4
.line 115
;>>>> *IMR = 0x0000; /* clear the IMR register */
LARK AR4,4
SACL *
.line 116
;>>>> *IFR = 0x003F; /* clear any pending core interrupts */
LACK 63
ADRK 2
SACL *
.line 118
;>>>> *EVAIMRA = 0x0000; /* enable desired EVA group A interrupts */
LARK AR5,29740
SBRK 6
MAR * ,AR5
SAR AR4,*+
.line 119
;>>>> *EVAIMRB = 0x0000; /* enable desired EVA group B interrupts */
SAR AR4,*+
.line 120
;>>>> *EVAIMRC = 0x0000; /* enable desired EVA group C interrupts */
SAR AR4,*+
.line 121
;>>>> *EVAIFRA = 0xFFFF; /* clear all EVA group A interrupts */
SPLK #65535,*+
.line 122
;>>>> *EVAIFRB = 0xFFFF; /* clear all EVA group B interrupts */
SPLK #65535,*+
.line 123
;>>>> *EVAIFRC = 0xFFFF; /* clear all EVA group C interrupts */
SPLK #65535,*
.line 125
;>>>> *EVBIFRA = 0xFFFF; /* clear all EVB group A interrupts */
ADRK 254
SPLK #65535,*+
.line 126
;>>>> *EVBIFRB = 0xFFFF; /* clear all EVB group B interrupts */
SPLK #65535,*+
.line 127
;>>>> *EVBIFRC = 0xFFFF; /* clear all EVB group C interrupts */
SPLK #65535,*
.line 128
;>>>> *EVBIMRA = 0x0000; /* enable desired EVB group A interrupts */
SBRK 5
SAR AR4,*+
.line 129
;>>>> *EVBIMRB = 0x0000; /* enable desired EVB group B interrupts */
SAR AR4,*+
.line 130
;>>>> *EVBIMRC = 0x0000; /* enable desired EVB group C interrupts */
SAR AR4,* ,AR1
EPI0_1:
.line 131
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 137,000000000H,1
.sym _pwm_init,_pwm_init,32,2,0
.globl _pwm_init
.func 139
;>>>> void pwm_init(void)
******************************************************
* FUNCTION DEF : _pwm_init
******************************************************
_pwm_init:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 5
;>>>> *T1CON = 0x0000; /* disable timer 1 */
LARK AR3,29700
LACK 0
SACL *
.line 6
;>>>> *T2CON = 0x0000; /* disable timer 2 */
ADRK 4
SACL *
.line 8
;>>>> *GPTCONA = 0x0000; /* configure GPTCONA */
SBRK 8
SACL *+
.line 25
;>>>> *T1CNT = 0x0000; /* clear timer counter */
SACL *
.line 26
;>>>> *T1PR = pwm_half_per; /* set timer period */
ADRK 2
BLKD #_pwm_half_per,*
.line 27
;>>>> *DBTCONA = 0x0000; /* deadband units off */
ADRK 18
SACL * ,AR1
.line 28
;>>>> *CMPR1 = pwm_half_per*0.25; /* set PWM1 duty cycle */
LALK FL0
RPTK 1
TBLR *+
LDPK _pwm_half_per
ZALS _pwm_half_per
CALL F$$UTOF
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
ADRK 2
SACL *
.line 30
;>>>> *ACTRA = 0x0666; /* PWM1 pin set active high */
SBRK 4
SPLK #1638,*
.line 42
;>>>> *COMCONA = 0x8200; /* configure COMCON register */
SBRK 2
SPLK #33280,*
.line 53
;>>>> *T1CON = 0x0840; /* configure T1CON register */
SBRK 13
SPLK #2112,* ,AR4
.line 69
;>>>> *IMR |= 0x0002; /* enable desired core interrupts (in2)*/
LARK AR4,4
LACK 2
OR *
SACL * ,AR3
.line 73
;>>>> *EVAIMRA |= 0x0200; /* enable desired EVA group A interrupts */
ADRK 40
LACK 512
OR *
SACL * ,AR4
.line 74
;>>>> *EVAIMRB = 0x0000; /* enable desired EVA group B interrupts */
SBRK 4
MAR * ,AR3
MAR *+
SAR AR4,*+
.line 75
;>>>> *EVAIMRC = 0x0000; /* enable desired EVA group C interrupts */
SAR AR4,* ,AR1
EPI0_2:
.line 77
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 215,000000000H,1
.sym _inter2_isr,_inter2_isr,32,2,0
.globl _inter2_isr
.func 218
;>>>> interrupt void inter2_isr(void)
******************************************************
* FUNCTION DEF : _inter2_isr
******************************************************
_inter2_isr:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> *EVAIFRA = *EVAIFRA & 0x0200;
LARK AR3,29743
LACK 512
AND *
SACL * ,AR4
.line 4
;>>>> if(*PIVR==0x0029) /*time1 overbelow interrupt*/
LARK AR4,28702
LAC *
SUBK 41
BNZ L1
.line 7
;>>>> *CMPR1= pwm_half_per*0.25;
MAR * ,AR1
LALK FL0
RPTK 1
TBLR *+
LDPK _pwm_half_per
ZALS _pwm_half_per
CALL F$$UTOF
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SBRK 24
SACL *+,AR1
.line 8
;>>>> *CMPR2= pwm_half_per*0.5;
LALK FL1
RPTK 1
TBLR *+
ZALS _pwm_half_per
CALL F$$UTOF
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SACL *+,AR1
.line 9
;>>>> *CMPR3= pwm_half_per*0.75;
LALK FL2
RPTK 1
TBLR *+
ZALS _pwm_half_per
CALL F$$UTOF
CALL F$$MUL
CALL F$$FTOU
MAR * ,AR3
SACL *
L1:
.line 11
;>>>> asm(" CLRC INTM");
CLRC INTM
EPI0_3:
.line 12
MAR * ,AR1
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 229,000000000H,1
*************************************************
* DEFINE FLOATING POINT CONSTANTS *
*************************************************
.text
FL0: .float 2.5e-1
FL1: .float 5.e-1
FL2: .float 7.5e-1
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global F$$UTOF
.global F$$MUL
.global F$$FTOU
.global I$$SAVE
.global I$$REST
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -