Calculo de CRC


Depois de alguns meses de correria, tive um tempo de colocar um novo artigo.

Nesse mostro como calcular o CRC [Código de Redundância Cíclica] de um stream de dados qualquer para envio de dados, principalmente serial[RS232,RS485].

Lembrando que essa função calcula somente o CRC de um byte, para um stream, deve repeti-lo a quantidade de bytes do stream.

Não deixem de comentar e dar sugestões de artigos ou dificuldades técnicas para aumentarmos nosso acervo de soluções.

Espero que ajude e até a próxima.

[sections] [section title=”Código Fonte”] [codesyntax lang=”c”] // CRC 16 Normal
#define CRC_GEN_CRC_16 0x8005
#define CRC_GEN_CCITT 0x1021 // XMODEM

void InitCRC(unsigned int *crc)
{
*crc=0;
}

void Calcula_CRC_Normal(unsigned char ser_data,unsigned int *crc)
{
unsigned char i;
*crc^=((unsigned int)ser_data)<<8;
for (i = 0;i < 8;i++)
{
if (*crc & 0x8000)
*crc = (*crc << 1) ^ CRC_GEN_CCITT;
else
*crc <<= 1;
}
}
[/codesyntax] [/section] [/sections]


Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[Linguagem C] Calculo de CRC
Tags:                     

Deixe uma resposta

%d blogueiros gostam disto: