#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)
int8 ordre;
#int_rda
void serial_isr(void)
{
if(kbhit()) //Si lo pongo aquí es cuando no recibo nada
{
ordre=getc(); //Hago eco como prueba a ver que es lo que le llega al pic
putc(ordre);
ordre=getc();
putc(ordre);
ordre=getc();
putc(ordre);
}
}
#int_RTCC
void RTCC_isr()
{
(...)
}
#int_timer1
void timer1_isr(void)
{
(...)
}
#int_timer2
void timer2_isr(void)
{
(...)
}
#int_timer3
void timer3_isr(void)
{
(...)
}
void main() {
delay_ms(300);
setup_counters(RTCC_INTERNAL,RTCC_DIV_4);//RTCC_8_BIT|RTCC_DIV_4);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
setup_timer_2(T2_DIV_BY_4,255,1);
setup_timer_3(T3_INTERNAL | T3_DIV_BY_4);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_timer1);
enable_interrupts(INT_timer2);
enable_interrupts(INT_timer3);
enable_interrupts(INT_rda);
enable_interrupts(global);
set_tris_a(0b00000000);
set_tris_b(0b00000000);
set_tris_c(0b10000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);
output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
do {
/*if(kbhit()) //Si lo pongo aquí si que recivo datos
{
ordre=getch();
putc(ordre);
ordre=getch();
putc(ordre);
ordre=getch();
putc(ordre);
}*/
} while (TRUE);
}#int_rda
void serial_isr(void)
{
ordre=getc(); //leo caracter
putc(ordre); //eco
} //salgo de la interrupción
#INT_RDA
void serial_isr()
{
buf_rx[cont_rx] =getc(); //leo caracter y lo guardo en un búfer ( declarado como char buf_rx[3] )
++cont_rx; //contador de caracteres recibidos
if(cont_rx==2)
{
datos_listos=1; //si el contado llega a 2 activo una bandera para procesar estos datos dentro de main
cont_rx=0; //encero contador
}
}