Hola a todos, estoy intentando realizar una comunicacion serie bidireccional (duplex por ahora,aunque full duplex seria excelente) entre 2 pics pero solo logro una unidireccional. no se que estara fallando si alguien ve algo en el codigo agradezco la ayuda.
Gracias y saludos.
Gracias y saludos.
Código:
//primer pic
#include <16f628a.h>
#fuses XT,NOWDT,NOMCLR
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_B0, rcv=PIN_B1)
//#use rs232(baud=9600, UART1) // USART POR HARDWARE RB2/TX Y RB1/RX
#include <stdlib.h>
#define LED_0 PIN_B4
char r;
void main() {
while (TRUE) {
if (kbhit()) {
r = getc();
}
if (input(PIN_A0)==0){
output_high(LED_0);
printf("a"); //ENVIAR CARACTER a
}
else{
output_low(LED_0);
printf("b"); //ENVIAR CARACTER b
if (r=="c"){
output_high(LED_0);
delay_ms(500);
output_low(LED_0);
delay_ms(500);
output_high(LED_0);
delay_ms(500);
output_low(LED_0);
}
}
}
}
Código:
//segundo pic
#include <16f628a.h>
#fuses XT,NOWDT,NOMCLR
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_B0, rcv=PIN_B1)
//#use rs232(baud=9600, UART1) // USART POR HARDWARE RB2/TX Y RB1/RX
#define LED_0 PIN_B4
#include <stdlib.h>
char x;
void main() {
while (TRUE) {
if (kbhit()) {
x = getc();
}
if (x=='a'){
delay_ms(1000);
output_high(LED_0);
printf("c");
delay_ms(3000);
}
else{
output_low(LED_0);
}
}
}
Última edición: