📄 crc.c
字号:
#include <string.h>
#include <reg51.h>
#include <crc.h>
void LShift(unsigned char buf[10],unsigned char len)
{
unsigned char newhbit,oldhbit;
char i;
oldhbit=buf[0]/0x80;
for(i=len-1;i>=0;i--)
{
newhbit=buf[i]/0x80;
buf[i]<<=1;
buf[i] ^= oldhbit;
oldhbit=newhbit;
}
}
void GenCRC(unsigned char *rdata, unsigned char *crc, unsigned char len)
{
unsigned char bitlen,hbit;
unsigned char buf[10];
memcpy(buf,rdata,len);
buf[len]=buf[len+1]=0;
len+=2;
for(bitlen=len*8;bitlen>16;bitlen--)
{
hbit=buf[0] & 0x80;
LShift(buf,len);
if(hbit)
{
buf[0]^=0x80; buf[1]^=0x05;
}
}
memcpy(crc,buf,2);
}
void AppendCRC(unsigned char *buf,unsigned char len)
{
unsigned char crc[2];
GenCRC(buf,crc,len);
memcpy(buf+len,crc,2);
buf[len+2]=0;
}
int CheckCRC(unsigned char *buf,unsigned char len)
{
unsigned char crc[2];
GenCRC(buf,crc,len);
if(crc[0]==0 && crc[1]==0)
return 1;
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -