Here ya go..!
Code:
Poly con $8408 ' CRC polynomial
I VAR BYTE
pData VAR BYTE
X VAR BYTE
CRC VAR WORD
C_Data VAR WORD
VAL VAR BYTE[3] ' Holds 3 values passed to CRC routiine
VAL[0] = $AA
VAL[1] = $05
VAL[2] = $01
Begin:
CRC = $FFFF
for X = 0 TO 2
pData = VAL[X]
gosub Calc_CRC
next X
CRC = ~CRC
hserout [IHEX CRC.LowByte,IHEX CRC.HighByte,13,10]
pause 1000
goto Begin
Calc_CRC:
C_Data = $00FF & pData
CRC = CRC ^ C_Data
for I = 0 to 7
if CRC.Bit0 = 1 then
CRC = (CRC >> 1) ^ Poly
else
CRC = CRC >> 1
endif
next I
return
I'll let you figure out how to send your original data with the final result, but there's your C-to-BASIC
conversion. Much easier than the assembly routine, but still easier in C....;o]
Bookmarks