www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vergleiche mit "brlt"


Autor: Christian Fuchs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian Fuchs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian Fuchs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, danke, das erklärt einiges...

ich probier's gleich mal mit "brlo"...

danke&ciao,

    Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.