📄 crc.c
字号:
#include"crc_ac_table.h"
/*===============================================================================*/
/*============= crc programme including decode and coding function ==============*/
/*====================== the building multinomial is ... =======================*/
/*=============================== x16+x12+x5+x0 =================================*/
/*===============================================================================*/
/*===============================================================================*/
/*=========== building the arithmetical compliment by finding table =============*/
//计算crc校样码
//返回CRC校样码
unsigned int crc_run(unsigned char idata *st_adr,unsigned char length)
{
unsigned int crc_code;
unsigned char temp;
crc_code=0;
do{
temp=(unsigned char)(crc_code>>8);
crc_code=crc_code<<8;
crc_code=crc_code^crc_ac_tab[temp^(*st_adr)];
st_adr++;
}while(--length!=0);
return(crc_code);
}
/*===============================================================================*/
//CRC校样
//校样正确返回0;校样错误返回1
bit crc_decode(unsigned char idata *st_adr,unsigned char length)
{
if(crc_run(st_adr,length)==0x00)
return(0);
else
return(1);
}
/*===============================================================================*/
//计算crc校样码
//同时把计算结果存放原数据的末尾处
void crc_coding(unsigned char idata *st_adr,unsigned char length)
{
unsigned int ret;
ret=crc_run(st_adr,length);
*(st_adr+length)=(unsigned char)(ret>>8);
*(st_adr+length+1)=(unsigned char)(ret);
return;
}
/*===============================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -