Hier gibts auch einen für Assembler. Ist für den Mega32, sollte sich jedoch problemlos umschreiben lassen:

Code:
;**********************************************
;*
;* 10 bits A/D converter demo
;*
;**********************************************

.include "C:\VMLAB\include\m32def.inc"

;  Registers definitions
;
.def temp = r16
; my Def
;**********************************************
;.equ    ADTS2    =7
;.equ    ADTS1    =6
;.equ    ADTS0    =5
;**********************************************
;  Reset and interrupt vectors
;
.cseg
;*********************************************************************
.org $00               ; 1 $000 Reset Go to Reset handler
	rjmp start
.org $02
	rjmp dummy
.org $04
	rjmp dummy
.org $06
	rjmp dummy
.org $08
	rjmp dummy
.org $10
	rjmp dummy
.org $12
	rjmp dummy
.org $14
	rjmp dummy
.org $16
	rjmp dummy
.org $18
	rjmp dummy
.org $20
	rjmp ad_vector	 ; ADC complete
.org $22
	rjmp dummy
.org $24
	rjmp dummy
.org $26
	rjmp dummy
.org $28
	rjmp dummy


;	rjmp ad_vector   	; ADC
;***********************************************
dummy:
	nop
	nop
	nop
	nop
	reti
;***********************************************
;***********************************************
; ADC complete interrupt service
;
ad_vector:

   in temp, ADCH
  	sbi	ADCSR,ADSC	; StartConversion
sei
  ret

;***********************************************
;  Reset handler
;
start:
	
	clr	temp		; first clear all registers
   out 	ACSR,temp
	out 	ADMUX,temp
	out 	ADCSR,temp
	out	SFIOR,temp
	
	ldi 	temp,high(RAMEND)
	out   sph,temp
	ldi	temp,low(RAMEND)
	out	spl,temp
	
   ; ldi temp, $AB    ; Power on ADC; select prescaler (/8); free running
   ; out ADCSR,temp   ; and enable end of conversion interrupt


	sbi	ADCSR,ADEN	; ADC-Enable
	sbi	ADCSR,ADIE	; ADC-EnableEnable Interrupt
	sbi	ADCSR,ADPS2	; SET Prescale to //
	cbi	ADCSR,ADPS1	; 		Divisions Factor //
	cbi	ADCSR,ADPS0	; 		by 16

	sbi	ACSR,ACIE	; ACIE: Analog Comparator Interrupt Enable
	sbi	ACSR,ACIS1	; ACIS1, ACIS0: Analog Comparator //
	sbi 	ACSR,ACIS0	;   Interrupt Mode Select //

	sbi ADMUX, ADLAR ; Get 8 most significant bits in ADCL	
	
	nop
   nop
   nop              ; Leave some time to stabilize before starting
   nop

   sbi	ADCSR,ADSC	; StartConversion

   sei              ; A warning must be issued here!!. 8 is not enough
                    ; as prescaler factor to obtain a 50-200 KHz
                    ; recommended ADC clock

forever:
   rjmp  forever  ; Infinite loop, interrupted by ADC conversions
Ich hab den Code jedoch nicht ausprobiert - beim groben überfliegen sieht es jedoch recht gut aus ...

Grüße
Flite