Forum: Mikrocontroller und Digitale Elektronik AVR Assembler: Wozu swap bei leerem Register?


von Thomas (kosmos)


Lesenswert?

ich habe gerade ein ASM Programm vor mir, wo folgendes drinsteht.
1
ldi temp, 0
2
ldi temp1, 0
3
swap temp
4
sts CANPAGE, temp
5
sts CANIDT1, temp1

swap also die beiden Nibbles zu vertauschen bringt doch nichts, ist hier 
eine kleine Zeitverzögerung erwünscht oder wofür könnte das noch gut 
sein.

von (prx) A. K. (prx)


Lesenswert?

Das musst du wohl den Autor fragen. Möglicherweise ist das schematisch 
geschriebener Code und die 0 Werte sind nicht immer 0.

von hmmm (Gast)


Lesenswert?

Eventuell kann ein Interrupt zwischen beiden temps dazwischenfunken.

von Sebastian S. (amateur)


Lesenswert?

Eventuell liegt eine Sprungadresse in dem Codeschnipsel.

von Peter D. (peda)


Lesenswert?

Es bringt nichts, 5 Zeilen Code aus dem Zusammenhang zu reißen. Du mußt 
uns schon auch den Kontext zeigen.

von Thomas (kosmos)


Lesenswert?

die Frage ist schon ne weile her, bin aber gerade nochmal über den 
Quellcode gestolpert.

Der Hintergrund ist das die Auswahl der CAN Page in den oberen Bits 
steht und im weiteren Programmverlauf wird diese erhöht wird.

Man möchte also nicht
0000 0001
0000 0010
0000 0011
.........

sondern
0001 0000
0010 0000
0011 0000
.......
erreichen

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Könnte Sinn machen, wenn CANPage über eine Variable ausgewählt wird, 
aber doch nicht bei ldi.
Könnte man dann direkt richtig schreiben
ldi temp, $10     ; CAN page 1
oder
ldi temp,  (1<<4)

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.