CLS Def %CRC8POLY $18' 0X18 = X^8+X^5+X^4+X^0 Var CRC8_Sp% = 0' CRC8 Speicher proc CRC8_berechnen Parameters crc_data%' Übergabe Daten Var bit_counter% = 8' Schleifendurchlauf Var feedback_bit% = 0' Bit Rückgabe while bit_counter% > 0' 8x Durchläufe feedback_bit% = Xor(CRC8_Sp%,crc_data%) & $01' XOR auf 1 überprüfen if feedback_bit% = $01' wenn 1, dann... CRC8_Sp% = Xor(CRC8_Sp%,%CRC8POLY)' XOR mit Poly EndIf CRC8_Sp% = (CRC8_Sp% >> 1) & $7F' Shift rechts & 247 if feedback_bit% = $01' wenn 1, dann... CRC8_Sp% = CRC8_Sp% | $80' ODER 128 EndIf crc_data% = crc_data% >> 1' Daten Shift rechts Dec bit_counter%' Schleifendurchlauf -1 EndWhile' Ende Endlosschleife endproc ' Test Aufruf CRC8_Sp% = 0' Reset CRC8 Speicher WhileLoop 0,255' Chr$(0) bis Chr$(255) durchlaufen CRC8_berechnen(&Loop)' CRC berechnen Print "Daten="+Str$(&Loop)+" CRC8="+Str$(CRC8_Sp%), CRC8_berechnen( val( "%"+right$("00000000"+bin$(&Loop),8)+right$("00000000"+bin$(CRC8_Sp%),8) ) ) Print tab(40);Str$(CRC8_Sp%) EndWhile waitinput
Session-Cookies