Hola Suky,
por fin he vuelto de viaje y he estado probando, y la verdad es que no se como algo tan sencillo me esta tocando tanto las narices, he reducido el la funcion de int_rda a simplemente encencer un led pero no funciona, solo se me enciende el led cuando desconecto la sesion del hyperterminal, he probado ademas del con el modulo usb-rs232, haciendome un conversor con un max 232 y usando mi viejo pc, y nada de nada, te adjunto el código por si eres tan amable de ayudarme.
¡¡Estoy empezando a pensar en volverme al Picbasic¡¡¡
#include <16F877.h>
#device ICD=TRUE
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES DEBUG //Debug mode for use with ICD
#use delay(clock=4000000)
#include <lcd8bits_entrenador.c>
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
char valor;
int1 Llego_dato=0;
#int_RDA
void serial_isr()
{
valor=getchar();
output_high(pin_b1);
Llego_dato=1;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
star:
{
output_high(pin_b2);
delay_ms(200);
output_low(pin_b2);
delay_ms(200);
if(llego_dato==1)
{
output_high(pin_b1);
}
else
{
output_low(pin_b1);
}
goto star;
}
}