Professional Documents
Culture Documents
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
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
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
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
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
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
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.
Arg.
NOP
CLRW
Opis
No Operation
cykl pusty
Clear W
zeruj W
Clear F
zeruj F
f, d
Complement F
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
ADDLW
Add k to W
dodaj k do W
INCF
f, d
Increment F
SUBWF
f, d
Subtract W from F
SUBLW
Subtract k from W
odejmij k od W
DECF
f, d
Decrement F
ANDWF
f, d
AND W and F
CLRF
COMF
MOVF
21
Arg.
Opis
ANDLW
AND k and W
iloczyn logiczny k i W
IORWF
f, d
OR W with F
IORLW
OR k with W
suma logiczna k i W
XORWF
f, d
XOR W with F
XORLW
XOR k with W
suma modulo 2 k i W
RLF
f, d
Rotate Left F
RRF
f, d
Rotate Right F
SWAPF
f, d
Swap nibbles in F
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
BTFSS
f, b
INCFSZ
f, d
DECFSZ
f, d
GOTO
Go To address k
CALL
Call subroutine
wywoaj podprogram
powrt z podprogramu
Return with k in W
powrt ze sta k w W
RETFIE
powrt z przerwania
CLRWDT
Clear WDT
SLEEP
Go to standby mode
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
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.
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
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
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
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.
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
PC+1
PC+2
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
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.
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>
28
Rysunek 1.7.
Adresowanie
bezporednie
i porednie
w procesorach
Base-Line
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
29
30
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
GPR
170h
Zamap. jako
70h 7Fh
1EFh
1F0h
16 rej.
1FFh
31
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
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
33
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.
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
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.
35
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
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.
37
Rysunek 1.9.
Modyfikacja
i odtwarzanie
licznika rozkazw
w procesorach
Mid-Range
38
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.
39
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
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
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
adres
2000h
2001h
2002h
2003h
2004h
2005h
2006h
2007h
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.
12
11
10 9
WRT
CPD LVP
BODEN
41
12
11
10
CPD LVP
BODEN
MCLRE FOSC2
~PWRTE
12
11
10
CP
CP
CP
CP
CP
CP
CPD
CP
CP
CP
~PWRTE
WDTE
FOSC1
FOSC0
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
43