Zestaw instrukcji mikrokontrolerów PIC

 

Zestaw instrukcji mikrokontrolerów PIC ma stosunkowo niewielką ilość prostych instrukcji (RISC)

Seria PIC16: 35 instrukcji zakodowanych w 14 bitach.
Seria PIC18: 59 instrukcji zakodowanych w 16 bitach.
Seria PIC24: 71 instrukcji zakodowanych w 24 bitach.
Większość instrukcji jest wykonywana w jednym cyklu instrukcji, odpowiadającym 4 cyklom zegara.
Tak, więc mikrokontroler PIC działający z częstotliwością zegara 40MHz będzie miał szybkość wykonywania instrukcji 10 MIPS (Million Instructions Per Second).

Zestaw instrukcji mikrokontrolera PIC18Fxxx

Większość instrukcji mikrokontrolera PIC18Fxxx zajmuje pojedynczy program 16-bitowy.
Każda instrukcja składa się z kodu operacji i jednego lub większej ilości argumentów operacji.
Zestaw instrukcji jest wysoce ortogonalny i może być podzielony na partycje:
31-bajtowe operacje skierowane na rejestry plików
5-bitowe operacje skierowane na rejestry plików
23 instrukcje sterujące
10 literalnych instrukcji
8-bitowy program pamięci danych programu

Bajtowe operacje skierowane na obsługę rejestrów plików:

ADDWF Dodaj W i f: wynik w W lub f
CLRF Wyczyść f
DECF Zmniejsz f
MOVF Przenosi zawartość f do f lub W

Bitowe operacje rejestrów plików:
BCF Wykasuj zawartość bitu w f
Bit testowy BTFSC w f; pomiń, jeśli nastąpiło kasowanie

Instrukcje sterujące:

Instrukcja BRA (Branch unconditionaly) – rozgałęzienie bezwarunkowe
CALL Call subroutine (function) – wywołać podprogram standardowy
RETURN Powrót z podprogramu standardowego (funkcja)
BNZ, Branch if not zero – oddziel, jeśli wartością nie jest zero
Instrukcje literalne:

MOVLW – przepisz wartość do W
ADDLW – dodaj wartość do W
Pamięć danych – pamięć operacji programu:
TBLRD * + Tabela odczytana z post-przyrostem

Rejestr statusu

8-bitowy rejestr stanu jest ustawiany podczas operacji arytmetycznych
PIC Instruction Set_tab
N Bit ujemny – wynik operacji arytmetycznej był ujemny
Bit przepełnienia OV – wystąpiło przepełnienie dla podpisanej arytmetyki
Z Zero bit – wynik operacji arytmetycznej wynosił zero
Bit DC Digit Carry – wykonuje 4-bitowy bit wyniku
C Carry bit – wykonaj najbardziej znaczący bit wyniku

Bity rejestru stanu mogą być następnie używane w warunkowym rozgałęzieniu, na przykład:

BNZ Branch if Not Zero – oddzielenie, jeśli nie zero
BOV Branch of OVerflow – oddzielenie przy przepełnieniu

 

Komentarze z Facebooka

Komentarze obecnie - OFF.