📄 g1.c
字号:
{
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 + -