I am not sure if you have seen this.
Excerpt from the datasheet of PIC16F917. I am sure this applies to the 628 too though I have not checked it.
<Quote>
When the SLEEP instruction is being executed, the next
instruction (PC + 1) is pre-fetched. For the device to
wake-up through an interrupt event, the corresponding
interrupt enable bit must be set (enabled). Wake-up is
regardless of the state of the GIE bit. If the GIE bit is
clear (disabled), the device continues execution at the
instruction after the SLEEP instruction. If the GIE bit is
set (enabled), the device executes the instruction after
the SLEEP instruction, then branches to the interrupt
address (0004h). In cases where the execution of the
instruction following SLEEP is not desirable, the user
should have a NOP after the SLEEP instruction.
</quote>
Perhaps, you need to take care of this
Like this
@ sleep
@ nop
@ nop
I use this for my 628 programs and get the sleep operate correctly.
Jerson
Bookmarks