Professional Documents
Culture Documents
MICROCONTROLLER PIC16F84
Miroslav Munić1)
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.
218
Slika 2. Organizacija memorije
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.
222