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

📄 main1.c

📁 仪器内部具有多变比的自升压电压互感器标准
💻 C
字号:
#include <tyclh.h>
#include <f206.h>
#include <stdio.h>
#include <math.h> 
#include <stdlib.h> 
#define NN 16 
#define ikl 2.44
#define kdadj 1.726
#define axadj 0.0377
extern int ptctyz,erci,bianbi,dengji,ercidy;
extern int xian_shi[60],ceshidian,fzfhcl,gongfang;
extern float bicha,jiaocha,baifenbiao,pinglv,bichahz[NN],jiaochahz[NN],bichaceliang[NN],jiaochaceliang[NN],baifenbiaocl[NN]; 
extern float ptfzmzff,ptfzmzdd,ptfzqzff,ptfzqzdd,sjyicidl,bfbdd,edingercifh,xiaxianercifh,gonglvyingshu,xiuzhen[32];

volatile unsigned int *reg_p;

int dianya,FDBS1B,FDBS,FDBS1,count=0,count1=0,cltemp=2,period1,KONG,temp,ti_shi=0,ti_shi2=0;
int dangwei1,biaozi,DEGREE,portT1=0xfd,portT4=0xef,portT2=0xff,portT3=0xff,period,dangwei,huandang,loopceliang=0;
int celianglyh=4;
int fzfh,fzfhcl=0,ghb=0,jxbj=2,yicidl;
float bedingercifh,bxiaxianercifh ,bgonglvyingshu;
int byicidl,bbianbi,bercidy,bdengji,bbianhao[16],bianhao[16];
unsigned int daout=0;
unsigned long int looptemp=0;
float celiangdsf1,celiangdsf2,tong,zhen,ui;
float jjjccc2,bbbbcccc2,bbffbb2,xishu,temp1,temp2;
float bbbbcccc,bbbbcccc1,bbffbb,bbffbb1,jjjccc,jjjccc1;
float bbffbbb2,bbffbbb=0.0,bbbbccccc2,bicha1,bicha2;
int a[10],b[10],c[10],xishu1,i,j;  
#define  JDQCHULI if (ptctyz!=ptctyz1){ ptctyz1=ptctyz;cldxx();}                    
#define   offset 7 


#define pii	3.1415926535898 
int 	N=64;
#define Nd 66 
#define N20 50 
#define JJJ delaytime(2);ad_ad();
#define JAKDN   wc1=pdva(dn_g,dn_b);maxwc(wc1);dnerrmax=maxerr*100.0;chuansong(); 
#define JAKZK   wc1=pdva(dn_g,dn_b);maxwc(wc1);zkerrmax=maxerr*100.0;chuansong();
float pr[Nd],pi[Nd],fr[Nd],fi[Nd];
float uu[N20],ii[N20],du[N20],uu1,ii1,du1  ; 
float rtest[N20],xtest[N20],bfb[N20] ; 
float F_Bfb;
float 	av(float *); 
float kk,kk1,ik3,uk3;
int sa[Nd],sb[Nd];  
int I_Ad7538;
unsigned int sample_prd=1;/*1 --yi ge zhouqi*/
float ukr,uki,ikr,iki,uk,ik,angle1,angle2,rr,xx,bfb1; 
float ua_xs=1.0,ub_xs=1.0;

float aa;
int I_DingDian;
float B_Fz_Bak,B_Fm_Bak,B_Dn_Bak,B_Zk_Bak; 
unsigned int B_Zk_Dn,B_Fz,B_Fm;/*B 表示标志位,Fz-分子,Fm-分母,Bak-*/                           
/*************************************************/


 
void init_dsp();
interrupt void c_int1();
interrupt void c_int2();
void amrate();
void relayman();
void datapro();
void cldxx(); 
void vload(int dianyapp);


int iii,jj,ptctyz1=1;
extern int	tt; 
int	nTbSysTime; 
extern struct StructKeyNode KeyNode  ;  //must use
extern float sumtest1,sumtest2,sumtest4; 
extern int pout1wei,pout2wei;
extern Boolean bRefurbish,bNewData;            //must use

int i;
void InitSystem();
void delaytime(int cishu)
{                       
int ii,zgg;
	for (ii=0;ii<cishu;ii++)
	{
	    for(zgg=0;zgg<0x7ff0;zgg++)
		{	
			asm("	rpt #250");
			asm("	nop") ;
		} 
	}
}

void Init_Dsp()
{	asm("	setc    INTM");
	asm("	clrc    CNF");
	reg_prd=77;		/*2499=1msTIMER */
	reg_tcr=0x0c20;	    /*1100 0010 0111*/
	
	reg_p=(unsigned int *)reg_ifr;
	*reg_p=0xffff;	
	reg_p=(unsigned int *)reg_imr;
	*reg_p=0x0000;		
    asm("	clrc    INTM"); 
} 


void delaytime2(int cishu)
{                       
int ii,zgg;
	for (ii=0;ii<cishu;ii++)
	{
	    for(zgg=0;zgg<0x1500;zgg++)
		{	
			asm("	rpt #250");
			asm("	nop") ;
		} 
	}
}


void xiii(void)
{
				if(xian_shi[33]>110) 	xian_shi[33]=110;
				if (xian_shi[33]<-110) 	xian_shi[33]=-110;
				if(xian_shi[35]>110) 	xian_shi[35]=110;
				if (xian_shi[35]<-110) 	xian_shi[35]=-110;
				if(xian_shi[37]>110) 	xian_shi[37]=110;
				if (xian_shi[37]<-110) 	xian_shi[37]=-110;
				if(xian_shi[39]>110) 	xian_shi[39]=110;
				if (xian_shi[39]<-110)	xian_shi[39]=-110;
				if(xian_shi[41]>110) 	xian_shi[41]=110;
				if (xian_shi[41]<-110) 	xian_shi[41]=-110;
				if(xian_shi[47]>110) 	xian_shi[47]=110;
				if (xian_shi[47]<-110) 	xian_shi[47]=-110;
				if(xian_shi[49]>110) 	xian_shi[49]=110;
				if (xian_shi[49]<-110) 	xian_shi[49]=-110;
				if(xian_shi[51]>110) 	xian_shi[51]=110;
				if (xian_shi[51]<-110) 	xian_shi[51]=-110;
}

void kkfft(void)
  {  
	int k,lp,il,f;
	int it,m,is,i,j,nv,l0;
	float p,q,s,vr,vi,poddr,poddi;
	f=N;
	for(k=1;(f=f/2)!=1;k++){;}
	for (it=0; it<=N-1; it++)
	  { m=it; is=0;
		for (i=0; i<=k-1; i++)
		  { j=m/2; is=2*is+(m-2*j); m=j;}
		fr[it]=pr[is]; fi[it]=pi[is];
	  }
	pr[0]=1.0; pi[0]=0.0;
	p=2.0*pii/(1.0*N); 
	/*pr[1]=0.99879545;pi[1]=-0.04906767;*/
	pr[1]=cos(p); pi[1]=-sin(p); 
/*	pr[1]=0.999699;pi[1]=-0.024512;*/
	for (i=2; i<=N-1; i++)
	  { p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];
		s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
		pr[i]=p-q; pi[i]=s-p-q;
	  }
	for (it=0; it<=N-2; it=it+2)
	  { vr=fr[it]; vi=fi[it];
		fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];
		fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];
	  }
	m=N/2; nv=2;
	for (l0=k-2; l0>=0; l0--)
	  { m=m/2; nv=2*nv;
		for (it=0; it<=(m-1)*nv; it=it+nv)
		  for (j=0; j<=(nv/2)-1; j++)
			{ p=pr[m*j]*fr[it+j+nv/2];
			  q=pi[m*j]*fi[it+j+nv/2];
			  s=pr[m*j]+pi[m*j];
			  s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
			  poddr=p-q; poddi=s-p-q;
			  fr[it+j+nv/2]=fr[it+j]-poddr;
			  fi[it+j+nv/2]=fi[it+j]-poddi;
			  fr[it+j]=fr[it+j]+poddr;
			  fi[it+j]=fi[it+j]+poddi;
			}
	  } 
 	i=sample_prd; 
 	ukr=(fr[i]+fr[N-i])/2.000;
 	uki=(fi[i]-fi[N-i])/2.000;
 	ikr=(fi[i]+fi[N-i])/2.000;
 	iki=(fr[N-i]-fr[i])/2.000;
	uk=sqrt(ukr*ukr+uki*uki)/(float)N*1.41421356237;
 	ik=sqrt(ikr*ikr+iki*iki)/(float)N*1.41421356237; 
 	
 	uk=uk/ua_xs;
 	ik=ik/ub_xs;    
 	
 	/*i=3;
 		ukr=(fr[i]+fr[N-i])/2.000;
 	uki=(fi[i]-fi[N-i])/2.000;
 	ikr=(fi[i]+fi[N-i])/2.000;
 	iki=(fr[N-i]-fr[i])/2.000;
	uk3=sqrt(ukr*ukr+uki*uki)/(float)N*1.41421356237;
 	ik3=sqrt(ikr*ikr+iki*iki)/(float)N*1.41421356237; 
 	*/
	angle1=180.00/pii*atan(fabs(ukr/uki));
	if((ukr>0.00)&&(uki>0.00))angle1=180.00-angle1;
	else
		if((ukr<0.00)&&(uki>0.00))angle1=180.00+angle1;
		else 
			if((ukr<0.00)&&(uki<0.00))angle1=360.00-angle1;  
	angle2=180.00/pii*atan(fabs(ikr/iki));
	if((ikr>0.00)&&(iki>0.00))angle2=180.00-angle2;
	else
		if((ikr<0.00)&&(iki>0.00))angle2=180.00+angle2;
		else 
			if((ikr<0.00)&&(iki<0.00))angle2=360.00-angle2;  
	angle1=angle1-angle2;
	if(angle1<0.0)	angle1=angle1+360.00;	  
    return; 
} 

float av(float *ff)
{
	float ss;
	int i;
	ss=0;
	for(i=0;i<N;i++)
	{
		ss+=(*ff)*(*ff);
		ff++;
	}
	return(sqrt(ss/N));
} 

void	sample(int ch_no)	/*1-cha,5-chb*/
{   
	int i;
	max125=1;         					    	
/*	for(i=0;i<Nd;i++)
	{
		  
		sa[i]=1;   
		sb[i]=1;
	}  */
again:	for(i=0;i<Nd;i++)
	{
		while(((reg_iosr)&0x8)==0x8){;}   
		sa[i]=max125;   
		sb[i]=max125;
	}  

	for(i=0;i<Nd;i++)
	{
		sa[i]=(sa[i]&(0x3fff))<<2;
		sb[i]=(sb[i]&(0x3fff))<<2;
	}  
	for(i=0;i<N;i++)
	{
		pr[i]=sa[i+2]*5.0/32768.0; 
		pi[i]=sb[i+2]*5.0/32768,0;

	}
    kk=av(pr);
	kk1=av(pi); 
	huandang=0;
	amrate();
	if (huandang==1)
	{
		for (i=0;i<10000;i++){;}
		for (i=0;i<10000;i++){;}
		for (i=0;i<10000;i++){;}
	}
	if (huandang==1) goto again;
} 



void ADcaiyang(int cishu)
{       int i=0;
		for (i=0;i<cishu;i++)
		{
			asm("	setc    INTM"); 
      		sample(1);  
      		kkfft();
      		if(angle1>180.0)angle1=angle1-360.0; 
      		datapro();
			rtest[i]=((uk*xishu1)/(ik*xishu)*kdadj)*cos(angle1/57.29);
    		xtest[i]=((uk*xishu1)/(ik*xishu)*kdadj)*sin(angle1/57.29);
    		bfb[i]=(ik/xishu1)*axadj*2500.0;
    	}
    	bicha=0.0;
    	jiaocha=0.0;
    	baifenbiao=0.0;
    	for (i=0;i<cishu;i++)
    	{
    	  bicha=bicha+rtest[i];
    	  jiaocha=jiaocha+xtest[i];
    	  baifenbiao=baifenbiao+bfb[i];
    	}
    	bicha=bicha/cishu;
    	jiaocha=jiaocha/cishu;
    	baifenbiao=baifenbiao/cishu;
		if (fabs(xiuzhen[26])<2.0) baifenbiao=baifenbiao*xiuzhen[26];
		if (KeyNode.nPageNo==9)
		{
       		bicha=-bicha;
            jiaocha=-jiaocha;
           switch (gongfang)
           {
                 case 1: 
                 {
                   		bicha=-bicha*10.0;
			            jiaocha=-jiaocha*10.0;
                        baifenbiao=baifenbiao/10.0;  
                        break;
                 }  
                 case 2: 
                 {
                   		bicha=-bicha*33.3;
			            jiaocha=-jiaocha*33.3;
                        baifenbiao=baifenbiao/33.3;  
                        break;
                 }  
                 default :
   				 {	
				 	break;
   				 }					
			}
       			if (ercidy==1)/*100v/g3*/
				{
					baifenbiao=baifenbiao*1.732;
				}
		}
		if (KeyNode.nPageNo==15)
		{
       		bicha=-bicha;
            jiaocha=-jiaocha;
			switch(bianbi)
			{
					case 0:   /*6kV/100V*/
					{
							bicha=bicha*0.6;
							jiaocha=jiaocha*0.6;
	  	    				break;
					}
					case 2:      /*35KV/100V*/
					{
						bicha=bicha*3.5;
						jiaocha=jiaocha*3.5;
   	    				break;
					}
					case 3:		/*110KV/100V*/
					{
						bicha=bicha*11.0;
						jiaocha=jiaocha*11.0;
   	    				break;
					}
					case 4:		/*220KV/100V*/
					{
						bicha=bicha*22.0;
						jiaocha=jiaocha*22.0;
   	    				break;
					}
			        default :
			   		{
   	    				break;
					}
			}
				//bicha=-bicha*5.0;          /*2*/
				//jiaocha=-jiaocha*5.0;
				bicha=bicha*5.0;        /*1 

⌨️ 快捷键说明

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