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]