By Dr. Imre Bartfai
; What you need is to define the polynomial. E. g. for the CCITT one: poly0 equ 0x21 poly1 equ 0x10 ; Do not forget to initialize <crcval> = <crch:crcl> before the 1st call ; e. g. with 0xFF or with zeroes, as the particular CRC algorithm ; requires. ;This subroutine calculates a 16bit CRC ; ; CrcUpd: update <crcval> using <W> ; ; CBLOCK crcblk crch crcl saved oldcch i ENDC CrcUpd movwf saved ; j = W movlw d'8' ; W = 8 movwf i ; i = W _loop movfw crch movwf oldcch ; temporary save clrc ; clear carry for rlf rlf crcl ; crc << 1 rlf crch movfw saved ; the char read xorwf oldcch,F ; test with old high btfss oldcch,7 ; if bit set, apply mask b _notset ; otherwise skip movlw poly0 xorwf crcl,F movlw poly1 xorwf crch,F _notset clrc ; for rlf rlf saved,F ; next bit of saved decfsz i,F b _loop return ; ; End CrcUpd
; Simple CRC routine ; from John Payson 19981023 xorwf crcH ; Compute the LSB first [based upon MSB] movlw 0 btfsc crcH,0 xorlw 33 btfsc crcH,1 xorlw 66 btfsc crcH,2 xorlw 132 btfsc crcH,3 xorlw 8 btfsc crcH,4 xorlw 49 btfsc crcH,5 xorlw 98 btfsc crcH,6 xorlw 196 btfsc crcH,7 xorlw 136 ; Swap crcL with W xorwf crcL,f xorwf crcL,w xorwf crcL,f ; Next compute the MSB [note W holds old LSB] btfsc crcH,0 xorlw 16 btfsc crcH,1 xorlw 32 btfsc crcH,2 xorlw 64 btfsc crcH,3 xorlw 129 btfsc crcH,4 xorlw 18 btfsc crcH,5 xorlw 36 btfsc crcH,6 xorlw 72 btfsc crcH,7 xorlw 145 movwf crcH
Interested:
See also:
file: /Techref/microchip/crc.htm, 3KB, , updated: 2008/10/18 15:58, local time: 2016/7/31 00:25,

©2016 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://www.piclist.com/techref/microchip/crc.htm"> PIC Microcontroller Bit Math Method  CRC</A> 
Did you find what you needed? 
PICList 2016 contributors:
o List host: MIT, Site host massmind.org, Top posters @20160731 RussellMc, Neil, IVP, James Cameron, alan.b.pearce, John Gardner, Denny Esterline, Bob Blick, Richard Pope, embedded systems, * Page Editors: James Newton, David Cary, and YOU! * Roman Black of Black Robotics donates from sales of Linistep stepper controller kits. * Ashley Roll of Digital Nemesis donates from sales of RCL1 RS232 to TTL converters. * Monthly Subscribers: Gregg Rew. ongoing support is MOST appreciated! * Contributors: Richard Seriani, Sr. 
Welcome to www.piclist.com! 
.