Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Poprzedni  

©2019 mgr Jerzy Wałaszek
I LO w Tarnowie

pic

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

 

 

Mikrokontrolery

Instrukcje mikrokontrolerów AVR

SBC ... WDR

Rozdziały artykułu:
Wstęp
Teoria
Warsztat
Elementy
Projekty
Mikrokontrolery
    ATtiny4/5/9/10
    ATtiny11/12
    ATtiny13
    ATtiny15
    INSTRUKCJE AVR
        Informacje wstępne
        A
        B
        C
        D E F I J
        L
        M N O P R
        S T W
Zawartość:
SBC – Odejmowanie z przeniesieniem
SBCI – Odejmowanie stałej z przeniesieniem
SBI – Ustawianie bitu w rejestrze we/wy
SBIC – Pominięcie przy wyzerowanym bicie w rejestrze we/wy
SBIS – Pominięcie przy ustawionym bicie w rejestrze we/wy
SBIW – Odejmowanie stałej od słowa
SBR – Ustawianie bitów w rejestrze
SBRC – Pominięcie przy wyzerowanym bicie w rejestrze
SBRS – Pominięcie przy ustawionym bicie w rejestrze
SEC – Ustawienie znacznika przeniesienia
SEH – Ustawienie znacznika przeniesienia połówkowego
SEI – Ustawienie globalnego znacznika przerwań
SEN – Ustawienie znacznika ujemnego wyniku
SER – Ustawienie wszystkich bitów w rejestrze
SES – Ustawienie znacznika znaku
SET – Ustawienie znacznika T
SEV – Ustawienie znacznika nadmiaru U2
SEZ – Ustawienie znacznika zera
SLEEP – Uśpienie
SPM – Zapis w pamięci programu
ST – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu X
ST(STD) – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu Y
ST(STD) – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu Z
STS – Zapis bezpośrednio do przestrzeni danych
SUB – Odejmowanie bez przeniesienia
SUBI – Odejmowanie stałej
SWAP – Wymiana 4 górnych bitów z 4 dolnymi
TST – Test na zero lub minus
WDR – Reset licznika zegarowego

Educational and Non-Profit Use ofCopyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SBC – Subtract with Carry – Odejmowanie z przeniesieniem

Opis

Odejmuje dwa rejestry z wykorzystaniem przeniesienia w znaczniku C i umieszcza wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd - Rr - C

Składnia

 

Argumenty

 

Licznik rozkazów

SBC Rd,Rr   0 ≤ d ≤ 31, 0 ≤ r ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0000
10rd
dddd
rrrr

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•Rr3+Rr3•R3+R3•Rd3
Ustawiany, jeśli była pożyczka z bitu 3; w przeciwnym razie zerowany
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•Rr7R7+Rd7•Rr7•R7
Ustawiane, jeśli operacja doprowadza do przepełnienia U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany
C: Rd7•Rr7+Rr7•R7+R7•Rd7
Ustawiany, jeśli wartość bezwzględna zawartości Rr plus poprzednie przeniesienie jest większa niż wartość bezwzględna Rd; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

          ; Odejmij r1:r0 od r3:r2
sub r2,r0 ; Odejmij dolny bajt
sbc r3,r1 ; Odejmij z przeniesieniem górny bajt

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SBCI – Subtract Immediate with Carry – Odejmowanie stałej z przeniesieniem

Opis

Odejmuje z przeniesieniem stałą od rejestru i umieszcza wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd - K - C

Składnia

 

Argumenty

 

Licznik rozkazów

SBCI Rd,K   16 ≤ d ≤ 31, 0 ≤ K ≤ 255   PC ← PC + 1

16-bitowy kod instrukcji

0100
KKKK
dddd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•K3+K3•R3+R3•Rd3
Ustawiany, jeśli była pożyczka z bitu 3; w przeciwnym razie zerowany
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•K7R7+Rd7•K7•R7
Ustawiane, jeśli operacja doprowadza do przepełnienia U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany
C: Rd7•K7+K7•R7+R7•Rd7
Ustawiany, jeśli wartość bezwzględna stałej plus poprzednie przeniesienie jest większa niż wartość bezwzględna Rd; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

             ; Odejmij $4F23 od r17:r16
subi r16,$23 ; Odejmij dolny bajt
sbci r17,$4F ; Odejmij z przeniesieniem górny bajt

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SBI – Set Bit in I/O Register – Ustawianie bitu w rejestrze we/wy

Opis

Ustawia określony bit w rejestrze we/wy. Ta instrukcja działa na dolnych 32 rejestrach we/wy – adresy 0-31.

Działanie

                 
I/O(A,b) ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SBI A,b   0 ≤ A ≤ 31, 0 ≤ b ≤7   PC ← PC + 1

16-bitowy kod instrukcji

1001
1010
AAAA
Abbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

out $1E,r0 ; Zapisz adres EEPROM
sbi $1C,0  ; Ustaw bit odczytu w EECR
in r1,$1D  ; Odczytaj dane z EEPROM

Liczba słów: 1 (2 bajty)

Cykle: 2

 

SBIC – Skip if Bit in I/O Register is Cleared – Pominięcie przy wyzerowanym bicie w rejestrze we/wy

Opis

Ta instrukcja testuje pojedynczy bit w rejestrze we/wy i pomija wykonanie następnej instrukcji, jeśli ten bit jest wyzerowany. Instrukcja działa na dolnych 32 rejestrach we/wy – adresy 0-31.

Działanie

                 
Jeśli I/O(A,b) = 0, to PC ← PC + 2 (lub 3), inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

SBIC A,b   0 ≤ A ≤ 31, 0 ≤ b ≤7   PC ← PC + 1, warunek fałszywy - bez pominięcia
PC ← PC + 2, pominięcie instrukcji o długości słowa
PC ← PC + 3, pominięcie instrukcji o długości dwóch słów

16-bitowy kod instrukcji

1001
1001
AAAA
Abbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

e2wait: sbic $1C,1  ; Pomiń następną instrukcję, jeśli EEWE wyzerowane
        rjmp e2wait ; zapis do EEPROM nie ukończony
        nop         ; Kontynuuj (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle:

1, jeśli warunek niespełniony (brak pominięcia)
2, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 1 słowa
3, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 2 słów

 

SBIS – Skip if Bit in I/O Register is Set – Pominięcie przy ustawionym bicie w rejestrze we/wy

Opis

Ta instrukcja testuje pojedynczy bit w rejestrze we/wy i pomija wykonanie następnej instrukcji, jeśli ten bit jest ustawiony. Instrukcja działa na dolnych 32 rejestrach we/wy – adresy 0-31.

Działanie

                 
Jeśli I/O(A,b) = 1, to PC ← PC + 2 (lub 3), inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

SBIS A,b   0 ≤ A ≤ 31, 0 ≤ b ≤7   PC ← PC + 1, warunek fałszywy - bez pominięcia
PC ← PC + 2, pominięcie instrukcji o długości słowa
PC ← PC + 3, pominięcie instrukcji o długości dwóch słów

16-bitowy kod instrukcji

1001
1011
AAAA
Abbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

waitset: sbis $10,0   ; Pomiń następną instrukcję, jeśli bit 0 w porcie D jest ustawiony
         rjmp waitset ; Bit nie jest ustawiony
         nop          ; Kontynuuj (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle:

1, jeśli warunek niespełniony (brak pominięcia)
2, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 1 słowa
3, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 2 słów

 

SBIW – Subtract Immediate from Word – Odejmowanie stałej od słowa

Opis

Odejmuje stałą wartość (0-63) od pary rejestrów i umieszcza wynik w tej parze rejestrów. Ta instrukcja działa na czterech górnych parach rejestrów i doskonale nadaje się do operacji na rejestrach wskaźnikowych.

Instrukcja nie jest dostępna na wszystkich mikrokontrolerach. Sprawdź w danych technicznych swojego urządzenia.

Działanie

                 
Rd+1:Rd ← Rd+1:Rd - K

Składnia

 

Argumenty

 

Licznik rozkazów

SBIW Rd+1:Rd,K   d {24,26,28,30}, 0 ≤ K ≤ 63   PC ← PC + 1

16-bitowy kod instrukcji

1001
0111
KKdd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: Rdh7•R15
Ustawiany, jeśli operacja doprowadza do przepełnienia U2; w przeciwnym razie zerowany
N: R15
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $0000; w przeciwnym razie zerowany
C: R15• Rdh7
Ustawiany, jeśli wartość bezwzględna stałej K jest większa niż wartość bezwzględna Rd; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rdh:Rdl (Rdh7-Rdh0 = R15-R8, Rdl7-Rdl0=R7-R0).

Przykładowy kod:

sbiw r25:r24,1 ; Odejmij 1 od r25:r24
sbiw YH:YL,63  ; Odejmij 63 od wskaźnika Y (r29:r28)

Liczba słów: 1 (2 bajty)

Cykle: 2

 

SBR – Set Bits in Register – Ustawianie bitów w rejestrze

Opis

Ustawia określone bity w rejestrze Rd. Wykonuje logiczną alternatywę stałej K i zawartości rejestru Rd, umieszczając wynik w rejestrze docelowym Rd, co odpowiada instrukcji ORI Rd,K.

Działanie

                 
Rd ← Rd v K

Składnia

 

Argumenty

 

Licznik rozkazów

SBR Rd,K   16 ≤ d ≤ 31, 0 ≤ K ≤ 255   PC ← PC + 1

16-bitowy kod instrukcji

0110
KKKK
ddd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X 0 X X
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: 0
Zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

sbr r16,3   ; Ustaw bity 0 i 1 w r16
sbr r17,$F0 ; Ustaw 4 górne bity w r17

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SBRC – Skip if Bit in Register is Cleared – Pominięcie przy wyzerowanym bicie w rejestrze

Opis

Ta instrukcja testuje pojedynczy bit w rejestrze i pomija wykonanie następnej instrukcji, jeśli ten bit jest wyzrowany.

Działanie

                 
Jeśli Rr(b) = 0, to PC ← PC + 2 (lub 3), inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

SBRC Rr,b   0 ≤ r ≤ 31, 0 ≤ b ≤7   PC ← PC + 1, warunek fałszywy - bez pominięcia
PC ← PC + 2, pominięcie instrukcji o długości słowa
PC ← PC + 3, pominięcie instrukcji o długości dwóch słów

16-bitowy kod instrukcji

1111
110r
rrrr
0bbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

sub r0,r1 ; Odejmij r1 od r0
sbrc r0,7 ; Pomiń, jeśli bit 7 w r0 wyzerowany
sub r0,r1 ; Wykonywane tylko wtedy, gdy bit 7 w r0 nie jest wyzerowany
nop       ; Kontynuuj (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle:

1, jeśli warunek niespełniony (brak pominięcia)
2, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 1 słowa
3, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 2 słów

 

SBRS – Skip if Bit in Register is Set – Pominięcie przy ustawionym bicie w rejestrze

Opis

Ta instrukcja testuje pojedynczy bit w rejestrze i pomija wykonanie następnej instrukcji, jeśli ten bit jest wyzrowany.

Działanie

                 
Jeśli Rr(b) = 1, to PC ← PC + 2 (lub 3), inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

SBRS Rr,b   0 ≤ r ≤ 31, 0 ≤ b ≤7   PC ← PC + 1, warunek fałszywy - bez pominięcia
PC ← PC + 2, pominięcie instrukcji o długości słowa
PC ← PC + 3, pominięcie instrukcji o długości dwóch słów

16-bitowy kod instrukcji

1111
111r
rrrr
0bbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

sub r0,r1 ; Odejmij r1 od r0
sbrs r0,7 ; Pomiń, jeśli bit 7 w r0 ustawiony
neg r0    ; Wykonywane tylko wtedy, gdy bit 7 w r0 nie jest ustawiony
nop       ; Kontynuuj (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle:

1, jeśli warunek niespełniony (brak pominięcia)
2, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 1 słowa
3, jeśli warunek prawdziwy (pominięcie jest wykonywane) a pomijana instrukcja ma długość 2 słów

 

SEC – Set Carry Flag – Ustawienie znacznika przeniesienia

Opis

Ustawia znacznik przeniesienia (C) w SREG (rejestr stanu).

Działanie

                 
C ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEC   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0000
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
C: 1
Ustawiany

Przykładowy kod:

sec       ; Ustaw znacznik przeniesienia
adc r0,r1 ; r0=r0+r1+1

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SEH – Set Half Carry Flag – Ustawienie znacznika przeniesienia połówkowego

Opis

Ustawia znacznik przeniesienia połówkowego (H) w SREG (rejestr stanu).

Działanie

                 
H ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEH   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0101
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
H: 1
Ustawiany

Przykładowy kod:

seh       ; Ustaw znacznik przeniesienia połówkowego

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SEI – Set Global Interrupt Flag – Ustawienie globalnego znacznika przerwań

Opis

Ustawia globalny znacznik przerwań (I) w SREG (rejestr stanu). Instrukcja za SEI zostanie wykonana przed obsługą oczekujących przerwań.

Działanie

                 
I ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEI   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0111
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
I: 1
Ustawiany

Przykładowy kod:

sei   ; włącz globalnie przerwania
sleep ; wejdź w tryb uśpienia, oczekując na przerwanie
      ; uwaga: tryb uśpienia zostanie uaktywniony przed oczekującymi przerwaniami

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SEN – Set Negative Flag – Ustawienie znacznika ujemnego wyniku

Opis

Ustawia znacznik wyniku ujemnego (N) w SREG (rejestr stanu).

Działanie

                 
N ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEN   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0010
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
N: 1
Ustawiany

Przykładowy kod:

add r2,r19 ; Dodaj r19 do r2
sen        ; Ustaw znacznik ujemnego wyniku

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SER – Set all Bits in Register – Ustawienie wszystkich bitów w rejestrze

Opis

Ładuje do rejestru Rd stałą $FF.

Działanie

                 
Rd ← $FF

Składnia

 

Argumenty

 

Licznik rozkazów

SER Rd   16 ≤ d ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

1110
1111
dddd
1111

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

clr r16     ; Zeruj r16
ser r17     ; Ustaw r17
out $18,r16 ; Zapisz zera do portu B
nop         ; Opóźnienie (nic nie rób)
out $18,r17 ; Zapisz jedynki do portu B

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SES – Set Signed Flag – Ustawienie znacznika znaku

Opis

Ustawia znacznik znaku (S) w SREG (rejestr stanu).

Działanie

                 
S ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SES   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0100
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
S: 1
Ustawiany

Przykładowy kod:

add r2,r19 ; Dodaj r19 do r2
ses        ; Ustaw znacznik znaku

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SET – Set T Flag – Ustawienie znacznika T

Opis

Ustawia znacznik T w SREG (rejestr stanu).

Działanie

                 
T ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SET   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0110
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
T: 1
Ustawiany

Przykładowy kod:

set        ; Ustaw znacznik T

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SEV – Set Overflow Flag – Ustawienie znacznika nadmiaru U2

Opis

Ustawia znacznik nadmiaru U2 (V) w SREG (rejestr stanu).

Działanie

                 
V ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEV   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0011
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
V: 1
Ustawiany

Przykładowy kod:

add r2,r19 ; Dodaj r19 do r2
sev        ; Ustaw znacznik nadmiaru

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SEZ – Set Zero Flag – Ustawienie znacznika zera

Opis

Ustawia znacznik zera (Z) w SREG (rejestr stanu).

Działanie

                 
Z ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

SEZ   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
0001
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
1
Z: 1
Ustawiany

Przykładowy kod:

add r2,r19 ; Dodaj r19 do r2
sez        ; Ustaw znacznik zera

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SLEEP – Uśpienie

Opis

Instrukcja wprowadza mikrokontroler w tryb uśpienia, który jest zdefiniowany przez rejestr sterujący.

Działanie

                 
W dokumentacji mikrokontrolera znajdziesz dokładny opis
dostępnych trybów uśpienia

Składnia

 

Argumenty

 

Licznik rozkazów

SLEEP   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0101
1000
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

mov r0,r11      ; Kopiuj r11 do r0
ldi r16,(1<<SE) ; Włącz tryb uśpienia
out MCUCR, r16
sleep           ; Wprowadź mikrokontroler w tryb uśpienia

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SPM – Store Program Memory – Zapis w pamięci programu

Opis

Instrukcja SPM może być użyta do wymazania strony w pamięci programu, do zapisania strony w pamięci programu (która została już wymazana), i do ustawienia bitów blokujących dla Boot-loadera. W niektórych mikrokontrolerach pamięć programu może być zapisywana po słowie, w innych cała strona może zostać jednocześnie zaprogramowana po wcześniejszym wypełnieniu bufora tymczasowego. W każdym przypadku pamięć musi być wcześniej wymazywana w obrębie modyfikowanej strony. Przy wymazywaniu pamięci programu rejestry RAMPZ i Z są używane  jako adresy stron. Przy zapisie pamięci programu rejestry RAMPZ i Z są używane jako adresy stron lub słów, a para rejestrów R1:R0 jest używana jako dane(1). Przy ustawianiu bitów blokujących boot-loadera para rejestrów R1:R0 jest używana jako dane.

W dokumentacji swojego mikrokontrolera znajdziesz szczegółowy opis użycia SPM. Ta instrukcja może adresować całą pamięć programu.

Instrukcja nie jest dostępna na wszystkich mikrokontrolerach AVR. Sprawdź w ich danych technicznych.

(1) R1 określa górny bajt instrukcji, a R0 określa dolny bajt instrukcji.

 

Działanie

               

Komentarz

(i)
(ii)
(iii)
(iv)
(v)
(RAMPZ:Z) ← $ffff
(RAMPZ:Z) ← R1:R0
(RAMPZ:Z) ← R1:R0
(RAMPZ:Z) ← TEMP
BLBITS ← R1:R0
Wymazanie strony pamięci programu
Zapis słowa pamięci programu
Zapis do tymczasowego bufora strony
Zapis tymczasowego bufora strony do pamięci programu
Ustawienie bitów blokujących bootloadera
 

Składnia

 

Argumenty

 

Licznik rozkazów

(i)...(v) SPM   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0101
1110
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

;Ten przykład pokazuje zapis za pomocą SPM jednej strony dla mikrokontrolerów
;z zapisem stron
;- procedura zapisuje jedną stronę danych z RAM do FLASH
;  pierwsza komórka danych w RAM jest wskazywana przez wskaźnik Y
;  pierwsza komórka danych we FLASH jest wskazywana przez wskaźnik Z
;- obsługa błędów nie jest dołączona
;- procedura musi być umieszczona wewnątrz obszaru bootowania
;- Używane rejestry: r0, r1, temp1, temp2, looplo, loophi, spmcrval
; (temp1, temp2, looplo, loophi, spmcrval muszą być zdefiniowane przez użytkownika)
;  zachowywanie i odtwarzanie rejestrów nie jest dołączone do procedury
;  użycie rejestrów można zoptymalizować kosztem rozmiaru kodu
.equ PAGESIZEB = PAGESIZE*2 ;PAGESIZEB jest rozmiarem strony w bajtach, nie w słowach
.org SMALLBOOTSTART
write_page:
           ;wymazanie strony
           ldi spmcrval, (1<<PGERS) + (1<<SPMEN)
           call do_spm
           ;przenoszenie danych z RAM do bufora strony FLASH
           ldi looplo, low(PAGESIZEB) ;inicjuj zmienną pętli
           ldi loophi, high(PAGESIZEB);nie jest wymagane dla PAGESIZEB<=256
wrloop:    ld r0, Y+
           ld r1, Y+
           ldi spmcrval, (1<<SPMEN)
           call do_spm
           adiw ZH:ZL, 2
           sbiw loophi:looplo, 2;użyj subi dla PAGESIZEB<=256
           brne wrloop
           ;wykonanie zapisu strony
           subi ZL, low(PAGESIZEB) ;odtwórz wskaźnik
           sbci ZH, high(PAGESIZEB);nie jest wymagane dla PAGESIZEB<=256
           ldi spmcrval, (1<<PGWRT) + (1<<SPMEN)
           call do_spm
           ;odczyt z powrotem i sprawdzenie, opcjonalnie
           ldi looplo, low(PAGESIZEB) ;inicjuj zmienną pętli
           ldi loophi, high(PAGESIZEB);nie jest wymagane dla PAGESIZEB<=256
           subi YL, low(PAGESIZEB)    ;odtwórz wskaźnik
           sbci YH, high(PAGESIZEB)
rdloop:    lpm r0, Z+
           ld r1, Y+
           cpse r0, r1
           jmp error
           sbiw loophi:looplo, 2 ;użyj subi dla PAGESIZEB<=256
           brne rdloop
           ret
do_spm:
           ;wejście: spmcrval określa działanie SPM
           ;wyłącz przerwania, jeśli są włączone, zachowaj rejestr stanu
           in temp2, SREG
           cli
           ;sprawdź zakończenie poprzedniej SPM
wait:      in temp1, SPMCR
           sbrc temp1, SPMEN
           rjmp wait
           ;czasowa sekwencja SPM
           out SPMCR, spmcrval
           spm
           ;odtwórz SREG (aby włączyć przerwania, jeśli pierwotnie były włączone)
           out SREG, temp2
           ret

Liczba słów: 1 (2 bajty)

Cykle: zależnie od rodzaju operacji

 

ST – Store Indirect From Register to Data Space using Index X – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu X

Opis

Zapisuje pośrednio jeden bajt z rejestru w przestrzeni danych. Dla mikrokontrolerów z SRAM przestrzeń danych składa się z zestawu rejestrów, pamięci we/wy oraz wewnętrznej pamięci SRAM (i zewnętrznej SRAM, jeśli da się ją zastosować). Dla mikrokontrolerów bez SRAM, przestrzeń danych składa się tylko z zestawu rejestrów. Pamięć EEPROM posiada oddzielną przestrzeń adresową.

Komórka danych jest wskazywana przez rejestr wskaźnikowy X (16 bitów) w zestawie rejestrów. Dostęp do pamięci ograniczony jest do bieżącego segmentu danych o rozmiarze 64KB. Aby otrzymać dostęp do innego segmentu danych na mikrokontrolerach z przestrzenią danych większą od 64 KB, należy zmienić zawartość rejestru RAMPX w obszarze we/wy.

Rejestr wskaźnikowy X może albo pozostać niezmieniony przez tę operację, albo może on być postinkrementowany (zwiększany o 1 po operacji) lub predekrementowany (zmniejszany o 1 przed operacją).

Te cechy są szczególnie przydatne przy dostępie do ciągów, tablic oraz używania rejestru X w charakterze wskaźnika stosu. Zwróć uwagę, iż na mikrokontrolerach z przestrzenią danych nie większą niż 256 bajtów modyfikowany jest tylko dolny bajt wskaźnika X. Takie mikrokontrolery nie wykorzystują górnego bajta w tej instrukcji i można go wykorzystać do innych celów. Rejestr RAMPX w obszarze we/wy jest modyfikowany w mikrokontrolerach z przestrzenią danych lub z pamięcią programu większą niż 64KB, a zwiększanie/zmniejszanie odnosi się do całego 24-bitowego adresu.

Nie wszystkie warianty tej instrukcji są dostępne we wszystkich mikrokontrolerach. Sprawdź w spisie rozkazów swojego mikrokontrolera, który znajdziesz w jego danych technicznych.

Wynik poniższych kombinacji argumentów jest nieokreślony:

ST X+, r26
ST X+, r27
ST -X, r26
ST -X, r27
 

Działanie

               

Komentarz

(i)
(ii)
(iii)
(X) ← Rr
(X) ← Rr X ← X+1
X ← X - 1 (X) ← Rr
X: bez zmian
X: postinkrementowany
X: predekrementowany
 

Składnia

 

Argumenty

 

Licznik rozkazów

(i)
(ii)
(iii)
ST X, Rr
ST X+, Rr
ST -X, Rr
  0 ≤ r ≤ 31
0 ≤ r ≤ 31
0 ≤ r ≤ 31
  PC ← PC + 1
PC ← PC + 1
PC ← PC + 1

16-bitowy kod instrukcji

(i)
1001
001r
rrrr
1100
(ii)
1001
001r
rrrr
1101
(iii)
1001
001r
rrrr
1110

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

clr r27     ; Zeruj górny bajt indeksu X
ldi r26,$60 ; Ustaw dolny bajt indeksu  X na $60
st X+,r0    ; Umieść r0 w komórce danych o adresie $60(X postinkrementowany)
st X,r1     ; Umieść r1 w komórce danych o adresie $61
ldi r26,$63 ; Ustaw dolny bajt indeksu X na $63
st X,r2     ; Umieść r2 w komórce danych o adresie $63
st -X,r3    ; Umieść r3 w komórce danych o adresie $62(X predekrementowany)

Liczba słów: 1 (2 bajty)

Cykle: 2

 

ST(STD) – Store Indirect From Register to Data Space using Index Y – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu Y

Opis

Zapisuje pośrednio jeden bajt z rejestru w przestrzeni danych. Dla mikrokontrolerów z SRAM przestrzeń danych składa się z zestawu rejestrów, pamięci we/wy oraz wewnętrznej pamięci SRAM (i zewnętrznej SRAM, jeśli da się ją zastosować). Dla mikrokontrolerów bez SRAM, przestrzeń danych składa się tylko z zestawu rejestrów. Pamięć EEPROM posiada oddzielną przestrzeń adresową.

Komórka danych jest wskazywana przez rejestr wskaźnikowy Y (16 bitów) w zestawie rejestrów. Dostęp do pamięci ograniczony jest do bieżącego segmentu danych o rozmiarze 64KB. Aby otrzymać dostęp do innego segmentu danych na mikrokontrolerach z przestrzenią danych większą od 64 KB, należy zmienić zawartość rejestru RAMPY w obszarze we/wy.

Rejestr wskaźnikowy Y może albo pozostać niezmieniony przez tę operację, albo może on być postinkrementowany (zwiększany o 1 po operacji) lub predekrementowany (zmniejszany o 1 przed operacją).

Te cechy są szczególnie przydatne przy dostępie do ciągów, tablic oraz używania rejestru Y w charakterze wskaźnika stosu. Zwróć uwagę, iż na mikrokontrolerach z przestrzenią danych nie większą niż 256 bajtów modyfikowany jest tylko dolny bajt wskaźnika Y. Takie mikrokontrolery nie wykorzystują górnego bajta w tej instrukcji i można go wykorzystać do innych celów. Rejestr RAMPY w obszarze we/wy jest modyfikowany w mikrokontrolerach z przestrzenią danych lub z pamięcią programu większą niż 64KB, a zwiększanie/zmniejszanie odnosi się do całego 24-bitowego adresu.

Nie wszystkie warianty tej instrukcji są dostępne we wszystkich mikrokontrolerach. Sprawdź w spisie rozkazów swojego mikrokontrolera, który znajdziesz w jego danych technicznych.

Wynik poniższych kombinacji argumentów jest nieokreślony:

ST Y+, r28
ST Y+, r29
ST -Y, r28
ST -Y, r29
 

Działanie

               

Komentarz

(i)
(ii)
(iii)
(iiii)
(Y) ← Rr
(Y) ← Rr Y ← Y+1
Y ← Y - 1 (Y) ← Rr
(Y+q) ← Rr
Y: bez zmian
Y: postinkrementowany
Y: predekrementowany
Y: bez zmian, q: przesunięcie
 

Składnia

 

Argumenty

 

Licznik rozkazów

(i)
(ii)
(iii)
(iiii)
ST Y, Rr
ST Y+, Rr
ST -Y, Rr
STD Y+q, Rr
  0 ≤ r ≤ 31
0 ≤ r ≤ 31
0 ≤ r ≤ 31
0 ≤ r ≤ 31, 0 ≤ q ≤ 63
  PC ← PC + 1
PC ← PC + 1
PC ← PC + 1
PC ← PC + 1

16-bitowy kod instrukcji

(i)
1001
001r
rrrr
1100
(ii)
1001
001r
rrrr
1101
(iii)
1001
001r
rrrr
1110
(iiii)
10q0
qq1r
rrrr
1qqq

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

clr r29     ; Zeruj górny bajt indeksu Y
ldi r28,$60 ; Ustaw dolny bajt indeksu  Y na $60
st Y+,r0    ; Umieść r0 w komórce danych o adresie $60(Y postinkrementowany)
st Y,r1     ; Umieść r1 w komórce danych o adresie $61
ldi r28,$63 ; Ustaw dolny bajt indeksu Y na $63
st Y,r2     ; Umieść r2 w komórce danych o adresie $63
st -Y,r3    ; Umieść r3 w komórce danych o adresie $62(Y predekrementowany)
std Y+2,r4  ; Umieść r4 w komórce danych o adresie $64

Liczba słów: 1 (2 bajty)

Cykle: 2

 

ST(STD) – Store Indirect From Register to Data Space using Index Z – Zapis pośredni rejestru w pamięci danych przy użyciu indeksu Z

Opis

Zapisuje pośrednio jeden bajt z rejestru w przestrzeni danych. Dla mikrokontrolerów z SRAM przestrzeń danych składa się z zestawu rejestrów, pamięci we/wy oraz wewnętrznej pamięci SRAM (i zewnętrznej SRAM, jeśli da się ją zastosować). Dla mikrokontrolerów bez SRAM, przestrzeń danych składa się tylko z zestawu rejestrów. Pamięć EEPROM posiada oddzielną przestrzeń adresową.

Komórka danych jest wskazywana przez rejestr wskaźnikowy Z (16 bitów) w zestawie rejestrów. Dostęp do pamięci ograniczony jest do bieżącego segmentu danych o rozmiarze 64KB. Aby otrzymać dostęp do innego segmentu danych na mikrokontrolerach z przestrzenią danych większą od 64 KB, należy zmienić zawartość rejestru RAMPZ w obszarze we/wy.

Rejestr wskaźnikowy Z może albo pozostać niezmieniony przez tę operację, albo może on być postinkrementowany (zwiększany o 1 po operacji) lub predekrementowany (zmniejszany o 1 przed operacją).

Te cechy są szczególnie przydatne przy dostępie do ciągów, tablic oraz używania rejestru Z w charakterze wskaźnika stosu. Zwróć uwagę, iż na mikrokontrolerach z przestrzenią danych nie większą niż 256 bajtów modyfikowany jest tylko dolny bajt wskaźnika Z. Takie mikrokontrolery nie wykorzystują górnego bajta w tej instrukcji i można go wykorzystać do innych celów. Rejestr RAMPZ w obszarze we/wy jest modyfikowany w mikrokontrolerach z przestrzenią danych lub z pamięcią programu większą niż 64KB, a zwiększanie/zmniejszanie odnosi się do całego 24-bitowego adresu.

Nie wszystkie warianty tej instrukcji są dostępne we wszystkich mikrokontrolerach. Sprawdź w spisie rozkazów swojego mikrokontrolera, który znajdziesz w jego danych technicznych.

Wynik poniższych kombinacji argumentów jest nieokreślony:

ST Z+, r30
ST Z+, r31
ST -Z, r30
ST -Z, r31
 

Działanie

               

Komentarz

(i)
(ii)
(iii)
(iiii)
(Z) ← Rr
(Z) ← Rr Z ← Z+1
Z ← Z - 1 (Z) ← Rr
(Z+q) ← Rr
Z: bez zmian
Z: postinkrementowany
Z: predekrementowany
Z: bez zmian, q: przesunięcie
 

Składnia

 

Argumenty

 

Licznik rozkazów

(i)
(ii)
(iii)
(iiii)
ST Y, Rr
ST Y+, Rr
ST -Y, Rr
STD Y+q, Rr
  0 ≤ r ≤ 31
0 ≤ r ≤ 31
0 ≤ r ≤ 31
0 ≤ r ≤ 31, 0 ≤ q ≤ 63
  PC ← PC + 1
PC ← PC + 1
PC ← PC + 1
PC ← PC + 1

16-bitowy kod instrukcji

(i)
1000
001r
rrrr
0000
(ii)
1001
001r
rrrr
0001
(iii)
1001
001r
rrrr
0010
(iiii)
10q0
qq1r
rrrr
0qqq

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

clr r31     ; Zeruj górny bajt indeksu Z
ldi r30,$60 ; Ustaw dolny bajt indeksu  Z na $60
st Z+,r0    ; Umieść r0 w komórce danych o adresie $60(Z postinkrementowany)
st Z,r1     ; Umieść r1 w komórce danych o adresie $61
ldi r30,$63 ; Ustaw dolny bajt indeksu Z na $63
st Z,r2     ; Umieść r2 w komórce danych o adresie $63
st -Z,r3    ; Umieść r3 w komórce danych o adresie $62(Z predekrementowany)
std Z+2,r4  ; Umieść r4 w komórce danych o adresie $64

Liczba słów: 1 (2 bajty)

Cykle: 2

 

STS – Store Direct to Data Space – Zapis bezpośrednio do przestrzeni danych

Opis

Zapisuje jeden bajt z rejestru w przestrzeni danych. Dla mikrokontrolerów z SRAM przestrzeń danych składa się z zestawu rejestrów, pamięci we/wy oraz wewnętrznej pamięci SRAM (i zewnętrznej SRAM, jeśli da się ją zastosować). Dla mikrokontrolerów bez SRAM, przestrzeń danych składa się tylko z zestawu rejestrów. Pamięć EEPROM posiada oddzielną przestrzeń adresową.

Musi być dostarczony 16-bitowy adres. Dostęp do pamięci jest ograniczony do bieżącego segmentu danych o rozmiarze 64KB. Instrukcja STS wykorzystuje rejestr RAMPD w obszarze we/wy, zatem dostęp do innych partii pamięci wymaga zmiany zawartości tego rejestru.

Ta instrukcja nie jest dostępna dla wszystkich mikrokontrolerów. Sprawdź listę instrukcji konkretnego modelu.

Działanie

                 
(k) ← Rr  

Składnia

 

Argumenty

 

Licznik rozkazów

STS k,Rr   0 ≤ r ≤ 31, 0 ≤ k ≤ 65535   PC ← PC + 1

32-bitowy kod instrukcji

1001
001d
dddd
0000
kkkk
kkkk
kkkk
kkkk

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

lds r2,$FF00 ; Załaduj r2 zawartością komórki danych o adresie $FF00
add r2,r1    ; dodaj r1 do r2
sts $FF00,r2 ; Zapisz z powrotem w pamięci danych

Liczba słów: 2 (4 bajty)

Cykle: 2

 

SUB – Subtract without Carry – Odejmowanie bez przeniesienia

Opis

Odejmuje zawartość dwóch rejestrów i umieszcza wynik w rejestrze docelowym Rd.

Działanie

                 
Rd ← Rd - Rr  

Składnia

 

Argumenty

 

Licznik rozkazów

SUB Rd,Rr   0 ≤ d ≤ 31, 0 ≤ r ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0001
10rd
dddd
rrrr

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•Rr3+Rr3•R3+R3•Rd3
Ustawiany, jeśli była pożyczka z bitu 3; w przeciwnym razie zerowany
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•Rr7R7+Rd7•Rr7•R7
Ustawiany, jeśli operacja spowodowała nadmiar U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany
C: Rd7•Rr7+Rr7•R7+R7•Rd7
Ustawiany, jeśli wartość bezwzględna Rr jest większa od wartości bezwzględnej Rd; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

       sub r13,r12 ; Odejmij r12 od r13
       brne noteq  ; Skocz, jeśli r12<>r13
       ...
noteq: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SUBI – Subtract Immediate – Odejmowanie stałej

Opis

Odejmuje stałą K od rejestru Rd i umieszcza wynik w rejestrze docelowym Rd. Instrukcja ta operuje na rejestrach od R16 do R31 i nadaje się doskonale do operacji na wskaźnikach X, Y i Z.

Działanie

                 
Rd ← Rd - K  

Składnia

 

Argumenty

 

Licznik rozkazów

SUBI Rd,K   16 ≤ d ≤ 31, 0 ≤ K ≤ 255   PC ← PC + 1

16-bitowy kod instrukcji

0101
KKKK
dddd
KKKK

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X
H: Rd3•K3+K3•R3+R3•Rd3
Ustawiany, jeśli była pożyczka z bitu 3; w przeciwnym razie zerowany
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: Rd7•K7R7+Rd7•K7•R7
Ustawiany, jeśli operacja spowodowała nadmiar U2; w przeciwnym razie zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany
C: Rd7•K7+K7•R7+R7•Rd7
Ustawiany, jeśli wartość bezwzględna stałej K jest większa od wartości bezwzględnej Rd; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

       sub r22,$11 ; Odejmij $11 od r22
       brne noteq  ; Skocz, jeśli r22<>$11
       ...
noteq: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1

 

SWAP – Swap Nibbles – Wymiana 4 górnych bitów z 4 dolnymi

Opis

Wymienia ze sobą 4 górne bity z 4 dolnymi bitami rejestru Rd.

Działanie

                 
R(7:4) ← Rd(3:0), R(3:0) ← Rd(7:4)  

Składnia

 

Argumenty

 

Licznik rozkazów

SWAP Rd   0 ≤ d ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

1001
010d
dddd
0010

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

inc r1  ; Zwiększ r1 o 1
swap r1 ; Zamień ze sobą 4 górne i 4 dolne bity rejestru r1
inc r1  ; Zwiększ 0 1 4 górne bity rejestru r1
swap r1 ; Zamień z powrotem

Liczba słów: 1 (2 bajty)

Cykle: 1

 

TST – Test for Zero or Minus – Test na zero lub minus

Opis

Testuje, czy zawartość rejestru jest zerem lub liczbą ujemną w kodzie U2. Wykonują logiczną operację koniunkcji pomiędzy rejestrem a nim samym. W efekcie zawartość rejestru pozostaje niezmieniona.

Działanie

                 
Rd ← Rd • Rd  

Składnia

 

Argumenty

 

Licznik rozkazów

TST Rd   0 ≤ d ≤ 31   PC ← PC + 1

16-bitowy kod instrukcji

0010
00dd
dddd
dddd

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X 0 X X
S: N V
Dla testów liczb ze znakiem w kodzie U2
V: 0
Zerowany
N: R7
Ustawiany, jeśli najstarszy bit wyniku jest ustawiony; w przeciwnym razie zerowany
Z: R7R6R5R4R3R2R1R0
Ustawiany, jeśli wynik wynosi $00; w przeciwnym razie zerowany

Wynik R (ang. Result) po operacji jest równy Rd.

Przykładowy kod:

      tst r0    ; Testuj r0
      breq zero ; Skocz, jeśli r0=0
      ...
zero: nop       ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1

 

WDR – Watchdog Reset – Reset licznika zegarowego

Opis

Ta instrukcja resetuje licznik zegarowy (ang. Watchdog Timer). Musi być wykonana w ograniczonym przedziale czasu, który określa preskaler licznika zegarowego. Szczegóły znajdziesz w danych technicznych swojego mikrokontrolera.

Działanie

                 
Restart licznika zegarowego  

Składnia

 

Argumenty

 

Licznik rozkazów

WDR   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0101
1010
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

wdr ; Resetuj licznik zegarowy

Liczba słów: 1 (2 bajty)

Cykle: 1

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2019 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.