http://www.protonbasic.co.uk/forum/s...highlight=CRC8
CALC_CRC:
CRC = 0
For MAIN_BYTE_CNT = 0 To BYTE_COUNT - 1 ' LOOP THROUGH THE ARRAY
CRCDATA = DATAIN[MAIN_BYTE_CNT]
For POINTER_2 = 0 To 7 ' DO FOR ALL 8 BITS IN DATA BYTE
TESTBIT = CRC.0 ^ CRCDATA.0 ' XOR BIT0 OF DATA BYTE AND CRC
CRCDATA = CRCDATA ›› 1 ' POSITION DATA BYTE FOR NEXT BIT TEST
If TESTBIT = 1 Then ' IF TEST BIT NOT SET, JUSTSHIFT CRC
CRC = CRC ^ $18
EndIf ' IF SET, ACCOUNT FOR EXOR FEEDBACK
CRC = CRC ›› 1 ' SHIFT RIGHT THE CRC BYTE CRC BIT 0 TO BIT BUCKET
CRC.7 = TESTBIT ' TEST BIT ROTATES INTO CRC BIT 7
Next POINTER_2
Next MAIN_BYTE_CNT