Gast
#528
Hallo, folgende Problemstellung: Ich lese über einen A/D-Wandler (2333) einen Wert ein, der zwischen ca. 45 und 250 pendelt. Ich schiebe das ganze dann in das Register "temp" und vergleiche mit einer Kette von "cpi"'s und "brlt"'s, um eine Reihe von LED's einzuschalten. Nur das geht nicht :-( Ich habe mal folgendes Programm exemplarisch in AVR-Studio probiert: ------------------------------------ .include "2333def.inc" .def temp = r16 loop: ldi temp,60 cpi temp,50 brlt marke1 cpi temp,70 brlt marke2 cpi temp,190 brlt marke3 cpi temp,210 brlt marke4 cpi temp,230 brlt marke5 rjmp loop marke1: rjmp marke1 marke2: rjmp marke2 marke3: rjmp marke3 marke4: rjmp marke4 marke5: rjmp marke5 ---------------------------------------- (Sorry, länger als nötig). Auf jeden Fall: wird die (Dez-)Zahl, die verglichen wird, >127, geht der Vergleich nicht mehr... Also wenn im Argument von "cpi" was steht, was >127 ist bzw. temp >127 geladen wird, geht das ganze nicht mehr... Ich bin beinahe am verzweifeln, man muß erstmal drauf kommen, dass das nicht geht... (hat lange,lange gedauert! grrr). Also, woran liegt das? ;-) Ich habe schon eine Idee für einen Workarround, ich könnte ja bis 110 "normal" vergleichen, und dann vor dem nächsten vergleich einfach 100 abziehen und dann "unten" wieder anfangen, mich täte dennoch interessieren, warum diese Geschichte solche Probleme macht... Danke schonmal, ciao Christian