Hum, wieso sollte das nicht einfach gehen? Das einzige was dir passieren kann ist, dass du bei der Addition das Carry-Bit gesetzt bekommst, mehr aber auch nicht.
Code:
movfw ADRESL ;lade die 2. Messung in W
addwf ADC_OLDL, ; Addiere diese in die 1. Messung
sknc (oder btfsc STATUS,C) ; overflow in den 9. bit testen
incf ADC_OLDH,f ; ja, dann den H-Register um 1 erhöhen
movfw ADRESH ; High-Register laden
addwf ADC_OLDH,f ; hinzuaddieren, speichern in GPR
Und in den Registern ADC_OLDL+H sind die Werte der Addition enthalten. Einen Überlauf im High-Byte kann es nicht geben, da der ADC vom PIC maximal 10Bit beträgt, also hat man noch 6 bit Buffer in den high-Register.
Die Frage, ob du dann bei einem überlauf in den 11. Bit den Wert (was ja für einen 10-Bit ADC als 0 erscheint) in den ADC schreiben kannst ist einfach mit einem "btfsc ADC_OLDH,3" abfrage gelöst werden.
Ach, ja, nehme an, dass du dich für die besagten Operationen oben in den richtigen Bank angewählt hast, bevor du mit der Addition beginnst .
Bei Fragen, melden
MfG
Mobius
Lesezeichen