Code:
getadc:
  clr ergebnisl
  clr ergebnish
  ldi tmp,(1<<anzahl)
start:
 sbi ADCSR,ADSC
warte:
 sbis	ADCSR, ADIF
 rjmp warte
 in	tmp2, ADCL
 add  ergebnisl, tmp2
 in	  tmp2, ADCH
 adc	ergebnish, tmp2
 dec	tmp
 brne  start
 ldi	tmp,anzahl
teile:
  lsr ergebnish
  ror ergebnisl 
  dec	tmp
 brne teile
 ret
Das sollte so funktionieren

tmp und tmp2 sollen 2 Register >= R16 sein
ergebnisl und ergebnish egal welche
anzahl ist dann eine konstante, wie oft die Schleife durchlaufen soll.
In Deinem Fall 16.
Das Ergebnis steht dann in ergebnisl und ergebnish.
Der Muxkanal muß auch davor eingestellt werden.
Das wäre dann pooling, ich finde es aber trotzdem besser, wenn das in ein Interrupt rein käme.
Ich hoffe, daß Du damit was anfangen kanst.

Gruß Sebastian
P.S.
@Picknick,
hab ich was falsch gesagt ?