?? crc8.c
字號:
#include <REG52.H>
#define uchar unsigned char
#define CMC 0x8c //crc8_multinomial_code
#define LENGTH 24 //LENGTH = 24
extern uchar CMDIN[LENGTH]; //Command in length=24 數據(命令) 接收 緩沖區
//extern uchar crc8(uchar *ptr, uchar len); //crc8校驗
//uchar crc_test_data[7]={0x28,0x6d,0x00,0x85,0x00,0x00,0x00}; //if:test_data OK! result=0xCF;
/**********************************************************************
** 函數名稱: crc8()
** 功能描述: 數組的CRC校驗
** 輸 入: *ptr:數組首地址
len :數組的長度
** 輸 出: crc校驗結果
** 全局變量: CMC:crc多項因子
** 調用模塊: 無
***********************************************************************/
uchar crc8(uchar *ptr, uchar len) // crc8_multinomial=x(8)+x(5)+x(4)+1; 00110001->10001100=0x8c
{
uchar i;
uchar crc=0;
while(len--!=0)
{
for(i=0x01;i!=0;i <<= 1)
{
if((crc&0x01) != 0) {crc >>= 1; crc ^= CMC;}
else crc >>= 1;
if((*ptr&i) != 0) crc ^= CMC;
}
ptr++;
}
return(crc);
}
/**********************************************************************
** 函數名稱: crc8_test()
** 功能描述: 數組的CRC校驗是否通過測試
** 輸 入: *ptr:數組首地址
len :數組的長度
** 輸 出: crc校驗通過結果 (0=通過)
** 全局變量: 無
** 調用模塊: crc8
***********************************************************************/
bit crc8_test(uchar *ptr, uchar len)
{
uchar Result_crc8;
Result_crc8=crc8(ptr,(len-1)); //Result_crc8==0,crc8 pass
if(Result_crc8==0) return 0; //0,crc8 pass
else return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -