Okay,
ich hab mir mal die Appnote 27 von Dallas/Maxim durchgelesen und mir
dann eine Routine gebastelt:
uchar CRC_8(uchar DATA, uchar CRC, uchar MASK) {
uchar i; //Zähler
for(i = 8; i; i--) {
if((CRC & 0x01) ^ (DATA & 0x01)) {
CRC ^= MASK;
CRC >>= 1;
CRC |= 0x80;
}
else CRC >>= 1;
DATA >>= 1;
}
return(CRC);
}
Parameter 1 ist das Datenbyte, für das der CRC berechnet werden soll,
Parameter 2 kann einen CRC-Wert eines vorangegangenen Bytes enthalten
(ansonsten 0x00) und Parameter 3 ist die Maske, mit der der CRC
berechnet wird.
Bitte nicht lachen, bin noch C-Anfänger!!!!
Verbesserungsvorschläge sind erwünscht, ansonsten würde ich diesen Code
in den Code-Bereich des Forums posten.
Gruß Ralf