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

📄 svpwm.zip.txt

📁 LF2407svpwm波形产生 的源程序
💻 TXT
字号:
#include "global.c"
#include  "float.h"
#include  "math.h"
float  ualfa[200],ubeta[200];
int  sector[200];
#define  PI2  2*3.1415926
#define  DETA  PI2/200
#define  INIA  3.1415926/180
#define  TP  1200
#define  KP  0.7
 


void initial()
{
  IFR=0xFFFF;
  IMR=0x0;
  SCSR1=0x81FE;
  WDCR=0xE8;
  T1PR=TP;
  T1CON=0x0802;
  ACTRA=0x666;
  COMCONA=0x9200;
  EVAIMRA=0x00;
  T1CNT=0x00;
  EVAIFRA=0xFFFF;
  MCRC=MCRC|0x7E;
  WSGR=0x0000;
 }
 void calu()
{
  int   i ;
  for(i=0;i<200;i++)
  {
    ualfa[i]=KP*cos(INIA+i*DETA);
	ubeta[i]=KP*sin(INIA+i*DETA);
  }
}
 void SECTOR()
{
   int i,a,b,c;
   float vref1,vref2,vref3;
   for(i=0;i<200;i++)
   {
      vref1=ubeta[i];
	  vref2=(-ubeta[i]+ualfa[i]*1.732051)/2;
	  vref3=(-ubeta[i]-ualfa[i]*1.732051)/2;
	  if(vref1>0) a=1;
	  else a=0;
	  if(vref2>0) b=1;
	  else b=0;
	  if(vref3>0) c=1;
	  else c=0;
	  a=4*c+2*b+a;
	  switch(a){
	        case1:sector[i]=1; break;
			case2:sector[i]=5; break;
			case3:sector[i]=0; break;
			case4:sector[i]=3; break;
			case5:sector[i]=2; break;
			case6:sector[i]=4; break;
			default: break;
			}
        }
 }
 main()
{
   int anticlk[6]={0x1666,0x3666,0x2666,0x6666,0x4666,0x5666};
   int i,k=0,cmp1,cmp2;
   float x,y,z;
   disable();
   initial();
   calu();
   SECTOR();
   while(1) {
        for(i=0;i<200;i++){
		    ACTRA=anticlk[sector[i]];
			x=ubeta[i];
			y=(1.732051*ualfa[i]+ubeta[i])/2;
			z=(-1.732051*ualfa[i]+ubeta[i])/2;
			switch(sector[i]){
			   case0:cmp1=(int)(-z*TP),cmp2=(int)(x*TP); break;
			   case1:cmp1=(int)(y*TP),cmp2=(int)(z*TP); break;
			   case2:cmp1=(int)(x*TP),cmp2=(int)(-y*TP); break;
			   case3:cmp1=(int)(z*TP),cmp2=(int)(-x*TP); break;
			   case4:cmp1=(int)(-y*TP),cmp2=(int)(-z*TP); break;
			   case5:cmp1=(int)(-x*TP),cmp2=(int)(y*TP); break;
			   default: break;
			
			}

	CMPR1=cmp1;
	CMPR2=cmp1+cmp2;
	if((i+k)==0)    T1CON=T1CON|0x040;
	while(1) {
	  k=EVAIFRA&0x0200;
	  if(k==0x0200) break;
	  }
	}
 }
}
 void        interrupt nothing()
{
 return;
}

⌨️ 快捷键说明

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