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

📄 spwmc.c

📁 本文件提供了SPWM的DSP2407解决方案源程序
💻 C
字号:
/* =====================================================================
*	Copyright(C) 2008, All rigth reserved
*
*   File Name: spwmc.c
*
*   @Description: 在2407上实现脉冲宽度SPWM
*
*   @author:   L.J.H
*
*   @version:  Ver1.0
*
*   @data  2004-08-01
*
===================================================================== */


#define  pi 3.1415927      
#include "math.h"
#include  "2407c.h"   
unsigned int gflag=0,width=0x0; 
int sintab[256]=
{0,402,804,1206,1607,2009,2410,2811,3211,3611,4011,4409,4808
 ,5205,5602,5997,6392,6786,7179,7571,7961,8351,8739,9126,9512,9896
,10278,10659,11039,11416,11793,12167,12539,12910,13278,13645
,14010,14372,14732,15090,15446,15800,16151,16499,16846,17189,17530
,17869,18204,18537,18868,19195,19519,19841,20159,20475,20787,21097
,21403,21706,22005,22301,22594,22884,23170,23453,23732,24007,24279
,24547,24812,25073,25330,25583,25832,26077,26319,26557,26790,27020
,27245,27466,27684,27897,28106,28310,28511,28707,28898,29086,29269
,29447,29621,29791,29956,30117,30273,30425,30572,30714,30852,30985
,31114,31237,31357,31471,31581,31685,31785,31881,31971,32057,32138
,32214,32285,32351,32413,32469,32521,32568,32610,32647,32679,32706
,32728,32745,32758,32765,32767,32765,32758,32745,32728,32706,32679
,32647,32610,32568,32521,32469,32413,32351,32285,32214,32138,32057
,31971,31881,31785,31685,31581,31471,31357,31237,31114,30985,30852
,30714,30572,30425,30273,30117,29956,29791,29621,29447,29269,29086
,28898,28707,28511,28310,28106,27897,27684,27466,27245,27020,26790
,26557,26319,26077,25832,25583,25330,25073,24812,24547,24279,24007
,23732,23453,23170,22884,22594,22301,22005,21706,21403,21097,20787
,20475,20159,19841,19519,19195,18868,18537,18204,17869,17530,17189
,16846,16499,16151,15800,15446,15090,14732,14372,14010,13645,13278
,12910,12539,12167,11793,11416,11039,10659,9896,9512,9126,8739,8351
,7961,7571,7179,6786,6392,5997,5602,5205,4808,4409,4011,3611,3211
,2811,2410,2009,1607,1206,804,402,0 
};


enable()
{   asm("   clrc  intm");
}
                            
disable()
{   asm("	setc  intm");
} 
nothing() {}
sysinit()
{
	disable();
	asm("   clrc  cnf");
	asm("	clrc  ovm");
	asm("	clrc  sxm");
	*IMR=0X02;
	*IFR=0XFFFF;
	*WDCR=0XE8;
	*SCSR1=0x81FE;	
}               
pwminit()
{   *MCRC=*MCRC&0XF3FF;
	*PFDATDIR=0XFF00;
	*MCRA=*MCRA|0XFC0;
	*EVAIFRA=0XFFFF;
	*ACTRA=0X0; 	//all output high level
	*DBTCONA=0X0;   //enable all data time control,td=1us
	*CMPR1=0X0;
	*CMPR2=0X0;
	*CMPR3=0X0;
	*T1PR=240;
	*COMCONA=0XA600;
	*GPTCONA=0X41;
	*EVAIMRA=0X80;
	*T1CON=0X0b4E;
}               
interrupt void gisr2()
{   int flag;
	flag=*EVAIFRA&0X80;
	if(flag)
	{   gflag=1;             
		*CMPR1=width;
		*CMPR2=width;
		*CMPR3=width;               
	} 
	*EVAIFRA=0xFFFF;
	enable();	
}  

main()
{   int i=0;
	unsigned int fc=10000,fr=50,a,N=fc/fr,tmp=0,timpr=240,N2=N/2;
	unsigned int  x,t;                   
	sysinit();   
	pwminit();
	enable();   
	while(1)
	{	
		if(gflag)
		{                     
    			i<=(N2-1)?(t=41*i>>4):(t=41*(i-N2)>>4);
        		x=sintab[t]; 
        		width=x/400;   
        		i<(N2-1)?(*ACTRA=0X444):(*ACTRA=0X111);
        		i==(N-1)?(i=0):i++; 
    			gflag=0;
        }
        
    }   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -