Buenas noches gente, curioseando sobre proyectos con PIC encontré el tema de comunicación serial entre dos de ellos lo cual me pareció bastante interesante. Entonces como para ir entrando suave, me propuse a encender un led en el PIC B (recepción) pulsando un botón en el PIC A (transmisión)
Aquí los códigos
PIC A (Transmisión)
#include "C:\\Users\\ADMIN\\Documents\\PRUEBA RS232\\TRANSMISION\\tx.h"
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
char flag;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
while(true)
{
if(input(pin_b0)==1)
{
flag=1;
putc(flag);
delay_ms(500);
}
else
{
flag=0;
putc(flag);
delay_ms(500);
}
}
}
PIC B (Recepción)
#include "C:\\Users\\ADMIN\\Documents\\PRUEBA RS232\\RECEPCION\\rx.h"
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#int_RDA
char flag;
void RDA_isr()
{
flag=getc();
delay_ms(100);
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(true)
{
if(flag==1)
{
output_high(pin_b0);
delay_ms(500);
}
}
}
Estoy simulando esto en Proteus y pasa que el PIC A funciona perfecto, al presionar un botón en B0 el virtual terminal muestra un 01, pero el de recepción nada que enciende el led y la verdad no sé que pueda estar pasando. Sé que hay mucha información en este foro y la he leído pero llevo mucho intentandolo y nada, espero me puedan echar una mano
Agradezco mucho su ayuda. ...