Ich hab den Code auch nochmal ein wenig geändert, außerdem hab ich noch vergessen zu sagen, dass ich den invertierten DCF-Ausgang benutze.

Code:
#include <avr/io.h>

#define BAUD 9600UL

#include "../classes/rs232/UART/UART.h"
#include "../classes/time/time.h"

int main(void)
{
uint8_t i=0;
uint8_t c=0;
char dcf[60];
char buf[256];
buf[0]='\0';
dcf[0]='\0';

DDRC&=~(1<<PC0);		//EINGANG PC0
DDRD|=(1<<PD5) | (1<<PD6);
PORTC|=(1<<PC0);		//PULLUP aktivieren

uart_init();

i=0;
c=0;
while(1)
{
	if(i<=59)
	{
		while((PINC & (1<<PC0)))
		{
		PORTD|=(1<<PD5);
		PORTD&=~(1<<PD6);
		_delay_ms(10);
		c++;
		}
	
		PORTD&=~(1<<PD5);
		PORTD|=(1<<PD6);
	
	
if(c>=8 && c<=23)
{
	if(c<=10)					//100msec == 0
		{
		dcf[i]='0';
		}
		
		if(c>10)					//200msec == 1
		{
		dcf[i]='1';
		}


		c=0;

	i++;
}
	}
	else
	{
	dcf[i]='\0';
	send(dcf);
	send("\r\n");
	i=0;
	}
}

return 0;
}
Mit dem Code erhalte ich nach ca. 3-4 Minuten recht anschauliche Werte. Zumindest, wurden einige Teile, wie zum Beispiel die Minuten korrekt interpretiert.

Gruß
cesupa