I agree with Steve (and everyone else) that the hardware PWM sounds best for what you described. But, if it will not work for you consider "unrolling" your loops like that shown below. You lose no time in looping but it does cost you more code space (16 repeats is not huge considering the amount of memory in the 877A).
Code:
DEFINE OSC 20
TRISB.0 = 0
PORTB = 0

PORTB.0 = 1   ' I = 1 (on for 12.6 uS)
@ nop
Pauseus 12
PORTB.0 = 0   ' (off for 12.4 uS)     
PAUSEUS 12

PORTB.0 = 1   ' I = 2
@ nop
Pauseus 12
PORTB.0 = 0     
PAUSEUS 12

;(more of the same here)

PORTB.0 = 1   ' I = 16
@ nop
Pauseus 12
PORTB.0 = 0     
PAUSEUS 12

Endhere:
goto Endhere
END