Soo ich denk ich hab das Programm fertig^^.
Könnte das funktionieren oder hab ich was grundlegendes verpeilt?!?

Code:
#include <avr/twi.h>
#include <avr/delay.h>
#define MESSUNG 0x51
#define SRF10_1	0xE0
#define AUSGABE 0xFF

void i2c_start(void)
{
	TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);			//Sende START Bedingung
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;
}

void i2c_stop(void)
{
	TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);			//STOP signal (kann jederzeit benutzt werden)
}

int i2c_read(int adresse,int anweisung)
{
	i2c_start();
	TWDR = adresse;										//Byte in Daten-Register schreiben + LESEN
	TWCR = (1<<TWINT)|(1<<TWEN);						//Starte Übertragung
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;

	TWDR = anweisung;									//Byte in Daten-Register schreiben
	TWCR = (1<<TWINT)|(1<<TWEN);						//Starte Übertragung
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;
		
	TWCR = (1<<TWINT)|(1<<TWEN);						//Byte von Slave empfangen
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;
	int byte = TWDR;
	i2c_stop();
	return byte;
}

void i2c_send(int adresse,int anweisung)
{
	i2c_start();
	TWDR = adresse + 1;									//Byte in Daten-Register schreiben + SCHREIBEN
	TWCR = (1<<TWINT)|(1<<TWEN);						//Starte Übertragung
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;

	TWDR = anweisung;									//Byte in Daten-Register schreiben
	TWCR = (1<<TWINT)|(1<<TWEN);						//Starte Übertragung
	while(!(TWCR&(1<<TWINT)))							//Warte bis Übertragung beendet ist
		;
	i2c_stop();
}


void main(void)
{
	int value;
	initLcdUart();
	rprintf("init done!");
	while(1)
	{
		i2c_send(SRF10_1,MESSUNG);
		delay_ms(100);
		value = i2c_read(SRF10_1;AUSGABE);
		rprintf("value: %i", value);
		delay_ms(500);
	}
}