#include "main.h"
const uint wCRCTalbeAbs[]={ 0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800,0xE401,
0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400};
uint CRC16_2(uchar *data, uint size)
{
uint wCRC = 0xFFFF;
uint i,j;
uchar chChar;
for (i = 0; i < size; i++)
{
chChar = *data++;
wCRC = wCRCTalbeAbs[(chChar ^ wCRC) & 15] ^ (wCRC >> 4);
wCRC = wCRCTalbeAbs[((chChar >> 4) ^ wCRC) & 15] ^ (wCRC >> 4);
}
/*
for (j = 0; j < size; j++)
{
wCRC=wCRC ^*data++;
for ( i=0; i<8; i++)
{
if((wCRC & 0x0001) >0)
{
wCRC >>=1;
wCRC ^=0xa001;
}
else
wCRC >>=1;
}
}
*/
return wCRC;
}