RS-232 con dos seriales

#1
hola amigo de foros electronica recientemente hey tenido un problema con el microcontrolador pic18F4550 y no se como solucionarlo el problema es que el pic tiene que ser el principal comunicador recibe dos seriales y puede tener hasta 4 seriales el pic conectados solo hey logrado tener la comunicacion en el envio de datos desde el pic a los puertos seriales y mas no en la recepcion de los datos que envia los puertos seriales al pic el codigo que muestro aqui es una parte del programa es simple si alguien puede ayudarme en como resolver este problema le agradeceria :cry::confused::D

adjunto el codigo aqui
Código:
#include <18F4550.h>
#device adc=10
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=48000000) //oscilador de 4Mhz configurado para 48Mhz
//#use rs232(baud=9600,XMIT=PIN_C6,RCV= PIN_C7)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=ZIG)
#use rs232(baud=9600,parity=N,xmit=PIN_E0,rcv=PIN_E1,bits=8,stream=SIM)

#include <flex_lcd.c>


byte zigbee_cadena=0x00;
byte sim900_cadena=0x00;
char uno;
char dos;
void main()
{   
   fprintf(ZIG,"zigbee\r");
   fprintf(SIM,"sim900\r");   
   lcd_init();
   lcd_gotoxy(1,1);
   printf(lcd_putc,"hola");
   delay_ms(100);
   while(true){
      if(kbhit()){
         zigbee_cadena = getc(ZIG);
      }
      if(kbhit(SIM)){
         sim900_cadena = getc(SIM);
      }
         printf(lcd_putc,"\f");
         lcd_gotoxy(1,1);
         printf(lcd_putc,"%c",zigbee_cadena);
         lcd_gotoxy(1,2);
         printf(lcd_putc,"%c", sim900_cadena);
         delay_ms(300);
   }
}
 

Adjuntos

Última edición por un moderador:
#2
¿Estás usando uart por software y/o bucles de espera?

Si usas uart sofrware solo puedes comunicar de uno en uno, si usas uart hardware deberías usar interrupciones o un bucle que mire todas las uart. Mejor interrupciones.
 
Arriba