void CRC16_4Bits(unsigned char buf[])
{
unsigned char xdata arr0[128],arr1[128],arr2[128],arr3[128],i;
for(i=0;i<128;i++)
{
arr3[i]=0;
arr2[i]=0;
arr1[i]=0;
arr0[i]=0;
arr3[i]|=*buf&0x80;
arr2[i]|=(*buf&0x40)<<1;
arr1[i]|=(*buf&0x20)<<2;
arr0[i]|=(*buf&0x10)<<3;
arr3[i]|=(*buf&0x08)<<3;
arr2[i]|=(*buf&0x04)<<4;
arr1[i]|=(*buf&0x02)<<5;
arr0[i]|=(*buf&0x01)<<6;
buf++;
arr3[i]|=(*buf&0x80)>>2;
arr2[i]|=(*buf&0x40)>>1;
arr1[i]|=(*buf&0x20);
arr0[i]|=(*buf&0x10)<<1;
arr3[i]|=(*buf&0x08)<<1;
arr2[i]|=(*buf&0x04)<<2;
arr1[i]|=(*buf&0x02)<<3;
arr0[i]|=(*buf&0x01)<<4;
buf++;
arr3[i]|=(*buf&0x80)>>4;
arr2[i]|=(*buf&0x40)>>3;
arr1[i]|=(*buf&0x20)>>2;
arr0[i]|=(*buf&0x10)>>1;
arr3[i]|=(*buf&0x08)>>1;
arr2[i]|=(*buf&0x04);
arr1[i]|=(*buf&0x02)<<1;
arr0[i]|=(*buf&0x01)<<2;
buf++;
arr3[i]|=(*buf&0x80)>>6;
arr2[i]|=(*buf&0x40)>>5;
arr1[i]|=(*buf&0x20)>>4;
arr0[i]|=(*buf&0x10)>>3;
arr3[i]|=(*buf&0x08)>>3;
arr2[i]|=(*buf&0x04)>>2;
arr1[i]|=(*buf&0x02)>>1;
arr0[i]|=(*buf&0x01);
buf++;
}
|