You may find that routine is actually too fast for the hardware you're controlling.
If so, you can add NOPs to slow it down a bit...
Code:
SHDAT = 0
if WREG.0 then
  SHDAT = 1
endif
asm NOP endasm
SHCLK = 1
asm NOP endasm
SHCLK = 0
asm NOP endasm