nabend euch allen,

heute war mal wieder bastelstunde, weil ich die letzten tage nicht so viel zeit hatte.

mit dem angepassten code funktionierte das ganze gut, allerdings nur einmal...

also das ganze dann irgendwie in eine schleife packen...

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


uint8_t y;


int main(){
    // port B und D werden als ausgang definiert 
   	DDRB = 0x1f; 
   	DDRD = 0xff;
	   
	uint16_t AD();
	if (y>=0){
		uint8_t LED();
		}
	else
	main();
}


uint16_t AD(void) 
{    
   //variablen     
   uint16_t x;
    
	ADMUX |= (1<<REFS0); //AVCC als Referenzspannung wählen
	//Prescaler auf 128 einstellen und ADC aktivieren
	ADCSRA = (1<<ADPS0) | (1<<ADPS2) | (1<<ADEN);

	ADCSRA |= (1<<ADSC);
  	while(ADCSRA & (1<<ADSC)){
    	;//Konvertierung abwarten
  	}
   x=ADC;   // eingangswert wird der variable x übergeben 
   y=x/4;      // x wird durch 4 geteilt (von 10 auf 8 bit) 
}

uint8_t LED(void){
   
   int hunderter;
   int zehner;
   int einer;
   
   // ----- 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; 
                 }
main();   //ende und neustart 
}
Kompiler sagt:
Code:
Build succeeded with 0 Warnings...
aber ich bekomm trotzdem nur 3 nullen angezeigt...

greetz horsty[/code]