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

📄 crc.c

📁 单片机通信或者远距离数据传输系统中做CRC校验的c源程序。可以嵌入到系统中直接运用。
💻 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 + -