📄 crc.c
字号:
#include <iom128v.h>
#include "Crc.h"
//============================================================
//函 数:unsigned short CRC16(unsigned char *Message, int Len)
//功 能:CRC16计算
//入口参数:Message 要进行CRC16计算字符串,Len字符串长度
//返 回 值:CRC16计算结果
//设 计 者:覃道堂
//创作时间:2004-03-30
//修改时间:
//修改目的:
//============================================================
unsigned short CRC16(unsigned char *Message, int Len)
{
int byte;
unsigned char k;
unsigned short ACC,TOPBIT;
unsigned short remainder = 0x0000;
TOPBIT = 0x8000;
for (byte = 0; byte < Len; ++byte)
{
ACC = Message[byte];
remainder ^= (ACC <<8);
for (k = 8; k > 0; --k)
{
if (remainder & TOPBIT)
{
remainder = (remainder << 1) ^0x8005;
}
else
{
remainder = (remainder << 1);
}
}
}
return (remainder^0x0000);
}
//============================================================
//函 数:unsigned char Verify_Command(unsigned char *ReceiveBuf,int Len)
//功 能:CRC校验处理
//入口参数:校验数据,校验数据长度
//返 回 值:0校验成功。否则不正确
//设 计 者:覃道堂
//创作时间:2006-03-16
//修改时间:
//修改目的:
//============================================================
unsigned char Verify_Command(unsigned char *ReceiveBuf,int Len)
{
unsigned short Crc_Tmp;
if(ReceiveBuf[4] != (Len - 2))//整包数据长度减去校验和为命令长度
return 1;
Crc_Tmp = ReceiveBuf[Len-2]*0x100 + ReceiveBuf[Len-1];
if((CRC16(ReceiveBuf, Len-2)) !=Crc_Tmp)
return 3;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -