crc_16.c

来自「AVR atmega64串口驱动」· C语言 代码 · 共 33 行

C
33
字号
#define crc_16_c
#include "main.h"
//Polynomial: x^16 + x^12 + x^5 + 1 
void crc16(unsigned char r_data[],unsigned int length) 
{ 
    unsigned char cl,ch; 
        unsigned char savehi,savelo; 
        int ii,flag; 
        crc16hi=0xFF; 
        crc16lo=0xFF; 
        cl=0x1; 
        ch=0xA0; 
        for (ii=0;ii<length-2;ii++) 
        { 
            crc16lo=(crc16lo ^ r_data[ii]); 
                for (flag=0;flag<8;flag++) 
                { 
                        savehi=crc16hi; 
                        savelo=crc16lo; 
                        crc16hi=(crc16hi>>1); 
                        crc16lo=(crc16lo>>1); 
                        if ((savehi & 0x01)==0x01) 
                                crc16lo=(crc16lo | 0x80); 
                        if        ((savelo & 0x01)==0x01) 
                        { 
                                crc16hi = (crc16hi ^ ch); 
                                crc16lo = (crc16lo ^ cl); 
                        }         
                } 
        } 
} 

⌨️ 快捷键说明

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