#int_timer1
void RecibeByte() {
static int8 Capturando,Dato,BitsLeidos;
set_timer1(55535); // Esta precarga está calculada para 1200 baudios = 833us
if (Capturando) { // Ya estábamos capturando el byte
if (++BitsLeidos==9) { // Si hemos capturado el último bit
Capturando=0; // ya no capturamos más
ByteRecibido=Dato; // Cargamos el dato sobre una variable global. Aquí se podría almacenar sobre buffer
} else {
Dato=Dato*2+input(PIN_D3); // acumulamos el bit recibido en el pin D3
}
} else {
if (!input(PIN_D3)) { // He leído un cero, que es el bit de Start
BitsLeidos=0; // Inicializamos las variables
Dato=0;
Capturando=1;
}
}
}