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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren