8051 - Vergleich von Akkuinhalt und Register



  • 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 😕




Anmelden zum Antworten