Thanks for the info. It helped a little but I'm nowhere closer now than I was on Friday. Not one CAN frame received, nor was one sent. Part of my problem is that I don't completely understand the register settings listed in the datasheet. I keep reading it but it's not 100% clear so I'm sure my settings in the code aren't going to work. Can you (or anyone else) take a look at this and let me know where my mistakes are? I'm sure there are plenty

Code:
DEFINE OSC 20 

'                       REGISTERS AND PINOUT ( 1 = IN; 0 = OUT )
' ================================================================
           '76543210          '76543210
 TRISA   = %11011111: PORTA = %00000000 
 TRISB   = %00000000: PORTB = %00000001
 TRISC   = %00010000: PORTC = %00000000
 TRISD   = %00000000: PORTD = %00000000
 TRISE   = %00000000: PORTE = %00000000
 ADCON0  = %00000000
 ADCON1  = %00000000
 ADRESH  = %00000000 
 ADRESL  = %00000000
 CMCON   = %00000000
 SSPSTAT = %00000000       'I'M A LITTLE LOST WITH THE SSPSTAT AND SSPCON1
 SSPCON1 = %00110000  
 
 '                  VARIABLES AND CONSTANTS
 '==============================================================================
TXBNCTRL var byte
TXBNSIDH var byte
TXBNSIDL VAR BYTE
TXBNDLC VAR BYTE
TXBNDM7 VAR BYTE
TXBNDM6 VAR BYTE
TXBNDM5 VAR BYTE
TXBNDM4 VAR BYTE
TXBNDM3 VAR BYTE
TXBNDM2 VAR BYTE
TXBNDM1 VAR BYTE
TXBNDM0 VAR BYTE
B0 VAR BYTE
B1 VAR BYTE   
B2 VAR BYTE
B3 VAR BYTE
B4 VAR BYTE
B5 VAR BYTE
B6 VAR BYTE
B7 VAR BYTE




B7 = TXBNDM7     ' 8TH BYTE OF DATA FRAME
B6 = TXBNDM6     ' 7TH BYTE OF DATA FRAME 
B5 = TXBNDM5     ' 6TH BYTE OF DATA FRAME
B4 = TXBNDM4     ' 5TH BYTE OF DATA FRAME
B3 = TXBNDM3     ' 4TH BYTE OF DATA FRAME
B2 = TXBNDM2     ' 3RD BYTE OF DATA FRAME
B1 = TXBNDM1     ' 2ND BYTE OF DATA FRAME
B0 = TXBNDM0     ' 1ST BYTE OF DATA FRAME
 
 'THE PIC MUST ENABLE THE CANINTE.TXINE BIT TO CHANGE THE INTERRUPT FLAG
 'THE PIC MUST CLEAR THE TXBNCTRL.TXREQ BIT BEFORE WRITING TO THE TRANSMIT BUFFER
 
 
'                         ALIAS & MODIFIERS
' ================================================================
CS VAR PORTB.4 
SCLK VAR PORTC.3
SDI VAR PORTB.0
SDO VAR PORTC.7
SENDLED VAR PORTA.5             'LED TO INDICATE THE PROGRAM IS IN THE SENDING ROUTINE
MAINLED VAR PORTE.2             'LED TO INDICATE THE PROGRAM IS IN THE MAIN ROUTINE


  
  
'                           START OF PROGRAM
'================================================================================
START:
TOGGLE MAINLED              'LED INDICATING THE 18F4550 IS IN THE MAIN ROUTINE
PAUSE 100
GOSUB SENDCANDATA           'CAN DATA IS ABOUT TO BE SENT......OR WE COULD ONLY WISH......
GOTO START

'                           SEND CAN DATA SECTION
'===============================================================================
SENDCANDATA:
PAUSE 50
TOGGLE SENDLED              ' LED FOR DEBUGGING
LOW CS                      ' CS PIN IS HELD LOW IN ORDER TO TRANSMIT DATA
TXBNDLC = %00000111         ' DATA LENGTH. THIS IS FOR 8 BYTES.
TXBNCTRL = %00001011        ' THE TXBNCTRL IS A REGISTER THAT DETERMINES THE CONDITIONS UNDER WHICH THE MESSAGE WILL BE TRANSMITTED. SEE DATA SHEET FOR DESCRIPTION.
TXBNSIDL = %11100000        ' STANDARD IDENTIFIER BITS
TXBNSIDH = %11111111        ' NOT REALLY SURE WHAT MICROCHIP WANTS HERE. IT JUST STANDARD IDENTIFIER BITS? 

B0 = $0                     'DATA IN BYTE 1
B1 = $01                    'DATA IN BYTE 2
B2 = $03                    'DATA IN BYTE 3
B3 = $06                    'DATA IN BYTE 4
B4 = $08                    'DATA IN BYTE 5
B5 = $0A                    'DATA IN BYTE 6
B6 = $0C                    'DATA IN BYTE 7
B7 = $0E                    'DATA IN BYTE 8


IF TXBNCTRL.3=1 OR TXBNCTRL.5=1 OR TXBNCTRL.4=1 THEN GOTO SENDCANDATA   'THERE WAS AN ERROR, TRY AGAIN.
HIGH CS                     ' DATA TRANSMISSION IS COMPLETE. PUT CS LINE BACK TO 1.
PAUSE 1000  

RETURN