It compiles to this:
Code:
0001 M L00001
0001 140F M bsf PORTD, 000h
0002 3000 M movlw 0
0003 188F M btfsc PORTD, 001h
0004 3001 M movlw 1
0005 00BA M movwf _Sw1
0006 33FA M bra L00001
So as far as I can see the part IN the actual loop takes either 5 or 6 cycles, then the jump back to the start of the loop is another 2 cycles.
At 32MHz each instruction cycle is 125ns.
It doesn't seem to make any difference if it's for a 16F or 18F but be aware that if you have the WDT enabled it's possible that the compiler "injects" an instruction to clear it depending on where, in a larger program, this snippet ends up.
/Henrik.
Bookmarks