Hi,
Instead of relying on software timing you can check the MSSP interrupt flag:
Code:
myByte VAR BYTE
SSPIF VAR PIR1.3

myByte = 123

SSPBUF = myByte                 ' Load byte to shiftregister buffer
SSPIF = 0                             ' Clear interrupt flag
WHILE SSPIF=0 : WEND        ' Wait for transmission to finish
This way you don't have to change any timing if you change the oscillator or if you change the MSSP module clock divisor etc.

Check the datasheet and make sure the SSPIF is at PIR1.3 for your device. (I think they try to keep it consistent but you never know)

/Henrik.