PIC Microcontroller Bit Math Method

CRC

Here's a CRC-16 implementation from my web page (http://home.netcom.com/~fastfwd/answers.html#PIC00076):

This isn't the fastest possible implementation, but it should be quick enough for most purposes. It uses the standard X.25 (and XMODEM) polynomial: x^16+x^12+x^5+1.

    CRCHI   EQU     some register
    CRCLO   EQU     another register

            CLRF    CRCHI
            CLRF    CRCLO

            ;Append 16 "0" bits to your message here.

    LOOP:   ;If there are no more bits in your message, go to
            ;"DONE".  Otherwise, left-shift the next bit of your
            ;message into the carry here.

            RLF     CRCLO
            RLF     CRCHI

            SKPC                ;X^16
            GOTO    LOOP

            MOVLW   00010000B   ;X^12
            XORWF   CRCHI       ;

            MOVLW   00100001B   ;X^5 + 1
            XORWF   CRCLO       ;

            GOTO    LOOP

    DONE:   ;The CRC is in "CRCHI" and "CRCLO".