mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Register vergleichen


Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutzen den 8252 von Atmel.

Ich kann zwar zwei Werte vergleichen und springen, falls sie ungleich 
sind.

Aber wie kann ich springen, wenn ein Wert kleiner oder größer als ein 
anderer ist?

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Idee:

Man hat zwei Werte in R0 und R1 und will wissen, ob der Wert in R1 
größer als der in R0 ist. Dazu kopiert man den Wert aus R1 in den ACCU 
und schaut, ob er 0 ist. Wenn der Wert im ACCU 0 ist, kann R1 nicht 
größer R0 sein. Ist der Wert aber nicht 0 und auch ungleich R0, dann 
erniedrigt man ihn um 1 und vergleicht ihn wieder mit R0. Ist er nun 
gleich R0, so ist R1 größer R0. Wenn nicht, fährt man weiter fort, bis 
der Wert im ACCU 0 erreicht hat. Wenn bis zu diesem Zeitpunkt keine 
Übereinstimmung mit R0 gefunden wurde, ist R1 größer R0.

Hoffe, der Algorithmus ist ok. Ich kann mir keinen einfacheren 
vorstellen. Aber ich lasse mich gerne überraschen.

Der Nachteil ist der Rechenaufwand. Im schlimmsten Fall muss der 
Algorithmus mehr als 250 Mal durchlaufen. Das ist eine Verschwendung.

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde das ganz einfach per subtraktion prüfen.
So ziemlich jeder Controller hat ein Statusregister, in dem
ein Vorzeichenwechsel gespeichert wird.

a - b rechnen, wenn negatives Vorzeichen, war b größer, bei positivem
war es a oder beide sind gleich (wobei das z.T. vom Controller abhängt).

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das war eine Überraschung. :-)

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du im unterricht nicht aufgepasst, oder warum kannst du deine 
hausaufgaben nicht alleine loesen?

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Unterricht haben wir sowas (noch) nicht durchgenommen und deshalb 
können es auch nicht die Hausaufgaben sein. Und warum bist du immer so 
ein Pessimist?

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und warum bist du immer so ein Pessimist?
bedingte spruenge sind nunmal absolute grundlagen, stehen in jedem 
asm-tutorial und sollten mit die ersten sachen sein, die man 
lernt/beigebracht bekommt.
und da du dich hier im forum schon als schueler geoutet hast und wegen 
jeder grundlegenden kleinigkeit einen thread eroeffnest anstatt google 
zu benutzen oder tutorials zu lesen, lag es nahe anzunehmen, dass du ein 
fauler schueler bist, der seine hausaufgaben vom forum machen lassen 
will.

ok, scheinbar ist das nicht so. schande ueber mich.

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, faule Schüler machen die Hausaufgaben GAR nicht. Wie auch immer, ich 
stelle Fragen im Forum, weil ich gerne über solche Dinge diskutiere. Des 
Weiteren benutze ich sehr wohl Google und lese Datenblätter und 
Tutorials. Würde ich das nicht tun, wäre das Forum noch viel voller. ;-)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst SUBB oder CJNE nehmen und dann das Carry-Bit zum Springen 
benutzen. Bei SUBB aufpassen, vorher CLR C machen.


Peter

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.