This code work very nice!
Is very precision!
I testing yes-today!

Code:
Delay VAR BYTE
i VAR WORD

TRISB = 0  ' All outputs.

Delay = 10   ' ~100steps / second

For i = 1 to 1000    '1000 steps forward.
  PORTB = %00000001
  Pause Delay
  PORTB = %00000010
  Pause Delay
  PORTB = %00000100
  Pause Delay
  PORTB = %00001000
  Pause Delay
NEXT

Pause 2500

For i = 1 to 1000    '1000 steps reverse.
  PORTB = %00001000
  Pause Delay
  PORTB = %00000100
  Pause Delay
  PORTB = %00000010
  Pause Delay
  PORTB = %00000001
  Pause Delay
NEXT
But I don't now what is happens,
work well 5-6 min,and in the moment stop,like some reset happened,I don't now ,
and start over again,I don't why!