crc.c
来自「单片机通信或者远距离数据传输系统中做CRC校验的c源程序。可以嵌入到系统中直接运」· C语言 代码 · 共 48 行
C
48 行
#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 + =
减小字号Ctrl + -
显示快捷键?