📄 bpxz.c
字号:
if(((reg_iosr)&0x1)==0x0)
{
if(sa2<=254)
{
sa2=sa2+1;
}
else
{;}
}
asm(" BCND bbc,BIO ");
asm(" nop ");
asm(" b aac ");
asm("bbc: ");
if(sa2>=1)
{
sa2=sa2-1;
}
asm("aac: ");
asm(" nop ");
}
/*自动----输出电压,保护电压,保护电流,实验时间*/
void zdong()
{
if((syzt==0)&&(bhflag==0))
{
autof();
vauto();
}
if((bhflag!=0)&&(sa2!=0))
{
zero_sa4828();
Re_sa4828();
Init_sa4828();
}
}
/*手动----起始频率,输出电压,保护电压,保护电流,实验时间*/
void sdong()
{
if(bhflag==0)
{
if((KeyNode.nkey==13)&&(KeyNode.nPageNo==6))
{
sdtf();
cx=25336.2/(fup*fup*((double)conduter));
}
if((KeyNode.nkey==13)&&(KeyNode.nPageNo==18))
{
sdty();
}
Cont_sa4828(sa0,sa1,sa2);
dlus(10000);
}
if((bhflag!=0)&&(sa2!=0))
{
zero_sa4828();
Re_sa4828();
Init_sa4828();
}
}
void ztest()
{
double i;
sample();
i=rms2();
if(bhflag!=0x0000)
{;}
else
{
if((i<(uup-1.0))&&(syzt==0))
{
bhflag=0x0003;
}
}
iup=rms1();
uup=rms2();
voup=vo;
if(bhflag!=0x0000)
{;}
else
{
if((reg_iosr&0x0008)==0x0000)
{
bhflag=0x0003;
}
if(iup>iopp)
{
bhflag=0x0001;
}
if(uup>(double)vopp)
{
bhflag=0x0002;
}
}
if(fg<4)
{
sffg[fg]=uup;
fg=fg+1;
}
if(sffg[0]>=sffg[1]>=sffg[2]>=sffg[3])
{bhflag=0x0006;}
fup=0.004967*(double)fall;
}
void canshu()
{
if(vo>(double)vop)
{
bhflag=0x0005;
}
if(vo<5.0)
{
bhflag=0x0005;
}
if(vo>20.0)
{
bhflag=0x0005;
}
if(vop>20)
{
bhflag=0x0005;
}
if(iop<5)
{
bhflag=0x0005;
}
if(iop>15)
{
bhflag=0x0005;
}
if((30>fstart)||(fstart>300))
{
bhflag=0x0005;
}
if(timem>=60)
{
bhflag=0x0005;
}
vopp=vop;
iopp=iop;
}
void parainit() /*参数初始化*/
{
uint i;
fall=201*fstart;
autoflag=0x0055; //aa为结束,55为非
autovok =0x0055; //aa为结束,55为非
autovsav=0.0000; //自动调压电压缓存
bhflag =0x0000; //保护标志
cx =0.0;
voup =0.0;
uup =0.0;
iup =0;
syzt =0;
sa0 =0x00a0;
sa1 =0x0017;
sa2 =0x0000;
timeff =0;
timemm =0;
time =0;
autoff =0x55;
autofg =0x55;
for(i=0;i<100;i++)
{
sine[i]=0;
}
}
void zero_sa4828() //关机回零
{
while(sa2)
{
sa2=sa2-1;
Cont_sa4828(sa0,sa1,sa2);
dlus(30000);
}
}
void zero1_sa4828() //关机回零
{
while(sa2)
{
sa2=sa2-1;
Cont_sa4828(sa0,sa1,sa2);
dlus(1000);
}
}
void sinedisp(void)
{
uint i;
for(i=0;i<=99;i++)
{
sine[i]=(int)(15*pu[i%64]);
}
}
/*-------------------------------数据传输----------------------------*/
void chuansong(void)
{
int i;
reg_prd=1999;
reg_tcr=0x0c27;
asm(" clrc intm");
TbTranRdKey();
for(i=0;i<0x2fff;i++)
{
SysTb(&nTbSysTime,1000);
if(bNewKey==True) break;
}
bNewSysRdData=True;
nNewSysDataRdPreAdr=0;
nTbSysTime=500;
for(i=0;i<0x3fff;i++)
{
SysTb(&nTbSysTime,1000);
if(i>0x7ff && (bNewSysRdData==False))
break;
}
bRefurbish=True;
nTbSysTime=1000;
while (bRefurbish==True)
{
SysTb(&nTbSysTime,1500);
}
/*if (keynSerial==KeyNode.nSerial)
{
KeyNode.nkey=20;
KeyNode.nCursorPreLine=3;
}*/
keynSerial=KeyNode.nSerial;
}
/*----------------------------page information------------------------------*/
void page()
{
switch(KeyNode.nPageNo)
{
case Page2: //主菜单
{
if((bhflag!=0)&&(bhflag!=0x0003))
{
zero_sa4828();
}
Re_sa4828();
Init_sa4828();
parainit();
chuansong();
}
break;
case Page3: //参数设置
{
chuansong();
}
break;
case Page4: //试验方式选择
{
zero1_sa4828();
Re_sa4828();
Init_sa4828();
parainit();
chuansong();
canshu();
chuansong();
}
break;
case Page5: //自动测量
{
if(autoff==0x55)
{
preautof();
sample();
uup=rms2();
iup=rms1();
chuansong();
}
zdong();
}
break;
case Page6: //手动测量调频
{
sdong();
}
break;
case Page7: //结果浏览
{
Wait;
}
break;
case Page16: //波形显示
{
uup=rms2();
if(((sinenumber%10)==0)&&(syzt==0))
{
sinedisp();
}
sinenumber++;
}
break;
case Page18: //手动测量调压
{
sdong();
}
break;
default:
break;
}
//chuansong();
}
/**************************MAIN PROGRAM***************************/
main()
{
int i;
InitSystem();
Re_sa4828();
Init_sa4828();
Cont_sa4828(88,88,88);
while(1)
{
sample();
uup=rms2();
kkfftt(pu,px,64,6,fr,fi,0,1);
harmall=0.0;
for(i=0;i<12;i++)
{harmall=harmall+pu[i];}
harmonic();
chuansong();
}
chuansong();
parainit();
chuansong();
while(1)
{
timedisp();
ztest(); /*下位状态检测*/
chuansong();
page();
chuansong();
}
}
void harmonic()
{
harm1=100*pu[1]/harmall;
harm3=100*pu[3]/harmall;
harm5=100*pu[5]/harmall;
harm7=100*pu[7]/harmall;
harm[0]=harm[2]=harm[4]=harm[6]=0;
harm[1]=(int)harm1;
harm[3]=(int)(10*harm3);
harm[5]=(int)(10*harm5);
harm[7]=(int)(10*harm7);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -