Por lo que veo lo estas simulando en proteus, verdad?
Bueno, pues en la realidad temo decirte que el primer 0xF0 que transmitas se perderá, es decir el receptor no podra recibirlo correctamente debido a que esta ajustando su ganancia para recibir los datos, esa es la razon por la cual necesitas envia varias veces el dato. La idea es que si el receptor recibe ese dato lo descarte ya que no puede exitir un dato de ese tipo cunado codificas en manchester, lo unicos pares validos son "10" y "01" los pares "11" y "00" son invalidos y sirven para detectar un error en la transmision-recepcion de los datos.
Yo no compararias todos los datos entre sí como lo haces en tu if. Lo correcto es que si el dato recibido es un 0xF0 descartes el dato, y si no es ese dato entonces considerarlo como dato valido a m,enos que este contenga un par invalido. De hecho la funcion detecta esos pares invalidos y por lo tanto te regresa un dato FF, indicando que el dato recibido es invalido.
Saludos,
Elreypic.