We have two pics talking using hardware SPI based on the spislave.pbp example.

Code:
' SETUP CHIP CLOCK SPEED
DEFINE OSC 20

' Set all analog ports on 18F2420 to digital operation
ADCON1 = 15			                

' Allocate RAM
SSPEN       VAR SSPCON1.5   ' SSP Enable bit
CKP         VAR SSPCON1.4   ' Clock Polarity Select
SSPOV       VAR SSPCON1.6   ' Receive Overflow Indicator bit
SMP         VAR SSPSTAT.7   ' Data input sample phase
CKE         VAR SSPSTAT.6   ' Clock Edge Select bit
SSPIF       VAR PIR1.3      ' interrupt flag - last bit set
SPIdata     var byte        ' data sent via SPI

TRISC = %11011111           ' set PORTC I/O
SSPCON1 = %00000101         ' configure SPI slave, no SS            
CKP = 0                     ' clock idle low
CKE = 0                     ' transmit on idle to active transition
SMP = 0                     ' sample in middle of data
SSPIF = 0                   ' clear SPI interrupt
SSPEN = 0                   ' disable/enable SSP to reset port
SSPEN = 1                   ' enable SSP
SPIdata = 0                 ' zero out sending variable data

SPIdata = 121               ' test data

mainloop:
   GoSub senddata           ' send test string of data
   GOSUB DELAY              ' test delay
GoTo mainloop               ' do it forever

delay:
   pause 20                 ' pause for too long here causes problems with SPIdata
return
                
senddata:
   gosub letclear           ' wait until buffer ready
   SSPBUF = SPIdata         ' send SPIdata
Return
                
letclear:
   IF SSPIF = 0 Then letclear ' wait for interrupt flag
   SSPIF = 0                ' reset flag
Return

End
Ref...
http://melabs.com/samples/PBP-mixed/spislave.htm

The slave pic simply needs to send data, whenever the master asks for it. But we noticed if you have too long of a delay in the slave pic then the data sent can be 255. Any ideas why the longer delay would cause this (see delay in above example)? The master PIC poles the Slave pic 25 times a second.

Thank you,

Rodney