hallo,

das mit ADLAR war ein guter tipp!! danke

das ganze funktioniert jetzt auch soweit, allerdings wieder nur jeweils einmal. anscheinend funktioniert die schleife nicht....

Code:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <stdint.h>



int main(){

	//variablen     
	int y;
	int hunderter;
    int zehner;
    int einer;
    
	// port B und D werden als ausgang definiert 
   	DDRB = 0x1f; 
   	DDRD = 0xff;
	
	ADMUX |= (1<<REFS0) | (1<<ADLAR); //AVCC als Referenzspannung wählen
	//Prescaler auf 128 einstellen und ADC aktivieren
	ADCSRA = (1<<ADPS0) | (1<<ADPS2) | (1<<ADEN);
	
	while (1){

	ADCSRA |= (1<<ADSC);
  	while(ADCSRA & (1<<ADSC)){
    	;//Konvertierung abwarten
  	}
   y=ADCH;   // eingangswert wird der variable y übergeben 
   
   
   // ----- 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; 
                 }
		}
}