; *************************************************************************** ; copyright : (C) 2023 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** .cseg ; --------------------------------------------------------------------------- ; @routine crc8Calc @global ; calc crc8 checksum using given polynomial ; ; @return r16 crc8 checksum ; @return X points directly after last checked byte ; @param X pointer to data to calc crc8 for ; @param r18 number of bytes to calc crc8 for ; @param r19 polynomial to use ; @clobbers: R16, R17, R18, R20, X crc8Calc: ldi r16, 0xff ; start crc crc8Calc_loop1: ld r17, X+ ; running var eor r16, r17 ldi r20, 8 ; counter for loop2 crc8Calc_loop2: lsl r16 brcc crc8Calc_l1 eor r16, r19 crc8Calc_l1: dec r20 brne crc8Calc_loop2 dec r18 brne crc8Calc_loop1 ret ; @end