aaah ok entendí muy mal, lo que pienso que se podría hacer son 2 cosas:
1. cambiar a negado cuando se envíen los datos, en la función cargar(int datob):
output_bit(dato,(datob & 0x1)); acá se envía el dato, bit por bit dentro el ciclo for.
datob>>=1;
output_high(clock);
delay_cycles(1);
output_low(clock);
podrías intentar en es misma instrucción cambiarlo a su complemento, o colocar antes un complemento de todo el byte así:
datob=~datob;
output_bit(dato,(datob & 0x1));
datob>>=1;
...
2. complementar todos los datos de las letras. Es la solución más larga
Saludos. Ahi nos avisas como te quedó el código.