#include "CrcUtil.h" uint16 usMBCRC16(uint8 * pucFrame, uint8 usLen) { uint8 ucCRCHi = 0xFF; uint8 ucCRCLo = 0xFF; int iIndex; while (usLen--) { iIndex = ucCRCLo ^ *(pucFrame++); ucCRCLo = (uint8)(ucCRCHi ^ aucCRCHi[iIndex]); ucCRCHi = aucCRCLo[iIndex]; } return (uint16)(ucCRCHi << 8 | ucCRCLo); } uint16 CRC16(uint8 *ptr, uint8 len) { uint8 i; uint16 crc = 0; while (len-- != 0) { for (i = 0x80; i != 0; i /= 2) { if ((crc & 0x8000) != 0) { crc *= 2; crc ^= 0x8005; } else crc *= 2; if ((*ptr&i) != 0) crc ^= 0x8005; } ptr++; } return(crc); } /* CRC16¼ÆË㺯Êý */ uint16 MB_CRC16(uint8 Buff[], int count) { uint8 CRCHi = 0xFF; uint8 CRCLo = 0xFF; int index; int i = 0; while ((count--) > 0) { index = CRCLo ^ Buff[i++]; CRCLo = (uint8)(CRCHi ^ _CRCHi[index]); CRCHi = _CRCLo[index]; } return (uint16)(CRCHi << 8 | CRCLo); }