A este tipo de receptores de RF no les gusta tener un componente de CC en los datos que se envían y reciben. Normalmente cuando se envían datos se debe utilizar algo como la codificación Manchester para mantener el número de unos y ceros que se envían equilibrados. Atmel tiene un buen documento llamado Manchester Encoding Basics:
http://www.atmel.com/images/doc9164.pdf
Sin embargo, en tu caso, como estás enviando un solo byte, probablemente puedas simplificar las cosas. De momento estás enviando el valor 1, que en binario con un bit de inicio 0 y un bit de parada acaba siendo:
0 1 0 0 0 0 0 0 0 1
Como puedes ver eso tiene una larga cadena de ceros, lo que quieres idealmente es algo con un conjunto bastante equilibrado de ceros y unos como este:
0 1 0 1 0 1 0 1 0 1
Que en hexadecimal es 0xAA, así que intenta enviar eso en lugar de uno. También está apagando cuando no se reciben datos o hay un error de transmisión, puede ser mejor tener un código separado transmitido para indicar la salida debe ser apagado, por ejemplo:
0 1 1 0 0 1 1 0 1 1
Que en hexadecimal es 0xCD, así que como segundo paso cambia tu lógica para que sólo se apague la salida cuando se reciba eso. También ten en cuenta que cuando no se recibe ninguna portadora recibirás mucha "basura" que confundirá a la UART receptora.
La forma habitual de hacer frente a esto es añadir un preámbulo, pero en tu caso probablemente puedas transmitir el byte varias veces para asegurarte de que se recibe. Intenta también poner la línea de transmisión en alto durante un tiempo (digamos 5mS) antes de enviar cada byte para asegurarte de que se detecta el bit de inicio.
Como nota final al usar un solo byte, probablemente encontrarás que la basura aleatoria recibida también causa ocasionalmente falsos disparos. Una vez que lo básico esté funcionando, puede que quieras mirar el envío de una secuencia más larga como 32-bits / 4 bytes.