Naja zum einen ist ein Simulator =/= Realität. Der Simulator checkt es auch nicht das ich das ADC-Enable Bit auf 0 setze.....er macht trotzdem eine Wandlung
Und ja ich bin mir ziemlich sicher. Ich habe dein Programm kopiert und es auf mein RN-Control aufgespielt. Als ich dann mit einem Widerstand eine Verbindung von GND zu ADC.0 gesteckt habe und das Programm aufgespielt habe hat mir TeraTerm eine 0 angezeigt. Sobald ich den Widerstand zwischen Vcc und ADC.0 gesteckt und es nochmal aufgespielt habe kam der maximal Wert vom ADC raus.
Das Problem an deiner Variante ist das es ein bestimmtes Register gibt. Sobald dieses Register auf 1 ist wird eine Wandlung gestartet. Dieses Bit wird nach einer Wandlung hardwarebedingt auf 0 gesetzt d.h. um eine neue Wandlung zu starten muss das Bit wieder auf 1 gesetzt werden. Und dies scheint der Simulator im Bascom auch nicht so zu peilen.
Du hast ja folgende Bitfolge:
Adcsra = &B11000110
Das 7. Bit ist dafür da den ADC zu aktivieren. Sobald das 0 ist ist der ADC aus. Das 6. Bit ist dafür da eine Wandlung zu starten. Sobald es 1 ist wird eine Wandlung gestartet und nach der Wandlung durch die Hardware auf 0 gesetzt.
Sowas kannste am besten live mal ausprobieren, weil ich hab die Erfahrung gemacht das man in solchen Sachen dem Simulator nicht trauen kann. Und wenn du mal genauer drüber nachdenkst ist das auch logisch das er nur eine Wandlung macht, weil das Bit für die Wandlung halt nach der Wandlung 0 wird und nirgends neu gesetzt wird.
Im Free-Run Modus macht der ADC die ganze Zeit Wandlungen. Nur der Unterschied zu dem Single-Shot Modus ist das er bei dem Single-Shot Modus nach jeder Wandlung die, durch die Wandlung erzeugten Bytes umwandelt und evtl. ausgibt. Dieser Vorgang verbraucht vieeeeeeeeeeeeeeel Zeit.
Im Free-Run Modus ist das anders. Da macht er auch die ganze zeit Wandlungen nur er verarbeitet das Ergebniss nicht weiter. Er verarbeitet es nur weiter wenn du es möchtest. Wenn du mal unten im Simulator schaust siehst du wieviele Taktzyklen so eine einfache "Print" Ausgabe braucht (sind glaub ich ein paar 3000 Zyklen wenn ich mich nicht vertan habe heute Mittag). Und wenn du nun ein Hochfrequentes Signal sampeln willst z.B. bei der Digitalisierung von Musik ist es natürlich richtig dumm wenn du nach jeder Wandlung 3000 Zyklen extra brauchst um das Ergebniss zu haben. In so einem Fall lässt du den ADC im Free-Run Modus laufen und nach sag ich mal 1 Minute machst du eine Pause und verarbeitest den ganzen Stabel an Bytes in einem Rutsch weiter.
Danach startest du ein neues Sampling. Der Vorteil ist halt das der ADC quasi seine eigene "Geschwindigkeit" selber vorgibt und nicht durch sowas lästiges wie einen "Print" Befehl behindert wird.
Ach und zu dem Bit ADLAR. Das hier steht in der Doku:
"Das Bit ADLAR legt fest, ob das Ergebnis der AD-Umsetzung linksbündig (ADLAR=1,
xxxxxxxxxx000000) oder rechtsbündig (ADLAR=0, 000000xxxxxxxxxx) im 16-Bit Ergebnis
abgelegt wird".
Und das es nicht funktioniert hat liegt sicher auch am Simulator

So ich hoffe das ist soweit alles schlüssig und verständlich und vorallem richtig! Hab die ganzen Sachen mit Hilfe der Datenblätter und einer netten Doku aus dem Internet über den ADC des Mega32 erarbeitet.

So hier mal die Doku:
http://www.ckuehnel.ch/Download/megaAVR%20ADC.pdf

Und hier mal das "überarbeitete" Programm
Code:
'Controller
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

'Stacks
$framesize = 80
$hwstack = 80
$swstack = 80

'Variablen
Dim Wertl As Byte
Dim Werth As Byte

Config Pina.0 = Input
Porta.0 = 0

Enable Interrupts

Do
Admux = &B01100000
Adcsra = &B11000110

'Übergabe der Registerinhalte in Variablen
wertl = adcl
Werth = Adch

'Ausgabe der beiden Registerwerte
Print Wertl
print werth
Wait 1

Loop
End