?? main1.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 + -