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

📄 g1.c

📁 选频加功放一体化模块监控处理程序
💻 C
📖 第 1 页 / 共 5 页
字号:
							{
								buf=*P++;
								wrom(product_add+i,buf);		
							}
						}
						else
						{
							for(i=0;i<para_len;i++)
							{
								*P++=rrom(product_add+i);		
							}
						}	
							length=length-para_len; 
							break;																
			default: 	receive_buf[8] = *--P;
						receive_buf[7] = *--P;
						if(receive_buf[5]==0x60)//设置命令
						{
							erro = erro | 0x02;
						}
						else
						{
							erro = erro | 0x01;
						}
							
						length = 0;
						break;//特殊处理
		}
	}
			
	if(erro & 0x02)
	{
		length = 2;//设置参数失败
	}
	else if(erro & 0x01)
	{
		length = 2;//查询参数失败
	}
	else
	{
		length =receive_cnt-10;
	}
	return length;
}
/**********************************************************
** 功能说明:  参数地址查询函数
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  参数个数
** 引用函数: 
**********************************************************/
uchar Query_Address()
{
	uchar i,buf;
	uchar length;
	buf = receive_buf[7];
    receive_buf[7]=3;//总包数
    receive_buf[8]=buf;//包序号数
	switch(buf)
	{
		case 1:		for(i=0; i<68; i++)
		       		{
		       			receive_buf[i+9]= Para_Num_Conf[i];
		       			length = 70;
		       		}
		       		break;
		case 2:		for(i=0; i<68; i++)
		       		{
		       			receive_buf[i+9]= Para_Num_Conf[i+68];
		       			
		       		}
         			length = 70;
         			break;
		case 3:		for(i=0; i<Para_Num - 136; i++)
		       		{
		       			receive_buf[i+9]= Para_Num_Conf[i+136];
		       			
		       		}
					length = Para_Num - 134;
					break;
		default:	length = 1;//查询参数失败
					break;
	}
	return length;	
}
/**********************************************************
** 功能说明:  参数设置/查询函数
** 输入参数:  无	 
** 输出参数:  
** 返 回 值:  参数个数
** 引用函数: 
**********************************************************/
uchar Set_Parameter()
{
	auto union buf_union comm;
	auto union buf_union Pbuf;
	uchar length;
	uchar para_len;//参数值长度
	uchar buf;
	//uchar buf1,buf2;
	uchar *P = 0;
	length = receive_cnt-10;//命令体长度
	P = receive_buf+7;
	erro = 0;
	while(length)
	{
		comm.buf2[0] = *P++;
		comm.buf2[1] = *P++;
		para_len=*P++;//参数值长度
		length = length - 3 ;
		switch(comm.buf1)
		{
			case att1:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.ATT1 = *P++;
							wrom(att1add,Prmter1.ATT1);
						//ATT(Prmter1.ATT1,0x20);	
						//init_att1();
							init_att(1 ,1,1,FR1,Prmter1.ATT1);
						}
						else
						{
							*P++ = Prmter1.ATT1;
						}
						length--; 
						break;
			case att2:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.ATT2 = *P++;
							wrom(att2add,Prmter1.ATT2);

						//ATT(Prmter1.ATT2,0x02);
							init_att(2 ,2,2,FR3,Prmter1.ATT2);	
						}
						else
						{
							*P++ = Prmter1.ATT2;
						}
						length--; 
						break;
			case freq1:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.FREQ1_L = *P++;
							Prmter1.FREQ1_H = *P++;
							FR1=Prmter1.FREQ1_L+Prmter1.FREQ1_H*256;
							wrom(freq1add,Prmter1.FREQ1_L);		
							wrom(freq1add+1,Prmter1.FREQ1_H);
							TRISB5 = 0x00;						
							set_pll(FR1,0,0x20,0x02);//最后一个数2代表选用PORTB端口
							TRISB5 = 0x01;//LO1LE
							init_att(1 ,1,1,FR1,Prmter1.ATT1);
						}
						else
						{
							*P++ = Prmter1.FREQ1_L;
							*P++ = Prmter1.FREQ1_H;
						}
						length = length - 2;	 
						break;
			case freq3:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.FREQ3_L = *P++;
							Prmter1.FREQ3_H = *P++;
							FR3=Prmter1.FREQ3_L+Prmter1.FREQ3_H*256;
							wrom(freq3add,Prmter1.FREQ3_L);
							wrom(freq3add+1,Prmter1.FREQ3_H);
							TRISC0 = 0x00;
							set_pll(FR3,0,0x01,0x01);						
						//TRISC0 = 0x01;
					//	TRISC0 = 0x00;//LO3LE
						//init_freq3();
							TRISC0 = 0x01;//LO3LE					
							delay_unit(1000);
							init_att(2 ,2,2,FR3,Prmter1.ATT2);
						}
						else
						{
							*P++ = Prmter1.FREQ3_L;
							*P++ = Prmter1.FREQ3_H;
						}
	
						length = length - 2;
	 
						break;
			case vgs1:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.VGS1_L = *P++;
							Prmter1.VGS1_H = *P++;
							wrom(vgs1add,Prmter1.VGS1_L);
							wrom(vgs1add+1,Prmter1.VGS1_H);
							if(Prmter1.BUTTON1==1)//开栅压1
							{
						//DAC(0x05,Prmter1.VGS1_L);
						//init_vgs1();
								init_vgsandpcu(5 ,3,Prmter1.VGS1_H,Prmter1.VGS1_L);
							}	
						}
						else
						{
							*P++ = Prmter1.VGS1_L;
							*P++ = Prmter1.VGS1_H;
						}
						length=length-2;
						break;
			case vgs2:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.VGS2_L = *P++;
						
							Prmter1.VGS2_H = *P++;
					
							wrom(vgs2add,Prmter1.VGS2_L);
						
							wrom(vgs2add+1,Prmter1.VGS2_H);
						
							if(Prmter1.BUTTON1==1)//开栅压2
							{
						//DAC(0x04,Prmter1.VGS2_L);
						//init_vgs2();
								init_vgsandpcu(4 ,4,Prmter1.VGS2_H,Prmter1.VGS2_L);
							}
						}
						else
						{
							*P++ = Prmter1.VGS2_L;
							*P++ = Prmter1.VGS2_H;
						}
						//delay_unit(200);
						length=length-2;
						break;
			case vgs3:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.VGS3_L = *P++;
							Prmter1.VGS3_H = *P++;
							wrom(vgs3add,Prmter1.VGS3_L);
							wrom(vgs3add+1,Prmter1.VGS3_H);
							if(Prmter1.BUTTON2==1)//开栅压3
							{
						//DAC(0x03,Prmter1.VGS3_L);
						//init_vgs3();
								init_vgsandpcu(3 ,5,Prmter1.VGS3_H,Prmter1.VGS3_L);
						
							}
						}
						else
						{
							*P++ = Prmter1.VGS3_L;
							*P++ = Prmter1.VGS3_H;
						}
						//delay_unit(200);
						length=length-2;
						break;
			case vgs4:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.VGS4_L = *P++;
						
							Prmter1.VGS4_H = *P++;				
							wrom(vgs4add,Prmter1.VGS4_L);
							wrom(vgs4add+1,Prmter1.VGS4_H);

							if(Prmter1.BUTTON2==1)//开栅压4
							{
						//DAC(0x02,Prmter1.VGS4_L);
						//init_vgs4();
								init_vgsandpcu(2 ,6,Prmter1.VGS4_H,Prmter1.VGS4_L);
							}
						}
						else
						{
							*P++ = Prmter1.VGS4_L;
							*P++ = Prmter1.VGS4_H;
						}
						//delay_unit(200);
						length=length-2;
						break;
			case pc1:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.PC1 = *P++;
							wrom(pc1add,Prmter1.PC1);
							buf=Prmter1.PC1+Prmter1.POFFSET3;
							Pbuf.buf1=102*buf+192;
					    	Prmter1.PC1U_H=Pbuf.buf2[1];
					    	Prmter1.PC1U_L=Pbuf.buf2[0];
					    	wrom(pc1uadd,Prmter1.PC1U_L);
					    	wrom(pc1uadd+1,Prmter1.PC1U_H);
					   	    init_vgsandpcu(6 ,7,Prmter1.PC1U_H,Prmter1.PC1U_L);
						}
						else
						{
							*P++ = Prmter1.PC1;
						}
						length--;
					//	DAC(0x06,Prmter1.PC1);//选频电路1最大输出功率
						break;	
			case pc1u:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.PC1U_L = *P++;
							Prmter1.PC1U_H = *P++;
							wrom(pc1uadd,Prmter1.PC1U_L);
							wrom(pc1uadd+1,Prmter1.PC1U_H);
							init_vgsandpcu(6 ,7,Prmter1.PC1U_H,Prmter1.PC1U_L);
							Pbuf.buf2[0]=Prmter1.PC1U_L;
							Pbuf.buf2[1]=Prmter1.PC1U_H;
							Pbuf.buf1=Pbuf.buf1-132;
							if(Pbuf.buf1>=0x8000)
							{
								Prmter1.PC1=0x00;
							}
							else
							{
								Prmter1.PC1=Pbuf.buf1/20;
								Prmter1.PC1=Prmter1.PC1-Prmter1.POFFSET3;
							}
					    
							wrom(pc1add,Prmter1.PC1);
						}
						else
						{
							*P++ = Prmter1.PC1U_L;
							*P++ = Prmter1.PC1U_H;
						}
						length = length -2;
						break;							
			case pc2:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.PC2 = *P++;
						
							wrom(pc2add,Prmter1.PC2);
							buf=Prmter1.PC2+Prmter1.POFFSET4;
							Pbuf.buf1=102*buf+192;
					 	   Prmter1.PC2U_H=Pbuf.buf2[1];
					 	   Prmter1.PC2U_L=Pbuf.buf2[0];
					 	   wrom(pc2uadd,Prmter1.PC2U_L);
						    wrom(pc2uadd+1,Prmter1.PC2U_H);
					 	   init_vgsandpcu(1 ,8,Prmter1.PC2U_H,Prmter1.PC2U_L);
					//	delay_unit(1000);
						//DAC(0x01,Prmter1.PC2);//选频电路2最大输出功率
						}
						else
						{
							*P++ = Prmter1.PC2;
						}
						length--;
						break;	
			case pc2u:	if(receive_buf[5]==0xc1)//设置命令
						{
							Prmter1.PC2U_L = *P++;
							Prmter1.PC2U_H = *P++;
							wrom(pc2uadd,Prmter1.PC2U_L);
							wrom(pc2uadd+1,Prmter1.PC2U_H);

					//	DAC(0x01,Prmter1.PC2U);//???μμ??·2×?′óê?3?1|?ê
					//	DAC(0x01,Prmter1.PC2U_H,Prmter1.PC2U_L);//选频电路2最大输出功率
					//	init_pcu2();
							init_vgsandpcu(1 ,8,Prmter1.PC2U_H,Prmter1.PC2U_L);
						//delay_unit(200);
							Pbuf.buf2[0]=Prmter1.PC2U_L;
							Pbuf.buf2[1]=Prmter1.PC2U_H;
							Pbuf.buf1=Pbuf.buf1-132;
							if(Pbuf.buf1>=0x8000)
							{
								Prmter1.PC2=0x00;
							}
							else
							{
								Prmter1.PC2=Pbuf.buf1/20;
								Prmter1.PC2=Prmter1.PC2-Prmter1.POFFSET4;
							}
							wrom(pc2add,Prmter1.PC2);
						}
						else
						{
							*P++ = Prmter1.PC2U_L;
							*P++ = Prmter1.PC2U_H;
						}
						length = length -2;
						break;
			case button1:  if(receive_buf[5]==0xc1)//设置命令
						   {
								Prmter1.BUTTON1 = *P++;
								wrom(but1add,Prmter1.BUTTON1);
								if(Prmter1.BUTTON1==0)//关栅压1
								{
									DAC(0x05,0,0);
									DAC(0x04,0,0);
								}
								else 
								{
									init_vgsandpcu(5 ,3,Prmter1.VGS1_H,Prmter1.VGS1_L);
					
									init_vgsandpcu(4 ,4,Prmter1.VGS2_H,Prmter1.VGS2_L);
								}
						  }
						  else
						  {
						  	   *P++ = Prmter1.BUTTON1;
						  }
						length--;
						break;
			case button2:  if(receive_buf[5]==0xc1)//设置命令
						   {
								Prmter1.BUTTON2 = *P++;
								wrom(but2add,Prmter1.BUTTON2);
								if(Prmter1.BUTTON2==0)//关栅压2
								{
								DAC(0x03,0,0);
								DAC(0x02,0,0);
								}
								else 
								{
						//DAC(0x03,Prmter1.VGS3_L);
						//DAC(0x02,Prmter1.VGS4_L);
						//init_vgs3();//
						//init_vgs4();
									init_vgsandpcu(3 ,5,Prmter1.VGS3_H,Prmter1.VGS3_L);
						//delay_unit(200);
									init_vgsandpcu(2 ,6,Prmter1.VGS4_H,Prmter1.VGS4_L);
						//delay_unit(200);
								}
						}
						else
						{
							*P++ = Prmter1.BUTTON2;	
						}
						length--;
						break;
			case poffset1:	if(receive_buf[5]==0xc1)//设置命令
						    {
							Prmter1.POFFSET1=*P++ ;
							wrom(poff1add,Prmter1.POFFSET1);
							}
							else
							{
								*P++=Prmter1.POFFSET1 ;
							}
							length--; 
							break;
			case poffset2:	 if(receive_buf[5]==0xc1)//设置命令
						    {
								Prmter1.POFFSET2=*P++ ;
								wrom(poff2add,Prmter1.POFFSET2);	
							}
							else
							{
								*P++=Prmter1.POFFSET2 ;
							}
							length--; 
							break;	
			case poffset3:	if(receive_buf[5]==0xc1)//设置命令
						    {
							 Prmter1.POFFSET3=*P++ ;
							wrom(poff3add,Prmter1.POFFSET3);
							}
							else
							{
								*P++=Prmter1.POFFSET3 ;
							}
							length--; 
							break;
			case poffset4:	if(receive_buf[5]==0xc1)//设置命令
						    { 
							Prmter1.POFFSET4=*P++ ;
							wrom(poff4add,Prmter1.POFFSET4);	
							}
							else
							{
								*P++=Prmter1.POFFSET4 ;
							}
							length--; 
							break;	
							
					case temp:	*P++ = Prmter1.TEMP; 	
						length--; 
						break;	
			case tempu:	*P++ = Prmter1.TEMPU_L; 
						*P++ = 0;	
						length = length - 2;
						break;	
			case V_28:	*P++ = Prmter1.V28_L;
						*P++ = Prmter1.V28_H;
						length = length - 2;
						break;						
			case V_28V:	*P++ = Prmter1.V28U_L;
						*P++=  0;
						length = length - 2;
						break;
			case pwr1:	//Prmter1.PWR1BC=TEMP(11);
						//*P1++ = Prmter1.PWR1+Prmter1.PWR1BC;
						*P++ = Prmter1.PWR1;
						length --;
						break;
			case pwr1u:	*P++ = Prmter1.PWR1U;
						*P++ = 0;
						length = length - 2;
						break;
			case pwr2:	//Prmter1.PWR2BC=TEMP(12);
						//*P1++ = Prmter1.PWR2+Prmter1.PWR2BC;
						*P++ = Prmter1.PWR2;
						length--;
						break;	
			case pwr2u:	*P++ = Prmter1.PWR2U;
						*P++ = 0;
						length = length - 2;
						break;
			case id1:	*P++ = Prmter1.ID1;
						*P++ = 0;
						length = length -2;
						break;
			case id1u:	*P++ = Prmter1.ID1U;
						*P++ = 0;
						length = length -2;
						break;
			case id2:	*P++ = Prmter1.ID2;
						*P++= 0;
						length = length -2;
						break;
			case id2u:	*P++ = Prmter1.ID2U;
						*P++ = 0;
						length = length -2;
						break;
			case id3:	*P++ = Prmter1.ID3;
						*P++ = 0;
						length = length -2;
						break;
			case id3u:	*P++ = Prmter1.ID3U;
						*P++ = 0;
						length = length -2;
						break;
			case id4:	*P++ = Prmter1.ID4;
						*P++ = 0;
						length = length -2;
						break;	
			case id4u:	*P++ = Prmter1.ID4U;
						*P++ = 0;
						length = length -2;
						break;	
			case id1st:  	 *P++= Prmter1.ID1ST;		
					    	length--;   	 
						break;
			case id2st:  	 *P++ = Prmter1.ID2ST;		
					    	length--;   	 
						break;						
			case freq1_state:	*P++ = Prmter1.PLL_STATE1;		
						length--; 
						break;
			case freq3_state:	*P++ = Prmter1.PLL_STATE3;		
						length--; 
						break;																
			default: 	receive_buf[8] = *--P;
						receive_buf[7] = *--P;
						if(receive_buf[5]==0xc1)//设置命令
						{
							erro = erro | 0x02;

⌨️ 快捷键说明

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