Code: Alles auswählen
ldi, r2, 0xff
label1:
dec r2
breqz (oder irgendwas) r2, label1
Nein, das gibt es nicht, aber
Code: Alles auswählen
breq
brne
brge
brlt
Es ist nicht wie bei MIPS sondern wie bei INTEL, hier gibt es den CMP Befehl. Bei MIPS geht es ohne
Erst Vergleichen, dann Springen
Bei MIPS wie gesagt ohne das ist architekturabhängig, und beim Atmega heisst, der cpi
Das CMP bei Intel heisst bei Atmega
Code: Alles auswählen
cpi
Code: Alles auswählen
r2, mit 0
Code: Alles auswählen
cpi r2, 0
Code: Alles auswählen
brne label1
Code: Alles auswählen
ldi, r2, 0xff
label1:
dec r2
cpi r2, 0
brne r2, label1
So geht es
Code: Alles auswählen
.include "m8def.inc"
ldi r17, 0xff
label2:
ldi r16, 0xff
label1:
dec r16
cpi r16, 0
brne label1
dec r17
cpi r17, 0
brne label2
So geht es
Code: Alles auswählen
.include "m8def.inc"
ldi r17, 0xff
label2:
ldi r16, 0xff
label1:
dec r16
cpi r16, 0
brne label1
dec r17
cpi r17, 0
brne label2
So, müsste der Code gehen
Code: Alles auswählen
.include "m8def.inc"
ldi r16, 0xFF
out DDRD, r16
ldi r16, 0x00
label0:
inc r16
out PORTD, r16
ldi r18, 0xff
label2:
ldi r17, 0xff
label1:
dec r17
cpi r17, 0
brne label1
dec r18
cpi r18, 0
brne label2
rjmp label0
Das hier funktioniert prima ist aber ein Atmega88 und deswegen m88def.inc
Jetzt ein Video