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; |