Zasoby
Lista instrukcji mikrokontrolerów AVR

Lista  instrukcji mikrokontrolerów 8 bitowych AVR. Lista zawiera opis instrukcji, operandy, modyfikowane flagi rejestru SREG oraz ilość cykli zegarowych, w których realizowane są poszczególne instrukcje.

 

 

Widok struktury mikrokontrolera ATmega8 (źródło: https://zeptobars.com)

 

W tabeli użyto symboli operandów, które mają następujące znaczenie:

Rd - rejestr roboczy będący rejestrem wynikowym (od R0 do R31),

Rr - rejestr roboczy będący jednym z operandów operacji (od R0 do R31),

k - stała liczbowa,

A - stała liczbowa wskazująca na rejestr w przestrzeni I/O,

q - stała liczbowa przesunięcia adresowego (z zakresu od 0 do 63),

b - stała liczbowa określająca bit w rejestrze (z zakresu od 0 do 7),

s - stałą liczbowa określająca but w rejestrze statusów SREG (z zakresu od 0 do 7),

X, Y, Z - 16 bitowy rejestr do adresowania pośredniego

 

Lista instrukcji mikrokontrolerów AVR

Instrukcja Operandy Opis Flagi Cykle zegara
Instrukcje arytmetyczne i logiczne
ADD Rd, Rr Instrukcja dodania arytmetycznego dwóch rejestrów Z,C.N,V,S,H 1
ADC Rd, Rr Instrukcja dodania arytmetycznego zawartości dwóch rejestrów z uwzględnieniem wskaźnika przeniesienia C Z,C.N,V,S,H 1
ADIW Rd, k Instrukcja arytmetycznego dodania do zawartości pary rejestrów wartości stałej k Z,C.N,V,S 2
SUB Rd, Rr Instrukcja odejmowania arytmetycznego zawartości dwóch rejestrów Z,C.N,V,S,H 1
SUBI Rd, k Instrukcja arytmetycznego odejmowania od zawartości rejestru wartości stałej k Z,C.N,V,S,H 1
SBC Rd, Rr Instrukcja arytmetycznego odejmowania zawartości dwóch rejestrów z uwzględnieniem wskaźnika przeniesienia C Z,C.N,V,S,H 1
SBCI Rd, k Instrukcja arytmetycznego odejmowania od zawartości rejestru wartości stałej k z uwzględnieniem wskaźnika przeniesienia C Z,C.N,V,S,H 1
SBIW Rd, k Instrukcja odejmowania od zawartości pary rejestrów wartości stałej k Z,C.N,V,S 2
AND Rd, Rr Instrukcja iloczynu logicznego zawartości rejestrów Z,N,V,S 1
ANDI Rd, k Instrukcja iloczynu logicznego zawartości rejestru i wartości stałej k Z,N,V,S 1
OR Rd, Rr Instrukcja sumy logicznej zawartości rejestrów Z,N,V,S 1
ORI Rd, k Instrukcja sumy logicznej zawartości rejestru i wartości stałej k Z,N,V,S 1
EOR Rd, Rr Instrukcja sumy logicznej EXCLUSIVE OR zawartości rejestrów Z,N,V,S 1
COM Rd Instrukcja negacji logicznej zawartości rejestru Rd Z,C.N,V,S 1
NEG Rd Instrukcja negacji arytmetycznej zawartości rejestru Rd Z,C.N,V,S,H 1
SBR Rd, k Instrukcja ustawienia określonych bitów w rejestrze Rd Z,N,V,S 1
CBR Rd, k Instrukcja wyzerowania określonych bitów w rejestrze Rd Z,N,V,S 1
INC Rd Instrukcja zwiększenia o jeden zawartości rejestru Rd Z,N,V,S 1
DEC Rd Instrukcja zmniejszenia o jeden zawartości rejestru Rd Z,N,V,S 1
TST Rd Instrukcja testu, czy zawartość rejestru jest równa 0 lub jest ujemna Z,N,V,S 1
CLR Rd Instrukcja zerowania zawartości rejestru Rd Z,N,V,S 1
SER Rd Instrukcja ustawienia wszystkich bitów w rejestrze Rd --- 1
MUL Rd, Rr Instrukcja mnożenia bez znaku zawartości rejestrów Z,C 2
MULS Rd, Rr Instrukcja mnożenia ze znakiem zawartości rejestrów Z,C 2
MULSU Rd, Rr Instrukcja mnożenia zawartości rejestrów (jeden ze znakiem, drugi bez znaku) Z,C 2
FMUL Rd, Rr Instrukcja mnożenia liczb ułamkowych bez znaku Z,C 2
FMULS Rd, Rr Instrukcja mnożenia liczb ułamkowych ze znakiem Z,C 2
FMULSU Rd, Rr Instrukcja mnożenia liczb ułamkowych (bez znaku z liczbą ze znakiem) Z,C 2
Instrukcje skoków
RJMP k Instrukcja bezwarunkowego skoku względnego --- 2
IJMP   Instrukcja bezwarunkowego skoku pośredniego --- 2
EIJMP   Instrukcja rozszerzonego bezwarunkowego skoku pośredniego --- 2
JMP k Instrukcja bezwarunkowego skoku --- 3
RCALL k Instrukcja względnego bezpośredniego wywołania procedury --- 4/5
ICALL   Instrukcja bezwzględnego pośredniego wywołania procedury --- 3/4
EICALL   Instrukcja rozszerzonego bezwzględnego pośredniego wywołania procedury --- 3
CALL k Instrukcja bezwzględnego bezpośredniego wywołania procedury --- 4/5
RET   Instrukcja powrotu z procedury --- 4/5
RETI   Instrukcja powrotu z procedury obsługi przerwania I 4/5
CPSE Rd, Rr Instrukcja bezwarunkowego pominięcia następnej instrukcji, jeżeli zawartość obu rejestrów jest identyczna --- 1/2/3
CP Rd, Rr Instrukcja porównania zawartości dwóch rejestrów Z,C,N,V,S,H 1
CPC Rd, Rr Instrukcja porównania zawartości dwóch rejestrów z uwzględnieniem wskaźnika przeniesienia C Z,C,N,V,S,H 1
CPI Rd, k Instrukcja porównania zawartości rejestru z wartością stałej k Z,C,N,V,S,H 1
SBRC Rr, b Instrukcja warunkowego pominięcia następnej instrukcji, jeżeli określony bit b nie jest ustawiony w rejestrze Rr --- 1/2/3
SBRS Rr, b Instrukcja warunkowego pominięcia następnej instrukcji, jeżeli określony bit b jest ustawiony w rejestrze Rr --- 1/2/3
SBIC A, b Instrukcja warunkowego pominięcia następnej instrukcji, jeżeli określony bit b nie jest ustawiony w rejestrze A w przestrzeni I/0 --- 1/2/3
SBIS A, b Instrukcja warunkowego pominięcia następnej instrukcji, jeżeli określony bit b jest ustawiony w rejestrze A w przestrzeni I/0 --- 1/2/3
BRBS s, k Instrukcja warunkowego skoku, gdy określony bit b w rejestrze SREG jest ustawiony --- 1/2
BRBC s, k Instrukcja warunkowego skoku, gdy określony bit b w rejestrze SREG nie jest ustawiony --- 1/2
BREQ k Instrukcja skoku względnego, gdy spełniony jest warunek Z=1 --- 1/2
BRNE k Instrukcja skoku względnego, gdy spełniony jest warunek Z=0 --- 1/2
BRCS k Instrukcja skoku względnego, gdy spełniony jest warunek C=1 --- 1/2
BRCC k Instrukcja skoku względnego, gdy spełniony jest warunek C=0 --- 1/2
BRSH k Instrukcja skoku względnego, gdy spełniony jest warunek C=0 --- 1/2
BRLO k Instrukcja skoku względnego, gdy spełniony jest warunek C=1 --- 1/2
BRMI k Instrukcja skoku względnego, gdy spełniony jest warunek N=1 --- 1/2
BRPL k Instrukcja skoku względnego, gdy spełniony jest warunek N=0 --- 1/2
BRGE k Instrukcja skoku względnego, gdy spełniony jest warunek N\bigoplusV=0 --- 1/2
BRLT k Instrukcja skoku względnego, gdy spełniony jest warunek N\bigoplusV=1 --- 1/2
BRHS k nstrukcja skoku względnego, gdy spełniony jest warunek H=1 --- 1/2
BRHC k nstrukcja skoku względnego, gdy spełniony jest warunek H=0 --- 1/2
BRTS k nstrukcja skoku względnego, gdy spełniony jest warunek T=1 --- 1/2
BRTC k nstrukcja skoku względnego, gdy spełniony jest warunek T=0 --- 1/2
BRVS k nstrukcja skoku względnego, gdy spełniony jest warunek V=1 --- 1/2
BRVC k nstrukcja skoku względnego, gdy spełniony jest warunek V=0 --- 1/2
BRIE k nstrukcja skoku względnego, gdy spełniony jest warunek I=1 --- 1/2
BRID k nstrukcja skoku względnego, gdy spełniony jest warunek I=0 --- 1/2
Instrukcje przesyłania danych
MOV Rd, Rr Instrukcja przepisania zawartości rejestru Rr do rejestru Rd --- 1
MOVW Rd, Rr Instrukcja przepisania zawartości pary rejestrów Rr i Rr+1 do pary rejestrów Rd i Rd+1 --- 1
LDI Rd, k Instrukcja wpisania do rejestru Rd wartości stałej k --- 1
LDS Rd, k Instrukcja przepisania zawartości pamięci RAM o adresie bezpośrednim k do rejestru Rd --- 4
LD Rd, X Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru X do rejestru Rd --- 2
LD Rd, X+ Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru X z postinkrementacją rejestru X do rejestru Rd --- 2
LD Rd, -X Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru X z predekrementacją rejestru X do rejestru Rd --- 2
LD Rd, Y Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Y do rejestru Rd --- 2
LD Rd, Y+ Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Y z postinkrementacją rejestru Y do rejestru Rd --- 2
LD Rd, -Y Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Y z predekrementacją rejestru Y do rejestru Rd --- 2
LDD Rd, Y+q Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Y z uwzględnieniem przesunięcia q do rejestru Rd --- 2
LD Rd, Z Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Z do rejestru Rd --- 2
LD Rd, Z+ Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Z z postinkrementacją rejestru Z do rejestru Rd --- 2
LD Rd, -Z Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Z z predekrementacją rejestru Z do rejestru Rd --- 2
LDD Rd, Z+q Instrukcja przepisania zawartości pamięci RAM o adresie określonym zawartością rejestru Z z uwzględnieniem przesunięcia q do rejestru Rd --- 2
STS k, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie bezpośrednim k --- 4
ST X, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru X --- 2
ST X+, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru X z postinkrementacją rejestru X --- 2
ST -X, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru X z predekrementacją rejestru X --- 2
ST Y, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Y --- 2
ST Y+, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Y z postinkrementacją rejestru Y --- 2
ST -Y, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Y z predekrementacją rejestru Y --- 2
STD Y+q, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Y z uwzględnieniem przesunięcia q --- 2
ST Z, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Z --- 2
ST Z+, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Z z postinkrementacją rejestru Z --- 2
ST -Z, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Z z predekrementacją rejestru Z --- 2
STD Z+q, Rr Instrukcja przepisania zawartości rejestru Rr do pamięci RAM o adresie określonym zawartością rejestru Z z uwzględnieniem przesunięcia q --- 2
LPM   Instrukcja przepisania zawartości bajtu z pamięci programu FLASH o adresie określonym zawartością rejestru Z do rejestru R0 --- 3
LPM Rd, Z Instrukcja przepisania zawartości bajtu z pamięci programu FLASH o adresie określonym zawartością rejestru Z do rejestru Rd --- 3
LPM Rd, Z+ Instrukcja przepisania zawartości bajtu z pamięci programu FLASH o adresie określonym zawartością rejestru Z do rejestru Rd z postinkrementacją rejestru Z --- 3
ELPM   Rozszerzony wariant instrukcji LPM --- 3
ELPM Rd, Z Rozszerzony wariant instrukcji LPM Rd, Z --- 3
ELPM RD, Z+ Rozszerzony wariant instrukcji LPM Rd, Z+ --- 3
SPM   Instrukcja zapisania zawartości pary rejestrów R1:R0 do pamięci programu FLASH w miejsce określone zawartością rejestru Z --- ---
IN Rd, A Instrukcja przepisania zawartości rejestru A z przestrzeni adresowej I/O do rejestru Rd --- 1
OUT A, Rr Instrukcja przepisania zawartości rejestru Rr do rejestru A z przestrzeni adresowej I/O --- 1
PUSH Rr Instrukcja przepisania zawartości rejestru Rr na szczyt stosu --- 2
POP Rd Instrukcja przepisania zawartości szczytu stosu do rejestru Rd --- 2
Instrukcje operacji bitowych
LSL Rd Instrukcja przesunięcia logicznego zawartości rejestru Rd w lewo o 1 bit Z,C.N.VH 1
LSR Rd Instrukcja przesunięcia logicznego zawartości rejestru Rd w prawo o 1 bit Z,C,N,V 1
ROL Rd Instrukcja przesunięcia cyklicznego zawartości rejestru Rd w lewo o 1 bit Z,C,N,V,H 1
ROR Rd Instrukcja przesunięcia cyklicznego zawartości rejestru Rd w prawo o 1 bit Z,C,N,V 1
ASR Rd Instrukcja przesunięcia arytmetycznego zawartości rejestru Rd w prawo o 1 bit Z,C,N,V 1
SWAP Rd Instrukcja zamiany nibli (połówek bajtu) w rejestrze Rd --- 1
BSET b Instrukcja ustawienia flagi b w rejestrze statusów SREG SREG(b) 1
BCLR b Instrukcja zerowania flagi b w rejestrze statusów SREG SREG(b) 1
SBI A, b Instrukcja ustawienia bitu b w rejestrze A z przestrzeni I/O   1
CBI A, b Instrukcja zerowania bitu b w rejestrze A z przestrzeni I/O   1
BST Rr, b Instrukcja przepisania wartości bitu b z rejestru Rr do flagi T w rejestrze SREG T 1
BLD Rd, b Instrukcja przepisania  flagi T z rejestru SREG na pozycję bitową b w rejestrze Rd   1
SEC   Instrukcja ustawienia flagi C w rejestrze statusów SREG C 1
CLC   Instrukcja zerowania flagi C w rejestrze statusów SREG C 1
SEN   Instrukcja ustawienia flagi N w rejestrze statusów SREG N 1
CLN   Instrukcja zerowania flagi N w rejestrze statusów SREG N 1
SEZ   Instrukcja ustawienia flagi Z w rejestrze statusów SREG Z 1
CLZ   Instrukcja zerowania flagi Z w rejestrze statusów SREG Z 1
SEI   Instrukcja ustawienia flagi I w rejestrze statusów SREG I 1
CLI   Instrukcja zerowania flagi I w rejestrze statusów SREG I 1
SES   Instrukcja ustawienia flagi S w rejestrze statusów SREG S 1
CLS   Instrukcja zerowania flagi S w rejestrze statusów SREG S 1
SEV   Instrukcja ustawienia flagi V w rejestrze statusów SREG V 1
CLV   Instrukcja zerowania flagi V w rejestrze statusów SREG V 1
SET   Instrukcja ustawienia flagi T w rejestrze statusów SREG T 1
CLT   Instrukcja zerowania flagi T w rejestrze statusów SREG T 1
SEH   Instrukcja ustawienia flagi H w rejestrze statusów SREG H 1
CLH   Instrukcja zerowania flagi H w rejestrze statusów SREG H 1
Instrukcje kontroli pracy jednostki centralnej
BREAK   Instrukcja BREAK jest używana przez On-chip debug, w normalnym programie nie jest używana --- 1
NOP   Instrukcja pusta (nie robi nic) --- 1
SLEEP   Instrukcja wprowadzenia mikrokontrolera do stanu uśpienia --- 1
WDR   Instrukcja zerowania licznika watchdog --- 1

 

Autor: Orici
Wyświetleń: 472|Komentarzy: 0|Ocena: 0|Głosów: 0