📄 crc.c
字号:
#include "def.h"
#include"setting.h"
//extern void SendCh(U8);
//unsigned int code crc_ta[16]=
//{ /* CRC余式表 */
/* 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,
};*/
union
{
U16 iWord;
struct
{
U8 cHigh;
U8 cLow;
}iData;
}CrcTemp;
U8 count;
BOOL RxdCrc(void);
void TxdCrc( void );
void Crc( void);
void Crc(void)//2006-9-5:crc改为直接调用全局联合,而不再用指针传递了,因为......
{
// unsigned char da;
U8 i;
// CrcTemp.iWord = 0xffff;
CrcTemp.iWord = 0;
for( i=0; i<26; i++ )
{
// da=CrcTemp.iData.cHigh >> 4; /* 暂存CRC的高四位 */
// CrcTemp.iWord <<= 4; /* CRC右移4位,相当于取CRC的低12位)*/
// CrcTemp.iWord ^= crc_ta[da^(Setting.cByte[i]/16)]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC,
// 然后加上上一次CRC的余数 */
// da = CrcTemp.iData.cHigh >>4 ; /* 暂存CRC的高4位 */
// CrcTemp.iWord <<= 4; /* CRC右移4位, 相当于CRC的低12位) */
// CrcTemp.iWord ^= crc_ta[da^(Setting.cByte[i]&0x0f)]; /* CRC的高4位和本字节的后半字节相加后查表计算CRC,
// 然后再加上上一次CRC的余数 */
CrcTemp.iWord+=Setting.cByte[i];
}
// CrcTemp.iWord ^= 0xffff;
}
BOOL RxdCrc( void)
{
//count = 22;
Crc();
if( (CrcTemp.iData.cHigh ==Setting.cByte[26])&&(CrcTemp.iData.cLow==Setting.cByte[27]) )
{
return TRUE;
}
else
{
return FALSE;
}
}
void TxdCrc(void)
{
//count = 22;
Crc();
Setting.cByte[26] = CrcTemp.iData.cHigh;
Setting.cByte[27] = CrcTemp.iData.cLow;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -