⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc16.c

📁 很强的射频卡reader源代码
💻 C
字号:
#define CRC_A 1
#define CRC_B 2

unsigned short UpdateCrc(unsigned char ch, unsigned short *lpwCrc)
{
	ch = (ch^(unsigned char)((*lpwCrc) & 0x00FF));
	ch = (ch^(ch<<4));
	*lpwCrc = (*lpwCrc >> 8)^((unsigned short)ch << 8)^((unsigned short)ch<<3)^((unsigned short)ch>>4);
	return(*lpwCrc);
}
void ComputeCrc(int CRCType, char *Data, int Length,
			  unsigned char *TransmitFirst, unsigned char *TransmitSecond)
{
  unsigned char chBlock;
  unsigned short wCrc;
  switch(CRCType)
  {
	  case CRC_A:
			   wCrc =0x6363; /* ITU-V.41 */
			   break;
	  case CRC_B:
			   wCrc = 0xFFFF; /* ISO/IEC 13239 (formerly ISO/IEC 3309) */
			   break;
	  default:return;
  }
  do											
  {
	  chBlock = *Data++;
	  UpdateCrc(chBlock, &wCrc);
  } while (--Length);
  if (CRCType == CRC_B)
	 wCrc = ~wCrc; /* ISO/IEC 13239 (formerly ISO/IEC 3309) */
  *TransmitFirst = (unsigned char) (wCrc & 0xFF);
  *TransmitSecond = (unsigned char) ((wCrc >> 8) & 0xFF);
  return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -