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

📄 crc1021.c

📁 单片机程序,和上位机通讯,采集下位机的射频信号的功率,接收上位机的指令并向上位机回送采集到的下位机的信息,我花了一个月才开发出来的.绝对真实,可靠性强.
💻 C
字号:
#include "fDETDeclare.H"
#include "DETConst.H"
//#include "stdlib.h"

/* CRC余式表 */
static const unsigned int code Crc1021Table[16] = {
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef};
//按生成多项式0X1021进行CRC运算
//输入参数:	*Buff:	需进行CRC运算的数据
//				Len:	运算的数据字节个数
//输出参数:
//				*h:	CRC的高8位
//				*l:	CRC的低8位
void CRC1021(unsigned char *Buff, int Len,unsigned char *h,unsigned char *l)
{
    unsigned int crc;
    unsigned char da;
    crc=0;
    while((Len--)!=0) {
         da=((unsigned char)(crc/256))/16;      /* 暂存CRC的高四位 */
         crc<<=4;                   /* CRC右移4位,相当于取CRC的低12位)*/
         crc^=Crc1021Table[da^((*Buff)/16)];     /* CRC的高4位和本字节的前半字节相加后查表计算CRC,
        然后加上上一次CRC的余数 */
         da=((unsigned char)(crc/256))/16;      /* 暂存CRC的高4位 */
         crc<<=4;                   /* CRC右移4位, 相当于CRC的低12位) */
         crc^=Crc1021Table[da^((*Buff)&0x0f)];   /* CRC的高4位和本字节的后半字节相加后查表计算 */
         Buff++;
    }
    *h = (unsigned char)(crc>> 8);
    *l = (unsigned char)(crc);
    return;
}

⌨️ 快捷键说明

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