Saludos, yo haria lo sgt:
> Pondría una bucla infinita o de espera de interrupción. Utilizaria como contador algun Timer, digamos el timer 0, configurado para interrumpir cada 200us, 500us o 1ms según lo requerido. Dentro de la rutina de atención del timer incrementaría dos registros contadores (H y L), primero L y cuando desborde entonces H.
Una vez fuera, esperaría por la otra interrupción, la externa por puerto B. Dentro de la rutina de atención de la interrupción externa haría lo que tenga que hacer con el valor de los registros contadores (transmisión, eeprom, etc.), una vez hecho esto el programa debería retornar al punto donde se hace el envío del ultrasonido para empezar el ciclo, o simplemente acabar. Bueno espero haber ayudado…