You are on page 1of 6

MIKROKONTROLER PIC16F84

MICROCONTROLLER PIC16F84

Miroslav Munić1)

Rezime: : U ovom radu obrađen je osmobitni mikrokontroler PIC16F84, objašnjena je


njegova arhitektura, princip rada i organizacija memorije sa posebnim osvrtom na
arhitekturu i organizaciju ovog mikrokontrolera. Takođe je urađen zadatak koji simulira
rad pokazivača pravca na automobilu sa detaljnim objašnjenjem programa.
Ključne reči: Mikrokontroler, PIC16F84, pokazivač pravca automobila

Abstract: In this paper has been processed the eight-bit microcontroller PIC16F84,
explained its architecture, operating principles and memory organization with a focus on
special features of the microcontroller. Also a task was made which simulates operation of
direction indicators on the car with a detailed explanation of the program.
Keywords: Microcontroller, PIC16F84, auto turn signals.

1. UVOD optimizovani u pravcu integracije kola,


upravljanja procesa u realnom vremenu, male
Mikrokontroler je jedno od najvećih cene i niske potrošnje energije, dok je kod
tehničkih dostignuća koje je obeležilo mikroprocesora akcenat stavljen na brzinu i
dvadeseti vek.Sa napredkom tehnologije rastao performanse.Znači mikrokontroleri su
je stepen integracije integrisanih kola, što je namenski uređaji koji mogu obavljati
dovelo do pojave prvih mikroprocesora i određene funkcije u granicama koje određuju
mikrokontrolera. sami resursi mikrokontrolera, dok se
Prvenstveno zbog svoje cene , mikroprocesori koriste u opsluživanju spoljnih
mikrokontroleri nalaze sve veću primenu u jedinica.
svim oblastima u izradi softverski kontrolisanih Cilj istraživanja u ovom radu je da se pokažu
uređaja i sistema. sve prednosti i mane mikrokontrolera pri
Druga velika prednost mikrokontrolera, realizovanju programa koji simulira rad
zbog koje su danas neizbežni, jeste činjenica da pokazivača pravca na automobilu kao i
se mogu programirati u višim programskim metodologija koja je korišćena za realizaciju
jezicima tipa C, Paskal, Basic.Ovo omogućava programa.
njihovo programiranje pa čak i bez znanja
asemblerskog jezika.To povećava broj ljudi koji
ih mogu programirati, pa tako postaju 2. HIPOTEZE ISTRAŽIVANJA
pristupačniji ljudima koji se elektronikom bave iz
hobija. Koristeći najpogodnije metode za
Mikrokontroler je mali računar, realizovan u realizaciju programa koji simulira rad
obliku integrisanog kola koji objedinjuje sve pokazivača pravca na automobilu možemo
potrebne komponente, kako bi mogao samostalno navesti sledeće hipoteze koje ćemo u ovom radu
da funkcioniše.Tu spadaju integrisani dokazati:
mikroprocesor, memorija, digitalni i analogni  H1: Mikrokontroler PIC16F84 je pogodan za
ulazi/izlazi, tajmeri, brojači, oscilatori i drugi realizovanje programa koji simulira rad
sklopovi (u zavisnosti od vrste i namene pokazivača pravca na automobilu.
mikrokontrolera) koji su ranije bili svaki u svom  H2:MikrokontrolerPIC16F84 je spreman da
integrisanom čipu.Mikrokontroler se programira zadovolji sve zahteve koji su
da normalno radi u beskonačnoj petlji i za to potrebni za realizovanje bilo kog
vreme očitava ulaze i podešava izlaze u pokazivača pravca na automobilu..
zavisnosti od programa koji mu je zadat.  H3: U programu je moguće realizovati
Glavna razlika između mikroprocesora i prekid u potrebnom vremenu.
mikrokontrolera je da su mikrokontroleri

1) Miroslav Munić, Univerzitet u Kragujevcu, Fakultet inženjerskih nauka


3. PIC MIKROKONTROLER 4. KARAKTERISTIKE
MIKROKONTROLERA PIC16F84
PIC mikrokontroler (Programmable Intelligent
Computer) je originalni proizvod kompanije Arhitektura je RISC tipa (Reduced Instruction
Microchip, vrlo je popularan među inženjerima i Set Computer), to znači ima malo instrukcija
elektronskim početnicima, a dolazi u puno (svega 35), ali se izvršavaju maksimalno
različitih verzija, svaka sa posebnim brzo; mikrokontroler koristi dve magistrale i to
komponentama i mogućnostima.Mnogi jedna za podatke (8-bita) a druga za instukcije (14-
elektronski projekti mogu se vrlo lako izvesti bita).
pomoću mikrokontrolera iz PIC porodice, poput
digitalnih satova, vrlo jednostavnih video igrica, 4.1 Ulazno/Izlazne karakteristike
robota, servo kontrolera i mnogih 13 ulazno-izlaznih, pojedinačno upravljanih
drugih.Njihova primena je vrlo široka, a njihove pinova gde je:
mogućnosti i varijante su nebrojene, a mogu se -maksimalna ulazna struja 25mA po pinu
nabaviti po vrlo pristupačnim cenama što ih čini -maksimalna izlazna struja 20mA po pinu
još popularnijima. Upravo zbog svoje 8-bitni tajmer/brojač sa programibilnim
raznovrsnosti, ali ponajviše zbog prilično deljenjem frekvence.
jednostavnog programiranja, PIC mikrokontroleri
imaju dosta veliku primenu u edukaciji, kako 4.2 Raspored i funkcija pinova
srednjoškolskoj tako i fakultetskoj, udigitalnoj Na sledećoj slici (Slika 1) prikazan je raspored
logici, digitalnoj elektronici, automatici i drugim pinova na mikrokontroleru a u daljem tekstu i
srodnim oblastima.Danas postoje 8, 16 i 32 bitni objašnjena njihova funkcija koju obavljaju.
modeli PIC mikrokontrolera.

Slika1. Raspored pinova na mikrokontroleru PIC16F84

4.3 Centralna procesorska jedinica 5. ORGANIZACIJA MEMORIJE


Centralna procesorska jedinica se u stručnoj
literaturi označava kao CPU.Skraćenica je nastala Memorija mikrokontrolera PIC 16F84
od početnih slova engleskih reči Centrall Procesing podeljena je u dva bloka (Slika 4): programsku i
Unit pa se odatle i usvakodnevnom govoru zove memoriju podataka.
CPU ili procesor.CPU se obično shvata kao mozak Programska memorija je veličine1024lokacija
mikrokontrolera.Taj deo je odgovoran za širine14bita.
pronalaženje i pribavljanje odgovarajuće Adresa0x00 rezervisana je za reset vektor, a
instrukcije koja se treba izvršiti, dekodiranje te lokacija 0x04 za prekidni vektor.
instrukcije i na kraju njenoizvršenje. Memorija podataka sastoji se od64osmobitnih
lokacija EEPROM (Electrically Erasable
4.4 Aritmetičko logička jedinica Programmable Read-Only Memory) memorije i
Aritmetičko logička jedinica (Arithmetic 68 lokacija RAMmemorije od adrese 0x0C do
Logic Unit - ALU) zadužena je za obavljanje 0x4F.
operacija sabiranja, oduzimanja, pomeranja (levo Može se primetiti specifična podela memorije
ili desno unutar registra) i logičkih “po širini”, čime se formiraju dva segmenta,
operacija.Pomeranje podataka unutar registra je “banke”–BANK0 i BANK1.Prvih dvanaest
poznatije i kao "šifrovanje". Naziv je nastao od lokacija u obe “banke” zauzimaju registry
engleske reči "shift" što znači "pomeriti". specijalne namene – SFR (Special
PIC16F84 sadrži 8- bitnu aritmetičko logičku Function Register).
jedinicu i 8-bitne radne registre.

218
Slika 2. Organizacija memorije

6.2 Indirektno adresiranje


6. NAČINI ADRESIRANJA Indirektno adresiranje za razliku od direktnog,
adresu ne uzima iz instrukcije već je pravi pomoću
Prilikom izvođenja programa mora se znati IRP bita STATUS registra i FSR registra.
gde se nalaze instrukcije i operandi nad kojima će
se izvoditi operacije.Načini na koje se pribavljaju
instrukcije i određeni operandi za vreme izvođenja 7. REGISTRI
instrukcijskog ciklusa nazivaju se načini
adresiranja.Lokacijama u RAM memoriji može se Registar je RAM memorijska lokacija unutar
pristupati direktno ili indirektno. mikrokontrolera u koju se može upisivati, sa koje
se može čitati, ili obavljati obe ove funkcije.
6.1 Direktno adresiranje
Direktno adresiranje ide preko 9-bitne adrese 7.1 Registri sa specijalnim funkcijama
koja se dobija povezivanjem 7-og bita direktne Deo RAM memorije odvojen je za ove
adrese iz instrukcije i dva bita (RP1,RP0) iz registre koji služe za kontrolu rada. Pošto u
registra STATUS. instrukcijama za rad sa RAM-om ima sedam
bitova za adresiranje lokacije, to znači da
možemo da adresiramo 128 lokacija RAM-a, od
00h do 7Fh (od 0 do 127). Međutim, kao što smo

219
prethodno videli, jedan deo registara nalazi se fizički registar,već samo"kanal"pomoću koga se
iznad tih adresa, pa je pitanje kako njih adresirati. vrši indirektno adresiranje RAM lokacija ili
Za to su zadužena dva bita u STATUS registru matematičkog registra.
(to su bitovi 5 i 6) koji čine bitove 7 i 8 adrese, TMR0- Slobodni brojač - Ovo je brojač koji
čime dobijamo mogućnost da adresiramo čak 512 može da broji ili spoljne impulse koji dolaze sa
lokacija. Pošto nam je dovoljno 8 bitova (0-7), oscilatora
nećemo morati da koristimo bit 8; on je ostavljen PCL i PCLATH - Program counter (PC)-
od strane proizvođača za eventualna proširenja i Programski brojač je registar koji čuva
ne preporučuje se njegovo korišćenje.Znači, kada adresusledeće instrukcije koja treba da se izvrši.
pristupamo lokacijama od 80h, potrebno je STATUS -Sve bitove ovog registra,sem
jednom instrukcijom setovati bit 5 (zove se bitova 3 i 4, možemo direktno da menjamo,mada
RP0), u suprotnom ga treba resetovati. ostaje pitanje ima li smisla menjati bitove koji
pokazuju stanje ALU jedinice.
7.2 Upis registara sa specijalnim funkcijama OPTION -Ovo je upravljački registar.Evo
Na adresi 00 nalazi se registar sa imenom opisa pojedinačnih bitova:
INDF; to nije fizički registar već se koristi za FSR -U ovaj registar se smešta adresa
indirektno adresiranje u sprezi sa registrom SFR RAM lokacije kojoj hoćemo da pristupimo
za indirektno adresiranje. indirektnim adresiranjem.
01 - TMR0 (slobodni brojač), 8-bitni brojač (sat) PORTA i PORTB – PORTA je petobitni,
realnog vremena a PORTB je osmobitni registar i oni predstavljaju,
02- PCL, nižih 8 bitova programskog brojača faktički, put do samih pinova.Upisom u ove
PCLATH + PCL = PC registre menjamo stanja na pinovima tih portova.
3 - STATUS, sadrži bitove koji označavaju TRISA i TRISB -Stanja bitova ovih
stanje aritmetičko-logičke jedinice (ALU), registara određuju da li će određeni pin na portu
RESET status, i bitove za adresiranje viših biti ulazni ili izlazni. Postavljanje određenog
lokacija RAM-a. bita na 1 definiše odgovarajući bit kao ulazni, a
4 - FSR, pointer za indirektno adresiranje RAM postavljanje na 0 definiše odgovarajući bit kao
memorije izlazni.Prilikom reseta svi pinovi su postavljeni
5 - PORTA, to su, u stvari, pinovi porta A kao ulazni (svi bitovi su na log. 1).
6 - PORTB, pinovi porta B EEDATA -Pri upisu uEEPROM,u ovaj
7 - ne koristi se registar se ubacuje podatak koji želimo da
8 - EEDATA, registar podataka za EEPROM programiramo, a pri čitanju, u ovom registru se
09 - EEADR, registar adrese za EEPROM nalazi sadržaj pročitane adrese EEPROM-a.
0A - PCLATH, viših 5 bitova programskog EEADR -U ovaj registar se upisuje adresa sa
brojača PCLATH + PCL = PC 0B - koje želimo da čitamo ili u koju upisujemo u
INTCON, registar za kontrolu interapta EEPROM.
80 - INDF, isto kao 00 EECON1 -Ovaj registar se koristi pri upisu i
81 - OPTION, upravljački registar za preskaler, čitanju EEPROM-a
spoljni interapt, TMR0 i pull- up otpornike na INTCON -Ovaj registar upravlja
portu B interaptima(o njima će biti reči nešto kasnije) i
82 - PCL, kao 02 svakom bitu može programski da se promeni ili
83 - STATUS, kao 03 očita njegovo stanje.
84 - FSR, kao 04
85 - TRISA, registar za definisanje smera 7.4 Konfiguracioni registar
(ulaz ili izlaz) pinova na portu A Ovaj registar se nalazi u programskoj
86 - TRISB, registar za definisanje smera memoriji na adresi 2007h, ali mu se ne može
pinova na portu B pristupiti u toku izvršavanja programa jer se
87 - ne koristi se nalazi u posebnom memorijskom bloku za test i
88 - EECON1, upravljački registar za rad konfigurisanje
sa EEPROM-om
88 - EECON2, drugi upravljački registar (nije
fizički registar)
8. OSCILATORI
8A - PCLATH, kao 0A
8B - INTCON, kao 0B
Oscilator je električno kolo koje stvara izlazni
7.3 Detaljan opis registara sa specijalnim signal određene frekvencije. Kod PIC16F84 mogu
funkcijama da se upotrebe 4 vrste oscilatora i to:
INDF -Ovaj registar,kako je već rečeno,i nije

220
 LP (Low Power) predstavlja kristalni oscilator 10. PREKIDI (INTERAPTI)
sa frekvencom do 200 kHz i u ovom
režimu mikrokontroler ima najmanju Interapt (prekid) je situacija kada zbog
potrošnju (u odnosu na ostale vrste oscilatora). određenih uslova program prekida da izvršava
 XT se koristi za oscilator sa redovan program i počinje da izvršava interapt
kristalom/keramičkim rezonatorom i to od 100 program, a po njegovom završetku vraća se tamo
kHz do 4 MHz za kristal ili 455 kHz do 4 gde je prekinut.
MHz za keramički rezonator. za HS (High Te uslove smo već napomenuli, a to su:
Speed) važi sve kao i za XT, ali se koristi za 1. spoljni interapt sa RB0/INT pina,
frekvence preko 4 MHz. 2. prekoračenje brojača TMR0,
 RC je varijanta oscilatora kada nam nije 3. promena stanja na pinovima RB4 do RB7
potreban precizan takt i potrebni su nam samo 4. završetak upisa u interni EEPROM.
jedan otpornik i jedan kondenzator. U ovom
slučaju, na OSC2 pinu pojavljuje se 1/4
frekvence oscilatora. Moguće je koristiti i 11. SET INSTRUKCIJA
spoljni oscilator, u kom slučaju se PIC
konfiguriše za LP, XT ili HS režim, a Ovaj mikrokontroler ima samo 35 naredbi
frekvenca se dovodi na OSC1 pin. (instrukcija) širine 14 bitova, što može da bude
prednost, ali i mana.Prednost zato što je lako
zapamtiti mali broj naredbi, a mana zato što ne
9. RESET postoji dovoljan komfor u radu sa tako malo
naredbi. S druge strane, svaka naredba zauzima
Kod PIC16F84 postoji nekoliko vrsta reseta: samo jednu memorijsku lokaciju i izvršava se u
Reset pri uključenju (POR – Power-on jednom ciklusu (koji traje 4 takta oscilatora), sem
Reset). Unutar mikrokontrolera nalazi se malo onih koji menjaju sadržaj PC registra (skokovi,
električno kolo koje detektuje porast napona pozivi potprograma, povratak iz potprograma) koji
napajanja do napona dovoljnog za rad se izvršavaju za dva ciklusa.
mikrokontrolera. U trenutku dostizanja
nominalnog napona, mikrokontroler se
resetuje.Ovim se sprečava rad 12. ZADATAK
mikrokontrolera pri preniskom naponu napajanja.
Kod prva četiri reseta PC (program 12.1 Postavka zadatka
counter) će sadržati adresu 0, što znači da će  Realizovati simulator žmigavaca za
program početi da se izvršava od početka, od prve automobil. Učestanost žmigavaca je 90/min.
lokacije programske memorije, dok će kod Zadatak realizovati pomoću mikrokontrolera
WDT buđenja za vreme SLEEP naredbe PIC16F84 na asembleru. Ukoliko je sijalica
program da nastavi izvršenjem sledeće naredbe. neispravna učestanost oscilovanja je 120/min
U većini slučajeva će za reset pri  PORTB.0 Levo prednje svetlo
uključenju biti dovoljno da se nožica inv.MCLR
 PORTB.1 Simulacija neispravnosti levog
veže za plus napona napajanja, jer se posebne
prednjeg svetla
funkcije (POR, PWRT, OST) brinu za
 PORTB.2 Levo zadnje svetlo
pravilnu i sigurnu inicijalizaciju mikrokontrolera
i to kod LP, XT ili HSoscilatora, dok se kod  PORTB.3 Simulacija neispravnosti levog
RC može koristiti samo PWRT. zadnjeg svetla
Problem može nastati i kada napon padne  PORTB.4 Desno prednje svetlo
ispod dozvoljene tolerancije, a ne padne na nulu,  PORTB.5 Simulacija neispravnosti desnog
pa se vrati na normalnu vrednost, jer u tom prednjeg svetla
slučaju mikrokontroler nema potreban napon za  PORTB.6 Desno zadnje svetlo
normalan rad određeno vreme i može da se desi  PORTB.7 Simulacija neispravnosti desnog
da PC (program counter) uzme neku prozvoljnu zadnjeg svetla
vrednost i da program "zaluta" i ne radi onako  PORTA.0 Uključenje levog pokazivača
kako je zamišljeno.  PORTA.1 Uključenje desnog pokazivača
Tasituacija se zove brown-out i u tom slučaju  PORTA.2 Uključenje četiri žmigavca
potrebno je resetovati mikrokontroler.  PORTA.4 Signalizacija na instrument
Napon pri kojem se vrši reset jednak je tabli.
naponu zener diode uvećanom za 0,7V (zbog
pada napona na tranzistoru).

221
12.2 Rešenje zadatka napravljen prekid od 0.01 sekundu i onda je
;programi za kašnjenje taj prekid pozivan dovoljan broj puta.
kasnjenje1 13. ZAKLJUČAK
clrfbrojac1 ;postavljanje brojača1 na 0 brojanje1
;potprogram koji vrši brojanje od Danas ne postoji više nijedan savremeniji
0 do 32 aparat u kojem mikrokontroleri ne vrše neku
movf brojac1,0 funkciju.Zahvaljujući njihovoj kompaktnoj i
sublw 0x20 ; oduzimanje W od univerzalnoj strukturi idealni su za manje ili više
konstante 32 btfsc STATUS,0 inteligentne upravljačke funkcije u
goto brojanje1 svakodnevici.Od njihovog nastanka
return mikrokontroleri sve više preuzimaju logičke
kasnjenje2 zadatke u upravljačkoj tehnici.Posebna
clrf brojac2 ;postavljanje brojača2 na 0 karakteristika ovih kontrolera je to što mogu da
brojanje2 ;potprogram koji vrši brojanje 0 funkcionišu i bez dodatnih periferijskih
do 24 elemenata. Kod njih je na jednom čipu integrisano
movf brojac2,0 sve: od memorije, preko centralne procesorske
sublw 0x18 ; oduzimanje W od jedinice do ulazno/izlaznih portova, a njihova
konstante 24 prednost leži u tome što su male, jednostavne,
btfsc STATUS,0 lake za programiranje i vrlo povoljne cene.
goto brojanje2
return
prekid ; interapt ide od 216 do 255 => 39 LITERATURA
puta i pravi 0.01 sekundu.
[1] Dragan Andrić, Nebojša Matić - PIC
12.3Prekid (Interapt) u zadatku mikrokontroleri, Agencija APC, Beograd
Za određivanje koliko će 2000.
interapt trajati koristimo sledeću jednačinu: [2] Stojan Trifunović - Uputstvo za rukovanje
K * T * 1μ S PIC16F84, Sokobanja 2008.
U mom slučaju najlakše je bilo uzeti 10 ms, [3] Jelena Bubalo, Radoslav Ilić, Vidojko
pa je: Veljković - Programiranje PIC
K * T * 1μ S = 10ms mikrokontrolera PIC16F84, Inter HIT,
K = 256 uzimamo iz tabele TMR0 za interne Beograd 2001.
impulse 00000111 = 256 [4] Microchip Technology Inc, PIC16F8X
Dobijamo sledeću jednačinu: Datasheet, http://www.microchip.com/
[5] http://www.automatika.rs/
[6] mr Aca Đokić – Robotika i mehatronika
255-39=216 http://www.sites.google.com/site/robotickragu
216 = D8 jevac03 4/home
Time dobijamo da nam TMR0 kreće od [7]http://sinel.freehostia.com/pic/pic_kontroleri.ht
D8 (216)- dobijamo impuls interapta od 0.01s m [8]http://www.ke4nyv.com
Brojanje se vrši tako što se brojači inkremetiraju
na svakih 0.01s potreban broj puta.

12.4 Diskusija dobijenog rezultata


Na osnovu karakteristika
mikrokontroleraPIC16F84 može se videti da je
pogodan za realizaciju programa koji simulira rad
pokazivača na automobilu. Sa slike (Slika 3.) se
vidi da ima dovoljan broj izlaza 13 (baš onoliko
koliko je potrebno za realizaciju bilo kog
pokazivača pravca na automobilu). Ovaj
mikrokontroler je ispunio i sve tehničke zahteve
kao što su veoma mala potrošnja struje, veoma
visok nivo preciznosti, dovoljno programske
memorije za program koji će izvršavati linije koda
u realizaciji signala itd.
Prekid koji je bio potreban je 0.25 i 0.33
sekunde, prekid je realizovan tako što je

222

You might also like