Подсчет CRC-16 CCITT без циклов
Jun. 4th, 2012 03:25 pmНабрел на такой вот код для подсчета CRC-16 CCITT без таблиц и циклов. Только сдвиги. (отсюда http://www.embeddedrelated.com/groups/msp430/show/29689.php)
void crc_ccitt_init(void)
{
crc = 0xffff;
}
void crc_ccitt_update(unsigned char x)
{
unsigned crc_new = (unsigned char)(crc >> 8) | (crc << 8);
crc_new ^= x;
crc_new ^= (unsigned char)(crc_new & 0xff) >> 4;
crc_new ^= crc_new << 12;
crc_new ^= (crc_new & 0xff) << 5;
crc = crc_new;
}
unsigned int crc_ccitt_crc(void)
{
return crc;
}