Cara, se vc quiser acho que vc deve dar uma olhada neste codigo em BASIC
para PIC.
Com ele dá para fazer uma melhor aproximação para o Pascal.

symbol CRCPOLY  = $1021         ' CRC-CCITT
symbol CRC  = w0 ' CRC Word
symbol Lo_CRC  = b0 ' CRC Lo_Byte
symbol Hi_CRC  = b1 ' CRC Hi_Byte
' -----[ Subroutines ]------------------------------------------------
'
' Subroutine for calculating CRC value in variable byte
calc_crc:
        CRC = Byte * 256 ^ CRC
        for temp = 0 to 7
            if Bit15 = 0 then shift_only
            CRC = CRC * 2 ^ CRCPOLY
            goto nxt
shift_only: CRC = CRC * 2
nxt:    next
        return
' -----[ End ]--------------------------------------------------------

Dá uma olhada nesste site tb:
http://www.hth.com/snap/

Mas é importante voce saber também de quants bits estamos falando neste CRC,
OK.

Até mais

2009/9/2 José Luis Fernandes Rezende <ze...@yahoo.com.br>

> duBRASIL InformáticaOlá Pessoal,
>
> Estou com um problema, tenho a função abaixo escrita em C e esta é
> executada num equipamento (data Logger) por um processador da
> família do 8051.
>
> /****************************************************
> uchar CalcCksum(uchar *buf)
> {
>  uchar i, byCksum = 0;
>
>  for(i = 0; *(buf + i) != ETX; i++)
>  byCksum ^= *(buf + i);
>
>  byCksum ^= ETX;
>  return byCksum;
> }
> /****************************************************
>
> Preciso fazer este mesmo cálculo no Delphi, pois estou desenvolvendo
> um software para substituir este data logger por um PC.
>
> Nunca programei em C, não faço a menor idéia de funcionalidades que
> acredito serem básicas, como o uso dos caracteres/operadores *, ^=.
>
> Alguém sabe/pode destrinchar esse caso para mim?
>
> Desde já, obrigado pela atenção!
>
> José Luis Rezende
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a