Hallo, allerseits!

Ich hab eine Frage zu einem altbekannten Problem: Spannung messen mit dem Atmega8...
Ich weiß, das wurde schon oft durchgekaut und ich habe mich heute schon den ganzen Tag durch alle möglichen Internetseiten, insbesondere der Roboternetz- und Mikrocontroller.net- Suche gewühlt, aber nichts passendes gefunden...
Bislang habe ich immer nur mit der C-Control zu tun gehabt und möchte mich nun auch mit den AVRs befassen...
Um mir den Einstieg zu erleichtern, hab ich auf mikrocontroller.net erfolgreich das Tutorial durchgearbeitet (allerdings mit einem Atmega8-16PC) und möchte jetzt den Teil mit dem AD-Wandler ein wenig vertiefen.
Dazu sollen Spannungen von 0 bis 5 Volt gemessen und über UART ausgegeben werden.

Probeweise habe ich mir folgenden Code zusammen gewurschtelt, welcher sich im Nachhinein aber als völliger Quatsch herausstellt hat...
Code:
.include "m8def.inc"

.def temp = r16
.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

        ldi r16, 0x00
        out DDRD, r16     				  ;Port D durch Ausgabe von 0x00 ins
                          				  ;Richtungsregister DDRD als Eingang konfigurieren

loop:

        in r16, PIND      				  ;an Port D anliegende Werte (Taster) nach r16 einlesen
        rcall serout                      ;Unterprogramm aufrufen
        ldi temp, 10
        rcall serout
        ldi temp, 13
        rcall serout

        rjmp loop

serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm
Abfragen möchte ich nach Möglichkeit PD0 und den gemessenen Wert in ein Register speichern, um ihn nachher an ein LCD oder über die serielle Schnittstelle (UART) auszugeben...

Reicht es einfach, AREF an 5V zu legen oder muss ich Softwareseitig noch etwas einstellen?
Was muss ich machen, damit mein Code doch noch funktioniert.

Bei Assembler möchte ich auch gerne bleiben, da es mich irgendwie juckt, auch damit programmieren zu können...

Ich weiß, dass ich viel verlange, da das Thema ADC ja schon sehr oft besprochen wurde, aber ich komme immer noch mit der einfachen AD-Port-Abfrage der C-Control durcheinander...

Mit freundlichen Grüßen,

Philipp Wehner