1. Может эта программа не соответствует алгоритму вычисления CRC? Может стоит посчитать вручную и сверить с выводом програмки:
#include <stdio.h>
int calcrc(unsigned char* ptr, int count)
{
int crc, i, num;
crc=0;
while(--count>=0)
{
printf("count=%d ", count);
printf("crc=0x%X ", crc);
num= *(ptr);
printf("num=0x%X ", num);
crc=crc^num;
printf("crc^num=0x%X ", crc);
for(i=0;i<8;++i)
{
printf("i=%d ", i);
if(crc&1)
{
crc=crc>>1^0x8408;
}
else
{
crc=crc>>1;
}
printf("crc>>?=0x%X ", crc);
}
ptr= ptr+1;
printf("\n");
}
return(crc&0xffff);
}
int main()
{
int _Tmp__Rslt_int;
unsigned char
_Tmp__B1[]= {
0xCC, 0x39, 0x39, 0x0E, 0x02,
0x52, 0x30, 0x30, 0x30, 0x31,
0x30, 0x31, 0x30, 0x39, 0x39,
0x39, 0x39, 0x39, 0x39, 0x39,
0x39, 0x39, 0x39 };
_Tmp__Rslt_int= calcrc(_Tmp__B1, (sizeof(_Tmp__B1)) );
printf("crc= %X", _Tmp__Rslt_int);
printf("\n");
return 0;
}