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

📄 adsample.c

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 C
📖 第 1 页 / 共 5 页
字号:
		{	  
			if(AD.uchCurMinCount< 5) 	   //15
			{
				AD.uchCurMinCount++;
				k=29;				 //29 
			}
			else
			{
				k=0;
				for(i=29;i>=0;i--) 		 //29
				{
					if((AD.uiMinGroup0[i]==uiCurGroupIndex)&&(s<AD.uiMinValue0[i]))
					{
						k=i;
						break;
					}				
				}			
			}	  
			if(k!=0)
			{		 		
				AD.uiMinValue0[k] = s;
				AD.uiMinGroup0[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s<=AD.uiMinValue0[i])
					{			   					
						AD.uiMinValue0[i+1] = AD.uiMinValue0[i];
						AD.uiMinGroup0[i+1] = AD.uiMinGroup0[i];
						AD.uiMinValue0[i] = s;
						AD.uiMinGroup0[i] = uiCurGroupIndex;					
					}				
		   		}	
			}						
	 	} 
  	}
		//------------------------Group Replacement-------------------
		  
	AD.uchCurMinCount=0;	   
	AD.uchCurMaxCount=0;
	if(AD.uiMaxValue0[4]>AD.uiMinValue0[4])		   //9
	{
		AD.uiCurPKPKValue[0]=((AD.uiMaxValue0[4]-AD.uiMinValue0[4])*3+AD.uiLastPKPKValue[0])>>2;
	}
	else
	{
		AD.uiCurPKPKValue[0]=0;
	}

	AD.uiLastPKPKValue[0]=AD.uiCurPKPKValue[0];	  			
				
	i=0;
	for(j=0;j<30;j++)  //30
	{
		if((AD.uiMaxGroup0[j]!=uiPassedGroupIndex)&&(AD.uiMaxGroup0[j] < uiGroupNum))
		{
			AD.uiMaxGroup0[i]=AD.uiMaxGroup0[j];
			AD.uiMaxValue0[i]=AD.uiMaxValue0[j];
			i++;						
		}					
	}
	while(i<30)	//30
	{
		AD.uiMaxValue0[i] = 1;				
		i++;				
	}
	i=0;
	for(j=0;j<30;j++) //30
	{
		if((AD.uiMinGroup0[j]!=uiPassedGroupIndex)&&(AD.uiMinGroup0[j] < uiGroupNum))
		{
			AD.uiMinGroup0[i]=AD.uiMinGroup0[j];
			AD.uiMinValue0[i]=AD.uiMinValue0[j];
			i++;						
		}					
	}
	while(i<30)   //30
	{	
		AD.uiMinValue0[i] = 4095;			
		i++;	
					
	} 					  
	FeedDog();				     	 
}		

//*************************************************/
//*                  CH1 PKPK Value               */
//*************************************************/
void CalculatePKPKValue1(unsigned int xdata  *SrcData,unsigned int uiSampleLocation,unsigned int uiCurGroupIndex,unsigned int uiPassedGroupIndex,unsigned int uiGroupNum)
{	 	  
  	char i;
  	unsigned char j,k;	     
  	unsigned int s,m; 
  	idata unsigned int xdata *PTR;

//  	PTR = SrcData + uiSampleLocation;   
  
	m = SrcData + uiSampleLocation + AD.uiGroupLength;

//  	for(m=0;m<AD.uiGroupLength;m++)
	for(PTR = SrcData + uiSampleLocation;PTR<m;PTR++)
  	{			  	   
		FeedDog();	
//		s = *(PTR + m);	 
		s = *PTR;	 
 	//-------------------------------maximum value-------------------------
   	
		if(s>=AD.uiMaxValue1[29])
		{	  
			if(AD.uchCurMaxCount<15)
			{
				AD.uchCurMaxCount++;
				k=29;
			}
			else
			{
				k=0;
				for(i=29;i>=0;i--)
				{
					if((AD.uiMaxGroup1[i]==uiCurGroupIndex)&&(s>AD.uiMaxValue1[i]))   
					{
						k=i;
						break;
					}				
				}			
			}			
			if(k!=0)
			{
				AD.uiMaxValue1[k] = s;
				AD.uiMaxGroup1[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s>=AD.uiMaxValue1[i])
					{  					
						AD.uiMaxValue1[i+1] = AD.uiMaxValue1[i];
						AD.uiMaxGroup1[i+1] = AD.uiMaxGroup1[i];
						AD.uiMaxValue1[i] = s;
						AD.uiMaxGroup1[i] = uiCurGroupIndex;
					}
					else
					{
						break;				
					}				
				}
			}			
		}
	//-------------------------------minimum value------------------------------
		if(s<=AD.uiMinValue1[29])
		{	  
			if(AD.uchCurMinCount<15)
			{
				AD.uchCurMinCount++;
				k=29;
			}
			else
			{
				k=0;
				for(i=29;i>=0;i--)
				{
					if((AD.uiMinGroup1[i]==uiCurGroupIndex)&&(s<AD.uiMinValue1[i]))
					{
						k=i;
						break;
					}				
				}			
			}	  
			if(k!=0)
			{		 		
				AD.uiMinValue1[k] = s;
				AD.uiMinGroup1[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s<=AD.uiMinValue1[i])
					{			   					
						AD.uiMinValue1[i+1] = AD.uiMinValue1[i];
						AD.uiMinGroup1[i+1] = AD.uiMinGroup1[i];
						AD.uiMinValue1[i] = s;
						AD.uiMinGroup1[i] = uiCurGroupIndex;					
					}				
		   		}	
			}						
	 	} 
  	}
//------------------------Group Replacement-------------------  
	AD.uchCurMinCount=0;	   
	AD.uchCurMaxCount=0;
		
	AD.uiCurPKPKValue[1]=((AD.uiMaxValue1[14]+AD.uiMinValue1[14])*3/2+AD.uiLastPKPKValue[1])>>2;
	AD.uiLastPKPKValue[1]=AD.uiCurPKPKValue[1];	   

					
	i=0;
	for(j=0;j<30;j++)
	{
		if((AD.uiMaxGroup1[j]!=uiPassedGroupIndex)&&(AD.uiMaxGroup1[j] < uiGroupNum))
		{
			AD.uiMaxGroup1[i]=AD.uiMaxGroup1[j];
			AD.uiMaxValue1[i]=AD.uiMaxValue1[j];
			i++;						
		}					
	}
	while(i<30)
	{
		AD.uiMaxValue1[i] = 1; 
		i++;				
	}
	i=0;
	for(j=0;j<30;j++)
	{
		if((AD.uiMinGroup1[j]!=uiPassedGroupIndex)&&(AD.uiMinGroup1[j] < uiGroupNum))
		{
			AD.uiMinGroup1[i]=AD.uiMinGroup1[j];
			AD.uiMinValue1[i]=AD.uiMinValue1[j];
			i++;						
		}					
	}
	while(i<30)
	{
		AD.uiMinValue1[i] = 4095; 
		i++;				
	} 
	FeedDog();					     	 
}	
							  
//*************************************************/
//*                  CH2 PKPK Value               */
//*************************************************/
void CalculatePKPKValue2(unsigned int xdata  *SrcData,unsigned int uiSampleLocation,unsigned int uiCurGroupIndex,unsigned int uiPassedGroupIndex,unsigned int uiGroupNum)
{	 	  
  	char i;
  	unsigned char j,k;   
  	unsigned int s,m;  
  	idata unsigned int xdata *PTR;

//  	PTR = SrcData + uiSampleLocation; 			    
  
//  	for(m=0;m<AD.uiGroupLength;m++)
	m = SrcData + uiSampleLocation + AD.uiGroupLength;
	 
	for(PTR = SrcData + uiSampleLocation;PTR < m;PTR++)
  	{			  	   
		FeedDog();    
//		s = *(PTR + m);
		s = *PTR;
 
 	//-------------------------------maximum value-------------------------
   	
		if(s>=AD.uiMaxValue2[29])  
		{	  
			if(AD.uchCurMaxCount<5)   
			{
				AD.uchCurMaxCount++;
				k=29;				
			}
			else
			{
				k=0;
				for(i=29;i>=0;i--)
				{
					if((AD.uiMaxGroup2[i]==uiCurGroupIndex)&&(s>AD.uiMaxValue2[i]))   
					{
						k=i;
						break;
					}				
				}			
			}			
			if(k!=0)
			{
				AD.uiMaxValue2[k] = s;
				AD.uiMaxGroup2[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s>=AD.uiMaxValue2[i])
					{  					
						AD.uiMaxValue2[i+1] = AD.uiMaxValue2[i];
						AD.uiMaxGroup2[i+1] = AD.uiMaxGroup2[i];
						AD.uiMaxValue2[i] = s;
						AD.uiMaxGroup2[i] = uiCurGroupIndex;
					}
					else
					{
						break;				
					}				
				}
			}			
		}
	//-------------------------------minimum value------------------------------
		if(s<=AD.uiMinValue2[29])	 
		{	  
			if(AD.uchCurMinCount<5)	
			{
				AD.uchCurMinCount++;
				k=29;			
			}
			else
			{
				k=0;
				for(i=29;i>=0;i--)	
				{
					if((AD.uiMinGroup2[i]==uiCurGroupIndex)&&(s<AD.uiMinValue2[i]))
					{
						k=i;
						break;
					}				
				}			
			}	  
			if(k!=0)
			{		 		
				AD.uiMinValue2[k] = s;
				AD.uiMinGroup2[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s<=AD.uiMinValue2[i])
					{			   					
						AD.uiMinValue2[i+1] = AD.uiMinValue2[i];
						AD.uiMinGroup2[i+1] = AD.uiMinGroup2[i];
						AD.uiMinValue2[i] = s;
						AD.uiMinGroup2[i] = uiCurGroupIndex;					
					}				
		   		}	
			}						
	 	} 
  	}
		//------------------------Group Replacement-------------------   
	AD.uchCurMinCount=0;	   
	AD.uchCurMaxCount=0;
	if(AD.uiMaxValue2[4]>AD.uiMinValue2[4])	  
	{
		AD.uiCurPKPKValue[2]=((AD.uiMaxValue2[4]-AD.uiMinValue2[4])*3+AD.uiLastPKPKValue[2])>>2; 
	}
	else
	{
		AD.uiCurPKPKValue[2]=0;
	}
	AD.uiLastPKPKValue[2]=AD.uiCurPKPKValue[2];	  		
	
	
				
	i=0;
	for(j=0;j<30;j++)		 
	{
		if((AD.uiMaxGroup2[j]!=uiPassedGroupIndex)&&(AD.uiMaxGroup2[j] < uiGroupNum))
		{
			AD.uiMaxGroup2[i]=AD.uiMaxGroup2[j];
			AD.uiMaxValue2[i]=AD.uiMaxValue2[j];
			i++;						
		}					
	}
	while(i<30)		   
	{
		AD.uiMaxValue2[i] = 1;	
		i++;				
	}
	i=0;
	for(j=0;j<30;j++)		  
	{
		if((AD.uiMinGroup2[j]!=uiPassedGroupIndex)&&(AD.uiMinGroup2[j] < uiGroupNum))
		{
			AD.uiMinGroup2[i]=AD.uiMinGroup2[j];
			AD.uiMinValue2[i]=AD.uiMinValue2[j];
			i++;						
		}					
	}
	while(i<30)				   
	{
		AD.uiMinValue2[i] = 4095;	 
		i++;				
	} 
	FeedDog();
						     	 
}

//*************************************************/
//*                  CH3 PKPK Value               */
//*************************************************/
void CalculatePKPKValue3(unsigned int xdata  *SrcData,unsigned int uiSampleLocation,unsigned int uiCurGroupIndex,unsigned int uiPassedGroupIndex,unsigned int uiGroupNum)
{	 	  
  	char i;
  	unsigned char j,k;  
  	unsigned int s,m; 
  	idata unsigned int xdata *PTR;
  
	m = SrcData + uiSampleLocation + AD.uiGroupLength;

	for(PTR = SrcData + uiSampleLocation;PTR<m;PTR++)
  	{			  	   
		FeedDog();  
		s = *PTR;	  
 	//-------------------------------maximum value-------------------------
   	
		if(s>=AD.uiMaxValue3[29])
		{	  
			if(AD.uchCurMaxCount<15)
			{
				AD.uchCurMaxCount++;
				k=29;
			}
			else
			{
				k=0;
				for(i=29;i>=14;i--)
				{
					if((AD.uiMaxGroup3[i]==uiCurGroupIndex)&&(s>AD.uiMaxValue3[i]))   
					{
						k=i;
						break;
					}				
				}			
			}			
			if(k!=0)
			{
				AD.uiMaxValue3[k] = s;
				AD.uiMaxGroup3[k] = uiCurGroupIndex;
				for(i=k-1;i>=0;i--)
				{
					if(s>=AD.uiMaxValue3[i])
					{  					
						AD.uiMaxValue3[i+1] = AD.uiMaxValue3[i];
						AD.uiMaxGroup3[i+1] = AD.uiMaxGroup3[i];
						AD.uiMaxValue3[i] = s;
						AD.uiMaxGroup3[i] = uiCurGroupIndex;
					}
					else
					{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -