www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Rechnung und Carry 8051


Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielleicht kann ich den ein oder anderen noch an nem Freitag mit nem 
kleinen Problem von mir quälen. Folgendes Problem:
Ich hab hier nen gemessenen Wert im Akku der zwischen 0 und 102 
schwankt, es soll aber nicht über die 99 gehen von daher subtrahiere ich 
R0( R0=99) vom Akku clear vorher noch den Akku, dass auch genau 99 und 
nicht 100 Subtrahiert wird. Wenn der Wert im Akku kleiner als 99 ist, 
wird Carry gesetzt und rausgesprungen, wenn er größer wird Carry gesetzt 
und Sprung wird ausgeführt,  automatisches setzten des Wertes 99.

Funktioniert aber irgendwie nicht :/ weiss jemand warum???


UEBERLAUF:    MOV A, R7
              CLR C
              SUBB A, R0
              JNC UEBER
              RET

UEBER:        MOV A, #99d
              RET


Na ja, lassts euch gut gehn... kann das Bierchen heute Abend kaum 
erwarten

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UEBERLAUF:    MOV A, R7
              CLR C
              SUBB A, R0
              JNC UEBER
              MOV A, R7 ;<----------------------
              RET

UEBER:        MOV A, #99d
              RET

mfg.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Funktioniert aber irgendwie nicht

Erklärmal das irgendwie genauer.

So wie ich das sehe funktioniert deine Routine.
Mit der Ergänzung Skua funzt sie besser.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dokumentier mal Deine Funktion, damit Du auch selber durchsiehst, z.B.
;function: if R7 > 99 then R7 = 0
;input; R7 = 0..255
;output: R7 = 0..99
lim_99:
  cjne r7, #100, _lim_1
_lim_1:
  jc _lim_2
  mov r7, #0
_lim_2:
  ret


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.