EasyManua.ls Logo

YASKAWA G7

YASKAWA G7
92 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
31
CRC-16 Calculation Example in C
void getMBCRC(char *, int, char *) // function prototype
void getMBCRC(char *buf, int bufLen, char *crc) { // Function name and parameter list returning a void
// *buf pointer to character array used to calculate CRC
// bufLen number of characters to calculate CRC for
// *crc pointer to the array that contains the calculated CRC
unsigned long crc_0 = 0xffff; // Declare and initialize variables
unsigned long crc_1 = 0x0000; // Declare and initialize variables
int i,j; // Declare and initialize variables
for (i=0; i<bufLen; i++) { // Loop through characters of input array
crc_0 ^= ((unsigned long)buf[i] & 0x00ff); // XOR current character with 0x00ff
for (j=0;j<8;j++) { // Loop through characters bits
crc_1 = (crc_0 >> 1) & 0x7fff; // shift result right one place and store
if (crc_0 & 0x0001) // if pre-shifted value bit 0 is set
crc_0 = (crc_1 ^ 0xa001); // XOR the shifted value with 0xa001
else // if pre-shifted value bit 0 is not set
crc_0 = crc_1; // set the pre-shifted value equal to the shifted value
} // End for loop - Loop through characters bits
} // End for loop - Loop through characters of input array
crc[0] = (unsigned char)((crc_0/256) & 0x00ff); // Hi byte
crc[1] = (unsigned char)(crc_0 & 0x00ff); // Lo byte
return; // Return to calling function
} // End of CRC calculation function

Other manuals for YASKAWA G7

Related product manuals