Forum: Mikrocontroller und Digitale Elektronik [C nach Assembler] Problem mit Schleife


von Peter P. (krueemel)


Lesenswert?

Hi,

ich möchte folgenden C-Code in Assembler umschreiben:
1
do
2
{
3
  a = PINA & 0b10000000;
4
  b = b-1;
5
} while ((a==0) && (b > 0));
6
7
if (b > 0)
8
  PORTC = ~b;


Ich habe schonal angefangen:
1
.def a = r16
2
.def b = r17
3
4
loopDo:
5
  in a, PINA
6
  ldi r19, 0b10000000
7
  and a, r19
8
  dec b
9
10
  sbrs a,7
11
  rjmp loopwhileBedingung1
12
  rjmp loopDoEnde
13
14
loopwhileBedingung1:

hier weiß ich nicht weiter, wie Frage ich ab, ob b größer als 0 ist?


Liebe Grüße,
krueemel

von Lucky (Gast)


Lesenswert?

tst b
brne xxx    ;b>0

von spess53 (Gast)


Lesenswert?

Hi

Mal als Vorschlag:

[avrsam]

.def a = r16
.def b = r17

loopDo:
  in a, PINA
  andi a, 0b10000000
  brne loopend
  dec b
  breq Ende
  rjmp loopDo
loopend:
  com b
  out PortC,b
Ende:
[/avrsam]

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.