Mikrokontrolery PIC
description
Transcript of Mikrokontrolery PIC
Mikrokontrolery PIC
Wykład 2 2/51
Rodzina PIC MID Range
PIC - MidRange - Architektura 3/51
PIC16C84 charakteryzuje się następującymi cechami:
architektura Harvard RISC;
8-bitowe ALU;
1024x14 EEPROM programu;
15 rejestrów specjalnych;
36B SRAM+64B EEPROM (żywotność 106 cykli) danych;
35 rozkazów o kodzie 14-bitowym, wykonywane w 1 cyklu
(wyjątek: rozkazy skoku i wywołania);
8-poziomowy stos sprzętowy;
PIC - MidRange - Architektura 4/51
Cechy c.d.:
proste (bezpośredni, pośredni i względny) tryby adresowania danych
i rozkazów;
4 źródła przerwań;
13 linii we/wy o obciążalności 20/25mA;
8-bitowy timer/licznik z 8-bitowym programowalnym preskalerem;
interfejs SPI do programowania w trybie ISP;
wbudowany układ resetu od zasilania, z timerem resetu;
watchdog z wbudowanym własnym oscylatorem RC;
PIC - MidRange - Architektura 5/51
Cechy c.d.:
tryb oszczędzania energii SLEEP;
częstotliwość taktowania 0-10MHz (czas cyklu: 400ns - );
wbudowany oscylator RC z programowalną kalibracją;
możliwość wyboru rodzaju generatora taktu
(wewn/zewn, RC/kwarc/prostokąt);
bity ochronne programu;
szeroki zakres napięć pracy: 2,0 - 6,0 V.
PIC - MidRange - Architektura 6/51
Struktura blokowa układu PIC16C84
PIC - MidRange - Architektura 7/51
PC - 13-bitowy, jego młodszy bajt jest widoczny jako PCL
Przestrzeń adresowa pamięci programu Mid Range:
000..1FFFh (8k×14b słów).
Przy pamięci programu o pojemności P<8kW, PC adresuje ją modulo P.
Podzielona na 4 strony po 2kW.
Organizacja pamięci programu
PIC - MidRange - Architektura 8/51
Organizacja pamięci programu - c.d.
PC
strona 1
strona 2
strona 3
12 0
strona 0
1FFFh
adres restartu 0000h
03FFh0400h
13
adres obsł. przerwań 0004h
13 0
07FFh0800h
0FFFh1000h
17FFh1800h
dostępnaw Mid-range przestrzeń
dostępnaw 16C84
przestrzeń
PIC - MidRange - Architektura 9/51
Komórki o adresach 2000h..200Fh to tzw. pamięć konfiguracyjna:
2000h, 2001h, 2002h i 2003h są przeznaczone na numer identyfikacyjny układu (bity
3..0).
2007h - rejestr konfiguracyjny CONFIG
Organizacja pamięci programu - c.d.
2000h2001h2002h2003h
2007h
IDIDIDID
CONFIG
PIC - MidRange - Architektura 10/51
Rejestr konfiguracyjny CONFIG:
Organizacja pamięci programu - c.d.
13 12 11 10 9 8 7 6 5 4 3 2 1 0
CP PWRTE WDTE FOSC1 FOSC0
CP - bit ochronny kodu programu: gdy =1 - ochrona wył., =0 - ochrona włącz.
PWRTE - bit włączający power-up timer: gdy =1 - włącz., =0 - wył.
WDTE - bit włączający watch-dog: gdy =1 watch-dog włączony, =0 - wyłączony
FOSC1, FOSC0 - bity wybierające źródło sygnału taktującego:
00 - LP zewn. oscylator kwarcowy o f=32-400kHz;
01 - XT zewn. oscylator kwarcowy o f=0,4-4MHz;
10 - HS wewn. oscylator RC ok. 4MHz albo zewn. oscylator kwarcowy 4-10MHz;
11 - RC zewn. oscylator RC o f do 4MHz
bajt z ALU
PIC - MidRange - Architektura 11/38
Modyfikacja i odtwarzanie PC
1. Przez rozkaz zapisujący rejestr PCL 1B wartością
Dowolny rozkaz arytmetyczno-logiczny lub przesłania,
dla którego wskazano PCL jako rejestr docelowy
PCLATCH:
12 8 7 0PC:
PCL
11b z kodu rozkazu CALL
PIC - MidRange - Architektura 12/38
Modyfikacja i odtwarzanie PC
2. Przez rozkaz wywołania procedury CALL
12 8 7 0PC:
PCL
szczyt stosusprzętowy stos 8 x 13b
PCLATCH:
szczyt stosuadres powrotu
11b z kodu rozkazu GOTO
PIC - MidRange - Architektura 13/38
Modyfikacja i odtwarzanie PC
3. Przez rozkaz skoku GOTO
12 10 0PC:
PCL
PCLATCH:
PIC - MidRange - Architektura 14/38
Modyfikacja i odtwarzanie PC
4. Przez rozkazy powrotu z procedury RETURN, RETLW, RETFIE
12 8 7 0PC:
PCLATCH:
PCL
szczyt stosusprzętowy stos 8 x 13b
PIC - MidRange - stos 15/51
Stos:
• sprzętowy;
• 8-poziomowy (8 13-bitowych rejestrów);
• wskaźnik stosu nie jest dostępny;
• działa jak rejestr cyrkulacyjny - 9-ty zapis na stos spowoduje zamazanie pierwszego wpisu;
szczyt stosusprzętowy stos 8 x 13b
PIC - MidRange - Architektura 16/51
Organizacja pamięci danych
kod rozkazu:7 6 0
FSR:
IRP
RP1,RP0
bank #0 bank #1
00h
30h
7Fh
80h
0B0h
0FFh
100h
17Fh
180h
1FFh
bank #2 bank #3
00 01 10 11
obszar niedostępny
w 16C84
7 6 0
STATUS:
PIC - MidRange - Architektura 17/51
Organizacja pamięci danych
- blok rejestrów np. 16C84
16C8400h INDF1) INDF1) 80h01h TMR0 OPTION 81h02h PCL PCL 82h03h STATUS STATUS 83h04h FSR FSR 84h05h PORTA TRISA 85h06h PORTB TRISB 86h07h 87h08h EEDATA EECON1 88h09h EEADR EECON21) 89h0Ah PCLATCH PCLATCH 8Ah0Bh INTCON INTCON 8Bh0Ch 36 rejestrów obszar 8Ch
ogólnego mapowanyprzeznaczenia w bank #0
2Fh (bajty SRAM) 0AFh30h
7Fh
0B0h
0FFhbank #0 bank #1
1) rejestr nie istniejący fizycznie
rejestr b7 b6 b5 b4 b3 b2 b1 b0 adres
INDF wirtualny rejestr do odwołań do RAM 00h
TMR0 stan 8-bitowego timera/licznika 01h
PCL PCLOW 02h
STATUS IRP RP1 RP0 /T0 /PD Z DC C 03h
FSR rejestr adresujący pamięć RAM 04h
PORTA - - - RA4/T0CKI RA3 RA2 RA1 RA0 05h
PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT 06h
- - - - - - - - 07h
EEDATA rejestr danych EEPROM 08h
EEADR rejestr adresujący EEPROM 09h
PCLATCH - - - bufor zapisu starszych bitów PC12..8 0Ah
INTCON GIE EEIE T0IE INTIE RBIE T0IF INTF RBIF 0Bh
PIC - MidRange - blok rejestrów specjalnych 18/51
szare pola - bity nie używane;- - niezaimplementowany przy odczycie 0
rejestr b7 b6 b5 b4 b3 b2 b1 b0 adres
INDF wirtualny rejestr do odwołań do RAM 80h
OPTION /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 81h
PCL PCLOW 82h
STATUS IRP RP1 RP0 /T0 /PD Z DC C 83h
FSR rejestr adresujący pamięć RAM 84h
TRISA - - - rejestr sterujący portem PORTA 85h
TRISB rejestr sterujący portem PORTB 86h
- - - - - - - - 87h
EECON1 - - - EEIF WRERR WREN WR RD 88h
EECON2 dodatkowy "wirtualny" rejestr kontrolny EEPROM 89h
PCLATCH - - - bufor zapisu starszych bitów PC12..8 8Ah
INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF 8Bh
PIC - MidRange - blok rejestrów specjalnych 19/51
szare pola - bity nie używane;- - niezaimplementowany przy odczycie 0
PIC - MidRange - blok rejestrów specjalnych 20/51
IRP RP1 RP0 /TO /PD Z DC CSTATUS:
C - flaga przeniesienia/pożyczki
DC - flaga przeniesienia połówkowego
Z - flaga sygnalizująca zerowy wynik operacji
/PD - flaga sygnalizująca przejście w stan uśpienia:0 - po rozkazie SLEEP1 - po resecie od zasilania lub wykonaniu rozkazu CLRWDT
/TO - flaga przepełnienia licznika watch-doga: 0 - po resecie od zasilania, po wykonaniu rozkazów CLRWDT lub SLEEP 1 - gdy przepełnił się licznik watch-doga
RP1,RP0 - bity wyboru aktywnego banku rejestrów przy adresowaniu bezpośr.:00 - bank #0 (00..7Fh), 01 - bank #1 (80h..0FFh), 10 - bank #2 (100h..17Fh), 11 - bank #3 (180h..1FFh)
IRP - bit wyboru banku rejestrów przy adresowaniu pośrednim: 0 - bank #0 i #1 (00..0FFh); 1 - bank #2 i #3 (100h..1FFh).
IRP i RP1 są nieużywane w PIC16C84
PIC - MidRange - blok rejestrów specjalnych 21/51
rej. OPTION7 6 5 4 3 2 1 0
/RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
/RBPU - bit włączający gdy =0 oporniki podciągające na liniach portu PORTBINTEDG - bit wyboru aktywnego zbocza przerwania INT 0-opadające/1-narastająceT0CS - bit wyboru źródła sygnału dla licznika TMR0:
1 - zliczanie impulsów zewn. podanych na pin T0CKI0 - zliczanie cykli maszynowych
T0SE - bit wyboru zbocza na pinie T0CKI:1 - zliczanie zboczy opadających;0 - zliczanie zboczy narastających
PSA - bit przypisanie preskalera:1 - do licznika watch-doga0 - do licznika TMR0
PS2,PS1,PS0 - bity wyboru podzielnika:dla TMR0: dla WDT:
000 1:2 100 1:32 000 1:1 100 1:16001 1:4 101 1:64 001 1:2 101 1:32010 1:8 110 1:128 010 1:4 110 1:64011 1:16 111 1:256 011 1:8 111 1:128
PIC - MidRange - tryby adresowania 22/51
Tryby adresowania operandów - bajtów
• natychmiastowy kod rozkazu operand
andlw 130
Tryb adresowania operandów - bitów
• bezpośredni kod rozkazu
blokrejestrów
bcf 10,3
bit f
PIC - MidRange - tryby adresowania 23/51
Tryby adresowania operandów - bajtów - cd.
• rejestrowy /bezpośredni
operand
kod rozkazu f
Rf:
addwf 10
RP1 RP07b
2bwybór banku
9b
rejestry/SRAM
PIC - MidRange - tryby adresowania 24/51
Tryby adresowania operandów - bajtów - cd.
• rejestrowy pośredni
kod rozkazu f*
FSR:f*=00h,80h
clrf INDFIRP
7b2bwybór banku
operand9b
rejestry/SRAM
PIC - MidRange 25/51
Generator taktu
PIC - MidRange 26/51
Przetwarzanie rozkazów
Q1 - dekodowanie rozkazu, inkrement PC
Q2 - pobranie argumentów
Q3 - wykonanie rozkazu
Q4 - zapamiętanie wyniku i koniec pobierania nast. rozkazu
1. MOVLW 55h
2. MOVWF PORTB
3. CALL PROC1
4. BSF PORTA,BIT3
............
x. PROC1: ...
PIC - MidRange 27/51
Przetwarzanie rozkazów - cd.
pobranie 1 wykonanie 1
pobranie 2 wykonanie 2
pobranie 3 wykonanie 3
pobranie 4 odrzucenie 4
pobranie x wykonanie x
PIC - MidRange 28/51
Obwód resetu
PIC - MidRange 29/51
Obwód resetu - działanie układu BOR (Brown Out Reset)
PIC - MidRange 30/51
Stan rejestrów specjalnych po resecie, zależnie od przyczyny:
rejestr power-on
reset zewn.;WDT reset
podczas pracy
podczasSLEEP:
przerwanie;WDT time-out
W xxxxxxxx uuuuuuuu uuuuuuuu
INDF -------- -------- --------
TMR0 xxxxxxxx uuuuuuuu uuuuuuuu
PCL 00000000 00000000 PC+1
STATUS 00011xxx 000qquuu uuuqquuu
FSR xxxxxxxx uuuuuuuu uuuuuuuu
PORTA ---xxxxx ---uuuuu ---uuuuu
PORTB xxxxxxxx uuuuuuuu uuuuuuuu
- - niezaimplementowany, przy odczycie 0;x - wartość nieokreślona;u - wartość niezmieniona;q - wartość zależna od przyczyny resetu;
PIC - MidRange 31/51
Stan rejestrów specjalnych po resecie, zależnie od przyczyny:
rejestr power-on
reset zewn.;WDT reset
podczas pracy
podczasSLEEP:
przerwanie;WDT time-out
EEDATA xxxxxxxx uuuuuuuu uuuuuuuu
EEADR xxxxxxxx uuuuuuuu uuuuuuuu
PCLATCH ---00000 ---00000 ---uuuuu
INTCON 0000000x 0000000u uuuuuuuu
OPTION 11111111 11111111 uuuuuuuu
TRISA ---11111 ---11111 ---uuuuu
TRISB 11111111 11111111 uuuuuuuu
EECON1 ---0x000 ---0q000 ---0uuuu
EECON2 -------- -------- --------
- - niezaimplementowany, przy odczycie 0; u - wartość niezmieniona;x - wartość nieokreślona; q - wartość zależna od przyczyny resetu;
PIC - MidRange 32/51
Praca z obniżonym poborem prądu• tryb włącza się rozkazem SLEEP;• główny oscylator wyłącza się• następuje wstrzymanie wykonywanie programu• linie portu pozostają b.z.• zerowany jest licznik WDT i jego postskaler• zużycie prądu spada do ok. 1μA• bity: /PD=0, /TO=1
Wyjście z trybu power down może być wywołane:
• zewnętrzny reset na /MCLR- restart programu od 0000
• reset od WDT time-out - wznowienie programu od nast. rozkazu
• niezamaskowanym przerwaniem - j.w. i wejście w obsługę przerwania
PIC - MidRange - przerwania 33/51
System przerwań PIC16C84:
• 4 źródła przerwań: zewnętrzne RB0/INTod przepełnienia TMR0od zmiany stanu wejść PORTB7..4
od końca zapisu do EEPROM
• wspólny wektor obsługi - od adresu 004h;
• maskowalny - indywidualne flagi maskowania + flaga globalna GIE;
• zablokowany po RESET;
• powrót z procedury obsługi rozkazem RETFIE, ustawiającym także GIE=1;
• przerwania mogą „budzić” mikrokontroler z trybu SLEEP;
• przerwania mają swe flagi sygnalizacyjne.
PIC - MidRange - przerwania 34/51
Rejestr kontrolny przerwań PIC16C84:
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
GIE - globalna flaga zezwolenia na przerwania;
EEIE - zezwolenie na przerwanie od EEPROM;
T0IE - zezwolenie na przerwanie od TMR0;
INTE - zezwolenie na przerwanie zewnętrzne;
RBIE - zezwolenie na przerwanie od zmiany PORTB;
T0IF - flaga przerwania od TMR0;
INTF - flaga przerwania zewnętrznego;
RBIF - flaga przerwania od PORTB;
EEIF - flaga przerwania od EEPROM, umieszczona na 4 bicie EECON1.
PIC - MidRange - przerwania 35/51
Struktura procedury obsługi przerwania:
1. Przechowanie rejestrów W, STATUS, PCLATCH (i innych) w zarezerwowanych rejestrach banku #0.
2. Rozpoznanie przyczyny przerwania (z powodu wspólnego wektora dla 4 możliwych źródeł).
3. Obsłużenie wybranego przerwania.
4. Skasowanie jego indywidualnej flagi zgłoszenia przerwania (np. rozkazem BCF).
5. Odtworzenie stanu rejestrów (innych), PCLATCH, STATUS, W z zarezerwowanych rejestrów w banku #0.
6. Powrót z procedury obsługi przerwania rozkazem RETFIE (odblokowującym ponownie system przerwań).
PIC - MidRange - przerwania 36/51
Struktura procedury obsługi przerwania:
Przykład przechowania stanu rejestrów na początku procedury obsługi przerwania: MOVWF temp_WMOVF STATUS,WMOVWF temp_STATUSMOVF PCLATCH,WMOVWF temp_PCLATCH
Przykład odtworzenia stanu rejestrówMOVF temp_PCLATCH,WMOVWF PCLATCHMOVF temp_STATUS,WMOVWF STATUSMOVF temp_W,W
PIC - MidRange - peryferia 37/51
Port A
• port ma 5 linii:
RA0..RA3 - zwykłe we/wy;
RA4 - we/wy albo
wejście impulsów dla TMR0;• rejestr TRISA decyduje o kierunku
(ustawione bity TRIS oznaczają
wejście 3-stanowe);• linie RA0..RA3 mają diody
zabezpieczające dołączone do masy
i zasilania
PIC - MidRange - peryferia 38/51
Port A
• linia RA4 ma diodę zabezpieczającą
dołączoną tylko do masy
PIC - MidRange - peryferia 39/51
Port B
• port ma 8 linii:
RB0 - we/wy albo
wejście przerwania zewn. /INT0
RB1..RB3 - zwykłe we/wy;
RB4..RB7 - zwykłe we/wy
z możliwością przerwania
od zmiany stany• rejestr TRISB decyduje o kierunku
(ustawione bity TRISB włączają
opornik podciągający)
PIC - MidRange - peryferia 40/51
Port B
• linie RB6 i RB7 są wykorzystywane przy szeregowym programowaniu układu
PIC - MidRange - peryferia 41/51
Timer
• 8-bitowy licznik z preskalerem/postskalerem wspólnym z watchdogiem;
• zlicza cykle masz. (fOSC/4) albo zewn. impulsy wejściowe (na T0CKI);
• jego przepełnienie powoduje ustawienie flagi T0IF;• widoczny jako rejestr TMR0;• sterowanie pracą - poprzez bity rej. OPTION.
PIC - MidRange - peryferia 42/51
Watchdog
• bazuje na własnym oscylatorze RC;
• przepełnia się po 18ms (ale zależy to od temp. i nap.zasil.:7-33ms);
• by uzyskać dłuższe czasy należy użyć postskalera;
• przy normalnej pracy WDT Time-out powoduje RESET,
a przy pracy w uśpieniu - obudzenie μC;
• watchdog zeruje się rozkazem CLRWDT albo SLEEP;
• watchdog można zablokować tylko w fazie programowania układu.
PIC - MidRange - peryferia 43/51
Watchdog
PIC - MidRange - peryferia 44/51Wykorzystanie preskalera/postskalera przez timer i watchdog
wsp. podziału preskalera: 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/516 - dla TMR0 postskalera 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 - dla WDT
PIC - MidRange - peryferia 45/51
Pamięć EEPROM
• dostępna poprzez rejestry EEDATA i EEADR;
• dodatkowo rejestry sterujące EECON1 i EECON2 (wirtualny);
• zapis polega na przeprogramowaniu pojedynczego bajtu;
• czas zapisu do 10ms/B, kontrolowany przez lokalny timer i zależny od temperatury i napięcia pracy;
• koniec zapisu powoduje ustawienie flagi EEIF, która może być zgłoszeniem przerwania;
PIC - MidRange - peryferia 46/51
Odczyt EEPROM
1. Wpisanie adresu do EEADR.
2. Ustawienie bitu RD w EECON1.
3. Odczyt zawartości rejestru EEDATA.
Przykład programu:
BCF STATUS,RP0 ; Bank 0
MOVLW CONFIG_ADDR ;
MOVWF EEADR ; adres EEPROM do odczytu
BSF STATUS,RP0 ; Bank 1
BSF EECON1,RD ; odczyt komorki EEPROM
BCF STATUS,RP0 ; Bank 0
MOVF EEDATA,W ; W = EEDATA
PIC - MidRange - peryferia 47/51
Zapis do EEPROM
1. Wpisanie adresu do EEADR.
2. Wpisanie danej do EEDATA.
3. Zablokowanie przerwań INTCON.GIE=0.
4. Odblokowanie wpisu do EEPROM EECON.WREN=1.
5. Zapis do EECON2 kolejno: 55h i 0AAh.
6. Włączenie zapisu do EEPROM EECON1.WR=1.
7. Odblokowanie przerwań INTCON.GIE=1.
Przykład programu:BSF STATUS,RP0 ; wybór banku #1BCF INTCON,GIE ; wyłączenie przerwańBSF EECON1,WREN ; odblokowanie zapisuMOVLW 55h MOVWF EECON2 ; wpisanie 55hMOVLW AAh MOVWF EECON2 ; wpisanie AAhBSF EECON1,WR ; start zapisuBSF INTCON, GIE ; odblokowanie INTs.
PIC - MidRange - lista rozkazów 48/51
mnemonik arg.zmiany
flagilośćc.m.
kod rozkazu opis
ADDLW k C,DC,Z 1 11111xkkkkkkkk W := W + k
ADDWF f,d C,DC,Z 1 000111dfffffff d := W + F
SUBLW k C,DC,Z 1 11110xkkkkkkkk W := k-W
SUBWF f,d C,DC,Z 1 000010dfffffff d := F-W
INCF f,d Z 1 001010dfffffff d := F+1
DECF f,d Z 1 000011dfffffff d := F-1
INCFSZ f,d - 1/2 001111dfffffff d := F+1, jeśli wynik=0 to pomińnastępny rozkaz
DECFSZ f,d - 1/2 001011dfffffff d := F-1, jeśli wynik=0 to pomińnastępny rozkaz
kkkkkkkk - dana 1-bajtowa fffffff - adres w banku rejestrów/pamięci wskazujący na F d - bit wskazujący lokalizację wyniku: d=0 - wynik do W, d=1 wynik do Fs - adres skoku, wywołania procedury x - wartość dowolna (0/1)
rozszerzenie względem BaseLine
PIC - MidRange - lista rozkazów 49/51
mnemonik arg.zmiany
flagilośćc.m.
kod rozkazu opis
ANDLW k Z 1 111001kkkkkkkk W := W k
ANDWF f,d Z 1 000101dfffffff d := W F
IORLW k Z 1 11011xkkkkkkkk W := W k
IORWF f,d Z 1 000100dfffffff d := W F
XORLW k Z 1 11111xkkkkkkkk W := W k
XORWF f,d Z 1 000110dfffffff d := W F
COMF f,d Z 1 001001dfffffff d := ~F (negacja logiczna)
RLF f,d C 1 001101dfffffff d := SHL(F)
RRF f,d C 1 001100dfffffff d := SHR(F)
SWAPF f,d - 1 001110dfffffff d := F3..0F7..4 (zamiana tetrad miejscami)
PIC - MidRange - lista rozkazów 50/51
mnemonik arg.zmiany
flagilośćc.m.
kod rozkazu opis
CLRF f Z 1 0000011fffffff F := 0
CLRW - Z 1 00000100000011 W := 0
BCF f,b - 1 0100bbbfffffff bit F.b := 0
BSF f,b - 1 0101bbbfffffff bit F.b := 1
BTFSC f,b - 1/2 0110bbbfffffff jeśli F.b=0 to pomiń następnyrozkaz
BTFSS f,b - 1/2 0111bbbfffffff jeśli F.b=1 to pomiń następnyrozkaz
MOVF f,d - 1 001000dfffffff d := F
MOVLW k - 1 000001kkkkkkkk W := k
MOVWF f - 1 0001001fffffff F := W
PIC - MidRange - lista rozkazów 51/51
mnemonik arg.zmiany
flagilośćc.m.
kod rozkazu opis
GOTO s - 2 101sssssssssss skok bezwarunkowy pod adres s
CALL s - 2 100sssssssssss wywołanie procedury od adresu sna bieżącej stronie pamięciprogramu
RETFIE - - 2 00000000001001 powrót z przerwania, GIE := 1
RETLW k - 2 1101xxkkkkkkkk powrót z procedury ze stałą k w W
RETURN - - 2 00000000001000 powrót z procedury
NOP - - 1 00000000000000 nic nie rób
CLRWDT- TO, PD 1 00000001100100 zeruj licznik WDT
SLEEP - TO,PD 1 00000001100011 przejdź w stan uśpienia
OPTION - - 1 00000001100010 OPTION_REG := W
TRIS f - 1 00000000001fff TRISx := W, f=5 (TRISA),6 (TRISB), 7 (TRISC)