Re: TTL-Gatter, Atmega 8, MIPS Assembler
Verfasst: Sa Dez 23, 2023 11:12 pm
gut, dann machen wir unsere innere zählschleife
so, etwas in der Art. Und das machen wir jetzt genau, bis es es stimmt, weil ich bin mir mir breqz nicht sicher.
Nein, das gibt es nicht, aber
Gut, dann muss ich mir die Syntax von breq genau angucken.
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
Und das vergleicht
also
Und dann kommt
Also,
probieren wir es aus
So geht es
Jetzt kommt eine zweite Schleife drum rum.
So geht es
Jetzt ersparen wir uns die Funktion und machen ein Jump und dahinter auch ein Jump hin.
So, müsste der Code gehen
Ich übertrage ihn mit avrdude an den Programmer und dann sehen wir, was raus kommt.
Das hier funktioniert prima ist aber ein Atmega88 und deswegen m88def.inc
Jetzt ein Video
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