TITKOSITAS - uC

Nya'ri Viktor office at flexelec.hu
Fri Oct 22 09:58:22 CEST 2004



Palasik Sandor wrote:

>>Én másképp csináltam; nekem mindig egyforma hosszú a ciklus :-)
> 
> Rendben, akkor nyilván félreértettem valamit és nem is CRC-t csinálsz.

Így gondolod?
PIC-re nálam így néz ki, CCS C-ben, és mindig ugyanolyan hosszu:

"crc" globális változó, ez a seed, és ebben keletkezik utána a crc adat 
is; jelen esetben egy byte, de nyilván töb is lehet

"new_byte" az az adat, amirböl kell generálni a crc értéket; byte-okra 
tördelve, byte-onként kön be az adat



void rotate_crc(int new_byte)
{
   int crc_temp;
   int i;
   for (i=8; i; i--)
   {
     crc_temp=crc;		//crc_temp 0. bit = crc 0. bit
     crc_temp^=new_byte;		//crc_temp 0. bit XOR= new_byte 0. bit
     #asm
       rrf new_byte,F		//rotate bejovo_adat
     #endasm
     if (bit_test(crc_temp,0))	//ha a visszacsatolando bit = 1
     {
       crc^=0x55;		//a megforgatando bitek pl. 01010101
     }
     else			//ha a visszacsatolando bit = 0
     {
       crc^=0xAA;		//a megforgatando bitek pl. 10101010
     }
     #asm
       bcf	status,0	//carry = crc_temp.0
       btfsc	crc_temp,0
       bsf	status,0
       rrf	crc,F		//rotate crc
     #endasm
   }
}





More information about the Elektro mailing list