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

📄 crc.c

📁 AVR16源代码 ICC编译器
💻 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 + -