以上就是我所有对RF的认识,其实关键技术也很简单,只是外行人中途放弃罢了,越发显得其神秘。如有不正确的地方,请指正;深圳晶慧通科技陈工,网名因果:QQ:3637323. 手机 13510479435.在公司的网站;上面还有我写的其它技术文章。大家相互交流。
有点晕,生两个小孩,在深圳如要办少儿医保,大人要做节扎手术。也只有祈求天父眷顾我们一家人.
short RandSeed;
short RandOffset;
short random0()
{
RandSeed = 57+109*RandSeed;
RandOffset = 11+RandOffset*21;
RandOffset=RandOffset*2+RandSeed;
return (31&RandOffset);
}
BYTE data_8b10b_err;
BYTE Prev_RD;
BYTE OrigalBuf[60];
BYTE EncodeBuf[120];
BYTE DecodeBuf[60];
//-------------卷积纠错码编码器-----------------------
void Convolutional_Coder(BYTE *ptr,BYTE len)
{
BYTE a=0,b=0;
BYTE i;
for(i=0;i <len;i++)
{
b = ptr[i];
b = b^a;
a = ptr[i];
ptr[len+i] =b;
}
}
//-------------卷积纠错码译码器-----------------------
void Convolutional_Decoder(BYTE *ptr,BYTE len)
{
BYTE a=0,b=0,c=0,d=0,e=0;
BYTE m=0;
while(m <len)
{
a=ptr[m];
b=ptr[m+len] ;
m++;
c=ptr[m];
d=ptr[m+len];
b=a^b;
b=b^e;
c=a^c ;
c=c^d ;
c=c&b ;
a=a^c ;
e=a;
ptr[m-1]=a;
}
}
BYTE Reg8;
RemovelDc()
{
BYTE i,k;
for(i = 0;i <8;i++)
{
k = 0;
if(Reg8&0x01) k++;
if(Reg8&0x20) k++;
Reg8> > =1;
if(k&0x01) Reg8|=0x80;
}
}
WORD R1R0;
WORD FecEncode(BYTE R22)
{
BYTE i,k;
WORD R3R2;
for(i = 0;i <8;i++)
{
k = 0;
R1R0 < <=1;
if(R22&0x80) R1R0|=0x01;
R22 < <=1;
if(R1R0&bit0) k++;
if(R1R0&bit3) k++;
if(R1R0&bit7) k++;
if(R1R0&0x200) k++;
R3R2 < <=1;
if(R1R0&0x1) R3R2|=0x01;
R3R2 < <=1;
if(k&0x1) R3R2|=0x01;
}
return R3R2;
}
BYTE Reg0;
BYTE Reg1;
BYTE Reg2;
BYTE Reg3;
BYTE Reg4;
BYTE Reg23;
BYTE Reg24;
BYTE p1E;
void FecDecIni()
{
Reg0 = 0;
Reg1 = 0;
Reg2 = 0;
Reg3 = 0;
Reg4 = 0;
Reg23 = 1;
Reg24 = 2;
p1E = 0;
}
BYTE FecDecode(BYTE Reg22)
{
BYTE i,r5,r6;
for(i = 0;i <8;i++)
{
Reg1 < <=1;
if(Reg0&0x80) Reg1++;
Reg0 < <=1;
if(Reg4&0x80) Reg0++;
Reg4 < <=1;
if(Reg22&0x80) Reg4++;
Reg22 < <=1;
r5 = 0;
if(Reg0&bit0) r5++;
if(Reg0&bit3) r5++;
if(Reg0&bit7) r5++;
if(Reg1&bit1) r5++;
if(Reg4&0x80) r5++;
if(r5&bit0) Reg2|=bit0 ;
else
Reg2&=(~bit0);
Reg4 < <=1;
if(Reg22&0x80) Reg4++;
Reg22 < <=1;
if( (Reg2&bit0)||(Reg2&bit2) ) p1E|=bit1;
else
p1E&=(~bit1);
if( (Reg2&bit0) || (Reg2&bit6)) ;
else
p1E&=(~bit1);
if( (Reg2&bit0) || (Reg3&bit1) ) ;
else
p1E &=(~bit1);
if( (Reg2&bit2) || (Reg2&bit6) ) ;
else
p1E &=(~bit1);
if( (Reg2&bit2) || (Reg3&bit1) ) ;
else
p1E &=(~bit1);
if( (Reg2&bit6) || (Reg3&bit1) ) ;
else
p1E &=(~bit1);
r5 = 0;
if(p1E&bit1) r5++;
if(Reg1&bit1) r5++;
r6 < <=1;
if(r5&bit0) r6++;
r5> > =1;
if(Reg3&bit0) Reg3|=bit1;
else
Reg3&=(~bit1);
if(Reg2&bit7) Reg3|=bit0;
else
Reg3&=(~bit0);
r5 = 0;
if(p1E&bit1) r5++;
if(Reg2&bit6) r5++;
if(r5&bit0) Reg2|=bit7;
else
Reg2&=(~bit7);
if(Reg2&bit5) Reg2|=bit6;
else
Reg2&=(~bit6);
if(Reg2&bit4) Reg2|=bit5;
else
Reg2&=(~bit5);
if(Reg2&bit3) Reg2|=bit4;
else
Reg2&=(~bit4);
r5 = 0;
if(p1E&bit1) r5++;
if(Reg2&bit2) r5++;
if(r5&bit0) Reg2|=bit3;
else
Reg2&=(~bit3);
if(Reg2&bit1) Reg2|=bit2;
else
Reg2&=(~bit2);
r5 = 0;
if(p1E&bit1) r5++;
if(Reg2&bit0) r5++;
if(r5&bit0) Reg2|=bit1;
else
Reg2&=(~bit1);
}
return r6;
}
BYTE bTestInput[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0xcb,0xa8,0x45,0xaa,0xaa,0xaa,0xaa,0,0,0,0};
/*
WORD wTestOutput0[130]=
{
0x33ba,0x2688,0xdc53,
0xf4b8,0x76cc,0x9389,
0x0a66,0x9335,0xe956,
0x728e,0xd7b1,0xd7d0,
0xe41e,0x8df6
};
*/
WORD wTestOutput0[130]=
{
0x33b0,0x2680,0xdc50,
0xf4b0,0x76cc,0x9389,
0x0a66,0x9335,0xe956,
0x728e,0xd7b1,0xd7d0,
0xe41e,0x8df6
};
WORD wTestOutput[130];
BYTE FecEncInBuf[1000];
main()
{
BYTE i,n,R22;
WORD temp0,temp1;
n = 0;
R1R0 = 0;
Reg8 = 0x89;
wTestOutput[n++] = FecEncode(0x5f);
for(n = 1;n <13;n++)
{
RemovelDc();
wTestOutput[n]= FecEncode(Reg8^bTestInput[n-1]);
if( (R1R0&0xff) ==0xff)
wTestOutput[n++]= FecEncode(0x7e);
}
wTestOutput[n++]= FecEncode(0xFF);
wTestOutput[n++]= FecEncode(0xFF);
wTestOutput[n++]= FecEncode(0xFF);
wTestOutput[n++]= FecEncode(0xFF);
for(temp0 = 0;temp0 <1000;temp0++) FecEncInBuf[temp0] = 0;
temp1 = 6;
for(i = 0;i <13;i++)
{
temp0 = wTestOutput[i];
for(n = 0;n <16;n++) {
if( temp0&0x8000)
FecEncInBuf[temp1]= 1;
temp0 < <=1;
temp1++; } }
temp1 = 0;
n = 0;
for(i = 0;i <50;i++)
{
R22 = 0;
for(n=0;n <8;n++)
{
R22 < <=1;
if( FecEncInBuf[temp1++]==1) R22++;
}
FecEncInBuf[i] = R22;
}
FecDecIni();
for(i = 0;i <30;i++)
{
R22 = FecEncInBuf[i];
Reg23++;
if(Reg23&bit0) {Reg4 = R22;continue;}
else
n = FecDecode(R22);
if(Reg23 <6) continue;
if( (Reg23==6) && (n ==0x5f)) {Reg8 = 0x89;continue;}
if(p1E&bit2)
{
if(n==0xff)
{
break;
}
else
{
Reg23-=2;
n = 0xff;
}
}
else
{
if(n==0xff)
{
p1E|=bit2;
continue;
}
}
p1E &=~(bit2);
RemovelDc();
n = n^Reg8;
FecEncInBuf[i/2-3] = n;
}
}