Hab mich jetzt entschieden diese überprüfungen wegzulassen. Mein Quellcode sieht jetzt so aus und es gibt auch keien fehler mehr beim compilieren:

Code:
#include <avr/io.h> 
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <stdlib.h> /*für exit*/

/*SD20 Adresse mit Lese- oder Schreibbit*/
#define SD20_W 0xC2
#define SD20_R 0xC3

typedef unsigned char BYTE;
typedef unsigned short WORD;

void i2c_start(BYTE ADRESSE)
{

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);	/*Startbedingung senden*/
while (!(TWCR & (1<<TWINT)));				/*Darauf warten dass TWINT gesetzt wurde was aussagt das die Startbedingung gesendet wurde*/
TWDR = ADRESSE;								/*Slave Adresse in TWDR laden*/
TWCR = (1<<TWINT)|(1<<TWEN);				/*TWINT und TWEN löschen damit die ADRESSE gesendet wird*/ 
while (! (TWCR & (1<<TWINT)));				/*Darauf warten dass TWINT gesetzt wurde was aussagt dass die ADRESSE gesendet wurde*/

}
void i2c_data(BYTE DATA)
{

TWDR = DATA;								/*DATA in TWDR laden*/
TWCR = (1<<TWINT)|(1<<TWEN);				/*TWINT und TWEN löschen damit die DATA gesendet wird*/ 
while (! (TWCR & (1<<TWINT)));			/*Darauf warten dass TWINT gesetzt wurde was aussagt dass die DATA gesendet wurde*/

}
void i2c_stop(void)
{

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);	/*Stopbedingung senden*/

}
int main(void) 
{

i2c_start(SD20_W);
i2c_data(0x01);
i2c_data(0x7F);
i2c_stop();

}
Aber irgendwie tuts das ganze trotzdem nicht. Ich möchte damit gerne den ersten Servo von einem SD20 in die Mittelstellung bringen aber es passiert einfach garnix.