also der schalt plan sieht so aus, dass ich den adc port direkt mit gnd verbinde und di programmzeilen:
header:
Code:
uint16_t adcwert(uint8_t kanal)
{
	uint16_t wert = 0; //Variable für Ergebnis deklarieren

	ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);	//ADEN aktiviert überhaupt erst den internen ADC-Wandler, ADPS2 bis ADPS0 stellen den verwendeten Prescaler ein, denn die Wandlerfrequenz muss immer zwischen 50 und 200 kHz liegen! Der Prescaler muss bei 16MHz also zwischen 80 und 320 eingestellt werden, als einzige Möglichkeit bleibt hier 128 (=alle auf 1).   

	ADMUX = kanal;
	//ADMUX = (1<<REFS1)|(1<<REFS0); //Einstellen der Referenzspannung auf "extern", also REFS1 und REFS0 auf "0" - daher auskommentierte Zeile
	
	ADCSRA |= (1<<ADSC);	//nach Aktivierung des ADC wird ein "Dummy-Readout" empfohlen, man liest also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen"      
    while(ADCSRA & (1<<ADSC)) {} //auf Abschluss der Konvertierung warten
	wert = ADCW;	//ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten Wandlung nicht übernommen.
 
	/* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
	wert = 0; 
	for(uint8_t i=0; i<4; i++)
	{
		ADCSRA |= (1<<ADSC); 	//eine Wandlung "single conversion" starten
		while(ADCSRA & (1<<ADSC)) {} 	//auf Abschluss der Konvertierung warten
		wert = wert + ADCW;	 //Wandlungsergebnisse aufaddieren
    }
	
	ADCSRA &= ~(1<<ADEN);	//ADC deaktivieren
 
	wert = wert/4;		//Durchschnittswert bilden
 
	return wert;
}
und in der main funktion:
Code:
        int adc=0;
        char l[10];
        adc=ReadChannel(0);
	snprintf (l, (size_t)10, "%d", adc);
	lcd_clrscr();
	lcd_puts(l);
        waitms(200);
lg tobi

PS:bitte verzeiht mir meine programmierfehler falls vorhanden^^