I started this project a couple of years ago and I was stuck when I put it to the side. I recently brought it back to life and I am still stuck!

Here is the deal: 16F628 w/20mHz OSC sends a "1 2 3 4" with a second between each character cycling over and over while bllinking an LED. The 628 sends the data to a 16F876 w/20mHz OSC on PortC.7 through an interrupt while going through an endless loop.

The problem: The 628 sends the varible "I" which equals (ASCII 1, ASCII 2, ASCII 3, or ASCII 4), but the 876 spits out 103 for the ASCII 1, a 51 for the ASCII 2, a 102 for the ASCII 3, and 25 for a ASCII 4. My Question is why?

Code for the 16F628
Code:
@ DEVICE HS_OSC,MCLR_OFF,LVP_OFF,WDT_OFF,PROTECT_OFF

define OSC 20

CMCON = %00000111   ' Page 56, Comparators Off

CHAROUT VAR PORTB.3
LED         VAR PORTB.7
BAUD       CON 6
I              VAR BYTE


PAUSE 2000
   
start:
    for I = 1 to 4
        HIGH LED
        PAUSE 500
        LOW LED
        PAUSE 500
        SEROUT2 CHAROUT,16468,[#I]    ' N9600
    NEXT
GOTO START
and the code for the 16F876
Code:
@ DEVICE HS_OSC,LVP_OFF,WDT_OFF,PROTECT_OFF

define OSC 20

INTCON = %01000000  ' Page 22, PEIE=1  
PIE1 = %00100000      ' Page 23, RCIE=1    
TXSTA = %00100100   ' Page 97, TXEN=1, BRGH=1
RCSTA = %10010000   ' Page 98 , SPEN=1, CREN=1
SPBRG=129                ' Page 100, 9600 BAUD (BRGH = 1)

TRISC = %10000000    ' PortC.7 Input

RCIF    VAR PIR1.5        ' Page 24, USART Receive Interrupt Flag bit


CHAR    VAR BYTE     
X         VAR BYTE    
FLAG    VAR BYTE

BAUD    CON 6       ' 9600 Driven Inverted
LCD      VAR PORTC.4


on interrupt goto ROUTINE

PAUSE 1000        ' Wait for LCD 
SEROUT LCD,BAUD,[12,"Working. . ."]  '12=Clear screen and verify working
PAUSE 1000
SEROUT LCD,BAUD,[12]                     '12=Clear screen

loop:
      
GOTO loop


disable INTERRUPT
ROUTINE:
    RCSTA=%00000000 ' Page 98, Serial port disabled, Disable continuous receive
    CHAR = RCREG        ' Get character

    while RCIF               ' Empty RCIF 
    X = RCREG       
    wend            

    SEROUT LCD,BAUD,[12,#CHAR]  ' Clear Sceen and display ascii value

    RCSTA=%10010000    ' Page 98 , SPEN=1, CREN=1
resume              
enable INTERRUPT