www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Check: ASM nach C richtig übersetzt?


Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Kann leider kein Assembler.

Hab ich den Code richtig interpretiert? Vorallem bei den Vergleichen 
(>/<) und Sprüngen bin ich unsicher.

  ;Check and adjust the pwm value according to the output of the dc-dc converter.
  in temp,ocr0b  ;get current pwm value
  subi temp,2  ;assume it's too high
  sbis pind,6  ;>20V?
   subi temp,-4  ;Nope -> cancel the assumed value and add 2.
  cpi temp,$f0  ;Underflow?
  brlo noudf  ;Nope -> skip
  ldi temp,0  ;Undo underflow
noudf:
  cpi temp,$50  ;Overflow?
  brlo noovf  ;Nope -> skip
  ldi temp,$50  ;Undo overflow
noovf:
  out ocr0b,temp  ;and set the pwm value



Übersetze ich nach:

temp = OCR0B;

if (PD6 = 0) temp += 2;
else temp -= 2;

if (temp > 240) temp = 0;  // Diese zwei Zeilen machen doch keinen Sinn?
if (temp > 80) temp = 80;  // OCR0B wurde mit 20 initialisert, kann also nie grösser als 82 werden
// Ich vermute der Wert soll zwischen 80 und 240 gehalten werden. Aber das steht nicht so da, oder?

OCR0B = temp;

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moment. Meint er mit Underflow dass die Variable ins "minus" rutscht und 
dann einen Wert > 240 hat?

Dann soll der Wert zwischen 0 und 80 gehalten werden...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tüll schrieb:
> Moment. Meint er mit Underflow dass die Variable ins "minus" rutscht und
> dann einen Wert > 240 hat?
>
> Dann soll der Wert zwischen 0 und 80 gehalten werden...

Genau...

...

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.