mikrocontroller.net

Forum: PC-Programmierung Sprungbefehl am µC Wichtig & Eilig


Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi! Bin grad über Google auf das Forum gestoßen, weil ich dringend
Hilfe
brauche...

Ich Programmiere eben auf der Arbeit (Azubi) ne kleine Steuerung am
80C535 von Infineon

Mein Problem:

In der Initialisierungsphase meines Programmes werden mit
Zeitabständen
auf 17 Adressen eingelesene Analogwerte abgespeichert.
Soweit so gut, das habe ich mit

mov dptr,#05160h
movx @dptr,a

gemacht. Im Akku war der Wert vom AD-Wandler jeweils temporär.

Mein Problem nun ist, dass ich nun im Hauptprogramm, was danach
anläuft, wieder AD-Messungen mache und diese nun mit den gespeicherten
werten vergleichen muss.

so wie: "CJNE A,#012h,m1"

also bei mir: "CJNE A,[gespeicherter Wert],m1"

Wie bekomme ich meinen Gespeicherten Wert dorthin??? oder gibts ne
andere möglichkeit das Carry zu setzen? Hier das Beispiel wie es sein
sollte:

mov DPTR,#05160h  ; Speicheradresse in Datenpointer schreiben
movx a,@DPTR    ; Adressierter RAM-Inhalt im Akku speichern
mov r1,a    ; Akku in Register sichern
call ADmess    ; Akku wird mit AD-Wert geladen
cjne a,r1,m1    ; Setzt Carry wenn Akku größer als r1
m1: jc m50    ; Springt wenn Carry gesetzt zu m50
mov P4,#11111111b  ; Läd den Port mit einer 8-Bit-Konstanten
mov P5,#11111111b  ; Läd den Port mit einer 8-Bit-Konstanten
jnc m18      ; Springt wenn Carry nicht gesetzt zu m18


Bitte dringendst um Hilfe.

Ach Ps: noch ne kleine Frage... Was ist ein "dadr"?? Wie beim Befehl
CJNE A,dadr,rel

Danke MfG Tobias Gläser

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias

Quelle: Google

Der Befehl 'CJNE OP1, OP2, rel' erhöht zunächst den Befehlszähler PC
um 3. Somit zeigt dieser auf den nach CJNE folgenden Befehl.
Jetzt findet ein Vergleich der beiden angegebenen Operanden statt.
(Vergleich = Subtraktion OP1 - OP2 bei der das Ergebnis nicht
aufgehoben wird. Bei Gleichheit ist das Ergebnis 0)
Sind beide Operanden gleich, wird der nach CJNE folgende Befehl
ausgeführt. Das CarryFlag C = 0.
Sind die Operanden ungleich, wird zum Befehlszähler PC die angegebene
Sprungweite rel hinzuaddiert. Die Sprungweite rel wird dabei als
vorzeichenbehaftete Zahl interpretiert. So sind Sprünge von -128 Bytes
(zurück) bzw. 127 Bytes (nach vorne) möglich.
Das CarryFlag gibt nach dem Sprung Auskunft darüber, welcher der
Operanden größer bzw. kleiner ist. Ist das Carryflag ...
C = 0 dann war OP1 größer als OP2 oder (OP1 gleich OP2)
C = 1 dann war OP1 kleiner als OP2

So das zur Theorie.

dadr ist eine "direkte Adresse" im RAM oder SFR !!!
zB. liegen dort Deine Werte herum.
CJNE a,33h,m1  vergleicht den Akku mit "Inhalt von Adresse 33h".
CJNE a,#33h,m1 vergleicht mit dem wert 33h !!!
reicht das ??

Stephan

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow dad is genial^^ Keine Fehler mehr damit!

Danke

aber Noch ne Kleinigkeit... Ich hab alle daten auf einem externen RAM
abgelegt also zb en byte auf 5000h (m1 is nur meine sprungmarke)

cjne a,5000h,m1

Da kommt ne Warnung wegen den 8bit überschritten, aber ist das dennoch
möglich, oder sollte ich alle daten dann im internen RAM vorher
ablegen?
also mit

MOV dadr,#const8
und dann
cjne a,dadr,m1

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.