📄 probridge.pp
字号:
void AD1(unsigned int *a,unsigned int *b)
{
int convert,j;
volatile unsigned int *i;
unsigned int GetAd1[8];
unsigned int Isum=0,Vsum=0;
ADC_reset();
*ADCTRL1=0x2030;
*MAXCONV=0x07;
*CHSELSEQ1=0x7373;
*CHSELSEQ2=0x7373;
*ADCTRL2=*ADCTRL2|0x4000;
*ADCTRL2=*ADCTRL2|0x2000;
i=RESULT0;
for(;;)
{
convert=*ADCTRL2&0x0200;
if(convert==0x0200)
break;
else
continue;
}
for(j=0;j<8;)
{
GetAd1[j]=*i;
Vsum+=*i>>6;
i++;
j++;
GetAd1[j]=*i;
Isum+=*i>>6;
i++;
j++;
}
*a=Vsum;
*b=Isum;
}
void Timers_initial()
{
*T1CON=0x150A;
*T2CON=0x150A;
*GPTCONA=0x6000;
*GPTCONB=0x6000;
*EVAIMRA=*EVAIMRA|0x0181;
*EVAIMRB=*EVAIMRB|0x0003;
*EVAIFRA=*EVAIFRA&0x0181;
*EVAIFRB=*EVAIFRB&0x0003;
}
void CapacitorCharge(unsigned long delay)
{
unsigned long SysWait=20000;
*PADATDIR=*PADATDIR&0x0FF00;;
*PEDATDIR=*PEDATDIR&0x0FF00;;
*PADATDIR=*PADATDIR|0x0040;
*PEDATDIR=*PEDATDIR|0x0020;
for(;delay>1;delay--)
{
delay=delay;
}
*PADATDIR=*PADATDIR&0x0FF00;;
*PEDATDIR=*PEDATDIR&0x0FF00;;
return;
}
int doStart()
{
int i;
if(1)
i=1;
else
{
i=*PADATDIR&0x0008;
if(i==0x0008)
i=1;
else
i=0;
}
return(i);
}
int doStop()
{
int i;
if(1)
i=0;
else
{
i=*PADATDIR&0x0010;
if(i==0x0010)
i=1;
else
i=0;
}
return(i);
}
int GetCapacitorPolar()
{
int i,k;
k=*PADATDIR&0x0020;
if(k==0x0020)
i=1;
else
i=0;
return(i);
}
int ReportERR()
{
int m=0;
}
void main(void)
{
int i;
int k;
unsigned int AD0res;
int intT1CMP,intT2CMP,intT1PER,intT2PER;
int bStart,bStop;
char *sysWait;
unsigned long Capacitor_delay=80000;
unsigned int *pVvalue,*pIvalue;
unsigned long V_capacitor,I_circuit;
unsigned int Vvalue,Ivalue;
disable();
Sys_initial();
ADC_reset();
Timers_initial();
IO_initial();
enable();
pIvalue=&Ivalue;
pVvalue=&Vvalue;
start: while((bStart=doStart())!=1)
{
sysWait=" ACI not start! ";
bFirst=1;
AciFirst=1;
IO_initial();
}
stop: while((bStop=doStop()))
{
sysWait=" ACI stop ! ";
bFirst=1;
AciFirst=1;
*T1CON=*T1CON&0x0FFBF;
goto start;
}
if(bFirst)
{
CapacitorCharge(Capacitor_delay);
bFirst=0;
}
if(AciFirst)
{
*PADATDIR=*PADATDIR|0x00C0;
for(i=500;i>0;i--)
{
for(k=5000;k>0;k--)
{
;
}
}
*PADATDIR=*PADATDIR&0x0FF00;;
AD0res=AD0();
*T1PER=AD0res;
*T1CMP=AD0res-500;
*T1CNT=0x0000;
*T1CON=*T1CON|0x0040;
*T1CON=0x1546;
AciFirst=0;
AssVs=7;
VsNum=1;
}
else
{
for(;;)
{
intT1CMP=*EVAIFRA&0x0100;
if(intT1CMP==0x0100)
break;
else
continue;
}
switch(AssVs)
{
case 7 :
{
*PEDATDIR=*PEDATDIR|0x0002;
*EVAIFRA=*EVAIFRA&0x0100;
AD0res=AD0();
*T1PER=AD0res;
*T1CMP=AD0res-500;
for(;;)
{
intT1PER=*EVAIFRA&0x0080;
if(intT1PER==0x0080)
break;
else
continue;
}
WaitPolarChange();
for(;;)
{
AD1(pVvalue,pIvalue);
V_capacitor=244000-142*(unsigned long)Vvalue;
I_circuit=37*(unsigned long)Ivalue;
if((V_capacitor>=(3*I_circuit)))
{
break;
}
else
{
intT2CMP=*EVAIFRB&0x0002;
if(intT2CMP==0x0002)
break;
else
continue;
}
}
switch(VsNum)
{
case 1 :
*PADATDIR=*PADATDIR|0x0040;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PADATDIR=*PADATDIR&0x0FF00;;
VsNum=2;
AssVs=8;
break;
case 3 :
*PBDATDIR=*PBDATDIR|0x0001;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PBDATDIR=*PBDATDIR&0x0FF00;;
VsNum=4;
AssVs=8;
break;
case 5 :
*PBDATDIR=*PBDATDIR|0x0004;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PBDATDIR=*PBDATDIR&0x0FF00;;
VsNum=6;
AssVs=8;
break;
}
*T2CON=*T2CON&0x0FFBF;
*EVAIFRB=*EVAIFRB&0x0001;
*EVAIFRB=*EVAIFRB|0x0FFFF;
break;
}
case 8 :
{
*PEDATDIR=*PEDATDIR|0x0020;
*EVAIFRA=*EVAIFRA&0x0100;
AD0res=AD0();
*T1PER=AD0res;
*T1CMP=AD0res-500;
for(;;)
{
intT1PER=*EVAIFRA&0x0080;
if(intT1PER==0x0080)
break;
else
continue;
}
WaitPolarChange();
for(;;)
{
AD1(pVvalue,pIvalue);
V_capacitor=170*(unsigned long)Vvalue-296700;
I_circuit=37*(unsigned long)Ivalue;
if((V_capacitor>=(3*I_circuit)))
{
break;
}
else
{
intT2CMP=*EVAIFRB&0x0002;
if(intT2CMP==0x0002)
break;
else
continue;
}
}
switch(VsNum)
{
case 2 :
*PADATDIR=*PADATDIR|0x0080;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PADATDIR=*PADATDIR&0x0FF00;;
VsNum=3;
AssVs=7;
break;
case 4 :
*PBDATDIR=*PBDATDIR|0x0002;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PBDATDIR=*PBDATDIR&0x0FF00;;
VsNum=5;
AssVs=7;
break;
case 6 :
*PBDATDIR=*PBDATDIR|0x0008;
*EVAIFRB=*EVAIFRB|0x0002;
for(;;)
{
intT2PER=*EVAIFRB&0x0001;
if(intT2PER==0x0001)
break;
else
continue;
}
*PBDATDIR=*PBDATDIR&0x0FF00;;
VsNum=1;
AssVs=7;
break;
}
*T2CON=*T2CON&0x0FFBF;
*EVAIFRB=*EVAIFRB&0x0001;
*EVAIFRB=*EVAIFRB|0x0FFFF;
break;
}
break;
}
}
goto start;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -