>Delay500 > movlw -(.500/6) ;desired delay / loop delay > >Delay500Loop > xorlw 0xFF ;1's complement W > addwf FSR,W ;2's complement W > subwf FSR,W > skpz ;W wrap to 0? > goto Delay500Loop ;loop is 6 instructions I've seen this before somewhere, but it's still neat. But, since nearly all of my projects (and I'm sure others, too) use "temp" registers for calculations, counters, etc., I would be surprised if one file couldn't be freed for use with a standard delay loop. Plus, you could reduce the program memory by over 1/2. Also, note that the routine above is limited to 256 times through the loop. The more delay you need, the more program memory is required due to NOPs. --Andrew _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.