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

📄 g1.c.bak

📁 选频加功放一体化模块监控处理程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
 			buf=B[0];
 			break;
 		}
	    else if((freqin>Pbuf1.buf1)&&(freqin<Pbuf2.buf1))
	    {   
	     	B[0]=rrom(freqcszd+pn*i+freqnb-1);
		 	B[1]=rrom(freqcszd+pn*(i+1)+freqnb-1);
		 	buff=B[1]-B[0];
		 	buf2=Pbuf2.buf1-Pbuf1.buf1;
			buf1=freqin-Pbuf1.buf1;
		 	if(buff<0x80)
		 	{
				buf1=(B[1]-B[0])*buf1;	
		 	}		 	
		 	else if(buff>=0x80)
		 	{
				buf1=(B[0]-B[1])*buf1;				
		 	}
		 	buf1=buf1/buf2;
		 	//B[2]=B[0]+(((B[1]-B[0])*(freqin-P[0]))/(P[1]-P[0]));
			B[2]=B[0]+buf1;			
	     	buf=B[2];
	     	break;	 
	     }      
	}	
	return buf;
}
/**********************************************************
** 功能说明:  温度补偿函数(温补参数占1个字节,补偿电压为mV单位,增益为DB/2单位等)
** 输入参数: // buf3     类型:uchar   :buf3=1,表示温补参数占1个字节;buf3=2,表示温补参数占2个字节
	     tempnb    类型:uchar   :在温补表中是第几个参数,=1,是第1个参数;=2,第2个参数
	    // buf7     类型:uchar   :在tn中参数是第几个字节开始的参数
	 //     buff:    类型:uchar   :=0:温度补偿函数是△值,=1:温度补偿函数是实际值
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/06/09
*********************************************************/
uchar TEMP(uchar tempnb)
{
	uchar i;
	uchar buf;
	char T[2];//EEPROM?D???è?μ
	uchar buff;
	uchar buf1;
	uchar buf2;
	uchar buf3;
	buf=0;//è?1?±è????óD?á1?£??ò·μ??0
	buf3=0;

	for (i=0;i<tpnumb;i++)
	{
		dog();	
		T[0]=rrom(tempd+i);

		if(i<tpnumb-1)
		{
		T[1]=rrom(tempd+i+1);
		}
		else
		{
		T[1]=T[0];
		}
	    if (Prmter1.TEMP==T[0])
		{
			B[0]=rrom(tempcszd+tn*i+tempnb-1);
			 buf=B[0];
 		  	break;				     
	    }
if ((Prmter1.TEMP>T[0])&&(Prmter1.TEMP<T[1]))
{
	buf3=1;
}
if ((Prmter1.TEMP>T[0])&&(Prmter1.TEMP>T[1])&&(T[1]<0x80)&&(T[0]>0x80))
{
		buf3=1;
}
		if(buf3==1)
	    {
	         B[0]=rrom(tempcszd+tn*i+tempnb-1);
			 B[1]=rrom(tempcszd+tn*(i+1)+tempnb-1);
			 buff=B[1]-B[0];
			 buf1=(Prmter1.TEMP-T[0]);
			 buf2=T[1]-T[0];
			 if (buff<0x80)
			 {
			 	buf1=(B[1]-B[0])*buf1;
			 }
			 else
			 {
			 	buf1=(B[0]-B[1])*buf1;
			 }
			 buf1=buf1/buf2;
			 buf1=buf1;
			 B[2]=B[0]+buf1;
	      	 buf=B[2];     	
	         break;
	    }
	  		        	
	}

	       
return buf;
}
/**********************************************************
** 功能说明:  adc5308芯片输出处理 
** 输入参数:  addr	类型:uchar	:芯片的管道号
  	     	 buf 	类型:uchar	:输入数据  	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/5/10
***********************************************************/
//void DAC(uchar addr,uchar buf)
//{
//	union buf_union dabuf1;
//	union buf_union dabuf2;
//	int k;
//	if(buf>=249)//电压不要超过4。9V
//	{
//		buf=249;
//	}
//	//TRISC3 = 0;
//	//TRISC5 = 0;
//	SSPSTAT = 0x40;
//	SSPCON  = 0x21;
//	addr = addr & 0x07;
//	dabuf1.buf2[1] = addr;
//	dabuf1.buf2[0] = buf;
//	dabuf2.buf1 = 0x8003;
//	portb_wbuf = portb_wbuf | 0x02;
//	PORTB = portb_wbuf;
//	portb_wbuf = portb_wbuf & 0xfd;
//	PORTB=portb_wbuf;
//	SSPIF = 0;
//
//	for(k=1;k>=0;k--)
//	{
//		SSPBUF = dabuf2.buf2[k];
//		while(SSPIF == 0)
//		{
//			;
//		}
//		SSPIF = 0;
//	}
//	portb_wbuf = portb_wbuf | 0x02;
//	PORTB = portb_wbuf;
//
//	dabuf1.buf1 = dabuf1.buf1 << 4;
//
//	portb_wbuf = portb_wbuf & 0xfd;
//	PORTB=portb_wbuf;
//	SSPIF = 0;
//
//	for(k=1;k>=0;k--)
//	{
//		SSPBUF = dabuf1.buf2[k];
//		while(SSPIF == 0)
//		{
//			;
//		}
//		SSPIF = 0;
//	}
//	portb_wbuf = portb_wbuf | 0x02;
//	PORTB = portb_wbuf;
//}
/**********************************************************
** 功能说明:  adc5318芯片输出处理 
** 输入参数:  addr	类型:uchar	:芯片的管道号
  	     	 dac_H	类型:uchar	:输入数据高字节  
  	     	 dac_L	类型:uchar	:输入数据低字节 	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/9/2
***********************************************************/
void DAC(uchar addr,uchar dac_H,uchar dac_L)
{
	union buf_union dabuf1;
	union buf_union dabuf2;
	union buf_union dabuf3;
	int k;

//	dog();
	dabuf3.buf2[1]=dac_H;
	dabuf3.buf2[0]=dac_L;
//	if (dabuf3.buf1>=0x03dd)//电压不要超过4。85V
//	{
//		dac_H=0x03;
//		dac_L=0xdd;
//	}
	//TRISC3 = 0;
	//TRISC5 = 0;
	SSPSTAT = 0x40;
	SSPCON  = 0x21;

	dabuf2.buf1 = 0x8003;
	portb_wbuf = portb_wbuf | 0x02;
	PORTB = portb_wbuf;
	portb_wbuf = portb_wbuf & 0xfd;
	PORTB=portb_wbuf;
	SSPIF = 0;

	for(k=1;k>=0;k--)
	{
		SSPBUF = dabuf2.buf2[k];
		while(SSPIF == 0)
		{
			;
		}
		SSPIF = 0;
	}
	portb_wbuf = portb_wbuf | 0x02;
	PORTB = portb_wbuf;


	addr = addr & 0x07;
	dabuf1.buf2[1] = addr;
	dac_H=dac_H<<6;
	dabuf1.buf2[0] = dac_H | (dac_L>>2);
	dac_L=(dac_L<<2)&0x0c;//è??μμ?μí2??
	dabuf1.buf1= (dabuf1.buf1 << 4)|dac_L;
	
	portb_wbuf = portb_wbuf & 0xfd;
	PORTB=portb_wbuf;
	SSPIF = 0;

	for(k=1;k>=0;k--)
	{
		SSPBUF = dabuf1.buf2[k];
		while(SSPIF == 0)
		{
			;
		}
		SSPIF = 0;
	}
	portb_wbuf = portb_wbuf | 0x02;
	PORTB = portb_wbuf;
	return;
}
/**********************************************************
** 功能说明:  数据衰减设置(pe4302)
** 输入参数: buf5	类型:uchar	:衰减数据
** 输入参数: buf7	类型:uchar	:buf7=0X02为选择PORTC1脚(DSALE2),buf7=0X20为选择PORTD5脚(DSALE1)
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐         创建时间:2005/01/06
***********************************************************/
void ATT(uchar buf5,uchar buf7)
{
//	if(buf5>=0x80)//衰减<0.
//	{
//		buf5=0;
//	}
//	if(buf5>=63)//衰减不可以超过31.5DB.
//	{
//		buf5=63;
//	}

	SSPSTAT = 0x40;     //上升沿传递数据          
	SSPCON  = 0x21;
	
	if (buf7==0x02)
	{
	portc_wbuf = portc_wbuf | 0x02;
	PORTC = portc_wbuf;
	}

	else
	{
	portb_wbuf = portb_wbuf | 0x08;
	PORTB = portb_wbuf;
	}
	SSPIF = 0;
	SSPBUF = buf5;
	while(SSPIF == 0)
	{
		;
	}
	SSPIF = 0;
	if (buf7==0x02)
	{
	portc_wbuf = portc_wbuf & 0xfd;
	PORTC = portc_wbuf;
	portc_wbuf = portc_wbuf | 0x02;
	PORTC = portc_wbuf;
	
	}
	else
	{
	portb_wbuf = portb_wbuf & 0xf7;
	PORTB = portb_wbuf;
	portb_wbuf = portb_wbuf | 0x08;
	PORTB = portb_wbuf;
	
	}
}

/**********************************************************
** 功能说明:  28v检测电压处理函数
** 输入参数:  
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐         创建时间:2005/03/10
***********************************************************/
void CHECK_VTE28v()
{
    union buf_union V28BUF;
	Prmter1.V28U_L = adc_read(5);
	Prmter1.V28U_H = 0;	
	V28BUF.buf1=Prmter1.V28U_L *11;
	Prmter1.V28_L = V28BUF.buf2[0];
	Prmter1.V28_H = V28BUF.buf2[1];
    
}
/**********************************************************
** 功能说明:  温度检测
** 输入参数:  
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐         创建时间:2005/03/10
***********************************************************/
void CHECK_TEMP()
{
	uchar TEMP_adc;
	uchar buf;
	uchar buff;
	TEMP_adc=adc_read(6);
    temp_cnt++;
    tempbuf=tempbuf+TEMP_adc;
      if(temp_cnt>=TEMP_CNT)
      {
      	tempbuf=tempbuf/temp_cnt;//取平均值
        Prmter1.TEMPU_L =tempbuf & 0x00ff; 
        Prmter1.TEMPU_H= 0;
		temp_cnt = 0x00;	
		tempbuf= 0x0000;
		Prmter1.TEMP= (100*Prmter1.TEMPU_L)/51-60;
	  	buf=tempinit-Prmter1.TEMP;
		buff=-4;
   		if(tempcheck==0)
		{
			tempinit=Prmter1.TEMP;
			tempcheck=1;
			init_sign_ctl();
		}
		else if(tempcheck==1)
		{
			if((buf>4)&&(buf<0x80))
			{
				tempinit=Prmter1.TEMP;
				init_sign_ctl();
			}
   			 else if((buf<buff)&&(buf>0x80))
			{
				tempinit=Prmter1.TEMP;
				init_sign_ctl();
			}
		}
	}

	return;    
 
}
/**********************************************************
** 功能说明:  选频电路I输出功率检测
** 输入参数:  
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐         创建时间:2004/03/10
***********************************************************/
void CHECK_PWR1()
{
	Prmter1.PWR1U = adc_read(0);
//	Prmter1.PWR1 = Prmter1.PWR1U;
	Prmter1.PWR1 = Prmter1.PWR1U/5-6+Prmter1.POFFSET1;
    
}
/**********************************************************
** 功能说明:  选频电路2输出功率检测
** 输入参数:  
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐         创建时间:2004/03/10
***********************************************************/
void CHECK_PWR2()
{
	Prmter1.PWR2U = adc_read(7);
//Prmter1.PWR2 = Prmter1.PWR2U;
	Prmter1.PWR2 = Prmter1.PWR2U/5-6+Prmter1.POFFSET2;
    
}
/**********************************************************
** 功能说明: 功放管1第1级电流检测 
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/3/11
*********************************************************/
void CHECK_id1()
{
	uchar ID_adc;
	ID_adc=adc_read(2);
        id1_cnt++;
        idbuf1=idbuf1+ID_adc;
      	if(id1_cnt>=ID_CNT)
       {
      	idbuf1=idbuf1/id1_cnt;
        Prmter1.ID1U =idbuf1 & 0x00ff; 

        Prmter1.ID1 =Prmter1.ID1U>>1; 
        
        id1_cnt = 0x00;	
		idbuf1= 0x0000;
       }	
	return;
}
/**********************************************************
** 功能说明:  功放管1第2级电流检测 
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/3/11
*********************************************************/
void CHECK_id2()
{
	uchar ID_adc;
	char buf1;
	char buf2;
	ID_adc=adc_read(1);
        id2_cnt++;
        idbuf2=idbuf2+ID_adc;
      	if(id2_cnt>=ID_CNT)
       {
      	idbuf2=idbuf2/id2_cnt;
        Prmter1.ID2U =idbuf2 & 0x00ff; 
	
	id2_cnt = 0x00;	
	idbuf2= 0x0000;

	Prmter1.ID2 = Prmter1.ID2U>>1;
	}

	if ((Prmter1.ID2>5)&&(Prmter1.ID2<92))//0.1A~1.8A
	{		
     	  buf2=0;
   	} 
	 else
   	{
    	  buf2=1;	
     }    			

//	if ((Prmter1.ID1>2)&&(Prmter1.ID1<52))//0.04A~0.2A
//        {		
     	   buf1=0;
//     	} 
//		 else
//    	{
//    	    buf1=1;	
//    	 }
	if ((buf1==0)&&(buf2==0))
        {		
     	   Prmter1.ID1ST=0;
     	} 
		 else
    	{
    	    Prmter1.ID1ST=1;	
    	 }
	return;	
}
/**********************************************************
** 功能说明:  功放管2第1级电流检测 
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/3/11
*********************************************************/
void CHECK_id3()
{
	uchar ID_adc;
	ID_adc=adc_read(4);
        id3_cnt++;
        idbuf3=idbuf3+ID_adc;
      	if(id3_cnt>=ID_CNT)
        {
      	idbuf3=idbuf3/id3_cnt;
        Prmter1.ID3U=idbuf3 & 0x00ff; 
        Prmter1.ID3 = Prmter1.ID3U>>1;
		id3_cnt = 0x00;	
		idbuf3= 0x0000;
	
		}
	return;	
}
/**********************************************************
** 功能说明:  功放管II第2级电流检测 
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  无
** 引用函数: 
** 创 建 人: 陈璐          创建时间:2005/4/11
*********************************************************/
void CHECK_id4()
{
	uchar ID_adc;
	char buf3;
	char buf4;
	ID_adc=adc_read(3);
        id4_cnt++;
        idbuf4=idbuf4+ID_adc;
      	if(id4_cnt>=ID_CNT)
        {
      		idbuf4=idbuf4/id4_cnt;
      	 	Prmter1.ID4U=idbuf4 & 0x00ff; 
      		Prmter1.ID4 = Prmter1.ID4U>>1;
			id4_cnt = 0x00;	
			idbuf4= 0x0000;	
	if ((Prmter1.ID4>5)&&(Prmter1.ID4<92))//0.1A~1.8A
	{		
     	  buf4=0;
   	} 
	 else
   	{
    	  buf4=1;	
     }    			

//	if ((Prmter1.ID3>2)&&(Prmter1.ID3<52))
//        {		
     	   buf3=0;
//     	} 
//		 else
//    	{
//    	    buf3=1;	
//    	 }
	if ((buf3==0)&&(buf4==0))
        {		

⌨️ 快捷键说明

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