Hola darck_khronos,podrías postear los ficheros en proteus y el firmware, para probarlos y así ayudarte a encontrar una solución.
Qreo que el problema esta en el firm del 2550;bien
#
for (;;) {
delay_ms(100);
dato=input_b();
de=dato&0xf0;
un=dato&0x0f;
if (kbhit()){
[color=red]printf("%c",dato);[/color]<----- Hola Chicos, esto envia una cadena de 1 caracter, y las cadenas todas terminan en /0==00h
sin embargo en el otro firm pones un putc(), que si es correcto, revisalo y ya me dices.
lcd_gotoxy(1,1);
printf(lcd_putc,"recibiendo=%1c",in);
lcd_gotoxy(1,2);
printf(lcd_putc,"Enviando=%1c%1c",de,un);
Por cierto,¿ en el lcd si te imprime lo correcto?