📄 pwm.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04
*******************************************************
; dspac -q -d_DEBUG -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include pwm.c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\pwm.if
; dspopt NOT RUN
; dspcg -o -q -v2xx -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\pwm.if C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\pwm.asm C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\pwm.tmp
.port
.file "pwm.c"
.file "f2407_c.h"
.globl _portFF0F
.globl _portFFFF
.file "pwm.c"
.text
.sym _disable,_disable,32,2,0
.globl _disable
.func 4
;>>>> void inline disable()
******************************************************
* FUNCTION DEF : _disable
******************************************************
_disable:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" setc INTM");
setc INTM
EPI0_1:
.line 4
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 7,000000000H,1
.sym _initial,_initial,36,2,0
.globl _initial
.func 9
;>>>> int initial()
******************************************************
* FUNCTION DEF : _initial
******************************************************
_initial:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" setc SXM"); // 符号位扩展有效
setc SXM
.line 4
;>>>> asm(" clrc OVM"); // 累加器中结果正常溢出
clrc OVM
.line 5
;>>>> asm(" clrc CNF"); // B0被配置为数据存储空间
clrc CNF
.line 6
;>>>> SCSR1=0x81FE; // CLKIN=10M,CLKOUT=4CLKIN=40M
LARK AR3,28696
MAR * ,AR3
SPLK #33278,*
.line 7
;>>>> WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE
;>>>> // 即WD复位后的缺省值为1,故可以用
;>>>> // 软件禁止看门狗
LACK 232
ADRK 17
SACL * ,AR4
.line 10
;>>>> IMR=0x0000; // 禁止所有中断
LARK AR4,4
LACK 0
SACL *
.line 11
;>>>> IFR=0x0FFFF; // 清除全部中断标志,"写1清0"
ADRK 2
SPLK #65535,* ,AR0
.line 12
;>>>> WSGR=0x00; // 禁止所有的等待状态
SACL *
OUT * ,0ffffh,AR1
EPI0_2:
.line 13
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 21,000000000H,1
.sym _pwminitial,_pwminitial,36,2,0
.globl _pwminitial
.func 23
;>>>> int pwminitial()
******************************************************
* FUNCTION DEF : _pwminitial
******************************************************
_pwminitial:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> MCRC=MCRC|0x007E; // IOPE1-6被配置为基本功能方式,PWM7-12
LARK AR3,28820
LACK 126
OR *
SACL * ,AR4
.line 4
;>>>> ACTRB=0x0666; // PWM12,10,8 低有效,PWM11,9,7 高有效
LARK AR4,29971
SPLK #1638,*
.line 5
;>>>> DBTCONB=0x00; // 不使能死区控制
LACK 0
ADRK 2
SACL *
.line 6
;>>>> CMPR4=0x1000;
ADRK 2
SPLK #4096,*+
.line 7
;>>>> CMPR5=0x3000;
SPLK #12288,*+
.line 8
;>>>> CMPR6=0x5000;
SPLK #20480,*
.line 9
;>>>> T3PR=0x6000; // 设置定时器3的周期寄存器,并设置CMPR4-6,以确定不
;>>>> // 同的输出占空比
SBRK 22
SPLK #24576,*
.line 11
;>>>> COMCONB=0x8200; // 使能比较操作
ADRK 14
SPLK #33280,*
.line 12
;>>>> T3CON=0x1000; // 定时器3为连续增计数模式
SBRK 13
SPLK #4096,* ,AR1
EPI0_3:
.line 13
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 35,000000000H,1
.sym _nothing,_nothing,32,2,0
.globl _nothing
.func 37
;>>>> void interrupt nothing()
******************************************************
* FUNCTION DEF : _nothing
******************************************************
_nothing:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> return; // 中断直接返回
EPI0_4:
.line 4
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 40,000000000H,1
.sym _main,_main,36,2,0
.globl _main
.func 42
;>>>> main( )
******************************************************
* FUNCTION DEF : _main
******************************************************
_main:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 4
;>>>> disable(); // 总中断禁止
CALL _disable
.line 5
;>>>> initial(); // 系统初始化
CALL _initial
.line 6
;>>>> pwminitial(); // PWM输出初始化
CALL _pwminitial
.line 7
;>>>> T3CON=T3CON|0x0040; // 启动定时器3
;>>>> while(1)
;>>>> ; //等待中断发生
LARK AR3,29956
LACK 64
MAR * ,AR3
OR *
SACL *
L1:
.line 11
B L1
.endfunc 55,000000000H,1
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global I$$SAVE
.global I$$REST
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -