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

📄 probridge.pp

📁 用2407做的一个小的方波逆变器程序
💻 PP
📖 第 1 页 / 共 2 页
字号:
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 + -