这段时间在看BCH编译码,在网上找到一个适合在单片机的编码程序,可是不怎么能看懂,麻烦各位看看,请教请教 程序如下:
/*单片机用BCH编码子程序*/
void EnCoding(void)/*BCH(15,5)编码*/ { char data[5]; char EnCodSeq[15]; char i,aaa; char a[10]={0,0,0,0,0,0,0,0,0,0}; char u[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; for(i=0;i<5;i++) { u[10+i]=data; } for(i=0;i <15;i++) { aaa=a[9]; a[9]=a[8]+aaa; if(a[9]==2) a[9]=0; a[8]=a[7]+aaa; if(a[8]==2) a[8]=0; a[7]=a[6]; a[6]=a[5]+aaa; if(a[6]==2) a[6]=0; a[5]=a[4]+aaa; if(a[5]==2) a[5]=0; a[4]=a[3]; a[3]=a[2]; a[2]=a[1]+aaa; if(a[2]==2) a[2]=0; a[1]=a[0]; a[0]=u[14-i]+aaa; if(a[0]==2) a[0]=0; }
for(i=0;i<10;i++) { EnCodSeq=a[9-i]; } for(i=0;i<5;i++) { EnCodSeq[10+i]=data; } return(EnCodSeq[15]);
特别是中间那段for循环看得不大明白! 先谢过各位了! |