You are on page 1of 33

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Mikroprocesory
jednoukadowe PIC
Autor: Stanisaw Pietraszek
ISBN: 83-7197-974-6
Format: B5, stron: 412

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Ksika stanowi kompendium wiedzy na temat popularnych mikroprocesorw PIC


z rodziny Base-Line i Mid-Range. Przedstawiono nie tylko opisy samych procesorw,
ale rwnie: asembler MPASM, zintegrowane rodowisko uruchomieniowe MPLAB,
zasady programowania procesorw i przykady programatorw. Szczeglnie duy
nacisk pooono na opis ukadw peryferyjnych procesorw w tym interfejsw
szeregowych i przetwornikw A/C. W jednym z rozdziaw przedstawiono typow drog
od pomysu do realizacji wybranego zadania i kilka mini projektw.
Ksika adresowana jest do inynierw i studentw kierunkw: elektronika,
automatyka, informatyka i telekomunikacja. Ze wzgldu na powszechn obecno
mikroprocesorw w wielu urzdzeniach, moe okaza si przydatna rwnie dla
konstruktorw i projektantw ukadw elektronicznych.
Ksika omawia:

Schemat blokowy, pami, rejestry procesorw


Ukad przerwa i ukady sterujce
Porty, liczniki, pami EEPROM
Interfejsy, przetworniki A/C, ukady analogowe
List instrukcji
Asembler MPASM i zintegrowane rodowisko uruchomieniowe MPLAB
Programowanie procesorw, w tym procedury matematyczne
Dane techniczne procesorw, parametry i oznaczenia

Autor, Stanisaw Pietraszek, jest pracownikiem Instytutu Elektroniki na Wydziale


Automatyki, Elektroniki i Informatyki Politechniki lskiej w Gliwicach. Prowadzi
wykady z przedmiotw: mikroprocesory jednoukadowe PIC i elektroniczna aparatura
medyczna.

Spis treci
Od Autora........................................................................................ 11
Wykaz stosowanych oznacze .......................................................... 13
Wstp .................................................................................................... 15
Rozdzia 1. Schemat blokowy, pami, rejestry .................................................. 19
Skrcony opis instrukcji dla procesorw z rodziny Mid-Range .......................................20
Schemat blokowy ..............................................................................................................22
Pami programu...............................................................................................................23
Cykl maszynowy ...............................................................................................................25
Licznik programu ..............................................................................................................25
Stos ....................................................................................................................................26
Tryby adresowania, budowa pamici danych, podzia na banki ................................26
Adresowanie pamici RAM w procesorach Base-Line ....................................................27
Adresowanie pamici RAM w procesorach Mid-Range...................................................28
Rejestry specjalne procesora (SFR) ..................................................................................29
Rejestry oglnego przeznaczenia (GPR) ............................................................................32
Rejestr STATUS .........................................................................................................33
Modyfikacja i odtwarzanie zawartoci licznika rozkazw ...............................................35
Modyfikacja i odtwarzanie zawartoci PC w procesorach Mid-Range ......................36
Modyfikacja i odtwarzanie zawartoci PC w procesorach Base Line ........................37
Pami konfiguracyjna......................................................................................................38
Zawarto pamici konfiguracyjnej............................................................................39

Rozdzia 2. Ukad przerwa, ukady sterujce ..................................................... 45


Ukad przerwa .................................................................................................................45
Ukad przerwa dla mniejszych procesorw ..............................................................46
Ukad przerwa dla wikszych procesorw ...............................................................47
Przerwanie zewntrzne z linii INT (RB0) .............................................................48
Przerwanie od zmiany sygnau na liniach portu B (RB4 RB7) ...............................49
Przerwanie od przepenienia licznika TMR0..............................................................49
Przerwanie od zakoczenia zapisu do pamici EEPROM..........................................49
Struktura programu z wykorzystaniem przerwa .......................................................50
Przechowywanie zawartoci rejestrw podczas obsugi przerwania..........................50
Procedury sprawdzajce..............................................................................................52
Ukad oscylatora................................................................................................................52
Tryby pracy oscylatora dla procesorw bez bitu FOSC2 ...........................................53
Standardowy generator kwarcowy tryby LP, XT, HS ...............................................53
Podczanie zewntrznego rda sygnau zegarowego .............................................55

Mikroprocesory jednoukadowe PIC


Generator RC tryb RC ...........................................................................................55
Wewntrzny generator RC tryb INTRC ................................................................56
Tryby pracy oscylatora dla procesorw z bitem FOSC2.................................................57
Ukad zerowania procesora ...............................................................................................59
Zerowanie lini ~MCLR.............................................................................................61
Zerowanie po wczeniu zasilania POR ................................................................61
Zerowanie przy spadku napicia zasilania BOR ...................................................62
Bity zwizane z funkcj zerowania.............................................................................63
Pocztkowe ustawienia rejestrw po wyzerowaniu....................................................64
Zachowanie si oscylatora po wyzerowaniu...............................................................65
Stan upienia mikrokontrolera ..........................................................................................65
Standardowy ukad pracy procesora ...........................................................................73

Rozdzia 3. Porty, liczniki, pami EEPROM ....................................................... 75


Porty wejcia/wyjcia charakterystyka oglna.............................................................75
Port A ..........................................................................................................................77
Port B ..........................................................................................................................78
Port C ..........................................................................................................................79
Port D ..........................................................................................................................80
Port E ..........................................................................................................................81
Port GPIO....................................................................................................................82
Moduy licznikw (timerw) ............................................................................................83
Timer 0........................................................................................................................83
Licznik WDT (Watchdog Timer) ...............................................................................86
Timer 1........................................................................................................................87
Timer 2........................................................................................................................92
Nieulotna pami danych ..................................................................................................94
Opis dziaania..............................................................................................................94
Odczyt z pamici EEPROM .......................................................................................96
Zapis do pamici EEPROM........................................................................................96
Odczyt i zapis do pamici programu.................................................................................97
Odczyt z pamici programu typu FLASH ..................................................................98
Zapis do pamici programu typu FLASH...................................................................98
Programowanie procesora przez zapis do pamici programu...................................100

Rozdzia 4. Interfejsy, przetworniki A/C, ukady analogowe .............................. 101


Interfejs USART .............................................................................................................101
Obliczanie szybkoci transmisji................................................................................104
Praca moduu USART w trybie asynchronicznym...................................................106
Praca moduu USART w trybie synchronicznym.....................................................111
Interfejs szeregowy SSP tryb SPI...............................................................................116
Konfiguracja moduu SPI .........................................................................................116
Praca w trybie SPI master ....................................................................................119
Praca w trybie SPI slave ......................................................................................121
Praca w stanie upienia .............................................................................................122
Interfejs szeregowy SSP tryby SPI i I2C ....................................................................122
Ustalenie czstotliwoci transmisji ...........................................................................127
Standardowy protok transmisji ..............................................................................127
Nadawanie w trybie master.......................................................................................127
Odbir w trybie master .............................................................................................128
Konfiguracja moduu I2C..........................................................................................128
Procedury sprawdzajce............................................................................................129
PSP 8-bitowy port rwnolegy ...................................................................................133

Spis treci

5
Ukady CCP i PWM........................................................................................................135
Tryb Rejestruj (Capture) ...........................................................................................136
Tryb Porwnaj (Compare) ........................................................................................137
Tryb PWM modulator szerokoci impulsw .......................................................137
Standardowy przetwornik A/C z kompensacj wagow.................................................140
8-bitowy przetwornik A/C ........................................................................................140
Opis dziaania przetwornika A/C..............................................................................143
Obliczanie minimalnego czasu akwizycji.................................................................145
Konwersja A/C w trybie obnionego poboru mocy .................................................147
10-bitowy przetwornik AC .......................................................................................148
12-bitowy przetwornik A/C ......................................................................................150
Przetwornik A/C z przetwarzaniem U/t....................................................................151
Programowany ukad napicia odniesienia...............................................................152
Modu komparatora analogowego ............................................................................154
Konfiguracja moduu komparatorw........................................................................156
Parametry komparatora.............................................................................................156

Rozdzia 5. Lista instrukcji .............................................................................. 159


Format instrukcji i uwagi wstpne ..................................................................................161
Szczegowy opis rozkazw ...........................................................................................162
Zerowanie zawartoci rejestru ..................................................................................163
Przesania ..................................................................................................................163
Operacje arytmetyczne..............................................................................................164
Instrukcje logiczne ....................................................................................................168
Przesunicia bitw w rejestrze..................................................................................169
Instrukcje ustawiania i zerowania bitw w rejestrze ................................................172
Instrukcje skokw .....................................................................................................173
Instrukcje powrotw .................................................................................................180
Przejcie w stan obnionego poboru mocy...............................................................182
Wyzerowanie licznika WDT.....................................................................................183
Wykonanie cyklu pustego.........................................................................................183
Instrukcje tris i option ...............................................................................................184
Wyjtki......................................................................................................................184
Formalny opis instrukcji..................................................................................................185
Lista instrukcji dla procesorw Base-Line......................................................................198

Rozdzia 6. Asembler MPASM.......................................................................... 201


Formaty liczb i znakw ...................................................................................................201
Operatory arytmetyczne i logiczne .................................................................................202
Format pliku wejciowego ..............................................................................................203
Linia ..........................................................................................................................203
Separator ...................................................................................................................203
Komentarz.................................................................................................................203
Etykiety .....................................................................................................................203
Rozkazy.....................................................................................................................203
Polecenia ...................................................................................................................203
Lista polece ...................................................................................................................204
Opis czciej uywanych polece ...................................................................................204
Wywoanie kompilatora ..................................................................................................214
Oddzielne wywoanie kompilatora MPASMWIN....................................................217
Wywoanie kompilatora MPASM ............................................................................217
Oznaczenia i formaty plikw ..........................................................................................218
Format pliku z list bdw (.err) .............................................................................218
Format pliku z informacjami o przebiegu kompilacji (.lst) ......................................219
Format pliku wynikowego (.hex)..............................................................................219
Instrukcje specjalne .........................................................................................................221

Mikroprocesory jednoukadowe PIC

Rozdzia 7. Zintegrowane rodowisko uruchomieniowe MPLAB ......................... 223


Instalacja..........................................................................................................................223
System zapisu czynnoci...........................................................................................224
Wywoanie ......................................................................................................................224
Zawarto linii statusu ..............................................................................................224
Okienko File....................................................................................................................226
Okienko Project...............................................................................................................227
Tworzenie projektw ................................................................................................228
Edycja projektu .........................................................................................................228
Kompilacja................................................................................................................231
Okienko Edit ...................................................................................................................231
Okienko Debug ...............................................................................................................232
Menu Run..................................................................................................................232
Menu Execute ...........................................................................................................235
Menu Simulator Stimulus .........................................................................................235
Ustawianie puapek polecenie Break Settings .....................................................241
Ustawianie znacznikw polecenie Trace Settings ...............................................242
Kasowanie znacznikw polecenie Clear all Points..............................................242
Polecenie Power on Reset.........................................................................................242
Okienko Picstart Plus ......................................................................................................243
Okienko Options .............................................................................................................244
Polecenie Development Mode ..................................................................................244
Okienko Tools...........................................................................................................245
Okienko Window ......................................................................................................245
Okienko Program Memory .......................................................................................246
Okienko Trace Memory............................................................................................246
Okienko EEPROM Memory.....................................................................................246
Okienko Absolute Listing .........................................................................................246
Okienko Stack...........................................................................................................247
Okienko File Register ...............................................................................................247
Okienko Special Function Register ..........................................................................247
Okienko Show Symbol List ......................................................................................249
Okienko StopWatch ..................................................................................................249
Okienko Project Window..........................................................................................249
Okienko New Watch Window ..................................................................................249
Okienko Modify........................................................................................................250
Polecenia Tile Horizontal, Tile Vertical, Cascade, Iconize All, Arrange Icons .......250
Okienko Help ............................................................................................................250
Bdy, ostrzeenia i komunikaty .....................................................................................250
Programowanie................................................................................................................251

Rozdzia 8. Programowanie procesorw ........................................................... 253


Jzyk programowania......................................................................................................253
Zalenoci czasowe .........................................................................................................254
Algorytmy programowania .............................................................................................255
Programatory sprzt i oprogramowanie .....................................................................255
Programowanie procesorw............................................................................................257
Programowanie w programatorze .............................................................................257
Programowanie w ukadzie.......................................................................................258
Standard czwki programatora ..............................................................................260
Pami konfiguracyjna w procesorach Mid-Range ........................................................260
Rejestr konfiguracyjny..............................................................................................261
Rejestr konfiguracyjny dla procesora PIC16F877....................................................261
Rejestr konfiguracyjny dla procesora PIC16F628....................................................261

Spis treci

7
Rejestr konfiguracyjny dla procesora PIC16F84......................................................261
Rejestr konfiguracyjny dla procesora PIC12C509 ...................................................261
Ustawianie bitw konfiguracyjnych .........................................................................263
Pami danych EEPROM ...............................................................................................265
Schematy programatorw ...............................................................................................265
Programator PICPROG.............................................................................................266
Programator JDM......................................................................................................267
Programator JUPIC...................................................................................................267
Programowanie przez zapis do pamici programu .........................................................269
Program adujcy (bootloader) .................................................................................269
Program komunikacyjny (downloader) ....................................................................270
Podczenie procesora do komputera........................................................................271
Przebieg programowania ..........................................................................................271
Kod rdowy programu bootldr.asm .......................................................................272

Rozdzia 9. Eksperymenty, programy, projekty.................................................. 275


Konfiguracja minimalna..................................................................................................275
Wybr procesora .............................................................................................................277
Krtka charakterystyka procesora.............................................................................277
System oznaczania ....................................................................................................279
Mapa pamici RAM..................................................................................................280
Rejestr konfiguracyjny..............................................................................................280
Konfiguracja linii I/O................................................................................................284
Generator zegarowy ..................................................................................................284
Ukad eksperymentalny ............................................................................................284
Programator...............................................................................................................285
Oprogramowanie.......................................................................................................285
rdo zasilania.........................................................................................................286
Programy .........................................................................................................................286
Program P1 zapal diod .......................................................................................287
Program P2 zapal diod po naciniciu klawisza ................................................288
Program P3 przerzutnik .......................................................................................289
Program P4 eliminacja drga stykw ..................................................................290
Program P5 przerzutnik, eliminacja drga stykw w obsudze przerwania ........293
Program P6 migacz z ptl opniajc, Fosc = 37 kHz.....................................295
Program P7 migacz z ptl opniajc, Fosc = 4 MHz .....................................297
Program P8 migacz z czasem odmierzanym przez licznik 0 (1) .........................298
Program P9 migacz z czasem odmierzanym przez licznik 0 (2) .........................300
Program P10 migacz z czasem odmierzanym przez t licznik 1...........................301
Program P11 migacz z czasem odmierzanym przez licznik 1 i CCP ..................303
Program P12 migacz z czasem odmierzanym przez licznik 2 .............................304
Program P13 migacz z dzielnikiem czstotliwoci na liczniku 0 ........................306
Program P13a migacz, konfiguracja minimalna..................................................307
Program P14 migacz, czas odmierzany przez licznik WDT................................308
Program P15 migacz, czas odmierzany przez licznik WDT w stanie upienia ...309
Program P16 migacz z sygnalizacj akustyczn..................................................310
Program P17 migacz z opnieniem przez wykonywanie instrukcji addlw, 255 ...312
Program P18 migacz z opnieniem
przez wykonywanie instrukcji addlw, 255 i przepenienie licznika rozkazw ......313
Program P19 wyjcie ze stanu upienia po naciniciu przycisku ......................314
Program P20 generator sygnau SOS ...............................................................316
Program P21 generator napicia schodkowego ...................................................318
Program P22 4-bitowy przetwornik A/C .............................................................320
Program P23 programowa obsuga 12-bitowego przetwornika A/C...................323
Program P24 zasilacz sterowany cyfrowo ...........................................................326

Mikroprocesory jednoukadowe PIC

Rozdzia 10. Procedury matematyczne ............................................................... 331


Oznaczenia formatu argumentw i wykaz procedur.......................................................331
Wykaz procedur ........................................................................................................332
Dodawanie.......................................................................................................................333
Dodawanie liczb 16-bitowych ..................................................................................333
Dodawanie liczb 24-bitowych ..................................................................................333
Dodawanie liczb 32-bitowych ..................................................................................334
Odejmowanie ..................................................................................................................334
Odejmowanie liczb 16-bitowych ..............................................................................335
Odejmowanie liczb 24-bitowych ..............................................................................335
Odejmowanie liczb 32-bitowych ..............................................................................336
Mnoenie.........................................................................................................................336
Mnoenie liczb 8-bitowych.......................................................................................337
Mnoenie liczby 16-bitowej przez liczb 8-bitow ..................................................338
Mnoenie liczb 16-bitowych.....................................................................................339
Dzielenie..........................................................................................................................341
Dzielenie liczb 8-bitowych .......................................................................................341
Dzielenie liczby 16-bitowej przez liczb 8-bitow...................................................341
Dzielenie liczb 16-bitowych .....................................................................................343
Pierwiastkowanie ............................................................................................................343
Relacje midzy argumentami ..........................................................................................344
Rwno argumentw...............................................................................................344
Nierwno argumentw ..........................................................................................345
A>B...........................................................................................................................345
A>=B ........................................................................................................................346

Rozdzia 11. Zestawienia, parametry, obudowy, oznaczenia ................................ 347


Zestawienie rejestrw specjalnych..................................................................................347
Rejestry: STATUS, PCON, OPTION_REG.............................................................348
Ukad przerwa rejestry: INTCON, PIR1, PIR2, PIE1, PIE2 .............................351
Liczniki TMR1 I TMR2 rejestry: T1CON, T2CON............................................356
USART rejestry: TXSTA, RCSTA......................................................................357
SSP tryb SPI rejestry: SSPCON, SSPSTAT........................................................359
SSP tryb I2C, rejestry: SSPCON, SSPSTAT, SSPCON2 .........................................361
PSP rejestr TRISE................................................................................................364
Modu CCP rejestry: CCP1CON, CCP2CON .....................................................365
Przetwornik A/C rejestry: ADCON0, ADCON1, REFCON ...............................366
Ukad BOR rejestr LVDCON............................................................................371
Komparatory rejestry: CMCON, VRCON ..........................................................372
Pami EEPROM rejestry: EECON1, EECON2.................................................373
Zawarto rejestrw specjalnych po wyzerowaniu i obudzeniu .....................................374
Procesor PIC12C509.................................................................................................375
Procesor PIC16F84 ...................................................................................................375
Procesor PIC16F628 .................................................................................................376
Procesor PIC16F877 .................................................................................................378
Sposb oznaczania ..........................................................................................................380
Rozkad wyprowadze ....................................................................................................381
Parametry ........................................................................................................................381
Napicie zasilania i pobr prdu...............................................................................383
Wartoci progowe napi dla wej..........................................................................384
Poziomy napi na wyjciach i wydajno prdowa wyj......................................385
Okresy generatorw i czasy opnie ......................................................................385
Wytrzymao na programowanie ............................................................................385

Spis treci

9
Lista bdw (Errors) numery bdw: 101 157 .....................................................386
Lista ostrzee (Warnings) numery bdw: 201 226 ............................................388
Lista komunikatw (Messages) numery bdw: 301 314......................................389
Tablica kodw ASCII......................................................................................................391

Literatura ...................................................................................... 393


Skorowidz...................................................................................... 395

Rozdzia 1.

Schemat blokowy,
pami, rejestry
Procesory PIC wykorzystuj architektur Harvardzk, tzn. posiadaj rozdzielon pami
danych od pamici programu i dwie oddzielne magistrale o rnej szerokoci sowa.
Pami programu operuje w zalenoci od rodziny sowem 12-, 14- lub 16-bitowym, natomiast pami danych jest 8-bitowa i dlatego procesory PIC zaliczane s do grupy procesorw 8-bitowych. Na rysunku 1.1 pokazano rnice w budowie pomidzy procesorami wykorzystujcymi architektur tradycyjn, czyli von Neumanna, i Harvardzk.
Rysunek 1.1.
Architektury
procesorw

Dziki tak dugiemu sowu pojedyncza instrukcja moe zawiera zarwno kod, jak i argument (argumenty) operacji, co powoduje, e liczba komrek pamici odpowiada liczbie moliwych do wykonania instrukcji. W przypadku architektury tradycyjnej pierwsza
komrka zawiera zwykle kod operacji, a nastpne argumenty. Powoduje to, e kod wynikowy takich samych programw jest zazwyczaj dla procesorw PIC nieco krtszy.
W procesorach zastosowano potokowy system pracy (pipeline), w ktrym procesor podczas wykonywania kolejnego rozkazu pobiera z pamici nastpny, co sprawia wraenie,
e wykonanie rozkazu zajmuje tylko jeden cykl maszynowy.
Wszystkie rejestry specjalne procesora SFR (Special Function Register) odwzorowane s w pamici RAM i dostpne tak samo jak wszystkie inne komrki pamici,
tzn. poprzez adresowanie bezporednie lub porednie. Pomys ten nazwano koncepcj
rejestrow (Register File Concept).

20

Mikroprocesory jednoukadowe PIC

Inn ciekaw wasnoci procesorw PIC jest to, e kada komrka pamici (rejestr)
moe by uyta zarwno jako argument, jak i miejsce, gdzie zostanie umieszczony
wynik operacji, tradycyjnie przesyany do akumulatora. Jego rol peni tu rejestr roboczy oznaczony jako W (Working Register). Brak wyjtkw, obecnych zazwyczaj w takich przypadkach, bardzo upraszcza programowanie procesora. Cech t nazywa producent symetri lub ortogonalnoci instrukcji.

Skrcony opis instrukcji


dla procesorw z rodziny Mid-Range
Podczas opisu budowy i dziaania procesorw bdziemy czsto posugiwa si przykadami, std ju na pocztku warto, nawet pobienie, zaznajomi si z list rozkazw procesorw PIC. Do tego celu najlepiej nadaje si lista dla procesorw z rodziny Mid-Range,
zawierajca tylko 35 instrukcji [2]. W przedstawionym w tabeli 1.1 zestawieniu, instrukcje
podano w uporzdkowaniu funkcjonalnym, odbiegajcym od alfabetycznego, spotykanego w dokumentacji procesorw. Peny opis instrukcji wraz z przykadami znajduje
si w rozdziale 5. Tam te znale mona list instrukcji dla procesorw z rodziny
Base-Line. Dla formalnoci przypomnijmy, e kada instrukcja dla procesorw z rodziny Mid-Range ma posta 14-bitowego sowa i dzieli si na pole okrelajce kod instrukcji i pole zawierajce jeden lub dwa argumenty.
Wszystkie instrukcje wykonywane s w jednym cyklu maszynowym, z wyjtkiem instrukcji skokw, ktre wykonywane s w dwch cyklach maszynowych.
Tabela 1.1. Lista rozkazw procesorw z rodziny Mid-Range
Mnemonik

Arg.

NOP
CLRW

Opis w jz. ang.

Opis

No Operation

cykl pusty

Clear W

zeruj W

Clear F

zeruj F

f, d

Complement F

zaneguj F, wynik przelij do d

f, d

Move F to d

przelij F do d

MOVWF

Move F to W

przelij W do F

MOVLW

Move k to W

przelij k do W

ADDWF

f, d

Add W to F

dodaj W do F, wynik przelij do d

ADDLW

Add k to W

dodaj k do W

INCF

f, d

Increment F

zwiksz F o 1, wynik przelij do d

SUBWF

f, d

Subtract W from F

odejmij W od F, wynik przelij do d

SUBLW

Subtract k from W

odejmij k od W

DECF

f, d

Decrement F

zmniejsz F o 1, wynik przelij do d

ANDWF

f, d

AND W and F

iloczyn logiczny W i F, wynik przelij do d

CLRF

COMF
MOVF

Rozdzia 1. Schemat blokowy, pami, rejestry

21

Tabela 1.1. Lista rozkazw procesorw z rodziny Mid-Range cig dalszy


Mnemonik

Arg.

Opis w jz. ang.

Opis

ANDLW

AND k and W

iloczyn logiczny k i W

IORWF

f, d

OR W with F

suma logiczna W i F, wynik przelij do d

IORLW

OR k with W

suma logiczna k i W

XORWF

f, d

XOR W with F

suma modulo 2 W i F, wynik przelij do d

XORLW

XOR k with W

suma modulo 2 k i W

RLF

f, d

Rotate Left F

przesu F o 1 bit w lewo, wynik przelij do d

RRF

f, d

Rotate Right F

przesu F o 1 bit w prawo, wynik przelij do d

SWAPF

f, d

Swap nibbles in F

zamie tetrady w F, wynik przelij do d

BCF

f, b

Bit Clear F

wyzeruj bit b w F

BSF

f, b

Bit Set F

ustaw bit b w F

BTFSC

f, b

Bit Test F, Skip if Clear

jeli bit b w F = 0, omi nastpn instrukcj

BTFSS

f, b

Bit Test F, Skip if Set

jeli bit b w F = 1, omi nastpn instrukcj

INCFSZ

f, d

Inc. F Skip if Zero

zwiksz F o 1, jeli wynik = 0 omi nastpn instr.

DECFSZ

f, d

Dec. F Skip if Zero

zmniejsz F o 1, jeli wynik = 0 omi nastpn instr.

GOTO

Go To address k

skok bezwarunkowy do etykiety k

CALL

Call subroutine

wywoaj podprogram

Return from subroutine

powrt z podprogramu

Return with k in W

powrt ze sta k w W

RETFIE

Return From Interrupt

powrt z przerwania

CLRWDT

Clear WDT

zeruj licznik WDT

SLEEP

Go to standby mode

przejd w stan upienia

RETURN
RETLW

gdzie:
f 7-bitowy adres rejestru (0 127)
F zawarto rejestru o adresie f (0 255)
W zawarto rejestru roboczego (0 255)
d adres wyniku operacji (0,1):
gdy d = 0 wynik operacji przesyany jest do W
gdy d = 1 wynik operacji przesyany jest do F
b numer bitu (0 7)
k 8-bitowa staa liczbowa (0 255)
s 11-bitowa etykieta (0 2047)

22

Mikroprocesory jednoukadowe PIC

Schemat blokowy
Na rysunkach 1.2 i 1.3 przedstawiono schematy blokowe procesorw z rodziny Base-Line i Mid-Range na przykadzie procesorw PIC12C509 [3] i PIC16F877 [4]. Wyrni na nich mona nastpujce grupy ukadw: jednostk centraln procesora (CPU)
wraz z pamici programu, pamici danych, ukadami sterujcymi i pomocniczymi,
uniwersalne porty wejcia/wyjcia oraz ukady peryferyjne. W konkretnych typach procesorw wielko pamici, liczba portw czy zaimplementowanych ukadw peryferyjnych jest rna. Podobiestwo struktury pomidzy rodzinami jest due, dlatego skupimy si na opisie i analizie ukadw bardziej zoonych, czyli rodziny Mid-Range.
Procesor PIC12C509 naley do grupy najprostszych procesorw, bardzo ubogo wyposaonych w ukady peryferyjne i dysponujcych wzgldnie ma pamici programu 1024 sw 12-bitowych i ma pamici danych (41 rejestrw 8-bitowych
w dwch bankach).
Procesor PIC16F877 naley do grupy procesorw wikszych z prawie wszystkimi
ukadami peryferyjnymi, pamici programu liczc 8192 sw 14-bitowych i pamici danych zawierajc 392 rejestry 8-bitowe w 4 bankach.
Rysunek 1.2.
Schemat blokowy
procesora
PIC12C509

12

Pami programu
1024 x 12

Magistrala danych
Licznik programu

8
GPIO

12

Magistrala
programu

Stos
2 poziomy

Pami danych
RAM
41 bajtw

Rejestr instrukcji
Peny adres
rejestru

GP0/PGD
GP1/PGC
GP2/T0CKI
GP3/~MCLR/VPP
GP4/OSC2
GP5/OSC1/CLKI

Licznik
TMR0

MUX
Adres rejestru w banku
8

5-7
Rej. FSR

Dane z instrukcji
3

Dekoder
instrukcji

Ukady
oscylatora
zewn. i wewn.

Ukady
sterujce
POR
OST
WDT

Rej. STATUS

MUX

ALU

Rejestr W

VDD

VSS

Przegldu procesorw najatwiej dokona analizujc dane zawarte w broszurze Product Line Card [1], wydawanej kilka razy w roku. Zawiera ona zbiorcze zestawienia
najwaniejszych danych procesorw i umoliwia dobranie procesora najlepiej dopasowanego do aktualnych potrzeb.

Rozdzia 1. Schemat blokowy, pami, rejestry


Rysunek 1.3.
Schemat blokowy
procesora
PIC16F877

Pami
programu
8192 x 14

Magistrala
programu

13

23

8 Magistrala dany ch

Licznik programu

Stos
8 poziomw

14

Port A

RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
RA5/AN4/SS

Port B

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

Port C

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/CKL
RC4/SDI/SDA
RC5/SD0
RC6/TX/CK
RC7/RX/DT

Port D

RD0/T1OSO/T1CKI
RD1/T1OSI/CCP2
RD2/CCP1
RD3/SCK/CKL
RD4/SDI/SDA
RD5/SD0
RD6/TX/CK
RD7/RX/DT

Port E

RE0/T1OSO/T1CKI
RE1/T1OSI/CCP2
RE2/CCP1

Pami
dany ch
RAM

Rejestr instrukcji

Peny
adres
rejestru

MUX
7

Adres rejestru w banku


8
8 Dane z instrukcji

Rej. FSR
R. STATUS

Dekoder
instrukcji

Ukady
sterujce:
POR
OST
PWRT
BOR
LVP
WDT

MUX

ALU
8

Ukad
oscy latora

OSC1
CLKIN

OSC2
CLKOUT

Rejestr W

~MCLR VDD VSS

Licznik
TMR0

Licznik
TMR1

Licznik
TMR2

Pami
EEPROM

Przetwornik
A/C

Ukad
PWM
i CCP

Interf ejs
SSP

Interf ejs
USART

Pami programu
Procesory PIC maj wewntrzn pami programu wykonan w zalenoci od wersji
jako jednokrotnie programowan pami EPROM wersje C, LC, wielokrotnie programowan i kasowan za pomoc promieniowania ultrafioletowego pami EPROM
wersja C, kocwka nazwy JW lub programowan i kasowan elektrycznie pamici
FLASH EPROM wersje LC i LF. Maksymalna wielko pamici dla procesorw
z rodziny Mid-Range wynosi 8 k sw 14-bitowych, o adresach 0000h 1FFFh. Pami
adresowana jest za pomoc 13-bitowego licznika rozkazw PC (Program Counter)
zbudowanego z dwch 8-bitowych rejestrw PCL modszy bajt i PCH starszy
bajt, przy czym trzy najstarsze bity w PCH nie s wykorzystane.

24

Mikroprocesory jednoukadowe PIC

Jeli mikrokontroler ma fizycznie zaimplementowan mniejsz pami, np. 1 k sw, to


adresowanie powyej tej granicy bdzie powodowao wielokrotny dostp do tych samych sw, o adresach wskazywanych przez 10 modszych bitw licznika programu.
Po wyzerowaniu licznik rozkazw ustawia si na adres 0000h nazywany wektorem
resetu a po pojawieniu si i przyjciu przerwania na adres 0004h nazywany
wektorem przerwania (rysunek 1.4). W kadym cyklu maszynowym licznik rozkazw
jest inkrementowany z wyjtkiem rozkazw skokw, wywoa podprogramw i obsugi
przerwa. Sytuacje te opisano bardziej szczegowo w nastpnych punktach.
Rysunek 1.4.
Mapy pamici
programu
w procesorach
Base-Line
i Mid-Range

W procesorach Base-Line wielko pamici nie moe przekracza 4096 sw 12-bitowych, a licznik programu jest 12-bitowy. Po wyzerowaniu procesor ustawia si w ostatniej
komrce pamici, w ktrej dla procesorw PIC12C5XX znajduje si rozkaz  ,
gdzie  to warto kalibracyjna dla wewntrznego oscylatora zegarowego RC. Wykonanie dowolnej, rnej od skoku instrukcji, przenosi nas do komrki 0000h, nazywanej efektywnym adresem resetu. W procesorch Base-Line nie ma ukadu przerwa, std
adres 004h nie ma specjalnego znaczenia.

Rozdzia 1. Schemat blokowy, pami, rejestry

25

Cykl maszynowy
Czstotliwo sygnau zegarowego podawanego na wejcie OSC1 jest wewntrznie dzielona
przez cztery, aby wygenerowa cztery nie nakadajce si na siebie fazy: Q1, Q2, Q3 i Q4,
tworzce cykl maszynowy CM, trwajcy 4 okresy sygnau wejciowego (rysunek 1.5).
CM1
Q1

Q2

CM2
Q3

Q4

Q1

Q2

CM3
Q3

Q4

Q1

Q2

Q3

Q4

OSC 1
Q1
fazy cyklu
maszynowego

Q2
Q3
Q4
PC
OSC2 / CLKOUT
(tryb RC )

PC

Pobiera rozkaz (PC)


Wykonuje rozkaz (PC - 1)

PC+1

Pobiera rozkaz (PC + 1)


Wykonuje rozkaz (PC)

PC+2

Pobiera rozkaz (PC + 2)


Wykonuje rozkaz (PC + 1)

Rysunek 1.5. Fazy cyklu maszynowego

W kolejnych fazach nastpuje:


 w fazie Q1 dekodowanie instrukcji, inkrementowanie licznika rozkazw;
 w fazie Q2 czytanie danych;,
 w fazie Q3 wykonanie instrukcji;
 w fazie Q4 zapis danych, pobranie nastpnej instrukcji.

Jeli brak jest czynnoci do wykonania w danej fazie, nastpuje faza pusta. Licznik rozkazw jest inkrementowany przez kade narastajce zbocze sygnau Q1. Instrukcja jest odczytywana z pamici i zapamitywana w rejestrze rozkazw podczas trwania fazy Q4,
a dekodowana i wykonywana w nastpnym cyklu, podczas trwania kolejnych faz Q1 do Q4.
Podczas dekodowania i wykonywania jednego rozkazu z pamici pobierany jest kolejny
rozkaz (zapamitywany w rejestrze rozkazw), std wraenie, e kada instrukcja jest wykonywana w jednym cyklu maszynowym. Jest to suszne, z wyjtkiem rozkazw skokw,
kiedy w instrukcji znajduje si nowy adres komrki pamici i wstpnie pobrany adres jest
nieprzydatny. Wykonanie takich rozkazw zajmuje 2 cykle maszynowe. Sposoby generowania sygnau zegarowego opisano w rozdziale 2.

Licznik programu
W kadym cyklu maszynowym licznik rozkazw jest inkrementowany, z wyjtkiem rozkazw skokw, wywoa podprogramw i obsugi przerwa. Osiem modszych bitw licznika rozkazw dostpnych jest za pomoc rejestru PCL. Natomiast starsze bity, w zalenoci od rodziny procesorw i wykonywanego rozkazu, mog czciowo pochodzi z rejestru
STATUS, rejestru PCLATH lub z kodu instrukcji, jak to pokazano na rysunku 1.6.

26

Mikroprocesory jednoukadowe PIC

Rysunek 1.6.
Licznik rozkazw
w procesorach
Base-Line
i Mid-Range

Procesory Base-Line
11

9 8

PC

PCL

Procesory Mid-Range
0

12

PCH

8 7

PCL

PC
PA1

PA0

PCLATH <4:0>

6 5
STATUS

PCLATH

W procesorach Base-Line licznik programu jest 12-bitowy, przy czym dostpnych jest
tylko 8 modszych bitw przez rejestr PCL. Rozkazy skokw bezwzgldnych ograniczone s do 512 komrek (poprzez 9-bitowy adres skoku) na aktualnej stronie pamici,
okrelonej przez bity PA0, PA1 w rejestrze STATUS. Wywoania podprogramw ograniczone s do 256 komrek z powodu 8-bitowego adresu skoku. W procesorze PIC12C509
podczas wywoania podprogramw zerowany jest 8 bit licznika rozkazw, co powoduje, e podprogramy te musz znajdowa si na grnej poowie strony pamici.
W procesorach Mid-Range 13-bitowy licznik programu jest 13-bitowy i zbudowany
z dwch rejestrw PCL i PCH. Modszy bajt pochodzi z odczytywalnego i zapisywalnego rejestru PCL. Starsze pi bitw pochodzi z rejestru PCH, ktry nie jest dostpny
w pamici RAM. Zawarto PCLATH (5 modszych bitw) jest przenoszona do PCH
podczas wykonywania rozkazw skokw. Bardziej szczegowy opis sposobu aktualizacji zawartoci PC w rnych sytuacjach przedstawiono w podrozdziale Modyfikacja i odtwarzanie zawartoci licznika rozkazw.

Stos
Procesory PIC posiadaj stos sprztowy. Nie jest on ani czci pamici programu,
ani pamici danych, a wskanik stosu nie jest zapisywalny i odczytywalny. Zawarto
licznika programu jest zapamitywana na stosie po wywoaniu instrukcji
 lub po
wystpieniu przerwania, a odczytywana po wywoaniu instrukcji  ,  lub
 , bez adnych dodatkowych instrukcji. W procesorach Base-Line stos ma 2 poziomy, a w procesorach Mid-Range 8 poziomw.
Stos pracuje jako cykliczny bufor, to znaczy, e jeli zostanie zapisany wicej razy ni
wynosi gboko stosu, to kolejne wartoci zostan zapisane na miejscu pierwszych
pooonych na stos wartoci. Mikrokontroler nie posiada bitw, ktre informowayby
o przepenieniu stosu. Operacje odczytu i zapisu na stos nie wpywaj na zawarto
PCLATH, tzn. nie jest on uaktualniany podczas odtworzenia zawartoci PC.

Tryby adresowania, budowa pamici danych,


podzia na banki
Dostpne s dwa tryby adresowania: bezporedni i poredni. W trybie bezporednim
adres rejestru w banku pochodzi z instrukcji. W trybie porednim odwoujemy si do
rejestru INDF. Rejestr INDF nie jest rejestrem fizycznym. Zapisujc go, zapisujemy

Rozdzia 1. Schemat blokowy, pami, rejestry

27

bajt, ktrego adres znajduje si aktualnie w rejestrze FSR (rejestr FSR jest w tym
przypadku wskanikiem do pamici). Czytanie zawartoci INDF bezporednio (FSR = 0)
zwrci warto 00h. Zapisywanie INDF bezporednio nie da adnych rezultatw (mimo
to zawarto rejestru STATUS moe ulec zmianie).
W procesorach PIC pami danych zorganizowana jest w bankach (maksimum 4),
ktrych wielko wynika z liczby bitw przeznaczonych na adres w kodzie instrukcji. W procesorach Base-Line na adres przeznaczono 5 bitw std banki licz po
32 rejestry. W procesorach Mid-Range adres rejestrw jest 7-bitowy, dlatego banki
licz po 128 rejestrw.
Podzia na 4 banki wymaga uywania dodatkowych 2 bitw kontrolnych wyboru
banku, ktre znajduj si w rejestrach STATUS i FSR. W tabeli 1.2 przedstawiono
kodowanie numeru banku dla obu rodzin procesorw, w dwch trybach adresowania.
Tabela 1.2. Adresowanie bankw pamici RAM
Rodzina

Base-Line

Mid-Range

Numer banku

Adresowanie
bezporednie

Adresowanie
porednie

Adresowanie
bezporednie

Adresowanie
porednie

PA1

PA0

FSR

<5,6>

RP1

RP0

IRP

FSR<7>

Adresowanie pamici RAM


w procesorach Base-Line
W trybie bezporednim adres rejestru pochodzi z instrukcji, a wyboru banku dokonujemy poprzez bity PA1 i PA0 z rejestru STATUS. W niektrych procesorach, np.
PIC12C509 wykorzystywane s tylko dwa banki i wtedy bit PA1 pozostaje niezaimplementowany. W procesorze PIC12C508 zastosowano tylko jeden bank (0) i dlatego
bit PA0 pozostaje wyzerowany.
Poredni tryb adresowania uzyskujemy odwoujc si do rejestru INDF i wtedy adres
pochodzi z rejestru FSR (6 modszych bitw). Adres banku okrelony jest w tym przypadku przez bity 5 i 6, a adres rejestru przez bity 0 4 z rejestru FSR. W procesorach
PIC12C508 i PIC12C509 nieuywane bity z rejestru FSR przyjmuj warto 1. Na rysunku 1.7 przedstawiono mechanizm tworzenia adresu rejestru dla obydwch trybw
adresowania.

28

Mikroprocesory jednoukadowe PIC

Rysunek 1.7.
Adresowanie
bezporednie
i porednie
w procesorach
Base-Line

Adresowanie pamici RAM


w procesorach Mid-Range
W trybie bezporednim adres rejestru 7 bitw pochodzi z instrukcji, a wyboru banku dokonujemy poprzez bity RP1 i RP0 z rejestru STATUS. Poredni tryb adresowania uzyskujemy odwoujc si do rejestru INDF i wtedy adres pochodzi z rejestru FSR
7 modszych bitw. Adres banku okrelony jest w tym przypadku przez 7 bit z rejestru FSR i bit IRP z rejestru STATUS. Na rysunku 1.8 przedstawiono mechanizm
tworzenia adresu rejestru dla obydwch trybw adresowania.
Rysunek 1.8.
Adresowanie
bezporednie
i porednie
w procesorach
Mid-Range

W niektrych procesorach np. w PIC16F84 wykorzystywane s tylko dwa banki i wtedy bit PA1 oraz bit IRP z rejestru STATUS s niezaimplementowane.
W przykadzie 1.1 w kadej z instrukcji wykorzystano adresowanie bezporednie poprzez odwoanie si do rejestrw: STATUS, PORTA i TRISA przez ich nazwy. Ustawianie i zerowanie bitw wyboru banku jest jedn z czciej wykonywanych instrukcji. Warto zwrci uwag, e w wyniku wykonania instrukcji  
 nie zostay

Rozdzia 1. Schemat blokowy, pami, rejestry

29

wyzerowane flagi DC, Z, C. W ostatniej linii pokazano ustawienie flagi C w rejestrze


STATUS. Podczas wykonywania wielu instrukcji wystpuje oddziaywanie na zawarto rejestru STATUS, tzn. ustawianie lub zerowanie flag Z, C lub DC.
Przykad 1.1. Adresowanie bezporednie
 
 

 
 


 
 

 
   

W przykadzie 1.2 wykorzystano adresowanie porednie do wyzerowania zawartoci


rejestrw o adresach 20h i 21h w banku 0 oraz rejestru TRISB w banku 1.
Przykad 1.2. Adresowanie porednie
 

 
!"  #$


"
   

   
"
   

"   


"
  

Rejestry specjalne procesora (SFR)


W dolnej czci kadego z bankw pamici RAM od adresu 00h znajduj si rejestry
specjalne procesora (SFR). W rodzinie Mid-Range zarezerwowano na nie adresy od
00h do 1Fh, ale jest to opcja uwzgldniajca wszystkie typy procesorw i czsto niektre rejestry s niezaimplementowane. W mniejszych procesorach np. PIC16F84
zarezerwowany obszar obejmuje adresy od 00h do 0Ah. W procesorze PIC12C509
zarezerwowany obszar obejmuje adresy 00h 06h. W tabeli 1.3 przedstawiono map
pamici procesora PIC16F877, a w tabelach 1.4, 1.5 i 1.6 mapy pamici nastpujcych procesorw: PIC16F628, PIC16F84 i PIC12C509.
Niektre waniejsze rejestry procesora s odwzorowane we wszystkich bankach, tzn.
dostp do nich jest moliwy niezalenie od aktualnie wybranego banku. Warto zwrci uwag, e ze wzgldu na kompatybilno programow pomidzy procesorami starano si utrzyma zasad, e niezalenie od iloci zaimplementowanych rejestrw te
same rejestry maj stae adresy. Mapie pamici warto powici wicej uwagi, poniewa podczas pisania programw jest ona bardzo czsto wykorzystywana.

30

Mikroprocesory jednoukadowe PIC

Tabela 1.3. Mapa pamici RAM w procesorze PIC16F877


Bank 0

Adres
rejestru

Bank 1

Adres
rejestru

Bank 2

Adres
rejestru

Bank 3

Adres
rejestru

INDF

00h

INDF

80h

INDF

100h

INDF

180h

TMR0

01h

OPTION_REG

81h

TMR0

101h

OPTION_REG

181h

PCL

02h

PCL

82h

PCL

102h

PCL

182h

STATUS

03h

STATUS

83h

STATUS

103h

STATUS

183h

FSR

04h

FSR

84h

FSR

104h

FSR

PORTA

05h

TRISA

85h

PORTB

06h

TRISB

86h

PORTC

07h

TRISC

87h

107h

187h
188h

105h
PORTB

106h

184h
185h

TRISB

186h

PORTD

08h

TRISD

88h

108h

PORTE

09h

TRISE

89h

109h

PCLATH

0Ah

PCLATH

8Ah

PCLATH

INTCON

0Bh

INTCON

8Bh

INCON

10Bh

INCON

18Bh

PIR1

0Ch

PIE1

8Ch

EEDATA

10Ch

EECON1

18Ch

10Ah

189h
PCLATH

18Ah

PIR2

0Dh

PIE2

8Dh

EEADR

10Dh

EECON2

18Dh

TMR1L

0Eh

PCON

8Eh

EEDATH

10Eh

18Eh

TNR1H

0Fh

8Fh

EEADRH

10Fh

18Fh

T1CON

10h

90h

110h

190h

TMR2

11h

SSPCON2

91h

111h

191h

T2CON

12h

PR2

92h

112h

192h

SSPBUF

13h

SSPADD

93h

113h

193h

SSPCON

14h

SSPSTAT

94h

114h

194h

CCPR1L

15h

95h

115h

195h

CCPR1H

16h

96h

116h

CCP1CON

17h

97h

GPR

117h

GPR

197h

RCSTA

18h

TXSTA

98h

16 rej.

118h

16 rej.

198h

TXREG

19h

SPBRG

99h

119h

199h

RCREG

1Ah

9Ah

11Ah

19Ah

CCPR2L

1Bh

9Bh

11Bh

19Bh

CCPR2H

1Ch

9Ch

11Ch

19Ch

CCP2CON

1Dh

9Dh

11Dh

19Dh

ADRESH

1Eh

ADRESL

9Eh

11Eh

19Eh

ADCON0

1Fh

ADCON1

9Fh

20h

GPR

A0h

80 rej.
Oglnie
dostpne
(GPR)

Zamap. jako
70h 7Fh

96 rej.

F0h

16 rej.
7Fh

FFh

19Fh

11Fh
GPR

120h

80 rej.

EFh

196h

1A0h

80 rej.

Zamap.
jako
70h 7Fh

16Fh

16 rej.

17Fh

Wyrnione rejestry dostpne s niezalenie od banku


* Rejestry zarezerwowane dla ICD (In Circuit Debugger)

GPR

170h

Zamap. jako
70h 7Fh

1EFh
1F0h

16 rej.
1FFh

Rozdzia 1. Schemat blokowy, pami, rejestry

31

Tabela 1.4. Mapa pamici RAM w procesorze PIC16F628


Bank 0

Adres
rejestru

Bank 1

Adres
rejestru

Bank 2

Adres
rejestru

Bank 3

Adres
rejestru

INDF

00h

INDF

80h

INDF

100h

INDF

180h

TMR0

01h

OPTION_REG

81h

TMR0

101h

OPTION_REG

181h

PCL

02h

PCL

82h

PCL

102h

PCL

182h

STATUS

03h

STATUS

83h

STATUS

103h

STATUS

183h

FSR

04h

FSR

84h

FSR

104h

FSR

184h

PORTA

05h

TRISA

85h

PORTB

06h

TRISB

86h

105h
PORTB

106h

185h
TRISB

186h

07h

87h

107h

187h

08h

88h

108h

188h

09h

89h

109h

189h

PCLATH

0Ah

PCLATH

8Ah

PCLATH

10Ah

PCLATH

INTCON

0Bh

INTCON

8Bh

INCON

10Bh

INCON

PIR1

0Ch

PIE1

8Ch

10Ch

18Ch

PIR2

0Dh

8Dh

10Dh

18Dh

TMR1L

0Eh

8Eh

10Eh

18Eh

TNR1H

0Fh

8Fh

10Fh

18Fh

T1CON

10h

90h

110h

190h

TMR2

11h

91h

111h

191h

T2CON

12h

92h

112h

192h

13h

93h

113h

193h

14h

94h

114h

194h

CCPR1L

15h

95h

115h

195h

CCPR1H

16h

96h

116h

196h

PCON

PR2

CCP1CON

17h

RCSTA

18h

TXSTA

TXREG

19h

RCREG

1Ah

18Bh

97h

117h

197h

98h

118h

198h

SPBRG

99h

119h

199h

EEDATA

9Ah

11Ah

19Ah

1Bh

EEADR

9Bh

11Bh

19Bh

1Ch

EECON1

9Ch

11Ch

19Ch

1Dh

EECON2

9Dh

11Dh

19Dh

9Eh

11Eh

19Eh

1Eh
CMCON

18Ah

1Fh

VRCON1

9Fh

20h

80
GPR

A0h

Zamap. jako
70h 7Fh

EFh

11Fh

19Fh

48
GPR

120h

1A0h

Zamap. jako
70h 7Fh

170h

14Fh

Oglnie
dostpne
96
(GPR)
7Fh

F0h
FFh

17fH

Zamap. jako
70 7Fh

1EFh
1F0h
1FFh

32

Mikroprocesory jednoukadowe PIC

Tabela 1.5. Mapa pamici RAM w procesorze PIC16F84


Bank 0

Adres
rejestru

Bank 1

Adres
rejestru

INDF

00h

INDF

80h

TMR0

01h

OPTION_REG

81h

PCL

02h

PCL

82h

STATUS

03h

STATUS

83h

FSR

04h

FSR

84h

PORTA

05h

TRISA

85h

06h

TRISB

PORTB

07h

86h
87h

EEDATA

08h

EECON1

88h

EEADR

09h

EECON2

89h

PCLATH

0Ah

PCLATH

8Ah

INTCON

0Bh

INTCON

8Bh

Oglnie
dostpne
(GPR)

0CH
0Dh
0Eh
0Fh

68 rej.

8Ch
Zamap.
w
banku 0

8Dh
8Eh
8Fh

4Fh

CFh

50h

D0h

7Fh

FFh

Mapa pamici procesora PIC16F877 jest charakterystyczna dla procesorw z wiksz


liczb ukadw peryferyjnych. Chocia wikszo rejestrw specjalnych w rnych procesorach ma te same adresy, warto zwrci uwag na par rnic. W procesorach z przetwornikiem A/C 8-bitowym rejestr ADRESH nazywa si ADRES. W procesorach z ukadem komparatorw na miejscu rejestrw ADCON0 i ADCON1 znajduj si rejestry
CMCON i VRCON. W procesorach PIC16F873 rejestry GPR o adresach 120h 17Fh
mapowane s w banku 0, a rejestry o adresach 1A0h 1FFh mapowane s w banku 1.

Rejestry oglnego przeznaczenia (GPR)


Pozosta cz pamici RAM zajmuj rejestry oglnego przeznaczenia (GPR). Liczba
ich zaley od typu procesora i wynosi od 25 do 368. W niektrych procesorach np.
PIC16F87X oglnie dostpne rejestry o adresach wzgldnych 70h 7Fh w bankach 1, 2, 3 zamapowane s w banku 0, tzn. odwoanie si do nich powoduje, e operacja wykonywana jest na rejestrze o tym samym adresie wzgldnym w banku 0. Niezaimplementowane rejestry z banku 1 s niekiedy mapowane w banku 0.

Rozdzia 1. Schemat blokowy, pami, rejestry

33

Tabela 1.6. Mapa pamici RAM w procesorze PIC12C509


Bank 0

Adres
rejestru

Bank 1

INDF

00h

20h

TMR0

01h

21h

PCL

02h

22h

STATUS

03h

23h

FSR

04h

OSCCAL

05h

GPIO

06h

24h
Zamap.
w
banku 0

07h
Oglnie
dostpne
(GPR)
9 rej.
Oglnie
dostpne
(GPR)
16 rej

Adres
rejestru

25h
26h
27h

0Fh

2Fh

10h

30h
Oglnie
dostpne
(GPR)
16 rej.

1Fh

3Fh

Rejestr STATUS
W procesorach Mid-Range rejestr STATUS (statusowy) zawiera bity okrelajce stan
jednostki arytmetyczno-logicznej (ALU), czyli tzw. flagi Z, DC i C, bity wyboru banku IRP, RP0, RP1 oraz bity: ~TO i ~PD, ktre zale od okolicznoci resetu. Bity Z,
DC i C charakteryzuj wynik operacji arytmetycznej lub logicznej. Jest on tak jak
kady rejestr zapisywalny, tzn. mona do niego przesa wynik wykonania instrukcji. W takim przypadku modyfikacja bitw Z, DC i C jest zablokowana.
W procesorze PIC12C509 w rejestrze STATUS bit 6 jest niezaimplementowany, inne
jest te znaczenie bitu 7, ktry peni funkcj flagi ustawianej przy zmianie stanu na liniach GP2:0.

Rejestr STATUS (adres 03h,


zaimplementowany we wszystkich bankach)
R/W-0

R/W-0

R/W-0

R-1

R-1

R/W-x

R/W-x

R/W-x

IRP

RP1

RP0

~TO

~PD

DC

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

gdzie:
R bit odczytywalny
W bit zapisywalny

34

Mikroprocesory jednoukadowe PIC

U bit niezaimplementowany
n stan po wczeniu zasilania (0, 1, lub x stan nieokrelony)
Oznaczenia te stosowane bd przy opisie wszystkich rejestrw.
bit 7 (IRP) bit wyboru banku dla adresowania poredniego
0 Bank 0, 1 (0h FFh)
1 Bank 2, 3 (100h 1FFh)
Dla procesorw uywajcych tylko banku 0 i 1 bit 7 IRP nie jest uywany i powinien
pozosta wyzerowany.
bity 6 5 (RPl:RP0) bity wyboru banku dla adresowania bezporedniego
00 Bank 0 (00h 7Fh)
01 Bank 1 (80h FFh)
10 Bank 2 (100h 17Fh)
11 Bank 3 (180h 1FFh)
Kady bank ma 128 bajtw. Dla procesorw uywajcych tylko banku 0 i 1 bit 6 (RP1)
nie jest uywany i powinien pozosta wyzerowany.
bit 4 (~TO) bit przepenienia licznika WDT
1 po wczeniu, wykonaniu instrukcji   lub  
0 nastpio przepenienie licznika WDT
bit 3 (~PD) bit sygnalizujcy przejcie w stan upienia
1 po wczeniu lub wykonaniu instrukcji  
0 po wykonaniu instrukcji  
bit 2 (Z) bit (flaga) zera
1 wynikiem operacji arytmetycznej lub logicznej jest zero
0 wynikiem operacji arytmetycznej lub logicznej jest liczba rna od zera
bit 1 (DC) bit przeniesienia powkowego (Digit Carry)
1 nastpio przeniesienie z 3 na 4 bit
0 nie nastpio przeniesienie z 3 na 4 bit
bit 0 (C) bit przeniesienia/poyczki (Carry)
1 nastpio przeniesienie z najbardziej znaczcego bitu
0 nie nastpio przeniesienie z najbardziej znaczcego bitu
Dla operacji odejmowania (instrukcje:  i ) bit C peni funkcj zanegowanej
poyczki.

Rozdzia 1. Schemat blokowy, pami, rejestry

35

Rejestr STATUS dla procesora PIC12C509 (adres 03h)


R/W-0

R/W-0

R/W-0

R-1

R-1

R/W-x

R/W-x

R/W-x

GPWUF

PA0

~TO

~PD

DC

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

bit 7 (GPWUF) bit (flaga) ustawiana przy zmianie stanu na liniach GP3, 1, 0
0 po wyzerowaniu procesora po zaczeniu zasilania (POR), z WDT i ~MCLR
1 po wyzerowaniu procesora po zmianie na liniach GP3, 1, 0 (od ostatniego
odczytu)
bit 5 (PA0) bit wyboru banku
0 bank 0
1 bank 1
W przykadzie 1.3 pokazano kilka typowych rozkazw wykonywanych na rejestrze STATUS. Zastosowano instrukcj  
 do wyzerowania zawartoci rejestru STATUS.
Jak ju wczeniej wspomniano, nie odnosi si ona do bitw Z, DC i C. Kolejne linie
pokazuj, jak mona ustawi bity RP0 i RP1 oraz flag przeniesienia (C). Ostatni fragment pokazuje sprawdzanie, czy zawarto rejestru  rwna jest zero, przez sprawdzenie flagi Z, ustawianej podczas wykonywania instrukcji  .
Przykad 1.3. Operacje na rejestrze STATUS
 
      "  
 

 
%
 
!  $
 

 
" #  
  
"  
&&&
"&&&"# '! '$
###
"###"# '! '$

Modyfikacja i odtwarzanie
zawartoci licznika rozkazw
Relacje pomidzy licznikiem rozkazw, stosem a rejestrem STATUS najlepiej przeledzi na przykadzie opisu zachowania si procesora w typowych sytuacjach obejmujcych rozkazy odwoujce si do rejestru PCL, rozkazy skokw i wywoa podprogramw. Przedstawione opisy posu w tym miejscu jedynie do ilustracji mechanizmw modyfikacji i odtwarzania licznika rozkazw. Przykady wykorzystujce te
mechanizmy podano przy okazji opisu rozkazw skokw w rozdziale 5.

36

Mikroprocesory jednoukadowe PIC

Modyfikacja i odtwarzanie zawartoci PC


w procesorach Mid-Range
Skok wyliczany (computed goto)
Modyfikacja zawartoci rejestru PCL rwnowana jest wykonaniu skoku i nazywana
jest skokiem wyliczanym. Skok taki odbywa si wewntrz cigego obszaru pamici
obejmujcego 256 komrek o adresach wskazywanych przez zawarto rejestrw PCL
i PCLATH. Czsto modyfikacja PCL polega na zmianie go o pewn warto i wtedy moe by wymagane sprawdzenie, czy adresy skokw nie przekraczaj granic 256-bajtowych obszarw, lub te posugiwanie si penym adresem, tj. modyfikacj PCL i PCLATH
(sytuacja 1). Rozkazy te nie wpywaj na zawarto stosu.

Skok bezwzgldny
Podczas wykonania instrukcji   do rejestru PCL i dwch najmodszych bitw PCH
wpisywanych jest 11 bitw z kodu instrukcji, a dwa najstarsze bity w PCH przepisywane s z 3 i 4 bitu PCLATH. Fakt, e tylko 11 modszych bitw pochodzi z kodu instrukcji, ogranicza zakres skoku do bloku 2k pamici, w ktrej si aktualnie znajdujemy
(sytuacja 2. na rysunku 1.9).

Wywoanie podprogramu
Podczas wywoania podprogramu (
) aktualna warto licznika rozkazw (13 bitw)
odkadana jest na stos, a do licznika rozkazw zostaje wpisanych 11 bitw z kodu instrukcji (adres skoku) i 2 bity z rejestru PCLATH (bit 3 i 4). Ogranicza to zakres skoku
do bloku 2k pamici, w ktrym si aktualnie znajdujemy sytuacja 3. na rysunku 1.9.

Powrt z podprogramu i z procedury obsugi przerwania


Przy powrocie z podprogramu lub z procedury obsugi przerwania (instrukcje:  ,
,  ) zawarto szczytu stosu (13 bitw) jest przesyana do licznika rozkazw,
nie jest jednak aktualizowana zawarto rejestru PCLATH (sytuacja 4. na rysunku 1.9).
Przykad 1.4 ilustruje mechanizm przechodzenia pomidzy stronami pamici na przykadzie wywoania ze strony 0 procedury   znajdujcej si na stronie 1 pamici.
Przykad 1.4. Zmiana adresu strony
 

(
 # "  #
%
)(%'
" 
#  " # 

***
+

" 
 " "  

***
  

Rozdzia 1. Schemat blokowy, pami, rejestry

37

Rysunek 1.9.
Modyfikacja
i odtwarzanie
licznika rozkazw
w procesorach
Mid-Range

Modyfikacja i odtwarzanie zawartoci PC


w procesorach Base Line
W procesorach Base-Line bity wpisywane do licznika rozkazw pochodz z kodu instrukcji i z rejestru STATUS (bity PA1 i PA0). Bardziej szczegowy opis tej sytuacji
dla procesora PIC12C509 przedstawiono na rysunku 1.10.
Warto zwrci uwag, e podczas wykonywania instrukcji odwoujcej si do rejestru
PCL zerowany jest 8 bit licznika rozkazw sytuacja 1. na rysunku 1.10, co powoduje ograniczenie zakresu skoku do modszych 256 bajtw na aktualnej stronie pamici. Podobna sytuacja wystpuje przy wywoaniu podprogramu sytuacja 2.

38

Mikroprocesory jednoukadowe PIC

Rysunek 1.10.
Modyfikacja
i odtwarzanie
licznika rozkazw
w procesorach
Base-Line

Pami konfiguracyjna
W procesorach PIC poza obszarem pamici programu znajduje si pami konfiguracyjna. Nominalnie ma ona taki sam rozmiar jak pami programu, ale zaimplementowanych jest tylko cz komrek. Dostp do pamici konfiguracyjnej jest moliwy
tylko w czasie programowania, a wyjcie z niej nastpuje tylko poprzez wyzerowanie
procesora. Warto zwrci uwag, e adres pamici konfiguracyjnej znajduje si poza
zakresem adresowania przez licznik programu.

Rozdzia 1. Schemat blokowy, pami, rejestry

39

Na uwag zasuguj komrki o adresach 2000h do 2007h. Komrka o adresie 2007h


peni tu szczegln rol i nazywana jest rejestrem konfiguracyjnym procesora. Wan
rol peni te adres 2100h, ktry jest logicznym adresem pocztku pamici EEPROM.
Na rysunku 1.11 przedstawiono map pamici konfiguracyjnej w procesorach z rodziny Mid-Range. Zawarto rejestru konfiguracyjnego i znaczenie poszczeglnych
bitw zmienia si w zalenoci od rodziny procesorw. Bardziej szczegowy opis
rejestru konfiguracyjnego przedstawiony jest w dalszej czci tego rozdziau, a sposb programowania w rozdziale 8.
Rysunek 1.11.
Mapa pamici
konfiguracyjnej
w procesorach
Mid-Range

0000h
Pami
programu
0.5 k
1k
2k
4k
8k
sw 14 bitowych

2000h

Numer ID

2001h

Numer ID

2002h

Numer ID

2003h

Numer ID

2004h

Zarezerwowane

2005h

Zarezerwowane

2006h

Kod procesora

2007h

Rejestr konfig.

1FFFh
2000h
2008h
Zarezerwowane
2100h
Pami
konfiguracyjna
Zarezerwowane

3FFFh

W procesorach PIC508 i PIC509 rejestry z numerem ID znajduj si w pierwszych


komrkach 64-bitowego fragmentu pamici konfiguracyjnej, a rejestr konfiguracyjny
znajduje si w ostatniej komrce tego fragmentu o adresie FFF. Map pamici konfiguracyjnej dla tych procesorw pokazano na rysunku 1.12.

Zawarto pamici konfiguracyjnej


Zawarto pierwszych omiu komrek pamici konfiguracyjnej w procesorach Mid-Range przedstawiono na rysunku 1.13. Bity dostpne dla uytkownika zaznaczono
kolorem szarym.

Numer ID
Zawarto sw 2000h 2003h przeznaczona jest do zapisu numeru identyfikacyjnego
procesora (ID), przy czym wykorzystywa mona tylko 4 najmodsze bity z kadego
ze sw. Pozwala to na zapisanie 16 bitw numeru identyfikacyjnego. Bity te s niedostpne podczas normalnej pracy procesora, ale mona je zapisa i odczyta podczas programowania i weryfikacji zawartoci pamici programu.
Sowa o adresach 2004h i 2005h s zarezerwowane.

40

Mikroprocesory jednoukadowe PIC

Rysunek 1.12.
Mapa pamici
konfiguracyjnej
w procesorach
PIC508 i PIC509

13 12 11 10 9
Numer identyfikacyjny,
tylko 4 najmodsze bity
w kadym sowie:
razem 16 bitw
Zarezerwowane

Kod typu procesora


Rejestr konfiguracyjny

adres
2000h
2001h
2002h
2003h
2004h
2005h
2006h
2007h

Rysunek 1.13. Pami konfiguracyjna w procesorach Mid-Range

Kod typu procesora


W komrce o adresie 2006h znajduje si kod typu procesora.

Rejestr konfiguracyjny
W komrce o adresie 2007h znajduj si bity konfiguracyjne. Przed zaprogramowaniem
i po skasowaniu caej pamici programu, we wszystkich komrkach pamici w tym
i pamici konfiguracyjnej znajduje si warto 1. W czasie programowania nastpuje przeprogramowanie wybranych bitw na 0.
Zawarto komrki 2007h, nazywanej rejestrem konfiguracyjnym, moe by rna dla
rnych procesorw. Dla przykadu podano zawarto tego rejestru dla kilku procesorw i opisano znaczenie poszczeglnych bitw.

Rejestr konfiguracyjny w procesorze PIC16F877


13

12

11

10 9

CP1 CP0 DEBUG

WRT

CPD LVP

BODEN

CP1 CP0 ~PWRTE WDTE FOSC1 FOSC0

Rozdzia 1. Schemat blokowy, pami, rejestry

41

Rejestr konfiguracyjny w procesorze PIC16F628


13

12

11

10

CP1 CP0 CP1 CP0

CPD LVP

BODEN

MCLRE FOSC2

~PWRTE

WDTE FOSC1 FOSC0

Rejestr konfiguracyjny w procesorze PIC16F84


13

12

11

10

CP

CP

CP

CP

CP

CP

CPD

CP

CP

CP

~PWRTE

WDTE

FOSC1

FOSC0

Rejestr konfiguracyjny w procesorze PIC12C509


11

10

MCLRE CP

WDTE

FOSC1

FOSC0

bity FOSC1, FOSC0 bity wyboru typu oscylatora (dla procesorw bez bitu FOSC2)
11 oscylator RC
10 oscylator HS
01 oscylator XT
00 oscylator LP
bity FOSC2, FOSC1, FOSC0 bity wyboru typu oscylatora (dla procesorw z bitem FOSC2)
111 ER lub RC z wyjciem OSCOUT
110 ER lub RC bez wyjcia OSCOUT
101 INTRC z wyjciem OSCOUT
100 INTRC bez wyjcia OSCOUT
011 EC
010 HS
001 XT
000 LP
bit WDTE bit odblokowania licznika WDT
1 licznik WDT odblokowany
0 licznik WDT zablokowany
bit ~PWRTE wyczenie opnienia 72 ms po zaczeniu zasilania
1 opnienie wyczone
0 opnienie wczone

42

Mikroprocesory jednoukadowe PIC

bit MCLRE wyczenie funkcji zewntrznego zerowania


1 funkcja zewntrznego zerowania wczona
0 funkcja zewntrznego zerowania wyczona, udostpnia linie jako wejcie
bit BODEN wczenie funkcji zerowania po spadku napicia zasilania (BOR)
1 funkcja wczona
0 funkcja wyczona
bit LVP wczenie funkcji programowania niskim napiciem
1 funkcja wczona, zajmuje wybran lini I/O dla tej funkcji
0 funkcja wyczona
bit WRT wczenie funkcji zapisu do pamici programu
1 funkcja wczona, zapis do pamici programu dozwolony
0 funkcja wyczona, zapis do pamici programu zablokowany
bit CPD zablokowanie przed odczytem pamici danych EEPROM lub FLASH (Data
Protect)
1 odczyt pamici danych moliwy (odblokowany)
0 odczyt pamici danych zablokowany
bity CP1, CP0 bity blokujce odczyt pamici programu (Code Protection bits)
CP1, CP0 bity wyboru blokady odczytu pamici
11 moliwy odczyt caej pamici programu
10 moliwy odczyt dolnej poowy pamici programu
01 moliwy odczyt dolnej wiartki pamici programu
00 caa pami programu zablokowana dla odczytu
lub
CP bit (bity) blokujcy odczyt pamici programu (Code Protection bits)
1 odczyt zawartoci pamici programu moliwy
0 odczyt zawartoci pamici programu zablokowany
bit DEBUG wczenie ukadu wewntrznego debugera (tylko dla PIC16F87X)
1 ukad wewntrznego debugera wyczony
0 ukad wewntrznego debugera wczony, linie RB7 i RB6 uywane
przez debuger i wyczone z puli linii I/O

Rozdzia 1. Schemat blokowy, pami, rejestry

43

Przed zaprogramowaniem domylny stan wszystkich bitw konfiguracyjnych jest


rwny 1.
Dla procesorw Base-Line znaczenie bitw jest identyczne, rna jest natomiast szeroko sowa 12 bitw i pooenie ww. sw w pamici konfiguracyjnej.

You might also like