Hola.
Mira, tu adquieres en una variable la distancia, la cual esta entre 15 y 600 ese es el valor que debes usar para asignar el tono por medio de un timer, lo puedes hacer directamente o usar una regla de 3 para cuadrar ese valor con la frecuencia que quieres obtener.
La funcion de interrupcion seria algo asi:
#int_TIMER0
void frecuencia_isr(void)
{
++ints_timer0;
if(ints_timer0>=value)
{
ints_timer0=0;
output_toggle(salida);// salida es el pin que defines para la salida del buzzer
}
}
La frecuencia estara determinada por la configuracion del Timer0, y value es el valor que se carga en funcion de la distancia.
Saludos