Code:
uint16_t getAbstand(uint8_t sensor) {					//Ultrschallsensoren abfragen
	uint8_t tmp_sreg;
	tmp_sreg = SREG;
	cli();
	uint16_t ergebnis;
	
	DDRC |= sensor;										//Ausgang high
	PORTC |= sensor;
	_delay_us(20);
	PORTC &= ~sensor;									//Pin auf Eingang setzen
	DDRC &= ~sensor;
	while(!(PINC & sensor));							//auf Sensorantwort warten
	TCNT1 = 0;											//Counter Register auf 0 setzen
	while(PINC & sensor);								//warten bis Signalende

	ergebnis=TCNT1;										//Signallänge auslesen
	ergebnis=ergebnis*20;								//Abstand berechnen
	SREG=tmp_sreg;
	return (uint16_t) ergebnis/29;
}
der Timer 1 läuft mit Prescaler 64, die Ergebnisse sind dann in mm.