⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.asm

📁 2407的 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 + -