Hola FVP,
parece que no me explique muy bien, si ingresas una señalizacion de control al inicio de cada sesion de uso, es entendible que esa señalizacion de control es para revizar VELOCIDAD, estoy excluye datos ok?, se puede hacer una señalizacion de control empezando por el origen o en la caida del origen, es decir, 1010 o 0101, tomandose en cuenta que aproximadamente 2400 baud seria 2.4kbps, luego entonces si es posible esta señalizacion para decirle al micro en tiempo real ANTES de empezar a enviar informacion (DATOS, ya sea con paridad, sin paridad de 7 u 8 bits), Ahora esto quiere decir que el pic no podra adivinar la velocidad esto seria valido para una aplicacion en especifico que SIEMPRE envie esta señalizacin , no para todas las transmisiones que solo envian datos y ya..
Una opcion es manejar la interupcion de portb.0 para saber cuando es 1 y cuando es cero, y hasta medir el tiempo del cambio, pero que pasa cuando recibes un 00000 y un 11111 , por eso es neceasrio el tiempo y la mejor opcion es hacer una aplicacion ESPECIFICA, es decir que tu pc y el interfaz software que uses(en visual,delphi,c,etc..) envie SIEMPRE una señalizacion de control .
Otra opcion es usar valores mayores de RECEPCION como te comente en el primer post, para una transmision que radica bajo 9600(este es solo un ejemplo por supuesto) puedes poner una recepcion de 9600 y siempre te recibira datos miesntras no exceda esta velocidad.(lo veo la mejor ocpion para tu proyecto). Ahora tu preguntas como capturar tramas,ye te e expuesto varias opciones,luego preguntas por calculo de velocidad, esto tambien podria ser posible de la forma ya mencionada. para saber cuanto estuvo en 1 logico y cambio a cero logico solo basta un FRECUENCIMETRO, pero ya te comente que pasa con los 111111 y con los 00000,... solo es cosa de que empiezes a experimentar, empieza simulando y luego te armas el circuito para pruebas reales
Salu2 pana