vielen dank für die tipps!

mittlerweile scheint es u funktionieren, aber die 7-segment an der der wert ausgegeben werden soll, zeigt nur eine null an. (verzweiflung macht sich breit =) )

hier habe ich mal das gesamte programm:
Code:
#define F_CPU 16000000
#include <avr/io.h>



int16_t main ()
{	
	// port B und D werden als ausgang definiert
	DDRA = 0x00;
	DDRB = 0x1f;
	DDRC = 0x00;
	DDRD = 0xff;
	
	//variablen
	int y;	
	int hunderter;
	int zehner;
	int einer;
	int16_t x;
	
	ADMUX |= (1<<REFS0);
	ADCSRA |= (1<<ADEN) | (1<<ADATE) | (1<<ADSC) | (1<<ADPS2) | (1<<ADPS0);	
	x = ADCW;	// eingangswert wird der variable x übergeben
	y=x/4;		// x wird durch 4 geteilt (von 10 auf 8 bit)

	// ----- ab hier wird die 8-bit zahl auseinander genommen
	// die hunderter stelle
	hunderter=y/100; 
	hunderter=hunderter%10; 

	switch (hunderter)
                 {
				 case 1:
				 	PORTD |= (1<<PD3) | (0<<PD4) | (0<<PD5) | (0<<PD6);
					break;
                 case 2:
                 	PORTD |= (0<<PD3) | (1<<PD4) | (0<<PD5) | (0<<PD6);
                    break;
				 // abschaltung der hunderter stelle bei kleineren zahlen durch schalten auf high
				 default :
				 	PORTD |= (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6);
					break;
                 }

	zehner=y/10;
	zehner=zehner%10; 

	// abschaltung der zehner stelle wenn hunnderter und zehner gleich 0 ist
	if (hunderter==0 && zehner==0)
	{
				 PORTB |= (1<<PB4);
				 PORTD |= (1<<PD0) | (1<<PD1) | (1<<PD2);
	}
	else

	switch (zehner)
                 {
                 case 0:
				 		PORTB |= (0<<PB4);
						PORTD |= (0<<PD0) | (0<<PD1) | (0<<PD2);
                       break;
                 case 1:
				 		PORTB |= (1<<PB4);
						PORTD |= (0<<PD0) | (0<<PD1) | (0<<PD2);
                       break;
                 case 2:
				 		PORTB |= (0<<PB4);
						PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2);
                       break;
                 case 3:
				 		PORTB |= (1<<PB4);
						PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2);
                       break;
                 case 4:
				 		PORTB |= (0<<PB4);
						PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2);
                       break;
                 case 5:
				 		PORTB |= (1<<PB4);
						PORTD |= (0<<PD0) | (1<<PD1) | (0<<PD2);
                       break;
                 case 6:
				 		PORTB |= (0<<PB4);
						PORTD |= (1<<PD0) | (1<<PD1) | (0<<PD2);
                       break;
                 case 7:
				 		PORTB |= (1<<PB4);
						PORTD |= (1<<PD0) | (1<<PD1) | (0<<PD2);
                       break;
                 case 8:
				 		PORTB |= (0<<PB4);
						PORTD |= (0<<PD0) | (0<<PD1) | (1<<PD2);
                       break;
                 case 9:
				 		PORTB |= (1<<PB4);
						PORTD |= (0<<PD0) | (0<<PD1) | (1<<PD2);
                       break;
                 default:
				 		PORTB |= (1<<PB4);
						PORTD |= (1<<PD0) | (1<<PD1) | (1<<PD2);
                      	break;
                 }
	// anzeige der einer stelle
	einer=y%10;

	switch (einer)
                 {
                 case 0:
                       PORTB |= (0<<PA0) | (0<<PA1) | (0<<PA2) | (0<<PA3);
                       break;
                 case 1:
                       PORTB |= (1<<PA0) | (0<<PA1) | (0<<PA2) | (0<<PA3);
                       break;
                 case 2:
                       PORTB |= (0<<PA0) | (1<<PA1) | (0<<PA2) | (0<<PA3);
                       break;
                 case 3:
                       PORTB |= (1<<PA0) | (1<<PA1) | (0<<PA2) | (0<<PA3);
                       break;
                 case 4:
                       PORTB |= (0<<PA0) | (0<<PA1) | (1<<PA2) | (0<<PA3);
                       break;
                 case 5:
                       PORTB |= (1<<PA0) | (0<<PA1) | (1<<PA2) | (0<<PA3);
                       break;
                 case 6:
                       PORTB |= (0<<PA0) | (1<<PA1) | (1<<PA2) | (0<<PA3);
                       break;
                 case 7:
                       PORTB |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (0<<PA3);
                       break;
                 case 8:
                       PORTB |= (0<<PA0) | (0<<PA1) | (0<<PA2) | (1<<PA3);
                       break;
                 case 9:
                       PORTB |= (1<<PA0) | (0<<PA1) | (0<<PA2) | (1<<PA3);
                       break;
                 default:
				 		PORTB |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3);
                        break;
                 }
return(0);	//ende und neustart
}
wo liegt der da der fehler?

greetz
horsty