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

📄 复件 gptime.c

📁 该代码是用TI公司DSP2407实现的变频电源SPMW输出控制源代码。
💻 C
字号:
#include "2407c.h" 
#include "ioports.h" 
#include "math.h"
#define  q14  16384
#define  Bp  120
#define  Cp 360
unsigned int n,n2,i=0;
unsigned int s[1204];
int sine[361]={0,286,572,857,1143,1428,           //SIN值表,Q14格式有符号数             
             1713,1997,2280,2563,2845,
             3126,3406,3686,3964,4240,
             4516, 4790,5063,5334,5604,
             5872,6138,6402,6664, 6924,
             7182,7438,7692,7943,8192,
             8438,8682,8923,9162,9397,
             9630,9860,10087,10311,10531,
             10749,10963,11174,11381,11585,
             11786,11982,12176,12365,12551,
             12733,12911,13085,13255,13421,
             13583,13741,13894,14044,14189,
             14330,14466,14598,14726,14849,
             14968,15082,15191,15296,15396,
             15491,15582,15668,15749,15826,
             15897,15964,16026,16083,16135,
             16182,16225,16262,16294,16322,
             16344,16362,16374, 16382,16384,            //;90

             16382,16374,16362,16344,16322,
             16294,16262,16225,16182,16135,
             16083,16026,15964,15897,15826,
             15749,15668,15582,15491,15396,
             15296,15191,15082,14968,14849,
             14726,14598,14466,14330,14189,
             14044,13894,13741,13583,13421,
             13255,13085,12911,12733,12551,
             12365,12176,11982,11786,11585,
             11381,11174,10963,10749,10531,
             10311,10087,9860,9630,9397,
             9162,8923,8682,8438,8192,
             7943,7692,7438,7182,6924,
             6664,6402,6138,5872,5604,
             5334,5063,4790,4516,4240,  
             3964,3686,3406,3126,2845,
             2563,2280,1997,1713,1428,
             1143,857,572,286, 0,                      //;180  
             
             
             -286,-572,-857,-1143,-1428,
             -1713,-1997,-2280,-2563,-2845,
             -3126,-3406,-3686,-3964,-4240,
             -4516, -4790,-5063,-5334,-5604,
             -5872,-6138,-6402,-6664, -6924,
             -7182,-7438,-7692,-7943,-8192,
             -8438,-8682,-8923,-9162,-9397,
             -9630,-9860,-10087,-10311,-10531,
             -10749,-10963,-11174,-11381,-11585,
             -11786,-11982,-12176,-12365,-12551,
             -12733,-12911,-13085,-13255,-13421,
             -13583,-13741,-13894,-14044,-14189,
             -14330,-14466,-14598,-14726,-14849,
             -14968,-15082,-15191,-15296,-15396,
             -15491,-15582,-15668,-15749,-15826,
             -15897,-15964,-16026,-16083,-16135,
             -16182,-16225,-16262,-16294,-16322,
             -16344,-16362,-16374, -16382,-16384,            //;90

             -16382,-16374,-16362,-16344,-16322,
             -16294,-16262,-16225,-16182,-16135,
             -16083,-16026,-15964,-15897,-15826,
             -15749,-15668,-15582,-15491,-15396,
             -15296,-15191,-15082,-14968,-14849,
             -14726,-14598,-14466,-14330,-14189,
             -14044,-13894,-13741,-13583,-13421,
             -13255,-13085,-12911,-12733,-12551,
             -12365,-12176,-11982,-11786,-11585,
             -11381,-11174,-10963,-10749,-10531,
             -10311,-10087,-9860,-9630,-9397,
             -9162,-8923,-8682,-8438,-8192,
             -7943,-7692,-7438,-7182,-6924,
             -6664,-6402,-6138,-5872,-5604,
             -5334,-5063,-4790,-4516,-4240,  
             -3964,-3686,-3406,-3126,-2845,
             -2563,-2280,-1997,-1713,-1428,
             -1143,-857,-572,-286, 0};
main()
{   
   unsigned int k,flag,t,j5;
   unsigned int q,j,j1,j2,max,delm,deln;
   float m,t1,t2,t3,t4,t5,t6,du;
    asm(" setc INTM");
    //asm(" CLRC	SXM");				// 符号位扩展有效
	//asm(" clrc	OVM");				// 累加器中结果正常溢出
	//asm(" clrc	CNF");	
   *WDCR=0x0e8;
   // *WDKEY=0x5555;
   // *WDKEY=0x0aaaa; 
   *SCSR1=0x0008;    //40m         
   *MCRC=0x007e;              
   *IMR=0x0002;
   *IFR=0xffff;
   *EVBIMRA=0x0200;
   *EVBIMRB=0x0000;
   *EVBIMRC=0x0000;
   *EVBIFRA=0xffff;
   *EVBIFRB=0x00ff;
   *EVBIFRC=0x00ff;     
   *T3PR=1000;
   *CMPR4=1000;
   *CMPR5=1000;
   *CMPR6=1000;       
   *ACTRB=0x0666;
   *DBTCONB=0x0;//2F4;
   *COMCONB=0x8200;
   *GPTCONB=0x40;
   *T3CON=0x0802;
    m=0.9;
    max=2000;//40000;
    *T3PR=max/2;
    delm=1880;//39880;
    deln=120;
    t=max/4;
    n=400;
    n2=n*2;   
    du=180.0/n;    
  for(k=0;k<n2;)
  {
   j=k*du;
    t1=sine[j];
	t1=t1/16384;
	t1=t1*m;
	t1=1+t1;
	t1=t1*t;
   t1=t*(1+m*sine[j]/q14);
   j=j+120;
   if(j>Cp)j=j-Cp;   
   t2=t*(1+m*sine[j]/q14);
   j=j+120;
   if(j>Cp)j=j-Cp;
   t3=t*(1+m*sine[j]/q14);   
   k=k+1;   
   j=k*du;					               
   t4=t*(1+m*sine[j]/q14);
   j=j+120;
   if(j>Cp)j=j-Cp;
   t5=t*(1+m*sine[j]/q14);
   j=j+120; 
   if(j>Cp)j=j-Cp;
   t6=t*(1+m*sine[j]/q14);    
   k++;   
   t1=t1+t4;
   t2=t2+t5;
   t3=t3+t6;   
    
   if(t1<deln)t1=0;
   if(t1>delm)t1=max;
   t1=(max-t1)/2;
   s[i]=t1;      
   if(t2<deln)t2=0;
   if(t2>delm)t2=max;
   t2=(max-t2)/2;
   s[i+n]=t2;   
   if(t3<deln)t3=0;
   if(t3>delm)t3=max;
   t3=(max-t3)/2;
   s[i+n2]=t3;  
    i++;
    } 
    
    i=0;    
   asm(" clrc INTM"); 
   *T3CON=*T3CON|0x0040;    
   while(1)
  {while(1);
  }
}


void interrupt T1INT( )
{   int flag;             
	flag=*EVBIFRA&0x0200;
	if(flag!=0x0200)
	{ 	
	asm(" clrc INTM");       	         	
	} 
	*EVBIFRA=0xFFFF;
    
   *CMPR4=s[i];
   *CMPR5=s[i+n];
   *CMPR6=s[i+n2];
   i++;
   if(i>n)i=0;
}    /*   */  

void	interrupt nothing()
{                     
	asm(" clrc INTM");
}

⌨️ 快捷键说明

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