Beim schnellen Drüberschauen ist mir eigentlich nichts
Grossartiges aufgefallen (was nicht unbedingt viel heissen
mag).
Wenn du springende Werte bekommst, solltest du erst mal
feststellen, ob das ein Software oder ein Hardware Problem
ist.
Ich würde mal folgendes Versuchen:
Stell den ADC Eingang auf 5V. Theoretisch müsste jetzt
vom ADC immer ein Wert von 1023 kommen.
Programmier dir ein Programm, welches folgendes tut:
1) ADC initialisieren
2) ADC einlesen
3) Wert mit 1000 vergleichen
4) Wenn kleiner als 1000, eine LED einschalten
5) Weiter bei 2)
Und das lässt du jetzt einfach mal eine Zeitlang laufen.
Wenn irgendwann die LED angeht, dann kam vom ADC ein Wert
unter 1000 und damit hast du nachgewiesen, dass der Eingang
springt ( = Hardwareproblem).
Wenn hingegen nach 1 Stunde, der Wert immer noch nicht gesprungen
ist, dann hat dein richtiges Programm irgendwo ein Software-
problem.
Nur zur Sicherheit:
* Was hast du mit dem AREF Pin des Prozessors gemacht?
* Wie sieht deine Eingangsbeschaltung am ADC Pin aus.