(posted before but forgot tag....) WTF is going on with the Hi-Tech compiler that ships with MPLAB.... A few samples below (all vars are global chars)., target 16F818 Can anyone think of any explanation for such poor code generation other than deliberately making it slow to make their paid-for compiler look better ? It can't be doing Microchip any favours shipping such a poor performing compiler with MPLAB as it makes their chips look slow and inefficient. 365: irrxsum1+=irbyte1; 115 087A MOVF 0x7a, W 116 00C3 MOVWF 0x43 117 0843 MOVF 0x43, W 118 07F4 ADDWF 0x74, F Should be 2 instructions 366: ircnt1=0; 119 1003 BCF 0x3, 0 11A 3000 MOVLW 0 11B 1803 BTFSC 0x3, 0 11C 3001 MOVLW 0x1 11D 00FB MOVWF 0x7b This is especially bizarre - should be 1 CLRF instruction 349: irtmr1+=bittime2; // bittime2 is a constant 0DF 300E MOVLW 0xe 0E0 00C3 MOVWF 0x43 0E1 0843 MOVF 0x43, W 0E2 07F5 ADDWF 0x75, F Should be 2 instructions 350: ircnt1++; 0E3 3001 MOVLW 0x1 0E4 00C3 MOVWF 0x43 0E5 0843 MOVF 0x43, W 0E6 07FB ADDWF 0x7b, F Should be 1 INCF instruction 322: irin=PORTA; 090 0805 MOVF 0x5, W 091 00C3 MOVWF 0x43 092 0843 MOVF 0x43, W 093 00FC MOVWF 0x7c Why is it storing in two places? -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist