Uysh, wenas.
Yo te podria pasar el codigo en C... si te sirve... lo tengo por aqui guardado tambien ^^U Ademas para ese mismo PIC te sirviria tal cual...
De todas formas hacerlo no es muy complicado, tienes que jugar, como dice jonathan, con la interrupcion de un Timer para contar los 40ms.
Te intento explicar como lo solucione yo para una practica que tuve que hacer:
- Configuraba el Timer2 para que generase un overflow y su correspondiente interrupcion, cada 16 tics de reloj.
- Sabes que cada tic corresponde a x microsegundos ( depende del reloj del sistema )
- Asi, cada vez que salte la interrupcion del Timer2 habran pasado 16x microsegundos.
- Tu vas "contando" interrupciones hasta que sumen los 40ms y entonces activas un flag.
En el proceso principal haces que:
- Se ponga el pin que va al sensor a 1
- Habilitas la interrupcion del timer2 y lo arrancas desde 0
- Vas comprobando el flag ( con una variable de 1bit basta ): cuando se active significa que han pasado 40ms.
- Pones el pin del sensor a 0
- Deshabilitas la interrupcion del timer2
SEGURAMENTE, no sea la mejor solucion... pero bueno, a mi me funciono xD
Un saludo,
Hector