Sorry, hatte nicht gesehen dass du dort gepostet hattest! Habe dor mittlerweile geantwortet, hier der aktualisierte Code, der aber leider immer noch nicht funktioniert:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <inttypes.h>
#include <compat/deprecated.h>

volatile char s_bit;
volatile uint8_t addresse;
volatile uint8_t code;
volatile char rdy;
volatile uint16_t gesamt[16];
volatile char last_bit = 1;

volatile uint8_t bitnummer = 1;
volatile char ergebnis[20] = "RC5 fertig!";

void init_rc5()
{
 MCUCR |= (1<<ISC01) | (1<<ISC00);;  //wait rising edge
 GICR |= (1<<INT0);    //enable INT0
 TCCR0 |= (1<<CS02);   //Prescaler 256
 cbi(DDRD,PD2);
}

//****************************************************USART******************************

void init_usart(void)
{
 UBRRL |= 0b01100111;
 UCSRB = (1<<TXEN) | (1<<RXEN);
 UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
}

void send_char(unsigned char s)
{
 while (!(UCSRA & (1<<UDRE)));
 UDR = s;
}

void send_string(char *s)
{
 while(*s != '\0')
  {
   send_char(*s);
   s++;
  }
}

//**********************************************************USART-ENDE********************


SIGNAL(SIG_INTERRUPT0)
{
 char test[3];
 uint8_t i;
 if(last_bit == 1) {
 if(TCNT0<139 && bitnummer <= 14) {
	gesamt[bitnummer] = 1;
	last_bit = 1;
	TCNT0 = 0;
	bitnummer++;
	}
 if(TCNT0>139 && TCNT0<194 && bitnummer <= 14) {
	gesamt[bitnummer] = 0;
	last_bit = 0;
	TCNT0 = 0;
	bitnummer++;
	}
 }
 if(last_bit == 0) {
 if(TCNT0<139 && bitnummer <= 14) {
	gesamt[bitnummer] = 0;
	last_bit = 0;
	TCNT0 = 0;
	bitnummer++;
	}
 if(TCNT0>139 && TCNT0<194 && bitnummer <= 14) {
	gesamt[bitnummer] = 1;
	last_bit = 1;
	TCNT0 = 0;
	bitnummer++;
	}
 }
 if(bitnummer == 14) {
	gesamt[1] = 1;
	last_bit = 1;
	bitnummer = 1;
	TCNT0 = 0;
	rdy = 1;
	}
} 
   
   
int main(void)
{
 init_usart();
 init_rc5();
 sei();
 uint8_t i;
 char test[10];
 char wert[10] = "RC5:";
 for(;;)
 {
  if(rdy==1) {
	send_string(wert);
	for(i=9;i<=14;i++) {    // datenbits auslesen
		itoa(gesamt[i],test,2);
		send_string(test);
		}
	rdy = 0;
	}
	
 };
}