PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 8051 - Vergleich von Akkuinhalt und Register



Thiemo
04-06-2005, 17:36
Hallo


Ich habe ein Problem mit dem Vergleichen vom Akku(a) und einem Register(r2). Mit welchem Befehl kann ich die beiden Werte vergleichen ?
Den Befehl "cmp" hab ich in meiner Befehlsliste nicht. Das einzige, daß ich gefunden habe ist
"cjne a,#data,rel und cjne a,adr,rel"
- Befehlsbeschreibung für: "cjne a,#data,rel -Vergleiche Akku mit Konstante und verzweige bei Ungleichheit.Andernfalls fahre im Programm fort." und
"cjne a,adr,rel - Vergleich Akku- und Speicherinhalt und verzweige bei Ungleichheit."
Leider verstehe ich das nicht ganz. Was ist mit verzweigen gemeint ?

Kennt jemand einen Befehl zum vergleichen ?



In meinem Programm möchte ich die zwei Werte vergleichen(a-r2), wenn der Wert grösser/gleich Null 0 ist, soll ein Sprung zu "ZEIT"(Sprungadresse) gemacht werden. Und wenn der Wert kleiner ist soll ein Relais(liegt auf Port P2.0) eingeschaltet werden und eine Kontroll-Spannung am Ausgang(Aout) anliegen. das Relais soll so lange eingeschaltet sein, bis der Vergleichswert grösser/gleich 0 ist.

Das Hauptprogramm liegt als Anhang bei.
Ausschnitt aus dem Programm:

...
RELAISAUS bit p2.0 ;Ausgang für das Relais
...


mov a,#LCDPosIstwert ;Cursor-Position für den Istwert
lcall cursorpos ;an LCD ausgeben
lcall Ain2
lcall dezaus


;subb a,r2 ;1.Versuch
;jc AUS ;1.Versuch
;jz AUS ;1.Versuch

cjne a, r2,rel ;??
jz AUS ;Sprung bei Wert gleich 0
jc AUS ;Sprung bei grösser gleich 0



RELAIS: setb RELAISAUS ;Relais ein
sjmp ZEIT ;Sprung ins weitere PROG

AUS: clr RELAISAUS ;Relais aus


ZEIT: mov r0,#250
...


Ich hoffe, daß mir jemand helfen kann.
Im voraus DANKE !!!!

Gruß
Thiemo

stefan-tiger
05-06-2005, 13:29
Ich hab jetzt net alles von dir gelesen. Wir verwenden den Aduc812 von Analog Devices, ein erweiterter aber kompatibler 8051.

Ich denke das hier könnte dir Helfen:

http://eitidaten.fh-pforzheim.de/daten/labore/mclt/pdf/ADuC812_Ref.pdf

Da steht genau welcher Befehl mit welchen Speicherstellen wie funktioniert.

z.b. Könnte das was für dich sein:

CJNE A,00h,_ZIEL ; Vergleiche A mit R0 der Bank 0 und Springe zu _ZIEL falls ungleich.



Gruß