?? 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 + -