@m_herr: 'tschuldige, war ein Unterstellung

Das ist das, was Bascom draus macht, wer mag, kann die Zyklen zählen, viele sind es ja nicht

Code:
----------------------------------------------
 Ad0 = 0
----------------------------------------------
	LDI	r24,0x00
	LDI	r25,0x00
	LDI	XL,0x60
	LDI	XH,0x00
	ST	X+,r24
	ST	X,r25

----------------------------------------------
      For X = 1 To 16
----------------------------------------------
	LDI	r24,0x01
	STS	0x0062,r24
L_0x008C:
	LDS	r16,0x0062
	CPI	r16,0x10
	BRLO	L_0x009A
	BREQ	L_0x009A
	JMP	L_0x00D6
L_0x009A:
----------------------------------------------
   Mtemp = Getadc(0)
----------------------------------------------
	LDI	r24,0x00
	OUT	ADMUX,r24
	CALL	L_0x00F6
	LDI	XL,0x63
	LDI	XH,0x00
	ST	X+,r24
	ST	X,r25

----------------------------------------------
  Ad0 = Ad0 + Mtemp
----------------------------------------------
	LDI	XL,0x60			ad0
	LDI	XH,0x00
	LD	r16,X+
	LD	r17,X

	LDI	XL,0x63			mtemp
	LDI	XH,0x00
	LD	r20,X+
	LD	r21,X

	ADD	r16,r20			add
	ADC	r17,r21

	LDI	XL,0x60			store ad0
	LDI	XH,0x00
	ST	X+,r16
	ST	X,r17

----------------------------------------------
  Next X
----------------------------------------------
	LDI	XL,0x62			x
	LDI	XH,0x00
	LD	r24,X
	SUBI	r24,0xFF		+1
	ST	X,r24			store x
	BRCC	L_0x00D6		exit for..next
	JMP	L_0x008C		continue
L_0x00D6:

----------------------------------------------
      Shift Ad0 , Right , 4
----------------------------------------------

	LDI	r25,0x04
	LDI	XL,0x60
	LDI	XH,0x00
	CALL	L_0x0108
----------------------------------------------
END
----------------------------------------------
	CLI
L_0x00E2:
	RJMP	L_0x00E2

----------------------------------------------
GETADC()
----------------------------------------------
L_0x00F6:
	SBI	ADCSR,ADSC
L_0x00F8:
	SBIC	ADCSR,ADSC
	RJMP	L_0x00F8     	wait bit clear
	SBI	ADCSR,ADSC	set bit
L_0x00FE:
	SBIC	ADCSR,ADSC	
	RJMP	L_0x00FE     	wait bit clear
	IN	r24,ADCL	read low
	IN	r25,ADCH	read high
	RET
Die meiste Zeit vergeht beim Warten auf den ADC