Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
SPIS TREŚCI |
Podrozdziały |
8-nóżkowy PIC12F510, dostępny również w obudowie 2x3 DFN, posiada pojedynczy komparator oraz 8-bitowy przetwornik A/C, 8 MHz oscylator wewnętrzny oraz ulepszony DRT, natomiast 14-nóżkowy PIC16F506 oferuje dwa komparatory w dodatku do 8-bitowego przetwornika A/C. Te mikrokontrolery PIC rodziny podstawowej dają inżynierom możność zastosowania mikrokontrolerów w aplikacjach, które historycznie były pozbawione takich układów. Czy ograniczenia dotyczą kosztów, czy dostępnej przestrzeni, mikrokontrolery PIC z rodziny podstawowej rozwiązują te problemy udostępniając strukturę cenową, która czyni opłacalnymi tworzenie prawie jednorazowych projektów, przy rozmiarach obudowy tak małych, że układy mikrokontrolerów mogą zostać łatwo zaimplementowane w większości projektów z ograniczoną przestrzenią.
8-bitowe mikrokontrolery PIC® rodziny podstawowej z pamięcią FLASH (12-bitowe słowo instrukcji)
Układ | Pojemność FLASH w bajtach (słowach) |
Liczba bajtów RAM |
Liczba końcówek we/wy |
Moduły analogowe | Wewnętrzny oscylator |
Moduły cyfrowe | Obudowy | |
Przetw. A/C | Komp. | Timery/WDT | ||||||
PIC10F200 | 384 (256) | 16 | 4 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC10F202 | 768 (512) | 24 | 4 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC10F204 | 384 (256) | 16 | 4 | – | 1 | 4 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC10F206 | 768 (512) | 24 | 4 | – | 1 | 4 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC10F220 | 384 (256) | 16 | 4 | 2 x 8-bitowy | – | 4/8 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC10F222 | 768 (512) | 23 | 4 | 2 x 8-bitowy | – | 4/8 MHz | 1 8-bitowy, 1 WDT | 6OT, 8MC, 8P |
PIC12F508 | 768 (512) | 25 | 6 | – | – | 4 Mhz | 1 8-bitowy, 1 WDT | 8MC, 8MS, 8P, 8SN |
PIC12F509 | 1536 (1024) | 41 | 6 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 8MC, 8MS, 8P, 8SN |
PIC12F510 | 1536 (1024) | 38 | 6 | 3 x 8-bitowy | 1 | 4/8 MHz | 1-8-bitowy, 1 WDT | 8MC, 8MS, 8P, 8SN |
PIC16F505 | 1536 (1024) | 72 | 12 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 14P, 14SL, 14ST |
PIC16F506 | 1536 (1024) | 67 | 12 | 3 x 8-bitowy | 2 | 4/8 MHz | 1 8-bitowy, 1 WDT | 14P, 14SL, 14ST |
PIC16F54 | 768 (512) | 25 | 12 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 18P, 18SO, 20SS |
PIC16F57 | 3072 (2048) | 72 | 20 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 28P, 28SO, 28SS |
PIC16F59 | 3072 (2048) | 134 | 32 | – | – | 4 MHz | 1 8-bitowy, 1 WDT | 40P, 44PT |
Symbole obudów: | MC = 2x3 DFN (8-lead) MS = MSOP OT = SOT-23 P = PDIP PT = TQFP SL = SOIC (.150″), SN (.150″) SO = SOIC SS = SSOP ST = TSSOP |
b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
Pamięć programu zorganizowana jest w słowa 12-bitowe. Z tego powodu jeśli w instrukcji technicznej mikrokontrolera PIC znajdziesz informację o pojemności pamięci programu wyrażonej w bajtach, to liczbę tę należy podzielić przez 1,5, aby otrzymać liczbę słów. Na przykład producent podaje, iż mikrokontroler PIC16F506 posiada 1536 bajtów FLASH. Liczymy:
Otrzymujemy wynik 1024 słów, czyli program dla tego mikroprocesora może składać się z maksymalnie 1024 instrukcji.
Rodzinę podstawową PIC (ang. base-line PIC family) reprezentują mikrokontrolery z serii PIC10, jak również niektóre z serii PIC12 i PIC16. Występują one w obudowach od 6- do 40-nóżkowych. Posiadają 32-bajtowy zestaw rejestrów (ang. register file) oraz mały, dwupoziomowy stos dla adresów powrotnych z podprogramów.
Zwykle pierwsze 7...9 bajtów zestawu rejestrów przeznaczone jest na rejestry o specjalnej funkcji, a pozostałe bajty są pamięcią RAM ogólnego przeznaczenia. Wskaźniki są zaimplementowane przy użyciu pary rejestrów: po zapisaniu adresu do FSR (ang. file select register – rejestr wyboru zestawu), rejestr INDF (ang. indirect f – pośredni rejestr f) staje się odpowiednikiem zaadresowanego w FSR rejestru. Jeśli w mikrokontrolerze zaimplementowana jest pamięć RAM w bankach, to numer banku jest wybierany przez 3 najstarsze bity w FSR. Wpływa to na rejestry 16–31; rejestry 0–15 są globalne i nie wpływają na nie bity wyboru banku.
Z powodu bardzo ograniczonej przestrzeni rejestrów (5 bitów), 4 rzadko odczytywane rejestry nie posiadają przydzielonych adresów, lecz są zapisywane przy pomocy specjalnych instrukcji (OPTION i TRIS).
Przestrzeń adresowa ROM ma rozmiar 512 słów 12-bitowych i może zostać rozszerzona do 2058 słów za pomocą banków. Instrukcje CALL (wywołanie podprogramu) i GOTO (skok w nowe miejsce w programie) określają dolne 9 bitów nowego adresu kodu: dodatkowe górne bity są pobierane z rejestru stanu. Zwróć uwagę, iż instrukcja CALL zawiera tylko 8 bitów adresu i może określić jedynie adresy w pierwszej połowie każdej 512-słowowej stronie pamięci programu.
Instrukcje maszynowe mikrokontrolera PIC rodziny podstawowej posiadają trzy główne formaty:
d = 0, przeznaczeniem jest rejestr W d = 1, przeznaczeniem jest rejestr f f = 5-bitowy adres rejestru (0...31) |
Operacje bitowe na rejestrach
b = 3-bitowy numer bitu (0...7) f = 5-bitowy adres rejestru (0...31) |
Operacje sterujące i operacje ze stałą
(z wyjątkiem GOTO)
k = 8-bitowa stała (0...255) |
instrukcja GOTO
k = 9-bitowa stała (0...511) |
Poniższa tabelka przedstawia zestaw instrukcji PIC w rodzinie podstawowej. 5-bitowe numery rejestrów są oznaczone przez "f", natomiast stałe jako "k". Numery bitów (0–7) są wybierane przez "b". Bit d wybiera miejsce docelowe danych przetwarzanych przez instrukcję: 0 oznacza rejestr roboczy W, natomiast 1 oznacza, iż wynik operacji będzie zapisany z powrotem do rejestru źródłowego f. Wynik operacji może modyfikować znaczniki stanu C (ang. Carry – przeniesienie) i Z (ang. Zero), w przeciwnym razie nie są one zmieniane. Instrukcje dodawania i odejmowania (lecz nie obracania bitów), które ustawiają znacznik C, ustawiają również znacznik DC (ang. Digit Carry – przeniesienie z cyfry) będący przeniesieniem z bitu 3 na bit 4, co jest użyteczne przy arytmetyce BCD (ang. Binary Coded Decimal – liczby dziesiętne kodowane binarnie).
Bity instrukcji | Mnemonik | C? | Z? | Cykle roz. |
Opis | |||||||||||
11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 01 | |||||
Kod Operacji | Instrukcje różne | |||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NOP | 1 | Instrukcja pusta (MOVW 0,0) | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | OPTION | 1 | Kopiowanie W do rejestru OPTION | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | SLEEP | 1 | Przejście w tryb uśpienia | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | CLRWDT | 1 | Zerowanie licznika zegarowego | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | f | TRIS f | 1 | Kopiowanie W do rejestru TRIS (f = 5, 6 lub 7) | ||||
Kod Operacji | d | Rejestr | Operacje arytmetyczne/logiczne w JAL: dest ← operacja(f,W) | |||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 1 | f | MOVWF f | 1 | f ← W | ||||||
0 | 0 | 0 | 0 | 0 | 1 | d | f | CLR f,d | Z | 1 | dest ← 0, zwykle zapisywane jako CLRW lub CLRF f | |||||
0 | 0 | 0 | 0 | 1 | 0 | d | f | SUBWF f,d | C | Z | 1 | dest ← f − W (dest ← f+~W+1) | ||||
0 | 0 | 0 | 0 | 1 | 1 | d | f | DECF f,d | Z | 1 | dest ← f − 1 | |||||
0 | 0 | 0 | 1 | 0 | 0 | d | f | IORWF f,d | Z | 1 | dest ← f | W, alternatywa bitowa | |||||
0 | 0 | 0 | 1 | 0 | 1 | d | f | ANDWF f,d | Z | 1 | dest ← f & W, koniunkcja bitowa | |||||
0 | 0 | 0 | 1 | 1 | 0 | d | f | XORWF f,d | Z | 1 | dest ← f ^ W, bitowa suma modulo 2 | |||||
0 | 0 | 0 | 1 | 1 | 1 | d | f | ADDWF f,d | C | Z | 1 | dest ← f + W | ||||
0 | 0 | 1 | 0 | 0 | 0 | d | f | MOVF f,d | Z | 1 | dest ← f | |||||
0 | 0 | 1 | 0 | 0 | 1 | d | f | COMF f,d | Z | 1 | dest ← ~f, negacja bitów | |||||
0 | 0 | 1 | 0 | 1 | 0 | d | f | INCF f,d | Z | 1 | dest ← f + 1 | |||||
0 | 0 | 1 | 0 | 1 | 1 | d | f | DECFSZ f,d | 1/2 | dest ← f − 1, następnie pomijanie kolejnej instrukcji, jeśli zero | ||||||
0 | 0 | 1 | 1 | 0 | 0 | d | f | RRF f,d | C | 1 | dest ← CARRY<<7 | f>>1, obrót bitów w
prawo poprzez przeniesienie |
|||||
0 | 0 | 1 | 1 | 0 | 1 | d | f | RLF f,d | C | 1 | dest ← F<<1 | CARRY, obrót bitów w lewo
poprzez przeniesienie |
|||||
0 | 0 | 1 | 1 | 1 | 0 | d | f | SWAPF f,d | 1 | dest ← f << 4 | f >> 4, zamiana czwórek bitów | ||||||
0 | 0 | 1 | 1 | 1 | 1 | d | f | INCFSZ f,d | 1/2 | dest ← f + 1, następnie pomijanie kolejnej instrukcji, jeśli zero | ||||||
Kod Op. | Nr Bitu | Rejestr | Operacje bitowe | |||||||||||||
0 | 1 | 0 | 0 | b | f | BCF f,b | 1 | Zerowanie bitu b w f | ||||||||
0 | 1 | 0 | 1 | b | f | BSF f,b | 1 | Ustawienie na 1 bitu b w f | ||||||||
0 | 1 | 1 | 0 | b | f | BTFSC f,b | 1/2 | Pominięcie następnej instrukcji, jeśli bit b w f jest wyzerowany | ||||||||
0 | 1 | 1 | 1 | b | f | BTFSS f,b | 1/2 | Pominięcie następnej instrukcji, jeśli bit b w f jest ustawiony na 1 | ||||||||
Kod Op. | Stała | Instrukcje skoków | ||||||||||||||
1 | 0 | 0 | 0 | k | RETLW k | 2 | Ustawienie W ← k, a następnie wykonanie powrotu z podprogramu | |||||||||
1 | 0 | 0 | 1 | k | CALL k | 2 | Wywołanie podprogramu o 8-bitowym adresie k | |||||||||
1 | 0 | 1 | k | GOTO k | 2 | Skok pod 9-bitowy adres k | ||||||||||
Kod Op. | Stała | Operacje ze stałą k nad W: W ← OP(k,W) | ||||||||||||||
1 | 1 | 0 | 0 | k | MOVLW k | 1 | W ← k | |||||||||
1 | 1 | 0 | 1 | k | IORLW k | Z | 1 | W ← k | W, alternatywa bitowa | ||||||||
1 | 1 | 1 | 0 | k | ANDLW k | Z | 1 | W ← k & W, koniunkcja bitowa | ||||||||
1 | 1 | 1 | 1 | k | XORLW | Z | 1 | W ← k ^ W, bitowa suma modulo 2 | ||||||||
11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | Mnemonik | C? | Z? | Takty | Opis |
Symbol | Opis |
f | Numer rejestru w zestawie |
W | Rejestr roboczy (akumulator) |
b | Numer bitu w rejestrze |
k | Wartość stała |
d | Bit określający rejestr docelowy operacji: d = 0: rejestrem docelowym jest W d = 1: rejestrem docelowym jest f |
dest | Rejestr docelowy zależny od stanu bitu d |
TOS | Szczyt stosu |
PC | Rejestr licznika programu |
WDT | Timer licznika zegarowego |
C | Znacznik przeniesienia |
Z | Znacznik zera |
TO | Bit oznaczający przekroczenie czasu |
PD | Bit oznaczający wyłączenie zasilania |
[ ] | Pole bitowe |
← | Przesłanie wyniku operacji |
Składnia: ADDWF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0001 11df ffff
Operacja: dest ← W + f
Modyfikowane znaczniki stanu: C, DC, Z
Opis: Dodanie zawartości rejestru roboczego W (akumulatora) i rejestru f. Jeśli d jest równe 0, to wynik dodawania zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: ANDLW k
Argumenty: k = 0...255
Kod: 1110 kkkk kkkk
Operacja: W ← W & k
Modyfikowane znaczniki stanu: Z
Opis: Zawartość akumulatora W zostaje poddana bitowej operacji koniunkcji logicznej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.
Składnia: ANDWF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0001 01df ffff
Operacja: dest ← W & f
Modyfikowane znaczniki stanu: Z
Opis: Zawartość akumulatora W zostaje poddana bitowej operacji koniunkcji logicznej z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: BCF f,b
Argumenty: f = 0...31, b = 0...7
Kod: 0100 bbbf ffff
Operacja: f[b] ← 0
Modyfikowane znaczniki stanu: żaden
Opis: Bit b w rejestrze f jest zerowany.
Składnia: BSF f,b
Argumenty: f = 0...31, b = 0...7
Kod: 0101 bbbf ffff
Operacja: f[b] ← 1
Modyfikowane znaczniki stanu: żaden
Opis: Bit b w rejestrze f jest ustawiany na 1.
Składnia: BTFSC f,b
Argumenty: f = 0...31, b = 0...7
Kod: 0110 bbbf ffff
Operacja: pominięcie następnej instrukcji, jeśli f[b] = 0
Modyfikowane znaczniki stanu: żaden
Opis: Jeśli bit b w rejestrze f ma stan 0, to zostaje pominięta następna instrukcja. Jeśli bit ten ma stan 0, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja BTFSC zajmuje w tym przypadku 2 cykle rozkazowe.
Składnia: BTFSS f,b
Argumenty: f = 0...31, b = 0...7
Kod: 0111 bbbf ffff
Operacja: pominięcie następnej instrukcji, jeśli f[b] = 1
Modyfikowane znaczniki stanu: żaden
Opis: Jeśli bit b w rejestrze f ma stan 1, to zostaje pominięta następna instrukcja. Jeśli bit ten ma stan 1, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja BTFSS zajmuje w tym przypadku 2 cykle rozkazowe.
Składnia: CALL k
Argumenty: k = 0...255
Kod: 1001 kkkk kkkk
Operacja:
TOS ← PC + 1
PC[7:0] ← k
PC[10:9] ← STATUS[6:5]
PC[8] ← 0
Modyfikowane znaczniki stanu: żaden
Opis: Wywołanie podprogramu. Najpierw na stosie zostaje umieszczony adres powrotny (PC + 1). 8-bitowy adres bezpośredni zostaje załadowany do ośmiu najmłodszych bitów licznika programu (P[7:0]). Górne bity PC[10:9] są ładowane z bitów rejestru stanu STATUS[6:5], bit PC[8] jest zerowany. Wynika z tego, iż podprogram może znajdować się tylko w pierwszej połówce 512-słowowej strony pamięci programu. Instrukcja CALL zajmuje 2 cykle rozkazowe.
Składnia: CLR f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0000 01df ffff
Operacja:
dest ← 00h
Z ← 1
Modyfikowane znaczniki stanu: Z
Opis: Bity rejestru docelowego zostają wyzerowane i jest ustawiany znacznik zera Z. Jeśli d = 0, to zerowany jest rejestr akumulatora W. Jeśli d = 1, to zerowany jest rejestr f.
Składnia: CLRF f
Argumenty: f = 0...31
Kod: 0000 011f ffff
Operacja:
f ←
00h
Z ← 1
Modyfikowane znaczniki stanu: Z
Opis: Bity rejestru f zostają wyzerowane i jest ustawiany znacznik zera Z.
Składnia: CLRW
Argumenty: brak
Kod: 0000 0100 0000
Operacja:
W ←
00h
Z ← 1
Modyfikowane znaczniki stanu: Z
Opis: Bity akumulatora W zostają wyzerowane i jest ustawiany znacznik zera Z.
Instrukcje CLRF i CLRW są tą samą instrukcją CLR f,d. Gdy d = 0, zerowany jest akumulator W. Gdy d = 1, zerowany jest rejestr f.
Składnia: CLRWDT
Argumenty: brak
Kod: 0000 0000 0100
Operacja:
WDT ←
00h
TO ← 1
PD ← 1
Modyfikowane znaczniki stanu: TO, PD
Opis: Instrukcja CLRWDT resetuje licznik zegarowy. Jeśli preskaler został przydzielony do licznika zegarowego, a nie do timera 0, to jest on również resetowany. Ustawiane są znaczniki stanu TO i PD (TO – Time-Out – znacznik sygnalizujący zakończenie czasu zliczania; PD – Power-Down – znacznik sygnalizujący wyłączenie zasilania).
Składnia: COMF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0010 01df ffff
Operacja: dest ← f
Modyfikowane znaczniki stanu: Z
Opis: Wartość bitowa rejestru f zostaje zanegowana. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: DECF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0000 11df ffff
Operacja: dest ← f - 1
Modyfikowane znaczniki stanu: Z
Opis: Wartość rejestru f jest zmniejszana o 1. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: DECFSZ f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0010 11df ffff
Operacja: dest ← f - 1, pominięcie następnej instrukcji przy wyniku zero
Modyfikowane znaczniki stanu: żaden
Opis: Wartość rejestru f jest zmniejszana o 1. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f. Jeśli wynik jest zerowy, to zostaje pominięta następna instrukcja, czyli następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) jest usuwana z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja DECFSZ zajmuje w tym przypadku 2 cykle rozkazowe.
Składnia: GOTO k
Argumenty: k = 0...511
Kod: 101k kkkk kkkk
Operacja:
PC[8:0] ← k
PC[10:9] ← STATUS[6:5]
Modyfikowane znaczniki stanu: żaden
Opis: Instrukcja GOTO jest skokiem bezwarunkowym do nowego miejsca w programie. 9-bitowy adres natychmiastowy zostaje załadowany do dziewięciu najmłodszych bitów rejestru licznika programu PC[8:0]. Górne bity PC są ładowane z bitów rejestru stanu STATUS[6:5]. Instrukcja GOTO zajmuje dwa cykle rozkazowe.
Składnia: DINCF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0010 10df ffff
Operacja: dest ← f + 1
Modyfikowane znaczniki stanu: Z
Opis: Wartość rejestru f jest zwiększana o 1. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: INCFSZ f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0011 11df ffff
Operacja: dest ← f + 1, pominięcie następnej instrukcji przy wyniku zero
Modyfikowane znaczniki stanu: żaden
Opis: Wartość rejestru f jest zwiększana o 1. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f. Jeśli wynik jest zerowy, to zostaje pominięta następna instrukcja, czyli następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) jest usuwana z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja INCFSZ zajmuje w tym przypadku 2 takty zegara.
Składnia: IORLW k
Argumenty: k = 0...255
Kod: 1101 kkkk kkkk
Operacja: W ← W | k
Modyfikowane znaczniki stanu: Z
Opis: Zawartość akumulatora W zostaje poddana bitowej operacji alternatywy logicznej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.
Składnia: IORWF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0001 00df ffff
Operacja: dest ← W | f
Modyfikowane znaczniki stanu: Z
Opis: Wartość akumulatora W zostaje poddana bitowej alternatywie logicznej z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: MOVF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0010 00df ffff
Operacja: dest ← f
Modyfikowane znaczniki stanu: Z
Opis: Zawartość rejestru f jest kopiowana do rejestru przeznaczenia. Jeśli d jest równe 0, to rejestrem przeznaczenia jest akumulator W. Jeśli d jest równe 1, to rejestrem przeznaczenia jest rejestr f. Opcja d = 1 jest wykorzystywana do sprawdzania stanu rejestru f, ponieważ jest ustawiany znacznik zera Z.
Składnia: MOVLW k
Argumenty: k = 0...255
Kod: 1100 kkkk kkkk
Operacja: W ← k
Modyfikowane znaczniki stanu: żaden
Opis: 8-bitowa stała jest ładowana do rejestru akumulatora W.
Składnia: MOVLW k
Argumenty: k = 0...255
Kod: 0000 001f ffff
Operacja: f ← W
Modyfikowane znaczniki stanu: żaden
Opis: Umieszczenie danych W w rejestrze f.
Składnia: NOP
Argumenty: brak
Kod:
0000 0000 0000
Operacja: brak
Modyfikowane znaczniki stanu: żaden
Opis: Instrukcja nie wykonuje żadnej operacji. Zajmuje jeden takt zegara. W rzeczywistości jest to instrukcja MOVWF 0,0, która umieszcza W w W.
Składnia: OPTION
Argumenty: brak
Kod:
0000 0000 0010
Operacja: Option ← W
Modyfikowane znaczniki stanu: żaden
Opis: Zawartość rejestru W jest ładowana do rejestru OPTION.
Składnia: RETLW k
Argumenty: k = 0...255
Kod: 1000 kkkk kkkk
Operacja:
W ← k
PC ← TOS
Modyfikowane znaczniki stanu: żaden
Opis: Do rejestru akumulatora W zostaje załadowana 8-bitowa stała k. Do rejestru licznika programu zostaje załadowany adres powrotny ze szczytu stosu. Instrukcja zajmuje 2 cykle rozkazowe.
Składnia: RLF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0011 01df ffff
Operacja:
Modyfikowane znaczniki stanu: C
Opis: Zawartość rejestru f jest obracana bitowo w lewo poprzez znacznik przeniesienia. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: RRF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0011 00df ffff
Operacja:
Modyfikowane znaczniki stanu: C
Opis: Zawartość rejestru f jest obracana bitowo w prawo poprzez znacznik przeniesienia. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: SLEEP
Argumenty: brak
Kod: 0000 0000 0011
Operacja:
WDT ← 00h
Preskaler WDT ← 0
TO ← 1
PD ← 0
Modyfikowane znaczniki stanu: TO, PD, RBWUF
Opis: Zostaje ustawiony znacznik zakończenia zliczania TO (ang. Time-out Status bit). Znacznik wyłączenia zasilania PD (ang. Power-down Status bit) jest zerowany. Licznik zegarowy i jego preskaler są zerowane. Procesor zostaje wprowadzony w tryb uśpienia z zatrzymanym oscylatorem. Szczegóły trybu uśpienia znajdziesz w dokumentacji danego mikrokontrolera.
Składnia: SUBWF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0000 10df ffff
Operacja: dest ← f - W
Modyfikowane znaczniki stanu: C, DC, Z
Opis: Odejmowanie (metodą uzupełnień do 2) rejestru akumulatora W od rejestru f. Jeśli d jest równe 0, to wynik odejmowania zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: SWAPF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0011 10df ffff
Operacja:
dest[7:4] ← f[3:0]
dest[3:0] ← f[7:4]
Modyfikowane znaczniki stanu: żadne
Opis: Górna i dolna połówka (4 bity) rejestru f zostają zamienione miejscami. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Składnia: TRIS f
Argumenty: f = 5...7
Kod: 0000 0000 0fff
Operacja: rejestr TRIS f ← W
Modyfikowane znaczniki stanu: żadne
Opis: Wybrany rejestr TRIS f zostaje załadowany zawartością akumulatora W. Zakres f zależy od typu mikrokontrolera. Sprawdź to w instrukcji wybranego modelu.
Składnia: XORLW k
Argumenty: k = 0...255
Kod: 1111 kkkk kkkk
Operacja: W ← k ^ W
Modyfikowane znaczniki stanu: Z
Opis: Zawartość rejestru akumulatora W zostaje poddana operacji sumy modulo 2 ze stałą k. Wynik jest umieszczany w rejestrze W.
Składnia: XORWF f,d
Argumenty: f = 0...31, d = 0...1
Kod: 0001 10df ffff
Operacja: dest ← W ^ f
Modyfikowane znaczniki stanu: Z
Opis: Zawartość rejestru akumulatora W zostaje poddana operacji sumy modulo 2 z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.