www.pudn.com > 25811253examples_of_SPWM@C.rar > pwm.c


#include "regs240x.h"  
 
main() 
{ 
	unsigned int uWork; 
	 
	asm(" setc INTM");	/* 关中断 */ 
	asm(" setc	SXM");	/* 符号位扩展有效 */ 
	asm(" clrc	OVM");	/* 累加器中结果正常溢出 */ 
	asm(" clrc	CNF");	/* B0被配置为数据存储空间 */ 
 
	WDCR=0x6f; 
	WDKEY=0x5555; 
	WDKEY=0xaaaa;	/* 关闭看门狗中断 */ 
 
	SCSR1=0x81fe;	/* DSP工作在40MHz */ 
	IMR=0;			/* 屏蔽所有可屏蔽中断 */ 
	IFR=0x0ffff;	/* 清除中断标志 */ 
	uWork=WSGR;		/* I/O引脚0等待 */ 
	uWork&=0x0fe3f;	/* .BVIS=11, .ISWS=000, .DSWS=111, .PSWS=111 */ 
	WSGR=uWork; 
 
	MCRA=MCRA|0x0c0;	/* IOPA6被配置为基本功能方式,PWM1 */ 
	ACTRA=0x06;  		/* PWM2低有效,PWM1高有效 */ 
	DBTCONA=0x00;		/* 不使能死区控制 */ 
	CMPR1=0x1000;  		/* 比较单元1设置 */	 
	CMPR2=0x3000;		/* 比较单元2设置 */	 
	T1PER=0x6000;		/* 设置定时器1的周期寄存器,以确定不同的输出占空比 */ 
	COMCONA=0x8200;		/* 使能比较操作 .CENABLE=1, .FCOMPOE=1 */ 
	T1CON=0x1000;		/* 定时器1为连续增计数模式 .T1MODE=01,Continuous-Up/-Down Count Mode */ 
 
	T1CON=T1CON|0x0040;	/* 启动定时器1 .TENABLE=1 */ 
	while ( 1 ) 
	{ 
	} 
}