mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Grösser oder gleich 10'000


Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

Wie kann ich eine grösser oder gleich Abfrage am einfachsten 
realisieren? Ich muss eine Abfrage haben, die ein 16- Bit Register 
überprüft, ob es grösser oder gleich 10'000 ist!!! Wie kann ich ein 16- 
Bit Register vergleichen???

thanks IZU

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so wie's aussieht gibt's da keine funktion für...

ich würd (vielleicht) einfach 10000 von den registern abziehen.

also seien die regs wieder Xh und XL.

10'000=0x2710

dann ziehste 0x27 von XH ab, und dann 0x10+Carry von XL. dann checkst du 
das Zero-Flag. Wenn das gesetzt ist, war die zahl in XH:XL gleich 
10'000. Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war 
die zahl größer.

vielleicht geht's einfacher, wenn also jemand ne idee hat, würd mich 
auch interessieren.

Gute n8

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war die zahl größer.

es muss natürlich heißen:

Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war die 
zahl kleiner, wenn beide flags (Z und C) nicht gesetzt sind, war die 
zahl größer als 10'000.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das funzt ähnlich der Subtraktion/Addition

LDI  DL, 0x50
LDI  DH, 0xC3
CP   DL, CL  <--------
CPC DH, CH <--------
BRLO  overflow

(CL,CH,DL,DH sind R20-23)

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, du musst 0x50 und 0xC3 entsprechend ändern!

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh... sehr sehr gut! :-)

Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort!!!!

Jedoch funzt es bei mir immer noch nicht, ist es nicht so, dass der BRLO 
Befehl springt, wenn das Carry Bit gesetzt ist???
Das Carry Bit wird also nur abhängig vom High Byte gesetzt!!! Darum 
erkennt diese Abfrage diese 10'000 nicht!!!!

Oder sehe ich das falsch???

Vielen Dank!

Izoard

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch, also eigentlich müsste es klappen...

das carry bit wird ggf von cp gesetzt, und dann von cpc ggf nochmals.

Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt habe ich es gesehen, das mit dem Carry Bit klappt, doch wenn die 
zahl genau gleich gross ist, springt er nicht!!!

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
brlo springt, wenn die eine zahl kleiner ist als die andere.

nimm stattdessen brsh (oder?).

Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe nun den Vergleichs- Wert um eins verkleinert, nun spring er 
auch, wenn es gleich ist....

Noch eine Frage:

Wenn ich nun das ganze mit 100 machen möchte,
könnte ich doch mit dem CPI XL, 0x64 vergleichen und dann mit BRSH 
springen???? Wieso geht das bei mir nicht???

Funktioniert CPI mit XL nicht???'

IZo

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch, das sollte gehen.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich frage bei >= immer nur das C-Flag ab. Bei <= dreht man eben die 
Abfrage um. (cp r1,r2 ; cp r2,r1)

a<b,C=1
a=b,C=0
a>b,C=0

Gruß Uwe

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.