Mikrokontrolery PIC

51
Mikrokontrolery PIC

description

Mikrokontrolery PIC. Wykład 2 2 /51. Rodzina PIC MID Range. PIC - MidRange - Architektura 3 /51. - PowerPoint PPT Presentation

Transcript of Mikrokontrolery PIC

Page 1: Mikrokontrolery PIC

Mikrokontrolery PIC

Page 2: Mikrokontrolery PIC

Wykład 2 2/51

Rodzina PIC MID Range

Page 3: Mikrokontrolery PIC

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;

Page 4: Mikrokontrolery PIC

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;

Page 5: Mikrokontrolery PIC

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.

Page 6: Mikrokontrolery PIC

PIC - MidRange - Architektura 6/51

Struktura blokowa układu PIC16C84

Page 7: Mikrokontrolery PIC

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

Page 8: Mikrokontrolery PIC

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ń

Page 9: Mikrokontrolery PIC

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

Page 10: Mikrokontrolery PIC

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

Page 11: Mikrokontrolery PIC

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

Page 12: Mikrokontrolery PIC

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

Page 13: Mikrokontrolery PIC

11b z kodu rozkazu GOTO

PIC - MidRange - Architektura 13/38

Modyfikacja i odtwarzanie PC

3. Przez rozkaz skoku GOTO

12 10 0PC:

PCL

PCLATCH:

Page 14: Mikrokontrolery PIC

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

Page 15: Mikrokontrolery PIC

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

Page 16: Mikrokontrolery PIC

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:

Page 17: Mikrokontrolery PIC

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

Page 18: Mikrokontrolery PIC

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

Page 19: Mikrokontrolery PIC

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

Page 20: Mikrokontrolery PIC

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

Page 21: Mikrokontrolery PIC

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

Page 22: Mikrokontrolery PIC

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

Page 23: Mikrokontrolery PIC

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

Page 24: Mikrokontrolery PIC

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

Page 25: Mikrokontrolery PIC

PIC - MidRange 25/51

Generator taktu

Page 26: Mikrokontrolery PIC

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

Page 27: Mikrokontrolery PIC

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

Page 28: Mikrokontrolery PIC

PIC - MidRange 28/51

Obwód resetu

Page 29: Mikrokontrolery PIC

PIC - MidRange 29/51

Obwód resetu - działanie układu BOR (Brown Out Reset)

Page 30: Mikrokontrolery PIC

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;

Page 31: Mikrokontrolery PIC

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;

Page 32: Mikrokontrolery PIC

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

Page 33: Mikrokontrolery PIC

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.

Page 34: Mikrokontrolery PIC

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.

Page 35: Mikrokontrolery PIC

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ń).

Page 36: Mikrokontrolery PIC

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

Page 37: Mikrokontrolery PIC

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

Page 38: Mikrokontrolery PIC

PIC - MidRange - peryferia 38/51

Port A

• linia RA4 ma diodę zabezpieczającą

dołączoną tylko do masy

Page 39: Mikrokontrolery PIC

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)

Page 40: Mikrokontrolery PIC

PIC - MidRange - peryferia 40/51

Port B

• linie RB6 i RB7 są wykorzystywane przy szeregowym programowaniu układu

Page 41: Mikrokontrolery PIC

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.

Page 42: Mikrokontrolery PIC

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.

Page 43: Mikrokontrolery PIC

PIC - MidRange - peryferia 43/51

Watchdog

Page 44: Mikrokontrolery PIC

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

Page 45: Mikrokontrolery PIC

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;

Page 46: Mikrokontrolery PIC

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

Page 47: Mikrokontrolery PIC

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.

Page 48: Mikrokontrolery PIC

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

Page 49: Mikrokontrolery PIC

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)

Page 50: Mikrokontrolery PIC

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

Page 51: Mikrokontrolery PIC

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)