[an error occurred while processing this directive]
|
void crc16_XModem(unsigned char data, unsigned short & crc)
{
//X**16+Х**12+Х**5+1
register unsigned char a;
a = (unsigned char)(data ^ crc);
a ^= (unsigned short)(a<<4);
crc=(unsigned short)((crc>>8)^(a<<8)^(a<<3)^(a>>4));
}
//------------------------------------------------------------------------
void crc16_ccitt(unsigned char data, unsigned short & crc)
{
//X**16+Х**12+Х**5+1
unsigned char a;
a = (unsigned char)((crc>>8 )^ data);
a ^= (unsigned char)(a>>4);
crc = (unsigned short)((crc<<8) ^ a ^ (a<<5) ^ (a<<12));
}
//------------------------------------------------------------------------
void crc10_Sample(unsigned char data, unsigned short & crc)
{
// x^10 + x^9 + x^5 + x^4 + x + 1 = 1 10 0011 0011
register unsigned short a=0x233, d = crc, i;
d ^= (unsigned short)(data<<1);
for (i=0; i<8; i++)
if ((d <<= 1) & 0x400) d ^= a;
crc = (unsigned short)(d & 0x3ff);
}
//---------------------------------------------------------------------------
void crc10_Sample1(unsigned char data, unsigned short & crc)
{
// x^10 + x^9 + x^5 + x^4 + x + 1 = 1 10 0011 0011
register unsigned short a;
a = (unsigned short)(crc>>2);
a ^= ((a>>1)^(a>>2)^(a>>3)^(a>>4));
crc = (unsigned short)(((crc<<8)^ data) & 0x3FF);
crc ^= (unsigned short)a;
crc ^= (unsigned short)(a<<1);
crc ^= (unsigned short)(a<<4);
crc ^= (unsigned short)(a<<5);
crc ^= (unsigned short)(a<<9);
crc &= 0x3FF;
}
E-mail: info@telesys.ru