Could that be a problem? Do you have anything similar to the MPLAB Simulator Stopwatch?... <snip> ... I'm using TMR1 to measure the execution time of the routine ... <snip> ...
My goodness, that doesn't sound quite right. That's close to what you got when you were processing nine bytes. Could there be a problem with the method you're using to count cycles?... <snip>... This time I got 1533 cycles ... <snip> ...
I would expect you to get code similar to the assembler code generated from my BoostC "Do/While" loop;
Code:crcword ^= work; i = 8; // 0040 0845 MOVF crc16_00000_arg_work, W 0041 06B7 XORWF gbl_crcword, F 0042 3008 MOVLW 0x08 0043 00C6 MOVWF crc16_00000_1_i do { // 0044 label5 crcword >>= 1; // 0044 36B8 LSRF gbl_crcword+D'1', F 0045 0CB7 RRF gbl_crcword, F if(status.C) // 0046 1C03 BTFSS gbl_status,0 0047 284C GOTO label6 004C label6 crcword ^= 0x0A01; // 0048 3001 MOVLW 0x01 0049 06B7 XORWF gbl_crcword, F 004A 300A MOVLW 0x0A 004B 06B8 XORWF gbl_crcword+D'1', F } while(--i); // 004C 03C6 DECF crc16_00000_1_i, F 004D 1D03 BTFSS STATUS,Z 004E 2844 GOTO label5 }




Bookmarks