Por lo que veo estas enviando por UART sin entrar en detalles con el codigo.
puts() imagino que la funcion espera encontrar un caracter nulo para terminar de enviar (caracter nulo que posee toda string al ultimo, busca en google como esta formada una string en C), lo cual veo 2 problemas:
- Que posiblemente tome como caracter nulo alguna variable que sea igual a 0
- O que todas sean 1 y no exista un caracter nulo al final
Otro tema a hablar, estas usando un BYTE completo ( 8bits ) para solo tener el estado de 0 o 1, lo cual podrias compactarlo todo y que quede en 3 bytes como habiamos dicho.
Con respecto al receptor es claro el por que no te funciona.
Estas asginando al reves las variables, lo que recibis va a al array dato[], pero vos estas copiando las otras variables en el array. es decir sobreescribiendo los datos.
Ademas hay otras cosas mas
En fin estas:
- Desperdiciando memoria a lo loco, creaste 2 varaibles de 8 bits para guardar el mismo resultado. en total en el receptor usas 20 + 20 variables de 8 bits, es decir 40 bytes, y solo necesitarias 3 bytes, 6 si deseas tenerlos mientras lo trabajas y va llegando la nueva informacion, Ademas hace mas corta la transmision de los datos el que sean menos.
- Estas usando delays cuando existe una transmision por UART y sin interrupciones, lo cual significa que vas a sobreescribir muchos datos de los que llegan, eso para vos significa que los datos que lleguen van a venir en cualqueir orden.
En realidad estas usando delays por demas, es una locura de delays, en pocas palabras: los delays son MALOS. Lo ideal serian interrupciones.
- Esta el problema del caracter nulo que ya comente ( Aunque en el receptor no creo que exista problema alguno, pero si en el transmisor ).
- Usando goto, cuando no deberias, para eso tenes las funciones en C como el while(1) si queres hacer un bucle infinito
PD:
Te recomiendo primero hacer una transmision simple de 1 byte por UART (entre los 2 PICs), en el receptor usa interrupciones, luego de ahi en adelante se le va agregando el ADC, y todas las demas entradas.
Y con respecto a que sea inalambrica no se como pensas enviar esos datos con la UART asi. A no ser que poseas un modulo que se comunique mediante la UART. Pero al menos por ahora para la simulacion y que esten unidos por cables, si todo eso funciona entonces quiere decir que el envio y tratado de los datos esta bien y solo te faltaria trabajar en la interface para enviarlo por RF.