Si... pero cuando me refiero a un protocolo no me refiero al protocolo de bajo nivel del rs232, este no ve byte solo ve bit, el problema esta en que cuando la rutina de software esta chequeando la entrada para leer el carácter, se produce la mayoria de las veces un fallo de sincronismo con el byte que envias y entonces no encuentra la cabecera, del byte recibido ya que la rutina no envia solo el dato tuyo a de mas le incorporas los bit propios del protocolo de bajo nivel, que seria el pasar de bit alto a bajo para comenzar la lectura, recuerda que aunque sea una comunicación asincrona en el fondo se necesita algo que sincronice de alguna manera los datos y aquí comienzan los fallos por eso la usart por hardware es el mejor sistema para lograr que esto funcione... porque ignora todos los bit basura que le llegan hasta encontrar el bit de cabecera o sincronismo con el dato que viene, esto simplemente acorta el camino + el protocolo de alto nivel al que me refiero se soluciona el problema... en fin mas o menos es esto...
De todas formas planteate esto... cuando envias un dato, recuerda que lo que se envia son bit en fila india, como puedes estar seguro que en ese mismo momento la rutina esta leyendo la entrada y no esta haciendo un salto o cualquier otra cosa para reiniciarse... para conseguir que la rutina estuviera siempre en la parte del programa de lectura se necesitaría muchos megas en el cristal del micro... cuando pueda te preparare algo para que lo pruebes...