Mikrokontrolery PIC Wykład 2 2/51 Rodzina PIC MID Range PIC - MidRange - Architektura PIC16C84 charakteryzuje się następującymi cechami: architektura Harvard RISC; 8-bitowe ALU; 1024x14
Download ReportTranscript Mikrokontrolery PIC Wykład 2 2/51 Rodzina PIC MID Range PIC - MidRange - Architektura PIC16C84 charakteryzuje się następującymi cechami: architektura Harvard RISC; 8-bitowe ALU; 1024x14
Mikrokontrolery PIC Wykład 2 2/51 Rodzina PIC MID Range PIC - MidRange - Architektura 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; 3/51 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 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. 5/51 PIC - MidRange - Architektura Struktura blokowa układu PIC16C84 6/51 PIC - MidRange - Architektura Organizacja pamięci programu 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. 7/51 PIC - MidRange - Architektura 8/51 Organizacja pamięci programu - c.d. 13 12 0 PC 13 0 adres restartu dostępna w 16C84 przestrzeń 0000h adres obsł. przerwań 0004h strona 0 03FFh 0400h 07FFh 0800h strona 1 0FFFh 1000h strona 2 17FFh 1800h strona 3 1FFFh dostępna w Mid-range przestrzeń PIC - MidRange - Architektura 9/51 Organizacja pamięci programu - c.d. 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 2000h 2001h 2002h 2003h 2007h ID ID ID ID CONFIG PIC - MidRange - Architektura 10/51 Organizacja pamięci programu - c.d. Rejestr konfiguracyjny CONFIG: 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 PIC - MidRange - Architektura 11/38 Modyfikacja i odtwarzanie PC 1. Przez rozkaz zapisujący rejestr PCL 1B wartością 12 8 7 PCL 0 PC: bajt z ALU PCLATCH: Dowolny rozkaz arytmetyczno-logiczny lub przesłania, dla którego wskazano PCL jako rejestr docelowy PIC - MidRange - Architektura 12/38 Modyfikacja i odtwarzanie PC 2. Przez rozkaz wywołania procedury CALL sprzętowy stos 8 x 13b adres szczyt powrotu stosu szczyt stosu 12 8 7 PCL 0 PC: 11b z kodu rozkazu CALL PCLATCH: PIC - MidRange - Architektura 13/38 Modyfikacja i odtwarzanie PC 3. Przez rozkaz skoku GOTO 12 10 PCL 0 PC: 11b z kodu rozkazu GOTO PCLATCH: PIC - MidRange - Architektura 14/38 Modyfikacja i odtwarzanie PC 4. Przez rozkazy powrotu z procedury RETURN, RETLW, RETFIE sprzętowy stos 8 x 13b szczyt stosu 12 PC: PCLATCH: 8 7 PCL 0 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; sprzętowy stos 8 x 13b szczyt stosu PIC - MidRange - Architektura 16/51 Organizacja pamięci danych FSR: 7 6 STATUS: 0 7 6 IRP kod rozkazu: 0 RP1,RP0 00 01 00h 80h 30h 0B0h 7Fh bank #0 0FFh bank #1 10 100h 17Fh bank #2 11 180h 1FFh bank #3 obszar niedostępny w 16C84 PIC - MidRange - Architektura 17/51 16C84 Organizacja pamięci danych 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch - blok rejestrów np. 16C84 2Fh 30h INDF1) TMR0 PCL STATUS FSR PORTA PORTB INDF1) OPTION PCL STATUS FSR TRISA TRISB EEDATA EEADR PCLATCH INTCON 36 rejestrów ogólnego przeznaczenia (bajty SRAM) EECON1 EECON21) PCLATCH INTCON obszar mapowany w bank #0 7Fh 1) bank #0 bank #1 rejestr nie istniejący fizycznie 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 0AFh 0B0h 0FFh PIC - MidRange - blok rejestrów specjalnych rejestr b7 b6 b5 b4 b3 18/51 b2 b1 b0 adres INDF wirtualny rejestr do odwołań do RAM 00h TMR0 stan 8-bitowego timera/licznika 01h PCLOW 02h PCL STATUS IRP RP1 - - - RA4/T0CKI PORTB RB7 RB6 RB5 - - EEDATA EEADR PCLATCH INTCON /T0 /PD Z DC C rejestr adresujący pamięć RAM FSR PORTA RP0 GIE - RB3 - - - 04h RA3 RA2 RA1 RB4 RB2 RB1 - 03h - RA0 05h RB0/INT 06h - 07h rejestr danych EEPROM 08h rejestr adresujący EEPROM 09h - bufor zapisu starszych bitów PC12..8 0Ah EEIE T0IE INTIE RBIE T0IF INTF RBIF 0Bh szare pola - bity nie używane; - - niezaimplementowany przy odczycie 0 PIC - MidRange - blok rejestrów specjalnych rejestr b7 b6 b5 b4 19/51 b3 OPTION /RBPU INTEDG T0CS T0SE PSA PCL IRP RP1 - INTCON PS1 PS0 81h RP0 /T0 82h /PD Z DC C - - rejestr sterujący portem PORTA - - - - - - - - EEIF WRERR - GIE - - 85h 86h - WREN WR - 87h RD 88h dodatkowy "wirtualny" rejestr kontrolny EEPROM - 83h 84h rejestr sterujący portem PORTB EECON2 PCLATCH PS2 adres 80h rejestr adresujący pamięć RAM TRISB EECON1 b0 PCLOW FSR TRISA b1 wirtualny rejestr do odwołań do RAM INDF STATUS b2 89h bufor zapisu starszych bitów PC12..8 8Ah EEIE T0IE INTE RBIE T0IF INTF RBIF 8Bh szare pola - bity nie używane; - - niezaimplementowany przy odczycie 0 PIC - MidRange - blok rejestrów specjalnych STATUS: IRP RP1 RP0 /TO 20/51 /PD Z DC C 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 SLEEP 1 - 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 rej. OPTION 7 6 5 4 3 /RBPU INTEDG T0CS T0SE PSA 21/51 2 PS2 1 PS1 0 PS0 /RBPU - bit włączający gdy =0 oporniki podciągające na liniach portu PORTB INTEDG - bit wyboru aktywnego zbocza przerwania INT 0-opadające/1-narastające T0CS - bit wyboru źródła sygnału dla licznika TMR0: 1 - zliczanie impulsów zewn. podanych na pin T0CKI 0 - 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-doga 0 - do licznika TMR0 PS2,PS1,PS0 - bity wyboru podzielnika: dla TMR0: dla WDT: 000 1:2 100 1:32 000 1:1 100 1:16 001 1:4 101 1:64 001 1:2 101 1:32 010 1:8 110 1:128 010 1:4 110 1:64 011 1:16 111 1:256 011 1:8 111 1:128 PIC - MidRange - tryby adresowania 22/51 Tryb adresowania operandów - bitów • bezpośredni kod rozkazu bcf bit 10,3 Tryby adresowania operandów - bajtów • natychmiastowy kod rozkazu andlw 130 operand blok rejestrów f PIC - MidRange - tryby adresowania 23/51 Tryby adresowania operandów - bajtów - cd. • rejestrowy kod rozkazu rejestry/SRAM f /bezpośredni 7b RP1 RP0 addwf 10 2b wybór banku 9b Rf: operand PIC - MidRange - tryby adresowania 24/51 Tryby adresowania operandów - bajtów - cd. rejestry/SRAM • rejestrowy pośredni f* kod rozkazu f*=00h,80h clrf FSR: INDF IRP 2b wybór banku 7b 9b operand PIC - MidRange Generator taktu 25/51 PIC - MidRange Przetwarzanie rozkazów Q1 - dekodowanie rozkazu, inkrement PC Q2 - pobranie argumentów Q3 - wykonanie rozkazu Q4 - zapamiętanie wyniku i koniec pobierania nast. rozkazu 26/51 PIC - MidRange 27/51 Przetwarzanie rozkazów - cd. 1. MOVLW 55h 2. MOVWF PORTB 3. CALL PROC1 4. BSF PORTA,BIT3 ............ x. PROC1: ... 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 Obwód resetu - działanie układu BOR (Brown Out Reset) 29/51 PIC - MidRange 30/51 Stan rejestrów specjalnych po resecie, zależnie od przyczyny: reset zewn.; podczas WDT reset SLEEP: rejestr power-on podczas pracy 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: reset zewn.; podczas WDT reset SLEEP: rejestr power-on podczas pracy 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; x - wartość nieokreślona; u - wartość niezmieniona; 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 System przerwań PIC16C84: • 4 źródła przerwań: zewnętrzne RB0/INT od przepełnienia TMR0 od 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. 33/51 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_W MOVF STATUS,W MOVWF temp_STATUS MOVF PCLATCH,W MOVWF temp_PCLATCH Przykład odtworzenia stanu rejestrów MOVF temp_PCLATCH,W MOVWF PCLATCH MOVF temp_STATUS,W MOVWF STATUS MOVF temp_W,W PIC - MidRange - peryferia 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 37/51 PIC - MidRange - peryferia Port A • linia RA4 ma diodę zabezpieczającą dołączoną tylko do masy 38/51 PIC - MidRange - peryferia 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) 39/51 PIC - MidRange - peryferia Port B • linie RB6 i RB7 są wykorzystywane przy szeregowym programowaniu układu 40/51 PIC - MidRange - peryferia 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. 41/51 PIC - MidRange - peryferia 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. 42/51 PIC - MidRange - peryferia Watchdog 43/51 PIC - MidRange - peryferia Wykorzystanie 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 44/51 PIC - MidRange - peryferia 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; 45/51 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 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 BCF BSF MOVLW MOVWF MOVLW MOVWF BSF BSF STATUS,RP0 INTCON,GIE EECON1,WREN 55h EECON2 AAh EECON2 EECON1,WR INTCON, GIE ; wybór banku #1 ; wyłączenie przerwań ; odblokowanie zapisu ; wpisanie 55h ; wpisanie AAh ; start zapisu ; odblokowanie INTs. 47/51 PIC - MidRange - lista rozkazów mnemonik arg. zmiany ilość flag c.m. kod rozkazu 48/51 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 rozszerzenie względem BaseLine 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 F s - adres skoku, wywołania procedury x - wartość dowolna (0/1) PIC - MidRange - lista rozkazów mnemonik arg. zmiany ilość flag c.m. kod rozkazu 49/51 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 mnemonik arg. zmiany ilość flag c.m. kod rozkazu 50/51 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ępny rozkaz BTFSS f,b - 1/2 0111bbbfffffff jeśli F.b=1 to pomiń następny rozkaz MOVF f,d - 1 001000dfffffff d := F MOVLW k - 1 000001kkkkkkkk W := k MOVWF f - 1 0001001fffffff F := W PIC - MidRange - lista rozkazów mnemonik arg. zmiany ilość flag c.m. kod rozkazu 51/51 opis GOTO s - 2 101sssssssssss skok bezwarunkowy pod adres s CALL s - 2 100sssssssssss wywołanie procedury od adresu s na bieżącej stronie pamięci programu 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 - 1 00000000001fff TRISx := W, f=5 (TRISA), 6 (TRISB), 7 (TRISC) f