본문 바로가기
컴퓨터/프로그래밍

CRC 프로그램 코드

by Begi 2021. 7. 8.
반응형

XModem

XModem에 사용되는 16비트 CRC 계산 코드는 다음과 같다.

 

int calcrc(char *ptr, int count)

{

    int crc;

    char i;

    crc = 0;

    while (--count >= 0)

    {

        crc = crc ^ (int) *ptr++ << 8;

        i = 8;

        do

        {

            if (crc & 0x8000) crc = crc << 1 ^ 0x1021;

            else crc = crc << 1;

        } while(--i);

    }

    return (crc);

}

 

 

Modbus

Modbus에 사용되는 16비트 CRC 코드는 다음과 같다.

 

unsigned short CRC16 ( char *puchMsg, unsigned short usDataLen )

{

    unsigned char uchCRCHi = 0xFF ;

    unsigned char uchCRCLo = 0xFF ;

    unsigned uIndex ;

    while (usDataLen--)

    {

        uIndex = uchCRCLo ^ *puchMsg++ ;

        uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;

        uchCRCHi = auchCRCLo[uIndex] ;

    }

    return (uchCRCHi << 8 | uchCRCLo) ;

}

 

반응형

댓글