AVR Assembler Makros: Unterschied zwischen den Versionen
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Dave (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
=== 16 Bit Konstante in Z-Pointer laden === | === 16 Bit Konstante in Z-Pointer laden === | ||
<avrasm> | |||
< | |||
.MACRO SetZPtr ;(Adresse) | .MACRO SetZPtr ;(Adresse) | ||
ldi ZL, LOW(@0) | ldi ZL, LOW(@0) | ||
ldi ZH, HIGH(@0) | ldi ZH, HIGH(@0) | ||
.ENDMACRO | .ENDMACRO | ||
</ | </avrasm> | ||
Natürlich auch möglich mit X- und Y-Pointer. | |||
==Speicher== | ==Speicher== | ||
Zeile 26: | Zeile 27: | ||
==Arithmetik== | ==Arithmetik== | ||
=== Konstante addieren === | === Konstante addieren === | ||
< | <avrasm> | ||
.MACRO ADDI ;(a, k) | .MACRO ADDI ;(a, k) | ||
subi @0, -(@1) | subi @0, -(@1) | ||
.ENDMACRO | .ENDMACRO | ||
</ | </avrasm> | ||
=== Konstante addieren (16 Bit) === | === Konstante addieren (16 Bit) === | ||
< | <avrasm> | ||
.MACRO ADDIW ;(RdL:RdH, k) | .MACRO ADDIW ;(RdL:RdH, k) | ||
subi @0L, LOW(-@1) | subi @0L, LOW(-@1) | ||
sbci @0H, HIGH(-@1) | sbci @0H, HIGH(-@1) | ||
.ENDMACRO | .ENDMACRO | ||
</ | </avrasm> |
Version vom 3. Dezember 2006, 14:13 Uhr
Hier entsteht eine Sammlung von verschiedenen nützlichen Makros für den AVR Assembler.
16 Bit Konstante in Z-Pointer laden
<avrasm> .MACRO SetZPtr ;(Adresse)
ldi ZL, LOW(@0) ldi ZH, HIGH(@0)
.ENDMACRO </avrasm>
Natürlich auch möglich mit X- und Y-Pointer.
Speicher
2 Register ohne Zwischenspeicher vertauschen
.MACRO SWAP ;(a, b) eor @0, @1 eor @1, @0 eor @0, @1 .ENDMACRO
Arithmetik
Konstante addieren
<avrasm> .MACRO ADDI ;(a, k)
subi @0, -(@1)
.ENDMACRO </avrasm>
Konstante addieren (16 Bit)
<avrasm> .MACRO ADDIW ;(RdL:RdH, k)
subi @0L, LOW(-@1) sbci @0H, HIGH(-@1)
.ENDMACRO </avrasm>