Hola amigos.
Estoy intentando transmitir un byte entre dos 16f876 usando el puerto serie de forma asíncrona.La cuestión es que he conseguido que el carácter o los caracteres lleguen a su destino para representarlos en un display,pero a costa de enviar siempre dos caracteres más que se pierden a saber por donde.Les pasteo el código y así lo ven mejor:
/*************
* TRANSMISOR *
**************/
#include <16F876.h>
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8)
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP
void fin_transmision()
{
putc("0");
putc("0");
}
void main()
{
char dato = "A";
putc(dato);
fin_transmision();
}
/***********
* RECEPTOR *
************/
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8)
#include <lcd.c>
void main()
{
char dato;
char *ptr = " recibido...";
lcd_init();
dato = getc();
lcd_putc(dato);
printf(lcd_putc,ptr);
}
Si no recurro a mandar esos dos caracteres de más no consigo sacar nada por el lcd.
¿Acaso debe estar lleno el FIFO del receptor para poder sacar el contenido de RCREG usando las funciones getc(),putc(),etc...?
Una ayudita por favorrrrrr que llevo dos días probando y probando y no hay manera.