Appendix A - Crc-16 Calculation - Honeywell UMC800 Reference Manual

Rs232 communications
Hide thumbs Also See for UMC800:
Table of Contents

Advertisement

Appendix B
CRC-16 Calculation
See following function:
extern void calculate_CRC(unsigned char *message, int length, unsigned char *CRC)
{
unsigned char CRCHi, CRCLo, TempHi, TempLo;
static const unsigned char table[512] = {
0x00, 0x00,
0xC0, 0xC1, 0xC1, 0x81,
0xC6, 0x01,
0x06,
0xC0, 0x07,
0xCC, 0x01,
0x0C, 0xC0, 0x0D, 0x80,
0x0A, 0x00,
0xCA, 0xC1, 0xCB, 0x81,
0xD8, 0x01,
0x18,
0xC0, 0x19,
0x1E, 0x00,
0xDE, 0xC1, 0xDF, 0x81,
0x14, 0x00,
0xD4, 0xC1, 0xD5, 0x81,
0xD2, 0x01,
0x12,
0xC0, 0x13,
0xF0, 0x01,
0x30,
0xC0, 0x31,
0x36, 0x00,
0xF6,
0xC1, 0xF7,
0x3C, 0x00,
0xFC, 0xC1, 0xFD, 0x81,
0xFA, 0x01,
0x3A, 0xC0, 0x3B, 0x80,
0x28, 0x00,
0xE8, 0xC1, 0xE9, 0x81,
0xEE, 0x01,
0x2E, 0xC0, 0x2F,
0xE4, 0x01,
0x24,
0xC0, 0x25,
0x22, 0x00,
0xE2, 0xC1, 0xE3, 0x81,
0xA0, 0x01,
0x60,
0xC0, 0x61,
0x66, 0x00,
0xA6, 0xC1, 0xA7, 0x81,
0x6C, 0x00,
0xAC, 0xC1, 0xAD, 0x81,
0xAA, 0x01,
0x6A, 0xC0, 0x6B, 0x80,
0x78, 0x00,
0xB8, 0xC1, 0xB9, 0x81,
0xBE, 0x01,
0x7E, 0xC0, 0x7F,
0xB4, 0x01,
0x74,
0xC0, 0x75,
0x72, 0x00,
0xB2, 0xC1, 0xB3, 0x81,
0x50, 0x00,
0x90,
0xC1, 0x91,
0x96, 0x01,
0x56,
0xC0, 0x57,
0x9C, 0x01,
0x5C, 0xC0, 0x5D, 0x80,
0x5A, 0x00,
0x9A, 0xC1, 0x9B, 0x81,
0x88, 0x01,
0x48,
0xC0, 0x49,
0x4E, 0x00,
0x8E, 0xC1, 0x8F,
0x44, 0x00,
0x84,
0xC1, 0x85,
0x82, 0x01,
0x42,
0xC0, 0x43,
};
CRCHi = 0xff;
CRCLo = 0xff;
while(length)
{
TempHi = CRCHi;
TempLo = CRCLo;
CRCHi = table[2 * (*message ^ TempLo)];
CRCLo = TempHi ^ table[(2 * (*message ^ TempLo)) + 1];
message++;
length--;
};
CRC [0] = CRCLo;
CRC [1] = CRCHi;
return;
}
136

Appendix A - CRC-16 Calculation

0x01,
0x40,
0x80,
0xC7, 0x41,
0xCD, 0x41,
0x0B, 0x40,
0x80,
0xD9, 0x41,
0x1F,
0x40,
0x15,
0x40,
0x80,
0xD3, 0x41,
0x80,
0xF1,
0x41,
0x81,
0x37,
0x40,
0x3D, 0x40,
0xFB, 0x41,
0x29,
0x40,
0x80,
0xEF, 0x41,
0x80,
0xE5, 0x41,
0x23,
0x40,
0x80,
0xA1, 0x41,
0x67,
0x40,
0x6D, 0x40,
0xAB, 0x41,
0x79,
0x40,
0x80,
0xBF, 0x41,
0x80,
0xB5, 0x41,
0x73,
0x40,
0x81,
0x51,
0x40,
0x80,
0x97,
0x41,
0x9D, 0x41,
0x5B, 0x40,
0x80,
0x89,
0x41,
0x81,
0x4F,
0x40,
0x81,
0x45,
0x40,
0x80,
0x83,
0x41,
RS232 Communications Reference Manual
0xC3, 0x01,
0x03,
0xC0, 0x02,
0x05,
0x00,
0xC5, 0xC1, 0xC4, 0x81,
0x0F,
0x00,
0xCF, 0xC1, 0xCE, 0x81,
0xC9, 0x01,
0x09,
0xC0, 0x08,
0x1B, 0x00,
0xDB, 0xC1, 0xDA, 0x81,
0xDD, 0x01,
0x1D, 0xC0, 0x1C, 0x80,
0xD7, 0x01,
0x17,
0xC0, 0x16,
0x11,
0x00,
0xD1, 0xC1, 0xD0, 0x81,
0x33,
0x00,
0xF3,
0xC1, 0xF2,
0xF5,
0x01,
0x35,
0xC0, 0x34,
0xFF, 0x01,
0x3F,
0xC0, 0x3E, 0x80,
0x39,
0x00,
0xF9,
0xC1, 0xF8,
0xEB, 0x01,
0x2B, 0xC0, 0x2A, 0x80,
0x2D, 0x00,
0xED, 0xC1, 0xEC, 0x81,
0x27,
0x00,
0xE7, 0xC1, 0xE6, 0x81,
0xE1, 0x01,
0x21,
0xC0, 0x20,
0x63,
0x00,
0xA3, 0xC1, 0xA2, 0x81,
0xA5, 0x01,
0x65,
0xC0, 0x64,
0xAF, 0x01,
0x6F,
0xC0, 0x6E, 0x80,
0x69,
0x00,
0xA9, 0xC1, 0xA8, 0x81,
0xBB, 0x01,
0x7B, 0xC0, 0x7A, 0x80,
0x7D, 0x00,
0xBD, 0xC1, 0xBC, 0x81,
0x77,
0x00,
0xB7, 0xC1, 0xB6, 0x81,
0xB1, 0x01,
0x71,
0xC0, 0x70,
0x93,
0x01,
0x53,
0xC0, 0x52,
0x55,
0x00,
0x95,
0xC1, 0x94,
0x5F,
0x00,
0x9F,
0xC1, 0x9E, 0x81,
0x99,
0x01,
0x59,
0xC0, 0x58,
0x4B, 0x00,
0x8B, 0xC1, 0x8A, 0x81,
0x8D, 0x01,
0x4D, 0xC0, 0x4C, 0x80,
0x87,
0x01,
0x47,
0xC0, 0x46,
0x41,
0x00,
0x81,
0xC1, 0x80,
0x80,
0xC2, 0x41,
0x04,
0x40,
0x0E, 0x40,
0x80,
0xC8, 0x41,
0x1A, 0x40,
0xDC, 0x41,
0x80,
0xD6, 0x41,
0x10,
0x40,
0x81,
0x32,
0x40,
0x80,
0xF4,
0x41,
0xFE, 0x41,
0x81,
0x38,
0x40,
0xEA, 0x41,
0x2C, 0x40,
0x26,
0x40,
0x80,
0xE0, 0x41,
0x62,
0x40,
0x80,
0xA4, 0x41,
0xAE, 0x41,
0x68,
0x40,
0xBA, 0x41,
0x7C, 0x40,
0x76,
0x40,
0x80,
0xB0, 0x41,
0x80,
0x92,
0x41,
0x81,
0x54,
0x40,
0x5E, 0x40,
0x80,
0x98,
0x41,
0x4A, 0x40,
0x8C, 0x41,
0x80,
0x86,
0x41,
0x81,
0x40,
0x40,
8/99

Hide quick links:

Advertisement

Table of Contents
loading

This manual is also suitable for:

Rs232

Table of Contents