Ich habe nun ein Programm erstellt, welches den Wert des ADCs in den EEPROM abspeichert. Jedoch erhalte ich die ganze Zeit ungefähr die gleichen Werte, ohne dass ich irgend eine Taste drücke. Diese Werte sind im Bereich 0x0150 bis 0x0180. Wenn ich eine Taste drücke kriege ich auch nur einen Wert dazwischen geliefert. Wo ist der Fehler im Programm?
Wollte eigentlich nur den jeweiligen Wert in den EEPROM speichern, wenn eine Taste gedrückt wird.

Code:
.Include "m32def.inc"
.DEF tmp = R16
.DEF lowad = R17
.DEF highad = R18
.EQU wertadlow = 0x60
.EQU wertadhigh = 0x61

ldi tmp,(1<<ADEN)|(1<<ADPS1)|(1<<ADPS2)
out ADCSRA, tmp
ldi tmp,(0<<REFS0)|(0<<REFS1)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0)
out ADMUX, tmp
sbi ADCSRA, ADSC	;Das Bit ADSC wird gesetzt und der ADC startet.

wait:
sbis ADCSRA,ADIF	;Das ADIF wird abgefragt, ob eine Spannung anliegt.
rjmp wait	;Warteschleife bis Spannung anliegt.

in lowad, ADCL	;Das Low-Byte des ADCs wird ausgelesen.
in highad, ADCH	;Das High-Byte wird ausgelesen.

;Überprüfung ob Werte im sinnvollen Bereich sind.
ldi R21,0x32	;Es wird erst ab Wert 50 in EEPROM geschrieben.
sub R21,lowad
brpl wait

ldi R21,0x02	;Es wird erst ab Wert 768 nicht mehr in EEPROM geschrieben.
sub R21,highad
brmi wait

write1:
sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
rjmp write1

ldi R19, 0xF0	;Festlegen der Zieladresse.
ldi R20, 0x00	

out EEARH, R20	;Die Zieladresse des EEPROM wird übertragen.
out EEARL, R19

;Als Nächstes wird das Low-Byte des ADCs abgespeichert.

out EEDR, highad	;Byte in Zwischenspeicher laden.

;Folgende 2 Befehle sorgen dafür, dass der Wert im Zwischenspeicher nun endgültig in der Zieladresse des EEPROMs abgespeichert wird.

sbi EECR,EEMWE
sbi EECR,EEWE

write2:
sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
rjmp write2

;Nun wird die nächste Zieladresse festgelegt und das High-Byte des ADCs abgespeichert.

inc R19

out EEARL, R19	;Es muss nur das Low-Byte geändert werden.
out EEDR, lowad

sbi EECR,EEMWE
sbi EECR,EEWE
;Ende
Als Referenzspannung habe ich AREF mit Jumper angegeben. (Also 2,56 V.)
Wäre auch gut, wenn jemand das Programm mal in seinem RN-Control testen könnte und mir sagen kann, ob dort die gleichen Werte gespeichert werden.

Danke!