Hallo

Ich muss zugeben dass ich zu Anfang auch t++; da stehen hatte. Hab aber gedacht versuchst es mal auf die alte Variante als mein Programm nicht funktioniert hat... Wollte eben alles ausschließen...
Nun hab ich mal noch den kompletten Code:

Code:
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <lcd.h>
#include <util/delay.h>

#define F_CPU = 12000000L


void long_delay(uint16_t ms);		//Prototyp der Warteschleifen long_delay
void ADC_init(void);				//Prototyp von ADC_init
uint16_t ADC_einlesen(void);		//Prototyp der Einlesefunktion


uint16_t result = 0;				//Variable result deklarieren
char buffer[8];						//buffer_Array für Umrechnung deklarieren
volatile int t=0;			//Variable t für Timer anlegen
int a=0;



int main(void)
{
	ADC_init();						//AD Wandler initialisieren
	ADC_einlesen();
	DDRD  &= ~(1<<DDD2);			//Pin D2 (INT0) als Eingang deklarieren
	PORTD |= (1<<PD2);				//Pull Up für D2 einschalten
	
	DDRB = (1<<DDB0)|(1<<DDB1);		//Port B0 als Ausgang definieren (LED)
	PORTB |= (1<<PB0);				//LED aussschalten
	PORTB |= (1<<PB1);				//LED aussschalten
	
	TCCR0 |= (1<<CS00)|(1<<CS02);	//Timer initialisieren und einschalten
	TIMSK |= (1<<TOIE0);			//TimerOverflow Interrupt freigeben	
	sei();							//Interrupts freigeben
	
	while(t<2760)
	{
		
		
		ADC_einlesen();
		PORTB &= ~(1<<PB0);			//Einschalten der LED an B0
		if(result<350)
		{
			PORTB &= ~(1<<PB1);			//Einschalten der LED an B1
		}
		else
		{
			PORTB |= (1<<PB1);				//wenn result größer, LED ausschalten
		}
	}
	t=0;
				
	while(1);
}
void ADC_init(void)
{
	ADCSRA = (1<<ADEN) | (1<<ADPS0) | (1<<ADPS2);		//ADC amtivieren und Teilungsfaktor auf 32 stellen
	ADMUX = (!(1<<MUX0)) | (!(1<<MUX1)) | (!(1<<MUX2));	//Kanal des Multiplexers wählen (ADC 0)
	ADMUX |= (1<<REFS1) | (1<<REFS0);					//interne Referenzspannung verwenden (2,56V)
	ADCSRA |= (1<<ADSC);								//Dummyreadout starten
	while(ADCSRA & (1<<ADSC));
}
uint16_t ADC_einlesen(void)
{
	uint8_t i;											//Variable i deklarieren
	

	for (i=0; i<3; i++)									//for-Schleife für dreimalige Wandlung
	{
		ADCSRA |= (1<<ADSC);							//Wandlung starten
		while(ADCSRA & (1<<ADSC));						//auf Ergebnis warten
		result += ADC;									//Ergebnis in Variable result schreiben
	}

	ADCSRA &= ~(1<<ADEN);								//ADC deaktivieren
	result /=3;											//result durch 3 teilen
	return result;
}
ISR(TIMER0_OVF_vect)
{
	t=t+1;
}
Was ich eigentlich wie gesagt will, ist dass die while Schleife 1min läuft, und in dieser Zeit immer wieder der Analogwert eingelesen wird und in Abhängigkeit von diesem (größer oder kleiner eines Referenzwertes) ein Port geschalten wird. Das will aber noch nicht so richtig. Die andere LED benutze ich auch um mir anzuzeigen bis "wohin" das Programm bereits funktioniert. Also nicht irritieren lassen...

Grüße!!

Bean