Check: ASM nach C richtig übersetzt?

Gast #2105078
Lesenswert?
• ▲
▼
Hallo

Kann leider kein Assembler.

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

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



Übersetze ich nach:

1
temp = OCR0B;
2

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

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

10
OCR0B = temp;

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.