Thanks to everyone for comments to date. They have helped, I'm getting somewhere, but unfortunately not solved my immediate problem. Require to generate a CRC (non table driven) for a PIC. (non table driven as dont have spare ROM to store the table as what most usual methods employ.) Other end of my link is another language. (I will modify the (C) code (once I understand it) to suit.) I have numerous code examples in C but no decent idiot proof explanations. The confusion arises because of the slightly different implementations depending on what flavour of CRC you use. The idea of a CRC I understand. (easy part) Getting confused over the left (sometimes right) shifting and reflecting, complementing of the result that sometimes seems to happen to get the "correct" resulting CRC. Also the initial value of CRC whether start with 0000h or FFFFh Help! Anyone got any non-table driven known good code with explanation of the bit shifting operations? Thanks once again, Bernard Wood Hamilton New Zealand -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads