Architektura mikrokontrolerów PIC 16F8x cz 1


K U R S
Na Å‚yczenie wielu
CzytelnikÛw, rozpoczynamy
cykl artykuÅ‚Ûw, w ktÛrych
krok po kroku przedstawimy
architekturÍ mikrokontrolerÛw
PIC16F8x firmy Microchip,
jednych z najpopularniejszych
w naszym kraju.
Mikrokontrolery z intelowskiej ro-
dziny MCS51 dominujÄ… w systemach
mikroprocesorowych nie tylko w na-
szym kraju. O tym chyba nie trzeba
nikogo przekonywaĘ. Dlaczego tak jest?
ZwiÄ…zane jest to niewÄ…tpliwie z bardzo
dobrze przemyślaną architekturą i listą
rozkazÛw. Ponadto, lata obecnoÅ›ci na ChociaÅ‚ ìstaruszekî ma siÍ dobrze, Jednym z takich opracowaÒ, zdoby-
rynku zaowocowaÅ‚y wieloma aplikacja- to chyba nie naleÅ‚y siÍ spodziewaĘ, wajÄ…cych sobie coraz wiÍkszÄ… popular-
mi i doskonaÅ‚ymi narzÍdziami projek- Å‚e taki stan rzeczy bÍdzie trwaÅ‚ nośĘ w Å›wiecie, sÄ… mikrokontrolery ro-
towymi. Dodajmy do tego wielu pro- wiecznie. PowstajÄ… mikrokontrolery, dziny PIC16 firmy Microchip. W jej
ducentÛw oferujÄ…cych rdzeÒ zgodny ktÛre skutecznie konkurujÄ… z tym po- skÅ‚ad wchodzi ponad 60 mikrokontro-
z MCS51, z wbudowanymi wieloma pe- tentatem. MajÄ… one do zaoferowania lerÛw rÛÅ‚nych typÛw rÛÅ‚niÄ…cych siÍ
ryferiami umoÅ‚liwiajÄ…cymi wspÛÅ‚pracÍ wiele nowoczesnych rozwiÄ…zaÒ zwiÍk- miÍdzy sobÄ… rodzajem pamiÍci progra-
z zewnÍtrznymi ukÅ‚adami peryferyj- szajÄ…cych funkcjonalnośĘ i szybkośĘ mu (Flash, EEPROM, EPROM), liczbÄ…
nymi (np. portem rÛwnolegÅ‚ym 8255, dziaÅ‚ania przy coraz mniejszym pobo- linii portÛw oraz wbudowanymi pery-
portem szeregowym 8251 itp.). rze mocy. feriami. Te najbardziej rozbudowane
majÄ… wbudowane interfejsy USART,
I2C i SPI, 368 bajtÛw pamiÍci RAM,
oraz 33 linie portÛw, ktÛre mogÄ… byĘ
obciÄ…Å‚ane prÄ…dem 20mA. Wiele
z mikrokontrolerÛw ma wbudowanÄ… pa-
miÍĘ danych typu EEPROM. W artyku-
le skupimy siÍ na architekturze mik-
rokontrolerÛw PIC16F8x.
SÄ… to ukÅ‚ady, ktÛre zdobyÅ‚y sobie
zasłułoną popularnośĘ w konstrukcjach
amatorskich. PrzyczyniÅ‚o siÍ do tego
niewÄ…tpliwie stosunkowo Å‚atwe progra-
mowanie pamiÍci programu za pomo-
cÄ… 2-przewodowego interfejsu typu
ICSP (ang. In Circuit Serial Program-
ming). Firmowe programatory i systemy
emulacyjne mikrokontrolerÛw firmy
Microchip zawsze uchodziły za bardzo
dobre, ale niestety drogie. Jednak dla
PIC16F83/84 opracowano wiele nieko-
mercyjnych programatorÛw wraz oprog-
ramowaniem. Ich kompletnÄ… dokumen-
tacjÍ moÅ‚na znaleüĘ bez trudu w In-
ternecie. Najprostsze z nich zawierajÄ…
kilka elementÛw, nie wymagajÄ… od-
dzielnego zasilacza i wykorzystują złą-
cze szeregowe PC-ta. Jednak programa-
tor to nie wszystko. Microchip oferuje
darmowy doskonały asembler (w wer-
sji DOS i Windows). Mołna go ściąg-
Rys. 1. Schemat blokowy mikrokontrolerów PIC16F8x.
Elektronika Praktyczna 12/2001
81
K U R S
dÅ‚ugoÅ›ci sÅ‚owa pamiÍci programu do bcf STATUS.RP0;wybór banku 0
przyjÍtych zaÅ‚oÅ‚eÒ konstrukcyjnych. bsf STATUS.RP0;wybór banku 1
W PIC16C8x kody rozkazÛw majÄ… dÅ‚u- PamiÍĘ danych zawiera rÛwnieÅ‚ 64
gośĘ 14-tu bitÛw i sÄ… pobierane w jed- bajty pamiÍci EEPROM. DostÍp do niej
nym cyklu rozkazowym. mołliwy jest tylko poprzez adresowa-
Kałdy cykl rozkazowy jest podzie- nie pośrednie. DługośĘ słowa we
lony na dwie fazy: pobranie rozkazu wszystkich komÛrkach pamiÍci danych
i wykonanie go. Aby zwiÍkszyĘ wydaj- wynosi 8 bitÛw.
nośĘ, w czasie kiedy zaczyna siÍ druga Mikrokontrolery PIC16F8x posiadajÄ…
faza czyli dekodowanie i wykonywanie 8-poziomowy stos. Jest to zespÛÅ‚ 13-
rozkazu, jest jednoczeÅ›nie pobierany bitowych rejestrÛw, ktÛre sÄ… umiesz-
nastÍpny rozkaz. Tak jest do momentu czone poza przestrzeniÄ… adresowÄ… pa-
natrafienia na rozkaz wywoÅ‚ania pod- miÍci programu i danych. ZawartoÅ›ci
programu lub rozkaz skoku. Wtedy po- stosu nie mołna bezpośrednio odczy-
brany nastÍpny rozkaz za instrukcjÄ… taĘ ani zapisaĘ do niego wÅ‚asnych da-
skoku (lub wywoÅ‚ania) jest ignorowa- nych (brak rozkazÛw typu push i pop).
ny, a caÅ‚a procedura rozpoczyna siÍ na NaleÅ‚y pamiÍtaĘ, Å‚e stos jest buforem
nowo od adresu, do ktÛrego wykonany koÅ‚owym co oznacza, Å‚e po jego za-
był skok. Wszystko to powoduje, łe pełnieniu wysłanie kolejnego (dziewią-
przy oscylatorze 10MHz pojedynczy tego) adresu spowoduje modyfikacjÍ
rozkaz jest wykonywany w czasie zapisanego jako pierwszy.
400ns. DośĘ istotnÄ… cechÄ… wyrÛÅ‚niajÄ…cÄ…
tÍ architekturÍ jest zredukowana do 35 Rejestry SFR
lista rozkazÛw (RISC). Schemat bloko- W rejestrze STATUS REGISTER
wy mikrokontrolerÛw rodziny PIC16F8x (rys. 3) przechowywane sÄ… bity sta-
pokazano na rys. 1. tusu operacji arytmetycznych i logicz-
Mikrokontrolery PIC16F8x majÄ… 13- nych (flagi Z, DC i C) oraz bity wy-
bitowy licznik rozkazÛw. MoÅ‚e on boru banku pamiÍci. Jak kaÅ‚dy re-
wiÍc zaadresowaĘ do 8ksÅ‚Ûw pamiÍci jestr, tak i ten, moÅ‚e przechowywaĘ
programu. Fizycznie jest zaimplemen- wynik dowolnej operacji. W takim
towanych jednak tylko 1ksÅ‚Ûw: od ad- przypadku zapis bitÛw Z, DC i C jest
resu 0x0000 do adresu 0x03ff. Po re- zablokowany. Bity te sÄ… zerowane
starcie licznik rozkazÛw ustawia siÍ lub ustawiane tylko poprzez ukÅ‚ady
Rys. 2. Mapa pamięci danych
na adres 0x0000. Procedury obsługi logiczne jednostki ALU. Nie jest teł
mikrokontrolerów PIC16F8x.
wszystkich przerwaÒ muszÄ… zaczynaĘ moÅ‚liwe zerowanie lub ustawianie
siÍ od adresu 0x0004. w ten sposÛb bitÛw T0 i PD. WidaĘ
nąĘ ze strony http://www.micro- PamiÍĘ danych podzielono na dwa wiÍc, Å‚e efekt dziaÅ‚ania instrukcji,
chip.com/10/tools/picmicro/code/ banki (rys. 2). W banku 0, od adresu ktÛrej wynik jest umieszczony
mpasm/index.htm. Opublikowaliśmy go 0x00 do adresu 0x0b (0x0d w 'F84), w STATUS REGISTER mołe byĘ in-
takÅ‚e na pÅ‚ycie CD-EP1. Dla bardziej umieszczono pierwszÄ… czÍśĘ obszaru ny od zamierzonego. Do modyfikacji
zaawansowanych programistÛw jest teÅ‚ rejestrÛw SFR. W obszarze 36/68 baj- tego rejestru powinny byĘ uÅ‚yte roz-
dostÍpny linker i bibliotekarz. tÛw, oznaczonym jako General Purpo- kazy bcf, bsf, swapf i movwf, ponie-
Na internetowej stronie producenta se Register (GPR), jest statyczna pa- waÅ‚ nie zmieniajÄ… bitÛw Z, DC i C.
dostÍpnych jest wiele kodÛw ürÛdÅ‚o- miÍĘ RAM wykorzystywana do prze- Rejestr OPTION_REG (rys. 4) za-
wych dla programowych moduÅ‚Ûw chowywania danych uÅ‚ytkownika. wiera bity ustalajÄ…ce konfiguracjÍ pre-
UART, I2C itp. Opisywany w EP7/00 W banku 1, od adresu 0x80 do adre- skalera licznika/timera TMR0 (lub
moduÅ‚ z PIC16F84 daje teÅ‚ moÅ‚liwośĘ su 0x8b, umieszczono drugÄ… czÍśĘ re- licznika watchdoga WDT), sposÛb wy-
elastycznego konfigurowania prostych jestrÛw SFR. Adresowanie obszaru od zwalania przerwaÒ zewnÍtrznych oraz
i trochÍ bardziej skomplikowanych ap- adresu 0x8c do adresu 0xaf powoduje ürÛdÅ‚o impulsÛw licznika TMR0. Op-
likacji mikrokontrolera. Zwalnia to odwoÅ‚anie siÍ do obszaru GPR z ban- rÛcz tego moÅ‚liwe jest doÅ‚Ä…czanie we-
projektanta, przynajmniej na poczÄ…tku, ku 0. PrzykÅ‚adowo, zaadresowanie ko- wnÍtrznego rezystora ìpodciÄ…ganiaî li-
ze Å‚mudnego tworzenia ukÅ‚adu proto- mÛrki o adresie 0x0c i 0x8c spowodu- nii portu POTRB do plusa zasilania.
typowego. je odwoÅ‚anie siÍ do tej samej danej. Wszystkie przerwania (wewnÍtrzne
Architektura MCS51 jest opisana Wybieranie banku realizowane jest i zewnÍtrzne) w mikrokontrolerach
w wielu publikacjach w jÍzyku pols- poprzez zerowanie lub ustawianie bitu PIC16F8x mogÄ… byĘ indywidualnie
kim. Duło gorzej jest z mikrokontrole- RP0 w rejestrze STATUS np.: maskowane. Do tego celu słuły rejestr
rami PIC. Niniejszy artykuł ma za za-
danie tÍ lukÍ przynajmniej czÍÅ›ciowo
Tab. 1. Zestawienie podstawowych parametrów mikrokontrolerów tworzących
wypełniĘ.
rodzinÄ™ PIC16F8x.
Architektura wielu mikroprocesorÛw
Nazwa parametru PIC16F83 PIC16F84 PIC16CR83 PIC16CR84
oparta jest na architekturze opracowa-
Częstotliwość taktowania 10MHz 10MHz 10MHz 10MHz
nej jeszcze w latach 40. przez von
Neumanna. W takim rozwiązaniu pa- Pojemność pamięci programu Flash 5121024 - -
miÍĘ programu oraz danych majÄ…
Pojemność pamięci programu ROM - - 5121024
wspÛlnÄ… magistralÍ. W mikrokontrole-
Pamięć danych RAM 36 68 36 68
rach PIC16xx zastosowano architekturÍ
Pamięć danych EEPROM 64 64 64 64
typu Harvard. PamiÍĘ programu i pa-
Liczba zródeł przerwań 4 4 4 4
miÍĘ danych majÄ… wÅ‚asne odrÍbne ma-
Liczba dostępnych linii I/O 13 13 13 13
gistrale. Odseparowanie obu pamiÍci
Napięcie zasilania 2,0..6,0 2,0..6,0 2,0..6,0 2,0..6,0
pozwoliło na elastyczne dostosowanie
Elektronika Praktyczna 12/2001
82
K U R S
Rejestr TRISA słuły do określania
czy dana linia jest wejściowa, czy
wyjściowa. Ustawienie (wpisanie je-
dynki) odpowiedniego bitu TRISA po-
Rys. 3. Rejestr STATUS REGISTER (0x03, 0x83).
woduje ustawienie odpowiadajÄ…cej te-
R - bit, który można czytać bit 4: TO: time-out bit mu bitowi linii jako wejściowej (po
W - bit, który można ustawiać lub zerować 1 = po włączeniu zasilania, po instrukcji CLRWDT
włączeniu zasilania lub zerowaniu
U - bit nie zaimplementowany lub instrukcji SLEEP
wszystkie linie są wejściowe). Wyze-
0, 1, x - wartości bitów po włączeniu zasilania (x- 0 = po przepełnieniu licznika WDT (watchdog)
rowanie ktÛregoÅ› z bitÛw powoduje
wartość nieokreślona) bit 3: PD: Power-down bit
ustawienie odpowiadajÄ…cej mu linii ja-
bit 7: IRP - bit w PIC16F84 nie używany (powinien być 1 = po włączeniu zasilania lub po instrukcji
wyzerowany) CLRWDT ko wyjÅ›ciowej. W ten sposÛb ustawia-
bit 6...5: RP1...RP0: bity wyboru banku pamięci danych 0 = przez wykonanie instrukcji SLEEP
jÄ…c lub zerujÄ…c bity rejestru TRISA
00 = Bank 0 (0x00...0x7F) bit 2: Z: Zero bit
mołna dowolnie ustawiaĘ linie portu
01 = Bank 1 (0x80h...0xFF) 1 = rezultat operacji arytmetycznej lub logicznej
A jako wejściowe lub wyjściowe.
10 = Bank 2 (0x100h...0x17F) równa się zero
Linie RA0...RA3 sÄ… liniami o pozio-
11 = Bank 3 (0x180...0x1FF) 0 = rezultat operacji nie równa się zero
Bit RP1 powinien być wyzerowany. Selekcji bit 1: DC: bit przeniesienia połówkowego mach TTL (wejście i wyjście). Linia
banków dokonuje się za pomocą bitu RP0. bit 0: C: bit przeniesienia lub pożyczki dla operacji
RA4 ma na wejÅ›ciu bramkÍ Schmitta,
arytmetycznych wykorzystywany też w rozkazach
natomiast wyjście jest typu otwarty
przesunięcia rrf lub rlf
dren. Linia ta mołe teł byĘ wejściową
dla zewnÍtrznych impulsÛw licznika/
timera TMR0 (patrz bit T0CS w OP-
TION_REG - rys. 4).
Odczytując zawartośĘ rejestru POR-
TA mołemy stwierdziĘ, jakie stany
Rys. 4. Rejestr OPTION_REG (0x81).
wystÍpujÄ… na pinach portu A. W mo-
bit 7: RBPU: bit sterujący włączaniem podciągania do bit 4: T0SE: zbocze przy którym następuje
mencie zapisu do PORTA jego zawar-
plusa linii PORTB inkrementacja licznika/timera TMR0
tośĘ jest przepisywana do przerzutni-
1 = PORTB podciąganie wyłączone 1 = Inkrementacja następuje przy opadającym
0 = PORTB podciÄ…ganie wÅ‚Ä…czone zboczu na pinie RA4/T0CKI kÛw linii portu. JeÅ‚eli teraz odpowied-
bit 6: INTEDG: rodzaj zbocza wyzwalającego przerwanie 0 = Inkrementacja następuje przy narastającym
ni bit TRISA jest rÛwny zero, to war-
zewnętrzne zboczu na pinie RA4/T0CKI
tośĘ zapisana do przerzutnika pojawia
1 = Przerwanie wyzwalane narastajÄ…cym zboczem bit 3: PSA: przyporzÄ…dkowanie preskalera
siÍ na linii portu.
na pinie RB0/INT 1 = Preskaler przyporzÄ…dkowany do WDT
Port B jest rÛwnieÅ‚ powiÄ…zany
0 = Przerwanie wyzwalane opadajÄ…cym zboczem na 0 = Preskaler przyporzÄ…dkowany do TMR0
z dwoma rejestrami SFR: TRISB (adres
pinie RB0/INT bit 2-0: PS2:PS0 współczynnik podziału preskalera
bit 5: T0CS: wybór zródła impulsów licznika/timera (wartości przedstawiono w tab. 2)
0x86) i PORTB (adres 0x06). Ponadto
TMR0
opisany wyłej bit RBPU w rejestrze
1 = Impulsy zliczane sÄ… z pinu RA4/T0CKI
OPTION_REG steruje ìpodciÄ…ganiemî
0 = yródłem impulsów jest przebieg
pinÛw portu do plusa zasilania (rys.
o częstotliwości oscylatora kwarcowego
7). KomÛrki zaznaczone na szaro nie
podzielonej przez 4
dotyczÄ… portu B.
Ustawienie odpowiedniego bitu
TRISB powoduje przełączenie odpo-
wiadajÄ…cej mu linii w stan wysokiej
impedancji. W trybie wejściowym
Rys. 5. Rejestr INTCON REGISTER (0x0B, 0x8B).
mołna dołączyĘ do wszystkich li-
nii rezystor ìpodciÄ…gajÄ…cyî do plu-
bit 7: GIE: zezwolenie na wszystkie nie zamaskowane bit 2: T0IF: flaga ustawiana w momencie przepełnienia
aktualnie przerwania TMR0
sa zasilania (a właściwie tranzys-
1 = Przerwania odblokowane 1 = przepełnienie TMR0 (musi być zerowana
tor MOS speÅ‚niajÄ…cy funkcjÍ rezys-
0 = Przerwania zablokowane w obsłudze przerwania)
tora). Realizuje siÍ to przez wyze-
bit 6: EEIE: maska przerwania generowanego 0 = nie ma przepełnienia TMR0
rowanie bitu RBPU w rejestrze OP-
w momencie zakończenia wpisu do pamięci bit 1:flaga INTF: flaga ustawiana w momencie
TION_REG (rys. 4).
EEPROM użytkownika wystąpienia przerwania zewnętrznego RB0/INT
1 = Przerwanie dozwolone 1 = Wystąpiło przerwanie zewnętrzne RB0/INT Wyzerowanie odpowiedniego bitu
0 = Przerwanie zabronione (musi być zerowana w obsłudze przerwania)
TRISB powoduje ustawianie odpowia-
bit 5: T0IE: maska przerwania generowanego 0 = Przerwanie RB0/INT nie wystąpiło
dającej mu linii w trybie wyjściowym.
w momencie przepełnienia licznika/timera TMR0 bit 0: RBIF: flaga ustawiana w momencie zmiany na
W tym momencie nastÍpuje teÅ‚ auto-
1 = Przerwanie dozwolone którymś z wejść PB4...PB7
0 = Przerwanie zabronione 1 = nastąpiła zmiana na liniach PB4...PB7(musi być
bit 4: INTE: maska przerwania zewnętrznego (zmiana na zerowana w obsłudze przerwania)
Tab. 2. Współczynniki podziału
wejściu RB0/INT ) 0 = na żadnym z tych pinów nie wystąpiła zmiana
1 = Przerwania dozwolone częstotliwości przez preskaler dla
0 = Przerwanie zabronione
liczników TMR0 i WDT.
bit 3: RBIE: maska przerwania zewnętrznego od zmian
PS2...PS0 TMR0 WDT
na liniach PB4...PB7 portu PORTB
1 = Przerwanie dozwolone
000 1:21:1
0 = Przerwanie zabronione
001 1:4 1:2
010 1:8 1:4
INTCON REGISTER, ktÛrego budowÍ PoniewaÅ‚ port A ma tylko 5 linii,
011 1:16 1:8
pokazano na rys. 5. to bity Bit5...Bit7 nie majÄ… swojego fi-
100 1:321:16
Z portem A sÄ… zwiÄ…zane dwa rejes- zycznego odpowiednika w liniach por-
101 1:64 1:32
try z obszaru SRF: TRISA (adres 0x85) tu A i nie sÄ… zaimplementowane. Pod-
i PORTA (adres 0x05). StrukturÍ tych czas operacji czytania obu rejestrÛw 110 1:128 1:64
rejestrÛw pokazano sÄ… na rys. 6. na tych bitach ustawiane sÄ… zera.
111 1:256 1:128
Elektronika Praktyczna 12/2001
84
K U R S
dowych sekwencji inicjacji i obsługi
portÛw. Prezentowana poniÅ‚ej:
bsf STATUS,RP0 ;wybór banku 1
movlw b 00010101
Rys. 6. Rejestry TRISA (0x85) i PORTA (0x05). movwf TRISA
;wpisanie wartości do TRISA
x - wartość nieokreślona (1) wartości po włączeniu zasilania
powoduje, Å‚e linie RA0, RA2 i RA4 sÄ…
u - wartość nie zmieniana (2) wartości po zerowaniu
ustawione jako wejściowe, natomiast li-
nie RA1 i RA3 jako wyjściowe. Jełeli
linie RA0, RA2 i RA4 pozostanÄ… jako
wejściowe to bity portu mołna usta-
wiaĘ za pomocą instrukcji:
bcf PORTA,1 ;na RA1 wyślij 0
bsf PORTA,3 ;na RA3 wyślij 1
Mołna teł wpisywaĘ całą wartośĘ
Rys. 7. Rejestry TRISB (0x86) i PORTB (0x06).
do PORTA:
(1) wartości po włączeniu zasilania x - wartość nieokreślona
movlw 0xff
(2) wartości po zerowaniu u - wartość nie zmieniana
movwf PORTA ; RA1 i RA0 = 1
matyczne wyłączenie podciągania do przerwania musi zerowaĘ bit flagi Dobrym, a przede wszystkim bez-
plusa zasilania dla tej linii. INTF (INTCON REGISTER). Wszystkie piecznym sposobem realizacji bitowych
Zmiany na czterech liniach portu linie portu B sÄ… liniami zgodnymi ze operacji na portach I/O jest zdefinio-
B RB4...RB7 mogą generowaĘ przerwa- standardem TTL. wanie rejestru (RAM ułytkownika),
nia. OczywiÅ›cie, zmiany te dotyczÄ… Linie obu portÛw mogÄ… byĘ konfi- ktÛry bÍdzie ìcieniemî rejestru POR-
tylko linii ustawionych jako wejścio- gurowane jako wejściowe lub wyjścio- TA lub PORTB. Wszystkie operacje
we. Stany na tych liniach porÛwny- we. Poprzez zmianÍ bitÛw w rejestrach ustawiania bitÛw wykonuje siÍ na tym
wane sÄ… z poprzedniÄ… wartoÅ›ciÄ… wpi- TRIS moÅ‚na w trakcie wykonywania rejestrze za pomocÄ… np. rozkazÛw bcf
sanÄ… do specjalnie do tego celu prze- programu tworzyĘ linie dwukierunko- i bsf, a nastÍpnie jego zawartośĘ prze-
znaczonych przerzutnikÛw. Wpisywa- we. Zaleca siÍ w takim przypadku bar- pisuje siÍ do rejestru portu:
nie do tych przerzutnikÛw nastÍpuje dzo ostroÅ‚ne wykorzystywanie instruk-
w momencie odczytu rejestru PORTB. cji manipulujÄ…cymi bitami typu bsf C_PORTBequ 0x0c
WidaĘ wiÍc, Å‚e przerwanie jest gene- lub bcf. W trakcie ustawiania bitu li- ;rejestr  cienia
rowane w momencie wystąpienia nii wyjściowej za pomocą takiej in- LED equ 0x01
zmiany na liniach od czasu ostatnie- strukcji, wykonywana jest sekwencja: ;zmienna bitowa odp. PB1
go czytania PORTB. W obsłudze prze- - odczyt całego rejestru, np. PORTB, ;(zdef. jako wyjście)
rwania naleły odczytaĘ PORTB i wy- - wykonanie operacji bitowej,
zerowaĘ flagÍ RBIF w INTCON REGIS- - zapisanie wyniku do PORTB. ;inicjalizacja C_PORTB
TER. Aby przerwanie mogło byĘ zgło- W rejestrach wyjściowych PORTB ;- jesteśmy w banku 0
szone, naleÅ‚y teÅ‚ ustawiĘ jedynkÍ na bÍdÄ… teraz wartoÅ›ci chwilowe odczyta- movf PORTB,w
bicie maski RBIE w INTCON REGIS- ne z linii portu. W momencie zmiany ;do w zawartość PORTB
TER (rys. 5). kierunku innej linii z wejściowej na
Linia RB0/INT speÅ‚nia rolÍ wej- wyjÅ›ciowÄ…, wystawienie nie kontrolo- movwf C_PORTB
Å›cia przerwania zewnÍtrznego. Bit wanych stanÛw moÅ‚e spowodowaĘ ;do C_PORTB zawartość w
INTEDG w OPTION REGISTER okreÅ›- przekroczenie dopuszczalnego prÄ…du li-
la rodzaj zbocza, przy ktÛrym to nii i uszkodzenie ukÅ‚adu. JeÅ‚eli linie bcf C_PORTB,LED
przerwanie zostanie przyjÍte (jeÅ‚eli pozostajÄ… w trybie wejÅ›ciowym ten ;wyzerowanie bitu LED
bit maski INTE w INTCON REGISTER problem oczywiÅ›cie nie wystÍpuje.
bÍdzie jedynkÄ…). Procedura obsÅ‚ugi Teraz przedstawimy kilka przykÅ‚a- movf C_PORTB,w
;do w zawartość C_PORTB
movwf PORTB
bsf C_PORTB,LED
;ustawienie na 1 bitu LED
movf C_PORTB
movwf PORTB
Linie wejściowe mołna testowaĘ
rozkazami testowania bitÛw:
WE0 equ 0
;zmienna bitowa odp. PB0
;(zdef. jako wejście)
movf PORTA,w
;do W zawartość PORTA
btfsc w,WE0
goto et ;skok gdy PA0=1
movlw 0xff
;ta instrukcja siÄ™ wykona,
;gdy PA0=0
Tomasz Jabłoński, AVT
tomasz.jablonski@ep.com.pl
Elektronika Praktyczna 12/2001
86


Wyszukiwarka

Podobne podstrony:
Mikrokontrolery PIC w praktycznych zastosowaniach mipicp
wysokościomierz z mikrokontrolerem PIC 2
emulator mikrokontrolerów PIC do PC
Mikrokomputer Pecel z procesorem AT90S8535 cz 3
Mikrokontrolery To takie proste, cz 15 (układ licznikowy w 8052C & specjalne tryby pracy 8051)
Mikrokontrolery to takie proste cz 03
Bluetooth Å‚Ä…czy mikrokontrolery, cz 1
Warstwowy model architektury internetowej, cz IV
Warstwowy model architektury internetowej, cz I
TCP IP i mikrokontrolery, cz 1

więcej podobnych podstron