rfid_crc.c

来自「找的一个用U2270B开发的射频卡项目文件」· C语言 代码 · 共 70 行

C
70
字号
// $Id: rfid_Crc.c,v 1.1 2006/09/25 22:08:15 tprescott Exp $
/*****************************************************
Project : rfid_Crc.c
Date    : 9/08/2006
Author  : Toby Prescott                   
Company : Atmel                           
Comments: AVR Studio GCC

Revisions:
	v1.0 - Started written for CodeVision 
	v2.6 - Clean for WinAVR
*****************************************************/

#include "rfid_Crc.h"

unsigned int CRC_CCITT16(unsigned int inCRC, unsigned char inChar, unsigned int inPoly)
{
	unsigned int tmpCRC, tmpChar, tmpPoly;
	unsigned char i, flag;
	               
	tmpPoly = inPoly;
	tmpCRC = inCRC;
	tmpChar = (unsigned int)(inChar)<<8;
	for(i=0; i<8; i++)
	{
		
		if(((tmpChar&0x8000)^(tmpCRC&0x8000)) == 0x8000){flag = 1;}
		else {flag = 0;}
		
		tmpCRC = tmpCRC<<1;
		if(flag == 1)
		{
			tmpCRC = tmpCRC^tmpPoly;
		}
		else
		{
		}
		tmpChar = tmpChar<<1;
	}
        return tmpCRC;
}

unsigned int CRC_CCITT16_Reverse(unsigned int inCRC, unsigned char inChar, unsigned int inPoly)
{
	unsigned int tmpCRC, tmpChar, tmpPoly;
	unsigned char i, flag;
	               
	tmpPoly = inPoly;
	tmpCRC = inCRC;
	tmpChar = (unsigned int)(inChar);
	for(i=0; i<8; i++)
	{
		
		if(((tmpChar&0x0001)^(tmpCRC&0x0001)) == 0x0001){flag = 1;}
		else {flag = 0;}
		
		tmpCRC = tmpCRC>>1;
		if(flag == 1)
		{
			tmpCRC = tmpCRC^tmpPoly;
		}
		else
		{
		}
		tmpChar = tmpChar>>1;
	}
        return tmpCRC;
}   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?