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

📄 crc.c

📁 矿工定位系统单端
💻 C
字号:

#include "crc.h"
#include<REG922.h>
unsigned int code crc_ta[16]={
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef};/* CRC余式表 */

unsigned int cal_crc(unsigned char  *ptr, unsigned char data  len)
{
  unsigned int data crc;
  unsigned char data da;
  EA=0;
  crc=0;
  while(len--!=0)
  {
   da=((unsigned char)(crc/256))/16; /* 暂存CRC的高四位 */
   crc<<=4; /* CRC右移4位,相当于取CRC的低12位)*/
   crc^=crc_ta[da^(*ptr/16)]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC;后加上上一次CRC的余数 */
   da=((unsigned char)(crc/256))/16; /* 暂存CRC的高4位 */
   crc<<=4; /* CRC右移4位, 相当于CRC的低12位) */
   crc^=crc_ta[da^(*ptr&0x0f)]; /* CRC的高4位和本字节的后半字节相加后查表计算CRC,
                                                              然后再加上上一次CRC的余数 */
   ptr++;
   }
   EA=1;
return(crc);
}


⌨️ 快捷键说明

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