On Fri, 03 Jul 2009 20:14:13 -0300, you wrote: >OK, explain this under this theory: > >Look how they do 'Var = 0;' : > >bcf STATUS,C >*movlw* 0 >btfsc STATUS,C >*movlw* 1 >movwf Var Evaluate the right hand expression and put the result in something just big enough (in this case the carry flag). Copy the result to the lvalue. >'Var = 1;' > >clrf Var >bsf STATUS,C >rlf Var,f Same again although I don't know why it chose a different method to copy. >'Var = 2;' > >clrw >iorlw 2 >movwf Temp >movf Temp,w >movwf Var Same again but the expression needs a file to hold the result. It seems the compiler is being smart recognising constant expressions of 0 and 1 will fit in a bit and treating them differently. The generated code looks dumb but I presume provides more scope of optimisation by the bit of the compiler you didn't buy. -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist