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
Ach ja, noch ne Anmerkung: brlt ist laut dem "Instrucion Set" von Atmel "Branch if lower than", und bei Werten unter 127 geht das wie gesagt Problemlos... ciao Christian
Hallo Christian, > 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... probier's mal mit brlo (Branch if lower). brlt ist für den Zahlenbereich -127 bis +127 gedacht. Bei diesen "signierten" Zahlen dient das höchstwertige Bit (Bit 7) als Vorzeichen. MfG Andreas
Gut, danke, das erklärt einiges... ich probier's gleich mal mit "brlo"... danke&ciao, Christian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.