Hola, si no encuentras algo hecho como te comentan, prueba con algo asi:
#define TXD porta.0 blablabl o komo se haga en el pic
#define TXD porta.1 blablabl o komo se haga en el pic
void delay(int ms)
{
//Aqui temporizas como quieras, con un temporizador o con un bucle for
}
void send_byte(char byte)
{
char i = 0;
TXD = 0; // Bit de start
delay(TIEMPO); // TIEMPO es el tiempo entre bits (depende de la velocidad de comunicacion)
for (i=0;i<8;i++)
{
if(byte & 0x01) TXD = 1;
else TXD = 0;
byte >>= 1; // es lo mismo que byte = byte >>1, o byte = byte / 2:
delay(TIEMPO);
}
TXD = 1; // Bit de stop
}
char rec_byte(void)
{
char byte=0;
while(RXD==1);
delay(TIEMPO*1.5); // Esperamos a estar en el proximo bit a mitad (1 bit de start mas la mitad del proximo)
for (i=0;i<8;i++)
{
if(RXD) byte |= 1; // Es lo mismo que byte = byte | 1;
byte <<=1;
delay(TIEMPO);
}
return byte;
}
Este es el aspecto parecido al que deberia tener
Un saludo.