|
это вариант подсчета CRC16 полностью рабочая
//--------------------------------------------
unsigned int calc_csum(void )
{
extern const char Data[88];
unsigned int coef_in;
unsigned int csum=0;
unsigned int csum_temp;
char i;
for ( i=0; i<88; i++) /* loop for each remaining coefficient, */
{
if (i < 64)
{
coef_in=Data[i]<<8;
coef_in+=Data[i=i+1];
else
{
coef_in = Data[i]<<8;
}
csum_temp = ((csum<<1) ^ coef_in) & 0xffff;
if (csum >= 0x8000) csum = csum_temp ^ 0x0483; /* polynomial value is set to (1<<10) + (1<<7)+2 +1 */
else csum = csum_temp;
}
return (csum);
}
E-mail: info@telesys.ru