Titelbild Mikrocontroller

E-Befehle


oben EICALL - Extended Indirect Call to Subroutine

Syntax: EICALL
Funktion: Dieser Befehl ruft ein Unterprogramm auf, das über den Z-Pointer und das EIND Register im I/O-Speicher adressiert wird. Mit diesem Befehl kann also der vollständige Programmspeicher adressiert werden. Die Rücksprungadresse wird im STACK zwischengespeichert. Der Befehl kann nur in Bausteinen mit einem 22 Bit breiten PC benutzt werden (bei 16 Bit PC siehe ICALL)
Operation: PC(15:0) ← Z(15:0)
PC(21:16) ← EIND
STACK ← PC + 1
SP ← SP -3
Operanden: keine
Programmzähler: siehe Operation
Words: 1 (2 Byte)
Zyklen: 4
16 Bit Operations Code: 1001 0101 0001 1001

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
ldi r16,$05    ;Das Register EIND mit
out EIND,r16    ;dem Wert 05h laden.

ldi r30,$00    ;Low-Byte Z-Pointer laden
ldi r31,$10    ;High-Byte Z-Pointer laden

eicall        ;Unterprogramm an Adresse 051000h aufrufen

oben EIJMP - Extended Indirect Jump

Syntax: EIJMP
Funktion: Dieser Befehl springt zu einer Adresse, die über den Z-Pointer und das EIND-Register im I/O-Speicher adressiert wird. Mit diesem Befehl kann also der vollständige Programmspeicher adressiert werden. Der Befehl ist nicht in allen Bausteinen verfügbar.
Operation: PC(15:0) ← Z(15:0)
PC(21:16) ← EIND
Operanden: keine
Programmzähler: siehe Operation
Words: 1 (2 Byte)
Zyklen: 2
16 Bit Operations Code: 1001 0100 0001 1001

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:

ldi r16,$05    ;Das Register EIND mit
out EIND,r16    ;dem Wert 05h laden.

ldi r30,$00    ;Low-Byte Z-Pointer laden
ldi r31,$10    ;High-Byte Z-Pointer laden

eijmp        ;Sprung zu Adresse 051000h

oben ELPM - Extended Load Program Memory

Syntax: (a) ELPM
(b) ELPM Rd,Z
(c) ELPM Rd,Z+
Funktion: Dieser Befehl lädt ein Byte, das über das Z-Register und das RAMPZ-Register adressiert ist, aus dem Programmspeicher in das Register Rd. Mit dem Befehl kann der gesamte Programmspeicher adressiert werden. Der Programmspeicher enthält an jeder Adresse 2 Byte (1 Word). Daher adressiert das Z-Register, wenn das LSB 0 ist, das niederwertige Byte der Adresse und mit LSB = 1 das höherwertige Byte des Wortes an der Adresse. Das Z-Register kann mit dem Befehl entweder unverändert bleiben oder automatisch inkrementiert werden. Das Inkrementieren wirkt sich auf die verketteten RAMPZ- und Z-Register aus.
Bei Bausteinen mit der Möglichkeit des Selbstprogrammierens kann der LPM - Befehl verwendet werden, um die Werte der Fuse- und Lock-Bits zu lesen. Der Befehl ist nicht in allen Bausteinen enthalten.
Operation: (a) R0 ← (RAMPZ:Z)
(b) Rd ← (RAMPZ:Z)
(c) Rd ← (RAMPZ:Z), RAMPZ:Z ← RAMPZ:Z + 1
Operanden: (a) keiner, R0 ist das Ziel
(b) 0 ≤ d ≤ 31
(c) 0 ≤ d ≤ 31
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 3
16 Bit Operations Code: (a) 1001 0101 1101 1000
(b) 1001 000d dddd 0110
(c) 1001 000d dddd 0111

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
ldi ZH,$01    ;ZH-Register mit 01h laden
out RAMPZ,ZH    ;01h in RAMPZ schreiben

ldi r30,$00    ;Low-Byte Z-Pointer mit 00h laden
elpm r20,Z+    ;Low-Byte aus Adresse 010100h in R20 laden,
             ;anschließend Zeiger inkrementieren
...
elpm r20,Z    ;High-Byte aus Adresse 010101h in R20 laden


oben EOR - Exclusive OR

Syntax: EOR Rd,Rr
Funktion: Dieser Befehl führt eine Exclusiv-Oder - Verknüpfung zwischen den Registern Rd und Rr durch. Das Ergebnis wird im Register Rd abgelegt.
Operation: Rd ← Rd xor Rr
Operanden: 0 ≤ d ≤ 31, 0 ≤ r ≤ 31
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 0010 01rd dddd rrrr

Flags im Status-Register (SREG):
ITH S V N Z C
---0-
S: Das S-Flag wird gesetzt, wenn das N-Flag gesetzt ist, andernfalls wird das S-Flag gelöscht.
V: Das V-Flag wird gelöscht.
N: Das N-Flag wird gesetzt, wenn das MSB des Ergebnisses gesetzt ist, andernfalls wird es gelöscht.
Z: Das Z-Flag wird gesetzt, wenn das Ergebnis 00h ist, andernfalls wird das Flag gelöscht.

Beispiel:
eor r3,r3      ;Das Register R3 wird gelöscht
eor r30,r23    ;Exclusiv-Oder - Verknüpfung zwischen 
               ;R30 und R23, Ergebnis in R30

Impressum