Esos tipos de receptores de RF no les gusta tener un componente de CC en los datos que se envían y reciben. Normalmente, al enviar datos, debe usar algo como la codificación Manchester para mantener equilibrado el número de unos y los ceros. Atmel tiene un buen documento llamado Fundamentos de codificación de Manchester:
enlace
Sin embargo, en su caso, ya que está enviando un solo byte, probablemente pueda simplificar las cosas. En este momento está enviando el valor 1, que en binario con un bit de inicio 0 y un bit de parada termina siendo:
0 1 0 0 0 0 0 0 0 1
Como puedes ver, tiene una larga cadena de ceros, lo ideal es algo con un conjunto de ceros bastante equilibrado y como este:
0 1 0 1 0 1 0 1 0 1
Lo que en hexadecimal es 0xAA, intente enviar eso en lugar de uno. También se está apagando cuando no se reciben datos o si hay un error de transmisión, es mejor que tenga un código separado transmitido para indicar que la salida debe estar desactivada, por ejemplo:
0 1 1 0 0 1 1 0 1 1
Que en hexadecimal es 0xCD, así como el segundo paso cambia tu lógica para que solo desactive la salida cuando se reciba. También tenga en cuenta que cuando no se reciba ningún proveedor, recibirá una gran cantidad de "basura" que confundirá al UART receptor.
La forma habitual de solucionarlo es agregar un preámbulo, pero en su caso, probablemente pueda transmitir el byte varias veces para asegurarse de que se reciba. También intente mantener la línea de transmisión en alto durante un tiempo (por ejemplo, 5 ms) antes de enviar cada byte para asegurarse de que se detecte el bit de inicio.
Como nota final que usa un solo byte, es probable que encuentre que la basura aleatoria recibida también ocasiona falsos disparos. Una vez que funcionen los aspectos básicos, es posible que desee ver el envío de una secuencia más larga, como 32 bits / 4 bytes.