www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie in Assembler Zahlen vergleichen


Autor: compare (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich in Assembler (PIC Mikros) Zahlen miteinander vergleichen,
und wenn grösser gleich, eine LED schalten?

Google spuckt viel zu viel aus, und das meiste für PC, oder AVR.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das erste google ergebnis liefert das

http://www.sprut.de/electronic/pic/assemble/befehle.html

siehe bei flags

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du ziehst Zahl A von B ab. (SUBWF)
Schaue ob das Ergebnis 0 ist (SKPNZ/SKPZ), wenn ja, dann ist A = B
Schaue ob carry gesetzt ist (SKPNC/SKPC), wenn ja, dann ist A > B

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
drehe das von Carsten um und du sparst einen vergleich.

Ziehe B von A ab und schaue ob carry gesetzt, wenn nein, dann A>=B.

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor dem Vergleich sicherheitshalber das Carry-Bit löschen - es könnte
durch vorherige Operation(nen) gesetzt sein.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicherheitshalber? Sollte doch auch beim PIC nach einer Subtraktion
eindeutig sein, oder?

Autor: compare (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kapier ich nicht ganz

MOVLW 4500  ; Der Wert 4500 wird in das Arbeitsregister geschrieben
SUBLW Hi    ; 4500 vom Drehzahlwert abziehen

und dann weiter? Wie kann ich das Zero Bit überprüfen? Wenn ich in den
Minus bereich komme, ist das Zerobit ja auch nicht gesetzt, oder??

Könnte jemand bitte einen ganzen Code posten. Bitte.

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. ist 4500 größer als 8bit
2. ist dann nicht das Zero-Bit gesetzt, sondern das carry-flag

ist nach A-B das carry-flag nicht gesetzt, dann ist A>=B

MOVLW "A"
SUBLW "B"   ; -> A-B
SKPC        ; Ergebnis negativ ?
CALL  "A>=B"; nein
...

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Compare:
Es geht hier nicht ums Zero Bit sondern ums Carry Bit.

Autor: compare (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt einmal das Programm angefügt.

Die Ausgangsdefinitionen usw (befinden sich inder I2C Sub) sind in
dieser Version nicht enthalten.

Das Programm zum Vergleichen soll in der Main.asm Datei eingefügt
werden.

Habe mir einmal einen Quellcode einfallen lassen, der aber nicht
funktioniert. :-((


Labelnot0:
call Valtostr      ; converteer de LO HI naar T5..T1
call Pruf

PRUF:
CLRDC        ;DC Flag rücksetzten weil vieleicht von was anderem noch
gesetzt
MOVLW "4500" ; 4500 nach W kopieren
SUBLW "HI"   ; -> 4500 - RPM Wert
SKPC        ; Ergebnis negativ ? dann springe drüber
GOTO  LEDEIN
bsf PORTA, 4     ;LED einschalten
goto eeend

Ledein:
bcs PORTA, 4     ; LED ausschalten
goto eeend

eeend:
return           ;zurück in Programmabarbeitung

bcf PORTA,MRQ    ; RPMXXXXX!!!
  call W1ms
      bsf PORTA,MRQ
  call W1ms
  call Starti2c


  movlw H'94'
  call Sendi2c     ; ("&h94")

      bcf PORTA,MRQ


Das Programm ist leider sehr schlampig geschrieben (nicht mein
eigenes). Habe den nicht funktionierenden Code beigefügt, damit nicht
solche Meldungen wie "machs dir nicht so leicht",usw kommen.

Wäre für eure Hilfe sehr dankbar

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.