📄 buildcrc.c
字号:
/*******************************************************************
*
* DESCRIPTION: cardInfo.c - module for reading and writing EEPROM
*
* AUTHOR: O. Kessel-Deynet
*
* Lightmaze AG
*
*******************************************************************/
/** include files **/
#include "Rtos.H"
#include "Types/Basetypes.h"
#include "I2c.h"
static OS_RSEMA crcSema;
void initCRC( void )
{
OS_CREATERSEMA( &crcSema );
}
#if 0
#define CRC16_POLY_CCIT (0x8408)
/*
* -------------------------------------
* calculate CRC16 without CPU support
* -------------------------------------
*/
word
buildSuccCRC(void *pData,word len,word crc) {
int i,j;
byte *buf = (byte *) pData;
for(j=0;j<len;j++) {
for (crc ^= buf[j], i = 8; i > 0; i--) {
crc = (crc >> 1) ^ (-(crc & 1) & CRC16_POLY_CCIT);
}
}
return crc;
}
#else
/*
* ----------------------------------------------
* calculate CRC16 with CPU internal CRC unit
* ----------------------------------------------
*/
word buildSuccCRC( void* pData, word numData, word oldCrc)
{
word i, ans;
byte* bpData = (byte *) pData;
OS_Use( &crcSema );
CRCD = oldCrc;
for( i=0; i<numData; i++)
CRCIN = *bpData++;
ans = CRCD;
OS_Unuse( &crcSema );
return ans;
}
#endif
word buildCRC( void* pData, word numData )
{
return buildSuccCRC( pData, numData, INITIAL_CRC );
}
word buildSuccCRC_far( _far void* pData, word numData, word oldCrc)
{
word i, ans;
_far byte* bpData = (_far byte *) pData;
OS_Use( &crcSema );
CRCD = oldCrc;
for( i=0; i<numData; i++)
CRCIN = *bpData++;
ans = CRCD;
OS_Unuse( &crcSema );
return ans;
}
word buildCRC_far( _far void* pData, word numData )
{
return buildSuccCRC_far( pData, numData, INITIAL_CRC );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -