Also hier bisschen Code mit vielen Kommentaren.
Wobei die Defines nicht die eleganteste Lösung sind. Es ist besser du
machst dir ne eigene adc_init() Funktion und setzt dort nur die Bits die du in deinem Fall brauchst.
Code:
#include <avr/io.h>

/* Analog/Digiatl konverting */
#define ADCchannel_init   DDRA=0x00                 // ADC Port als Eingang deklarieren
#define ADCinit           ADCSRA|=(1<<ADEN)         // Teilt dem Board mit das der jeweilige Port für ADC verwendet wird
#define ADCdisable        ADCSRA &=~(1<<ADEN)       // machs das vorherige wieder rückgänig
#define ADCstart          ADCSRA|=(1<<ADSC)         // startet eine konvertierung auf dem gewünschten Kannal/Pin
#define ADCfree           ADCSRA|=(1<<ADATE)        // schaltet den freilaufenden Modus ein
#define ADCvintern        ADMUX=(1<<REFS1) | (1<<REFS0)     // interne Spannungsversorgung
#define ADCinterrupt_on   ADCSRA|=(1<<ADIE)                // ADC interrupt wird freigeschalten
#define ADCprescaler_2    ADCSRA |=(1<<ADPS0)              // gewünschter Teilungsfaktor/Prescaler 
#define ADCprescaler_4    ADCSRA|=(1<<ADPS1)
#define ADCprescaler_8    ADCSRA=(1<<ADPS1) | (1<<ADPS0)
#define ADCprescaler_16   ADCSRA|=(1<<ADPS2)
#define ADCprescaler_32   ADCSRA=(1<<ADPS2) | (1<<ADPS0)
#define ADCprescaler_64   ADCSRA=(1<<ADPS2) | (1<<ADPS1)
#define ADCprescaler_128  ADCSRA=(1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
#define ADCprescaler_reset ADCSRA = ~_BV(ADPS2) & ~_BV(ADPS1) & ~_BV(ADPS0)    // setzt Prescalerbits zurück     
#define ADCchannel_1                                      //gewünschter Kannal z.B bei ATmega32 PINA0 - PINA7
#define ADCchannel_2      ADMUX|=(1<<MUX0)                // bei nicht freilaufen muss ADCchannel_x vor
#define ADCchannel_3      ADMUX|=(1<<MUX1)                // ADCstart kommen dann kann man mit getadc() der 
#define ADCchannel_4      ADMUX= (1<<MUX1) | (1<<MUX0)    // Adcwert des gewählten Kannals auslesen
#define ADCchannel_5      ADMUX|=(1<<MUX2)
#define ADCchannel_6      ADMUX= (1<<MUX2) | (1<<MUX0)
#define ADCchannel_7      ADMUX= (1<<MUX2) | (1<<MUX1)
#define ADCchannel_8      ADMUX= (1<<MUX2) | (1<<MUX1) | (1<<MUX0)
#define ADCchannel_reset  ADMUX= ~(1<<MUX2) & ~(1<<MUX1) & ~(1<<MUX0)
inline unsigned int getadc(void)
{
   while (ADCSRA & (1<<ADSC)) {}          // Warten bis Messung fertig
   return ADC;
}

void main(void)
{
   unsigned int adc_wert;
   ADCchannel_init;
   ADCinit;                   // A/D Converter aktivieren
   ADCvintern;                   
   ADCprescaler_128;
   ADCchannel_1;
   ADCstart;                   // Startet Messung an A/D Pin1 d.h. PINA0
   adc_wert=getadc();
   ADCchannel_reset;
   ADCchannel_2;                   // Startet Messung an A/D Pin2
   ADCstart;
   adc_wert=getadc();
   ADCdisable;
}