porque si comento el código del RDA sigue funcionando.Viendo tu código, alguno con más experiencia podría percatarse del error.
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=3686400)
#use RS232 (baud=4800, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
int1 flag_rf;
char dato_rx;
#int_RDA
void RDA_isr()
{
dato_rx=fgetc();
flag_rf=1;
}
void main()
{
delay_ms(50);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
flag_rf=0;
while(true)
{
if(flag_rf==1)
{
flag_rf=0;
printf("%c",dato_rx);
}
}
}
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=3686400)
#use RS232 (baud=4800, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
int1 flag_rf;
char dato_rx;
#int_RDA
void RDA_isr()
{
dato_rx=fgetc();
flag_rf=1;
}
void main()
{
delay_ms(50);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
flag_rf=0;
while(true)
{
if(flag_rf==1)
{
flag_rf=0;
printf("%c",dato_rx);
}
}
}
void RDA_isr()
{
if (kbhit())
{
dato_rx=fgetc();
if(dato_rx=='Z')
{
bandera=1;
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena=0;
}
else
{
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena++;
}
}
}
while(TRUE)
{
if(bandera==1)
{
bandera=0;
incremento_cadena=0;
(...) aquí comparas tus cadenas de caracteres y lo que tengas que hacer
}
}