Pocher ahora si k rula, el problema estaba en k el asm que tenia yo habia un error, rb0 estaba como salida y rb7 como entraba y por esto no vaia nada en el osciloscopio.
Respeto a los numeros no son a boleo, los e elegido porque son los que hay en la libreria de subrrutinas y las e escogido de manera que haya un retardo entre dos pulsos por esto no son muy simetricos.
Respecto al emisor para encender un rele u otro va a "medir la longitud del pulso"
Testeo rA4 que es donde entra la señal, si es 1 vuelvo a testear al cabo de 400microsegundos de manera que cuando teseta, si el pulso es el que enciende el primer rele detectara un 0 y si es el que enciende el segundo rele detectara un 1.
Con el codigo lo veras mas claro.
Codigo:
btfss PORTA,4 ; Testea RA4
goto MidePulsos ; Es 0 y vuelve a testear
call Retardo_200micros ; Espera a ver si termina 1 el pulso
call Retardo_200micros ;
btfss PORTA,4 ; Velve a testear
goto ContadorRL1 ; Es 0, ha terminado el 1 pulso, va al contador del 1 rele
call Retardo_200micros ; Es 1, espera a ver si termina el segundo pulso
btfss PORTA,4 ; Velve a testear.
goto ContadorRL2 ; Es 0, ha terminado el 2 pulso, va al contador del 2 rele
call Retardo_500micros ; Es 1, espera que termine el tercer pulso
btfss PORTA,4 ; Vuelve a testear
goto ContadorRL3 ; Es 0, ha terminado el 3 pulso, va al contador del 3 rele
call Retardo_5ms ; Es 1, espera a ver si termina el 4 pulso
btfss PORTA,4 ; Vuelve a testear
goto ContadorRL4 ; Es 0, ha terminado el 4 pulso, va al contador del 4 rele
call Retardo_20ms ; Es 1, espera a ver si termina el 5 pulso
btfss PORTA,4 ; Vuelve a testear
goto ContadorRL5 ; Es 0, ha terminado el 5 pulso, va al contador del 5 rele
call Retardo_100ms ; Es 1, espera a que termine el 6 pulso
btfss PORTA,4 ; Vuelve a testear
goto ContadorRL6 ; Es 0, ha terminado el 6 pulso, va al contador del 6 rele
call Retardo_20ms ; Es 1, espera a que termine el 7 pulso
btfsc PORTA,4 ; Vuelve a testear
goto ContadorRL7 ; Es 1, detecta el 7 pulso, va al contador del 7 rele
Ahora estoy liado con el codigo de los contadores, a ver si me sale.
Los contadores son para saber si es la primera o la segunda vez que le llega el pulso.
Al principio el contador tiene que valer 2 y cada vez que le llegue el pulso correspondiente restar 1, de manera que si el resultado es diferente de 0 enciende el rele y si es 0 lo apaga.