Ok, ich habe mal die Maxim App-Note zum 1-Wire CRC (http://www.maxim-ic.com/app-notes/index.mvp/id/27) überflogen. Und bevor ich nun deinen Code zerpflücke, mache ich einfach mal einen Alternativvorschlag:
Code:
uint8_t doCRC8 (uint8_t data, uint8_t crc) {

    for (uint8_t i = 0; i < 8; i++) {

        uint8_t fb = (crc ^ data) & 0x01;
        crc >>= 1;
        if (fb)
            crc ^= 0x8c;
        data >>= 1;
    }

    return crc;
}


uint8_t blockCRC (uint8_t *data, uint8_t size) {

    uint8_t crc = 0;

    for (uint8_t i = 0; i < size; i++)
        crc = doCRC8(data[i],crc);

    return crc;
}