#include <stdio.h>
unsigned char crc_high_first(unsigned char *ptr, unsigned int len)
{
unsigned char i;
unsigned char crc = 0x00;
while(len--)
{
crc ^= *ptr++;
for (i = 8; i>0; --i)
{
if (crc & 0x80)
crc = (crc << 1) ^ 0x31;
else
crc = (crc << 1);
}
}
//24 00 F5 08 07 00 AA 55
return (crc);
}
int main()
{
unsigned char crc;
unsigned char ptr[] = {0x24, 0x00, 0xf5, 0x08, 0x00, 0x00,0xAA, 0x55};
unsigned int len = sizeof(ptr)/sizeof(ptr[0]);
crc = crc_high_first(ptr, len);
printf("crc = 0x%02x \n", crc);
return 0;
}