📄 ade7758p.h
字号:
for(l=0;l<18;l++)
{
value2=z;
value2=value2*value2;
if(value2>value1)
{
z_max=z;
z=(z/2)+(z_min/2);
}
else
if(value2<value1)
{
z_min=z;
z=(z/2)+(z_max/2);
}
else
break;
}
value1=z;
return value1;
}
void kw7758_use(unsigned long *point)
{unsigned long b_kw,b_div,b_div_add;
b_kw=CK_KW;
b_div=kw_div;
b_div_add=kw_div_add;
*point=(*point)*((100000*b_div_add)/(b_div*b_kw))+(((*point)*((100000*b_div_add)%(b_div*b_kw)))/(b_div*b_kw));
}
struct spi7758ftype{
unsigned int kw_gain;
unsigned char phase;
};
//add 2004-10-12
const struct spi7758ftype table_7758_f_1000[]=
{//from 40---->65 step 0 dot 5
// a--- 2a 2b 2c b--- 3f 40 41
{0xffec,0xf8},// f 40 0
{0xffed,0xf9},//f40 5
{0xffee,0xf9},//f41 0
{0xffef,0xfa},//f41 5
{0xfff0,0xfa},//f42 0
{0xfff1,0xfa},//f42 5
{0xfff2,0xfb},//f43 0
{0xfff3,0xfb},//f43 5
{0xfff4,0xfc},//f44 0
{0xfff5,0xfc},//f44 5
{0xfff6,0xfc},//f45 0
{0xfff7,0xfd},//f45 5
{0xfff8,0xfd},//f46 0
{0xfff9,0xfe},//f46 5
{0xfffa,0xfe},//f47 0
{0xfffb,0xfe},//f47 5
{0xfffc,0xff},//f 48 0
{0xfffd,0xff},//f48 5
{0xfffe,0},//f49 0
{0xffff,0},//f49 5
{0,0},//f50 0
{1,0},//f50 5
{2,0},//f51 0
{3,1},//f51 5
{4,1},//f52 0
{5,2},//f52 5
{6,2},//f53 0
{0x7,2},//f53 5
{0x8,3},//f54 0
{0x9,3},//f54 5
{10,4},//f55 0
{11,4},//f55 5
{12,4},//f56 0
{13,5},//f56 5
{14,5},//f57 0
{15,0x6},//f57 5
{16,0x6},//f58 0
{17,0x6},//f58 5
{18,0x7},//f59 0
{19,0x7},//f59 5
{20,0x8},//f60 0
{21,0x8},//f60 5
{22,0x8},//f61 0
{23,0x9},//f61 5
{24,0x9},//f62 0
{25,10},//f62 5
{26,10},//f63 0
{27,10},//f63 5
{28,11},//f64 0
{29,11},//f64 5
{30,12}//f65 0
};
//add 2004-10-12
const struct spi7758ftype table_7758_f_2200[]=
{//from 40---->65 step 0 dot 5
// a--- 2a 2b 2c b--- 3f 40 41
{0xffec,0xfc},// f 40 0
{0xffed,0xfd},//f40 5
{0xffee,0xfd},//f41 0
{0xffef,0xfd},//f41 5
{0xfff0,0xfd},//f42 0
{0xfff1,0xfd},//f42 5
{0xfff2,0xfe},//f43 0
{0xfff3,0xfe},//f43 5
{0xfff4,0xfe},//f44 0
{0xfff5,0xfe},//f44 5
{0xfff6,0xfe},//f45 0
{0xfff7,0xff},//f45 5
{0xfff8,0xff},//f46 0
{0xfff9,0xff},//f46 5
{0xfffa,0xff},//f47 0
{0xfffb,0xff},//f47 5
{0xfffc,0},//f 48 0
{0xfffd,0},//f48 5
{0xfffe,0},//f49 0
{0xffff,0},//f49 5
{0,0},//f50 0
{2,0},//f50 5
{3,0},//f51 0
{4,0},//f51 5
{2,1},//f52 0
{3,1},//f52 5
{4,1},//f53 0
{0x5,1},//f53 5
{0x6,1},//f54 0
{0x7,1},//f54 5
{0x8,1},//f55 0
{0x9,1},//f55 5
{10,1},//f56 0
{11,1},//f56 5
{12,1},//f57 0
{13,1},//f57 5
{13,1},//f58 0
{14,1},//f58 5
{12,2},//f59 0
{13,2},//f59 5
{13,2},//f60 0
{14,2},//f60 5
{14,2},//f61 0
{15,2},//f61 5
{16,2},//f62 0
{16,2},//f62 5
{17,2},//f63 0
{18,2},//f63 5
{19,2},//f64 0
{19,2},//f64 5
{20,2}//f65 0
};
const struct spi7758ftype table_7758_f_577[]=
{//from 40---->65 step 0 dot 5
// a--- 2a 2b 2c b--- 3f 40 41
// 57dot7 1dot5(6) 3 xiang 4 xian
{0,0},// f 40 0
{0,0},//f40 5
{0,0},//f41 0
{0,0},//f41 5
{0,0},//f42 0
{0,0},//f42 5
{0,0},//f43 0
{0,0},//f43 5
{0,0},//f44 0
{0,0},//f44 5
{0xfff5,0xff},//f45 0
{0xfff7,0xff},//f45 5
{0xfff9,0xff},//f46 0
{0xfffa,0xff},//f46 5
{0xfffc,0xff},//f47 0
{0xfffd,0xff},//f47 5
{0xfffb,0},//f 48 0
{0xfffd,0},//f48 5
{0xfffe,0},//f49 0
{0xffff,0},//f49 5
{0,0},//f50 0
{2,0},//f50 5
{4,0},//f51 0
{5,0},//f51 5
{6,0},//f52 0
{7,0},//f52 5
{7,1},//f53 0
{0x8,1},//f53 5
{0x7,2},//f54 0
{0x8,2},//f54 5
{0x9,2},//f55 0
{0xa,2},//f55 5
{11,2},//f56 0
{12,2},//f56 5
{13,2},//f57 0
{14,2},//f57 5
{14,2},//f58 0
{15,2},//f58 5
{14,3},//f59 0
{15,3},//f59 5
{16,3},//f60 0
{17,3},//f60 5
{17,3},//f61 0
{18,3},//f61 5
{18,3},//f62 0
{19,3},//f62 5
{20,3},//f63 0
{21,3},//f63 5
{21,3},//f64 0
{22,3},//f64 5
{0,0}//f65 0
};
unsigned char second_for_7758;
unsigned int rtable_7758_f_gain(ufas)
unsigned char ufas;
{unsigned int value;
value=0;
switch(display_enable[31])
{
case 0://l577v
value=table_7758_f_577[ufas].kw_gain;
break;
case 1://l100v
value=table_7758_f_1000[ufas].kw_gain;
break;
default: //l220v
value=table_7758_f_2200[ufas].kw_gain;
break;
}
return value;
}
unsigned char rtable_7758_f_phase(ufas)
unsigned char ufas;
{unsigned char value;
value=0;
switch(display_enable[31])
{
case 0://l577v
value=table_7758_f_577[ufas].phase;
break;
case 1://l100v
value=table_7758_f_1000[ufas].phase;
break;
default: //l220v
value=table_7758_f_2200[ufas].phase;
break;
}
return value;
}
// delay 1 ms
delay_1ms_7758()
{unsigned long l;
for(l=0;l<350;l++)
{;}
}
// add by zhanglong ---->start
// add time 2005-09-22
unsigned char great_set16kw()
{unsigned char j,k;
union lb{
unsigned long l;
unsigned char a[4];
}m;
k=0;
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_A+j];
if(m.l<kw_set7758_16h)
k=k+1;
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_B+j];
if(m.l<kw_set7758_16h)
k=k+1;
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_C+j];
if(m.l<kw_set7758_16h)
k=k+1;
if(k>1)
return 0;
if((status_5460_0&0x10)!=0)//a-
{
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_A+j];
if(m.l>=kw_set7758_16h)
return 1;
}
if((status_5460_0&0x20)!=0)//a-
{
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_B+j];
if(m.l>=kw_set7758_16h)
return 1;
}
if((status_5460_0&0x40)!=0)//a-
{
for(j=0;j<4;j++)
m.a[j]=RAM[R_KW_C+j];
if(m.l>=kw_set7758_16h)
return 1;
}
return 0;
}
// add by zhanglong ---->end
void mode7758()
{union lc1{
unsigned long l;
unsigned char c[4];
}l7758;
unsigned char m,n,s,h,zl;
unsigned long k[16],l1,l2;
unsigned int num,iabc[3];
unsigned char *fp1,*fp2;
unsigned int fas,fas1;
unsigned char ufas;
unsigned char f_changed;
//unsigned int f_use,f_use1;
h=0;
if(second_for_7758!=RSOFT_RTC_SECOND)
{
second_for_7758=RSOFT_RTC_SECOND;
//add 2005-2-22
read7758(0x16,1);
if(1==r7758ok)
{
zl=wr_data[0];
data_addr.addri=EPLOCK_7758+4*(0x16-0x13);
if(1==read(EPLOCK,4))
{
if(RAM[R_KWHMODE_F]==4)
{
if(lost_v_quadrant==lost_v_a)
wr_data[0]=wr_data[0]&0xfb;
if(lost_v_quadrant==lost_v_b)
wr_data[0]=wr_data[0]&0xf7;
if(lost_v_quadrant==lost_v_c)
wr_data[0]=wr_data[0]&0xef;
if(lost_v_quadrant==lost_v_ab)
wr_data[0]=wr_data[0]&0xf3;
if(lost_v_quadrant==lost_v_ac)
wr_data[0]=wr_data[0]&0xeb;
if(lost_v_quadrant==lost_v_bc)
wr_data[0]=wr_data[0]&0xe7;
}
else
{
if(RAM[R_KWHMODE_F]==0)
{
if((progfunction_biaotype==type_3_4)&&(1==great_set16kw()))
{
wr_data[0]=wr_data[0]|0x20;
}
}
}
if(zl!=wr_data[0])
write7758(0x16,1);
}
}
//add 2005-2-22
num=time_2s_7758;
time_2s_7758=0;
system_control_time0=system_control_time0+5;
s=0;
for(m=0;m<16;m++)
k[m]=0;
//v a b c
for(n=0;n<3;n++)
{
l7758.l=0;
read7758(0xd+n,3);
if(1==r7758ok)
{
h=h+1;//ok
for(m=0;m<3;m++)
l7758.c[m]=wr_data[2-m];
k[n]=l7758.l/CK_V;
l7758.l=(10000*(l7758.l%CK_V))/CK_V+10000*k[n];//l5349 2729
if(num>9700)
{
if((wr_data[0]<2)||(wr_data[0]>0x27))
{
if(n==0)
low_v_a=1;
else
{
if(n==1)
low_v_b=1;
else
low_v_c=1;
}
}
else
{
if(n==0)
low_v_a=0;
else
{
if(n==1)
low_v_b=0;
else
low_v_c=0;
}
}
if(l7758.l>5000000)
l7758.l=0;
if(l7758.l<200000)
l7758.l=0;
long_to_8bcd(l7758.l,&RAM[R_V_A+4*n]);
}
}
}
//i a b c
data_addr.addri=EPLOCK_K_I_A;
if(0==read(EPLOCK,6))
{
data_addr.addri=EP1_K_I_A;
read(EP1,6);
}
for(m=0;m<3;m++)
{
iabc[m]=wr_data[2*m]*256+wr_data[2*m+1];
if(iabc[m]==0)
iabc[m]=21900;
}
for(n=0;n<3;n++)
{
l7758.l=0;
read7758(0xa+n,3);
if(1==r7758ok)
{
h=h+1;
for(m=0;m<3;m++)
l7758.c[m]=wr_data[2-m];
if(current_type_big==current_type)
{
l7758.l=(1000*(l7758.l/iabc[n]))+((1000*(l7758.l%iabc[n]))/iabc[n]);
}
else
{
l7758.l=(100*(l7758.l/iabc[n]))+((100*(l7758.l%iabc[n]))/iabc[n]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -