unsigned int crc_16(unsigned char *ptr, unsigned char len)
{
unsigned char *buf,i,j,err;
unsigned int *CRC;
buf= &ptr[len];
CRC=(unsigned int *)buf;
buf[0]=0xff;
buf[1]=0xff;
for(i=0;i <len;i++)
{
buf[0]=buf[0]^ptr[i];
for(j=0;j <8;j++)
{
err=buf[0]&(0x01);
*CRC=(*CRC)/2;
if(err) *CRC=*CRC^(0xa001);
}
}
return(*CRC);
}
void main()
{
unsigned char buf[12]={0x1,0x3,0x6,0x15,0xca,0x74,0xb3,0x70,0xfe};
unsigned int i, crc;
crc=crc_16(buf,9);
}