38
Završni rad Programiranje PIC mikrokontrolera i njihova primena 1 __Универзитет у Нишу__ Машински факултет Оштрељановић Ј. Мирослав Завршни рад Ниш,2012

94_Zavrsni rad.pdf

Embed Size (px)

Citation preview

Page 1: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

1

__Универзитет у Нишу__Машински факултет

Оштрељановић Ј. Мирослав

Завршни рад

Ниш,2012

Page 2: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

2

__Универзитет у Нишу__Машински факултет

Програмирање PIC микроконтролераи њихова примена

- ЗАВРШНИ РАД -Основне академске студије

Кандидат: Предметни наставник:

Оштрељановић Мирослав 94 Жарко Ћојбашић ванр.проф

Ниш,2012

Završni rad Programiranje PIC mikrokontrolera i njihova primena

2

__Универзитет у Нишу__Машински факултет

Програмирање PIC микроконтролераи њихова примена

- ЗАВРШНИ РАД -Основне академске студије

Кандидат: Предметни наставник:

Оштрељановић Мирослав 94 Жарко Ћојбашић ванр.проф

Ниш,2012

Završni rad Programiranje PIC mikrokontrolera i njihova primena

2

__Универзитет у Нишу__Машински факултет

Програмирање PIC микроконтролераи њихова примена

- ЗАВРШНИ РАД -Основне академске студије

Кандидат: Предметни наставник:

Оштрељановић Мирослав 94 Жарко Ћојбашић ванр.проф

Ниш,2012

Page 3: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

3

Programiranje PIC mikrokontrolera i njihova primena

Rezime: Završni rad ima za predmet postupak programiranja PICmikrokontrolera i njihovu primenu u elektronskim kolima. Razvoj tehnologijeizrade integrisanih kola omogucio je smestanje više stotina hiljada tranzistora ujedno kućište. To je bio preduslov za proizvodnju mikroprocesora. Prvi računarifunkcionisali su dodavanjem spoljnih periferija kao što su memorija, ulazno /izlazne linije, tajmeri i drugih procesorskoj jedinici . Dalje povećanje gustinepakovanja rezultiralo je stvaranjem integrisanog kola koja sadrži oba, i procesori periferije. Tako je prvi čip koji sadrži mikroračunar, kasnije poznat kaomikrokontroler, razvijen.

Ključne reči: mikrokontroler, mikroprocesor, integrisano kolo, logičko kolo,oscilator

Sadržaj1.Uvod: ............................................................................................................... 42. Razlika između mikroprocesora i mikrokontrolera .......................................... 43. Sastav mikrokontrolera ................................................................................... 5

3.1 Logička kola .............................................................................................. 53.2 Registri ...................................................................................................... 83.3 Ulazno / Izlazne linije ................................................................................ 93.4 Memorijska jedinica................................................................................. 103.5 Centralna procesorska jedinica ............................................................... 123.6 Bus.......................................................................................................... 123.7 Serijska komunikacija.............................................................................. 133.8 Baud Rate (brzina prenosa) .................................................................... 133.9 Oscilator .................................................................................................. 143.0.4 Instrukcije ............................................................................................. 21

4.0 Pisanje programa za mikrokontrolere ........................................................ 214.1 Korišćenje registara .................................................................................... 234.2 Metode pisanja koda................................................................................... 25

4.3 Konfigurisanje izlaza ............................................................................... 274.4 Prazne petlje ........................................................................................... 294.5 MPLAB Asembler.................................................................................... 324.6 Ubacivanje programa u kontroler ............................................................ 36

5.0 Zaključak .................................................................................................... 376.0 Literatura .................................................................................................... 377.0 Biografija..................................................................................................... 38

Page 4: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

4

1.Uvod:

Godine 1969, tim japanskih inženjera iz BUSICOM-a došao je u SAD sazahtevom da se dizajniraju nekoliko integrisanih kola za kalkulatore u skladu sanjihovim projektima. Zahtev je upućen Intel-u, i Markijan Hoff je bio zadužen zaprojekat. Imajući iskustvo u radu sa računarom, PDP8, on je došao na ideju dapredloži fundamentalno drugačija rešenja umesto njihovog dizajna. Njegovorešenje odnosilo se na to da funkcija kola bude određena programom koji senalazi u samom kolu. To je značilo da će konfiguracija biti jednostavnija, ali to bizahtevalo mnogo više memorije nego što je predloženo projektom od stranejapanskih inženjera. Posle nekog vremena, iako su japanski inženjeri pokušavalida nađu lakši rešenje, Markijanova ideja je pobedila i prvi mikroprocesor jerođen. Glavnu podršku pretakanja ideje u finalni proizvod dao je FederikoFaggin. Devet meseci nakon što ga su ga angažovali, Intel je uspeo da razvijefinalni proizvod iz svog originalnog koncepta. 1971. godine Intel je stekao pravoda proda ovao integrisano kolo. Pre toga Intel je kupio licencu od BUSICOM-akoji nisu imali pojma kakvo blago poseduju. Tokom te godine, mikroprocesornazvan 4004 pojavio se na tržištu. To je bilo prvi 4 - bitni mikroprocesor, koji radibrzinom od 6000 operacija u sekundi. Nedugo posle toga, američka firma CTCzahteva od Intel-a i Teksas Instruments proizvodnju 8-bitnog mikroprocesorakoji se primenjuje u terminalima. Iako je CTC odustao od ovog projekta, Intel iTekas Instruments su i dalje radili na mikroprocesoru i u aprilu 1972 prvi 8-bitnimikroprocesor nazvan 8008 pojavio se na tržištu.Mikroprocesor 8008 imao je16KB memorije, 45 instrukcija i brzinu 300.000 operacija u sekundi. Tajmikroprocesor je preteča svih današnjih mikroprocesora. Intel nastavlja da garazvija i u aprilu 1974 je pokrenuo 8-bitni procesor pod nazivom 8080. On jemogao adresirati 64Kb memorije, imao je 75 instrukcija i inicijalna cena mu jebila 360$.

2. Razlika između mikroprocesora i mikrokontrolera

Mikrokontroler se razlikuje od mikroprocesora na mnogo načina. Prva inajvažnija razlika je njegova funkcionalnost. Da bi mikroprocesor mogao da sekoristi, druge komponente kao što su memorija moraju da se dodaju na njega.Iako se smatra da su mikroprocesori moćne računarske mašine, njihova slabatačka je da oni nisu prilagođeni da komuniciraju sa perifernom opremom.Jednostavno, kako bi komunicirao sa perifernim okruženjem, mikroprocesormora da koristi specijalna kola koja se dodaju kao spoljni čipovi. U kratkimcrtama mikroprocesori su čisto srce računara . Tako je bilo u početku , a ostaje idanas.

Page 5: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

5

Sa druge strane,mikrokontroler je dizajniran da bude sve to u jednom.Nisu potrebne druge specijalizovane eksterne komponente za njegovu primenu, jer su sva neophodna kola koja inače pripadaju periferijama već ugrađene unjega. To štedi vreme i prostor potreban za dizajn uređaja .

3. Sastav mikrokontrolera

3.1 Logička kola

Rad ovih elemenata se zasniva na principima utvrđenim od stranebritanskog matematičara Džordža Boola sredinom 19. Veka. Ukratko,osnovnaideja je bila da se izrazi logička forma kroz niz algebarskih funkcija. Takvorazmišljanje je ubrzo pretvoreno u praktičan proizvod koji se mnogo kasnijerazvio u nešto što mi danas nazivamo I , ILI i NE logička kola . Princip njihovograda je poznat kao Bulova algebra.

I logičko kolo

Logička kapija "I" ima dva ili više ulaza i jedan izlaz . Pretpostavimo dakapija koristi u ovom slučaju samo dva ulaza. Logička jedinica (1) će se pojavitina njegovom izlazu samo u slučaju da su oba ulaza (I) upravljani logičkomjedinicom (1).Sledeća tabela pokazuje međusobnu zavisnost između ulaza iizlaza .

Završni rad Programiranje PIC mikrokontrolera i njihova primena

5

Sa druge strane,mikrokontroler je dizajniran da bude sve to u jednom.Nisu potrebne druge specijalizovane eksterne komponente za njegovu primenu, jer su sva neophodna kola koja inače pripadaju periferijama već ugrađene unjega. To štedi vreme i prostor potreban za dizajn uređaja .

3. Sastav mikrokontrolera

3.1 Logička kola

Rad ovih elemenata se zasniva na principima utvrđenim od stranebritanskog matematičara Džordža Boola sredinom 19. Veka. Ukratko,osnovnaideja je bila da se izrazi logička forma kroz niz algebarskih funkcija. Takvorazmišljanje je ubrzo pretvoreno u praktičan proizvod koji se mnogo kasnijerazvio u nešto što mi danas nazivamo I , ILI i NE logička kola . Princip njihovograda je poznat kao Bulova algebra.

I logičko kolo

Logička kapija "I" ima dva ili više ulaza i jedan izlaz . Pretpostavimo dakapija koristi u ovom slučaju samo dva ulaza. Logička jedinica (1) će se pojavitina njegovom izlazu samo u slučaju da su oba ulaza (I) upravljani logičkomjedinicom (1).Sledeća tabela pokazuje međusobnu zavisnost između ulaza iizlaza .

Završni rad Programiranje PIC mikrokontrolera i njihova primena

5

Sa druge strane,mikrokontroler je dizajniran da bude sve to u jednom.Nisu potrebne druge specijalizovane eksterne komponente za njegovu primenu, jer su sva neophodna kola koja inače pripadaju periferijama već ugrađene unjega. To štedi vreme i prostor potreban za dizajn uređaja .

3. Sastav mikrokontrolera

3.1 Logička kola

Rad ovih elemenata se zasniva na principima utvrđenim od stranebritanskog matematičara Džordža Boola sredinom 19. Veka. Ukratko,osnovnaideja je bila da se izrazi logička forma kroz niz algebarskih funkcija. Takvorazmišljanje je ubrzo pretvoreno u praktičan proizvod koji se mnogo kasnijerazvio u nešto što mi danas nazivamo I , ILI i NE logička kola . Princip njihovograda je poznat kao Bulova algebra.

I logičko kolo

Logička kapija "I" ima dva ili više ulaza i jedan izlaz . Pretpostavimo dakapija koristi u ovom slučaju samo dva ulaza. Logička jedinica (1) će se pojavitina njegovom izlazu samo u slučaju da su oba ulaza (I) upravljani logičkomjedinicom (1).Sledeća tabela pokazuje međusobnu zavisnost između ulaza iizlaza .

Page 6: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

6

Kada kapija ima više od dva ulaza,princip rada je isti:logička jedinica (1) će sepojaviti na njegovom izlazu samo su svi ulazi upravljani logičkom jedinicom (1).Bilo koja druga kombinacija ulaznih napona će kao proizvod imati logičku nulu(0) na svom izlazu, što je prikazano sledećom tabelom:

ILI logičko kolo

Slično prethodnom slučaju , ILI kapije takođe imaju dva ili više ulaza ijedan izlaz . Logika jedinica (1) će se pojaviti na njegovom izlazu ako je bilo kojiulaz (B) upravljan logičkom jedinicom (1). Ako su svi ulazi su na logičkoj nuli(0), izlaz će biti logička nula (0).

U programu , logička ILI operacija se izvodi između pripadajućih registarakao i logička I operacija.

Završni rad Programiranje PIC mikrokontrolera i njihova primena

6

Kada kapija ima više od dva ulaza,princip rada je isti:logička jedinica (1) će sepojaviti na njegovom izlazu samo su svi ulazi upravljani logičkom jedinicom (1).Bilo koja druga kombinacija ulaznih napona će kao proizvod imati logičku nulu(0) na svom izlazu, što je prikazano sledećom tabelom:

ILI logičko kolo

Slično prethodnom slučaju , ILI kapije takođe imaju dva ili više ulaza ijedan izlaz . Logika jedinica (1) će se pojaviti na njegovom izlazu ako je bilo kojiulaz (B) upravljan logičkom jedinicom (1). Ako su svi ulazi su na logičkoj nuli(0), izlaz će biti logička nula (0).

U programu , logička ILI operacija se izvodi između pripadajućih registarakao i logička I operacija.

Završni rad Programiranje PIC mikrokontrolera i njihova primena

6

Kada kapija ima više od dva ulaza,princip rada je isti:logička jedinica (1) će sepojaviti na njegovom izlazu samo su svi ulazi upravljani logičkom jedinicom (1).Bilo koja druga kombinacija ulaznih napona će kao proizvod imati logičku nulu(0) na svom izlazu, što je prikazano sledećom tabelom:

ILI logičko kolo

Slično prethodnom slučaju , ILI kapije takođe imaju dva ili više ulaza ijedan izlaz . Logika jedinica (1) će se pojaviti na njegovom izlazu ako je bilo kojiulaz (B) upravljan logičkom jedinicom (1). Ako su svi ulazi su na logičkoj nuli(0), izlaz će biti logička nula (0).

U programu , logička ILI operacija se izvodi između pripadajućih registarakao i logička I operacija.

Page 7: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

7

NE logičko kolo

Ova logička kapija ima samo jedan ulaz i samo jedan izlaz. Ona radi naizuzetno jednostavan način. Kada je logička nula (0) na njegovom ulazu,logičkajedinica (1) se pojavljuje na njegovom izlazu i obrnuto. To znači da ova kapijainvertuje signal po sebi.Ponekad se zove i invertor .

Završni rad Programiranje PIC mikrokontrolera i njihova primena

7

NE logičko kolo

Ova logička kapija ima samo jedan ulaz i samo jedan izlaz. Ona radi naizuzetno jednostavan način. Kada je logička nula (0) na njegovom ulazu,logičkajedinica (1) se pojavljuje na njegovom izlazu i obrnuto. To znači da ova kapijainvertuje signal po sebi.Ponekad se zove i invertor .

Završni rad Programiranje PIC mikrokontrolera i njihova primena

7

NE logičko kolo

Ova logička kapija ima samo jedan ulaz i samo jedan izlaz. Ona radi naizuzetno jednostavan način. Kada je logička nula (0) na njegovom ulazu,logičkajedinica (1) se pojavljuje na njegovom izlazu i obrnuto. To znači da ova kapijainvertuje signal po sebi.Ponekad se zove i invertor .

Page 8: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

8

3.2 Registri

Registar ili memorijska ćelija je elektronski sklop koji može da zapamti stanjejednog bajta .

Registri specijalne funkcije

Pored registara koji nemaju nikakvu posebnu funkciju, svakimikrokontroler ima niz registara čija funkcija je predodređena od straneproizvođača. Njihovi bitovi su povezani ( bukvalno) na unutrašnja kola , kao štosu tajmeri , A / D konvertor, oscilator i drugi, što znači da direktno komandujurad mikrokontrolera.

Page 9: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

9

3.3 Ulazno / Izlazne linije

Da bi mikrokontroler bio koristan, on mora da bude povezan sa dodatnimelektronskim kolima, odnosno periferijama . Svaki mikrokontroler ima jedan iliviše registara ( zove se "port" ) povezan sa pinovima mikrokontrolera . Zaštoulaz / izlaz ? Zato što možete da promenite funkciju za svaki kako želite. Naprimer, pretpostavimo da želite da vaš uređaj uključi tri LED diode i istovremenoprati stanje pet senzora ili tastera. Neki od portova treba da bude takokonfigurisani da postoje tri izlaza ( povezanih sa LED diodama) i pet ulaza (povezanih sa senzorima) . To se jednostavno vrši pomoću softvera, što znači dase funkcija pina može menjati tokom rada.

Jedna od važnijih specifikacija ulazno / izlaznih ( I /O) pinova jemaksimalna struja koju mogu da podnesu . Za većinu mikrokontrolera, strujadobijena iz jednog pina je dovoljan za aktiviranje LED diode (10-20 mA ).Ukoliko mikrokontroler ima mnogo I/O pinova, onda je maksimalna struja jednogpina je . Jednostavno rečeno, ne možete očekivati da će svi pinovi da dajumaksimum struje ukoliko ima više od 80 njih na jednom mikrokontroleru.Drugimrečima, maksimalna struja mikrokontrolera deli se na broj pinova.

Još jedna važna funkcija pina je da može da ima pull-up otpornik . Ovimotpornicima mogu se povezati pinovi sa pozitivnim naponom napajanja i njihovefekat je vidljiv kada se pin konfiguriše kao ulaz povezan sa mehaničkimprekidačem ili pritiskom na dugme . Novije verzije mikrokontrolera imaju pull-upotpornike konfigurabilne preko softvera .

Page 10: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

10

Obično, svaki I / O port je pod kontrolom drugog SFR , što znači da svakibit tog registra utvrđuje stanje odgovarajućeg pina mikrokontrolera. Na primer,unosom logičke jedinice (1) na jedan bit tog kontrolnog registra SFR,odgovarajući pin automatski se konfiguriše kao ulaz . To znači da napondoveden do tog pina može se čitati kao logička 0 ili 1. Inače , po unosu nula naSFR ,odgovarajući pin konfigurisan je kao izlaz .Njegov napon ( 0V ili 5V )odgovara stanju odgovarajućeg bita port-a registra.

3.4 Memorijska jedinica

Memorija je deo mikrokontrolera koji se koristi za skladištenje podataka.Najlakši način da se objasni jeste da se uporedi sa ormarićem sa mnogo ladica .Pretpostavimo, fioke su jasno označene , tako da je lako da pristupite nekoj odnjih. Lako je da se sazna sadržaj fioke čitajući natpis na njoj.

Svaka memorijska adresa odgovara jednoj memorijskoj lokaciji. Sadržajbilo koje lokacije postaje poznat njenim adresiranjem. Memorija može da seupisuje ili čita . Postoji nekoliko tipova memorije unutar mikrokontrolera.

ROM memorija

ROM (Read Onli Memori) koristi se za trajno čuvanje programa koji seizvršava. Veličina programa koji može biti napisan zavisi od veličine ovememorije. Današnji mikrokontroleri najčešće koriste 16-bitno adresiranje, štoznači da su u stanju da obrade do 64 KB memorije, odnosno 65535lokacija.Postoji nekoliko vrsta ROM.

Maskirani ROM. Mikrokontroleri koji sadrže ovaj ROM su rezervisani za velikeproizvođače. Program se učitava u čip od strane proizvođača. U slučaju velikeproizvodnje, cena je veoma niska.

Završni rad Programiranje PIC mikrokontrolera i njihova primena

10

Obično, svaki I / O port je pod kontrolom drugog SFR , što znači da svakibit tog registra utvrđuje stanje odgovarajućeg pina mikrokontrolera. Na primer,unosom logičke jedinice (1) na jedan bit tog kontrolnog registra SFR,odgovarajući pin automatski se konfiguriše kao ulaz . To znači da napondoveden do tog pina može se čitati kao logička 0 ili 1. Inače , po unosu nula naSFR ,odgovarajući pin konfigurisan je kao izlaz .Njegov napon ( 0V ili 5V )odgovara stanju odgovarajućeg bita port-a registra.

3.4 Memorijska jedinica

Memorija je deo mikrokontrolera koji se koristi za skladištenje podataka.Najlakši način da se objasni jeste da se uporedi sa ormarićem sa mnogo ladica .Pretpostavimo, fioke su jasno označene , tako da je lako da pristupite nekoj odnjih. Lako je da se sazna sadržaj fioke čitajući natpis na njoj.

Svaka memorijska adresa odgovara jednoj memorijskoj lokaciji. Sadržajbilo koje lokacije postaje poznat njenim adresiranjem. Memorija može da seupisuje ili čita . Postoji nekoliko tipova memorije unutar mikrokontrolera.

ROM memorija

ROM (Read Onli Memori) koristi se za trajno čuvanje programa koji seizvršava. Veličina programa koji može biti napisan zavisi od veličine ovememorije. Današnji mikrokontroleri najčešće koriste 16-bitno adresiranje, štoznači da su u stanju da obrade do 64 KB memorije, odnosno 65535lokacija.Postoji nekoliko vrsta ROM.

Maskirani ROM. Mikrokontroleri koji sadrže ovaj ROM su rezervisani za velikeproizvođače. Program se učitava u čip od strane proizvođača. U slučaju velikeproizvodnje, cena je veoma niska.

Završni rad Programiranje PIC mikrokontrolera i njihova primena

10

Obično, svaki I / O port je pod kontrolom drugog SFR , što znači da svakibit tog registra utvrđuje stanje odgovarajućeg pina mikrokontrolera. Na primer,unosom logičke jedinice (1) na jedan bit tog kontrolnog registra SFR,odgovarajući pin automatski se konfiguriše kao ulaz . To znači da napondoveden do tog pina može se čitati kao logička 0 ili 1. Inače , po unosu nula naSFR ,odgovarajući pin konfigurisan je kao izlaz .Njegov napon ( 0V ili 5V )odgovara stanju odgovarajućeg bita port-a registra.

3.4 Memorijska jedinica

Memorija je deo mikrokontrolera koji se koristi za skladištenje podataka.Najlakši način da se objasni jeste da se uporedi sa ormarićem sa mnogo ladica .Pretpostavimo, fioke su jasno označene , tako da je lako da pristupite nekoj odnjih. Lako je da se sazna sadržaj fioke čitajući natpis na njoj.

Svaka memorijska adresa odgovara jednoj memorijskoj lokaciji. Sadržajbilo koje lokacije postaje poznat njenim adresiranjem. Memorija može da seupisuje ili čita . Postoji nekoliko tipova memorije unutar mikrokontrolera.

ROM memorija

ROM (Read Onli Memori) koristi se za trajno čuvanje programa koji seizvršava. Veličina programa koji može biti napisan zavisi od veličine ovememorije. Današnji mikrokontroleri najčešće koriste 16-bitno adresiranje, štoznači da su u stanju da obrade do 64 KB memorije, odnosno 65535lokacija.Postoji nekoliko vrsta ROM.

Maskirani ROM. Mikrokontroleri koji sadrže ovaj ROM su rezervisani za velikeproizvođače. Program se učitava u čip od strane proizvođača. U slučaju velikeproizvodnje, cena je veoma niska.

Page 11: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

11

Jedanput Programabilni ROM (OTP ROM). Ukoliko mikrokontroler sadrži ovumemoriju, možete upisati program u ovu memoriju, ali proces upisivanjaprograma je "karta u jednom pravcu", što znači da može da se uradi samojednom. Ako je greška otkrivena nakon upisivanja, jedino što možete da uraditeje da upišete ispravljen program na drugi čip.

UV izbrisiva programabilna ROM (UV EPROM).Proizvodni proces ikarakteristike ovoe memorije su potpuno identične kao i kod OTP ROMmemorije. Međutim, paket ovog mikrokontrolera ima prepoznatljiv "prozor" nagornjoj strani. On omogućava da površina unutrašnjosti silikonskog čipa bedeosvetljena UV lampom, koja efikasno briše i program iz ROM-a.Instalacija ovogprozora je veoma komplikovana, što obično utiče na cenu.

Flash memorija. Ovaj tip memorije je izmišljen 80-ih godina u laboratorijamaINTEL-a i bio predstavljen kao naslednik UV EPROM memorije. Pošto sadržajove memorije može biti upisivan i brisan praktično neograničen broj puta to sumikrokontroleri sa FLASH memorijom idealni za učenje, eksperimentisanje imale proizvodnje. Zbog svoje popularnosti, većina mikrokontrolera se proizvodeu flash verzijama danas.

Random Access Memori (RAM). Kada je napajanje isključeno sadržaj RAM(Random Access Memori) je obrisan. Koristi se za privremeno čuvanje podatakai poluproizvoda rezultata i koristi se tokom rada mikrokontrolera. Na primer, akoprogram obavlja operaciju sabiranja, neophodno je da imate registar kojipredstavljaono što se u svakodnevnom životu nazivamo "suma". U tom cilju, jedan odregistara u RAM memoriji se zove "zbir" i koristi se za čuvanje rezultataoperacije sabiranja.

Električno izbrisiva programabilna ROM memorija (EEPROM). SadržajEEPROM memorije se može menjati u toku rada (slično kao RAM), ali ostajetrajno sačuvana, čak i u odsustvu napajanja (slično ROM). Shodno tome,EEPROM se često koristi za skladištenje vrednosti, nastalih tokom rada, kojimoraju biti trajno sačuvani. Na primer, ako dizajnirate elektronsku bravu ilialarm, bilo bi sjajno da se omogući korisniku da stvori i unese lozinku, alibeskorisno je ako se sadržaj izgubi svaki put kada se iskljuci napajanje.Idealnorešenje je mikrokontroler sa ugrađenim EEPROM-om.

Interupt memorija.Najviše programi koriste interupt memoriju u redovnomizvršavanju programa. Svrha mikrokontrolerom je uglavnom da reaguju napromene u svom okruženju. Drugim rečima, kada se neki događaj odvija,mikrokontroler radi nešto. Na primer, kada pritisnete dugme na daljinskomupravljaču, mikrokontroler će ga registrovati i odgovoriti promenom kanala,pojačavate ili dole, itd Ako bi mikrokontroler proveo najveći deo svog vremenabeskrajno proveravajući nekoliko tastera satima ili danima To ne bi bilopraktično.Mikrokontroler je naučio tokom svoje evolucije trik.Umestoproveravanja konstantno svakog pina ili pomalo, mikrokontroler delegati "čekatipitanje" da "Specijalista" koji će reagovati tek kada se nešto desi pažnjadostojni.Signal koji obaveštava centralni procesor o tom događaju se zoveprekidni.

Page 12: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

12

3.5 Centralna procesorska jedinica

Kao što samo ime sugeriše , ovo je jedinica koja nadgleda i kontrolišesve procese unutar mikrokontrolera. Sastoji se od nekoliko manjih subjedinica ,od kojihsu najvažnije:

● Dekoder instrukcija je deo elektronike koji prepoznaje programske instrukcije iupravlja drugim kolima na osnovu toga. " Set instrukcija " koji je različit za svakuporodicu mikrokontrolera izražava sposobnosti ovog kola .● Aritmetička Logička jedinica ( ALU) obavlja sve matematičke i logičkeoperacije na osnovu podataka .● Akumulator je SFR usko povezan za rad sa ALU . To je vrsta radnog stolakoji se koristi za skladištenje svih podataka na osnovu kojih se neki rad izvodi(dodatak , smena / potez , itd .) Ona takođe skladišti rezultate spremne zaupotrebu i dalju obradu. Jedan od SFR-a , zove se Status registar ( PSV ), jeusko vezana za akumulator. To pokazuje u datom trenutku " statusa " od brojaskladište u akumulatoru (broj veći ili manji od nuleitd.)

3.6 Bus

Fizički, bus se sastoji od 8, 16 ili više linija. Postoje dve vrste bus-a:adresni bus, i magistrala podataka.Adresni bus sastoji se od onoliko linija kolikoje potrebno za rešavanje memorije.Koristi se za prenos adresa od procesora domemorije. Magistrala podataka je široka kao podaci.Koristi se za povezivanjesvih kola unutar mikrokontrolera.

Page 13: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

13

3.7 Serijska komunikacija

Paralelne veze između mikrokontrolera i periferijskih uređaja prekoulazno / izlaznih portova je idealno rešenje za kraće razdaljine - do nekolikometara. Međutim, u drugim slučajevima - kada je neophodno da se uspostavikomunikacija između dva uređaja na dužim rastojanjima , nije moguće koristitiparalelnu vezu – poput jednostavnog rešenja ne dolazi u obzir . U ovimsituacijama , serijska komunikacija jenajbolje rešenje.

Danas, većina mikrokontrolera imaju ugrađenih nekoliko različitihsistema za serijsku komunikaciju kao standardnu opremou. Koji od ovih sistemaće se koristiti zavisi od mnogih faktora od kojih su najvažniji :

● Sa koliko uređaja mikrokontroler mora da razmenjuje podatke?● Koliko brzo razmena podataka mora da teče?● Koliko je rastojanje između uređaja?● Da li je potrebno da šalju i primaju podatke istovremeno ?

Jedna od najvažnijih stvari koje se tiču serijske komunikacije je protokolkoji bi trebalo da bude strogo poštuju. To je skup pravila koja moraju da seprimenjuju kako bi se pravilno protumačili podaci. Srećom, mikrokontroleriautomatski se brinu za to , tako da se rad programera / korisnika svodi najednostavno slanje i primanje podataka.

3.8 Baud Rate (brzina prenosa)

Termin Baud rate se obično koristi da označi broj bitova koji se prenesupo sekundi [bps].Treba napomenuti da se to odnosi na komadiće, a nebajtove.Obično se zahteva od protokola da svaki bajt prenosi zajedno sanekoliko kontrolnih bitova. To znači da se jedan bajt u serijskom potokupodataka sastoji od 11 bita. Na primer, ako brzina prenosa je 300 bps ondamogu maksimalno 37 i minimalno 27 bajta se prenesu po sekundi, što zavisi odtipa veze i protokola u upotrebi.

Najčešće korišćeni serijski komunikacioni sistemi su:

I2C (Inter Integrated Circuit) je sistem koji se koristi kada je rastojanjeizmeđu mikrokontrolera i specijalizovanih integrisanih kratko za nove generacije(prijemnik i predajnik su obično na istoj štampanoj ploči). Veza je uspostavljenapreko dva provodnika, jedan se koristi za prenos podataka, dok drugi se koristiza sinhronizaciju (signal sata). Kao što se vidi na slici, jedan uređaj je uvekmaster. Obavlja adresiranje jednog slave čipa (subordinirani) pre startovanjakomunikacije.I na ovaj način jedan mikrokontroler može da komunicira sa 112 različitihuređaja. Baud rate je obično 100 Kb / s (standardni režim) ili 10 Kb / sec (spora

Page 14: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

14

brzina prenosa). Sistemi sa baud rejtom od 3,4 Mb / sec se nedavno pojavio.Rastojanje između uređaja koji komuniciraju preko inter-integrisanih bus kola jeograničen na nekoliko metara.

SPI (Serial Peripheral Interface Bus) je sistem za serijsku komunikaciju kojikoristi do četiri provodnika (obično tri) - jedan za primanje podataka, jedan zaslanje podataka, jedan za sinhronizaciju i jedan (alternativno) za izbor uređajasa kojim se komunicira. To je full dupleks veza, što znači da se podaci šalju iprimaju istovremeno. Maksimalna brzina prenosa je veća nego kod I2C veze.

UART (Universal Asinchronous Receiver / Transmitter).Ova veza jeasinhrona, što znači da se posebna linija za prenos signalnog takta ne koristi.Uneki msituacijama to je ključno obeležje (na primer, radio veza ili infracrvenitalasi daljinski upravljač). Pošto se samo jedna linija komunikacija koristi, kakoprijemnik i predajnik rade na istom kursu definisanog u cilju održavanjaneophodne sinhronizacije. Ovo je veoma jednostavan način prenošenjapodataka jer u suštini predstavlja pretvaranje 8-bitnih podataka iz paralelnog userijski format.Brzina prenosa rate nije visoka, kreće se do 1 Mbit / sec.

3.9 Oscilator

Jednaki impulsi koji dolaze iz oscilatora omogućavaju harmoničan isinhroni rad svih kola u mikrokontroleru. Oscilator modul je obično konfigurisanda koristi kvarcni kristal ili keramički rezonator za frekvencijske stabilizacije.Štaviše, ona takođe može da rade bez elemenata za stabilizaciju frekvencije(kao RC oscilatora). Važno je reći da instrukcije nisu izvršene po stopi kojunameće sam oscilator, već nekoliko puta sporije. To se dešava zato što se svakideo izvodi u nekoliko koraka. U nekim mikrokontrolerima, isti broj ciklusa je

Završni rad Programiranje PIC mikrokontrolera i njihova primena

14

brzina prenosa). Sistemi sa baud rejtom od 3,4 Mb / sec se nedavno pojavio.Rastojanje između uređaja koji komuniciraju preko inter-integrisanih bus kola jeograničen na nekoliko metara.

SPI (Serial Peripheral Interface Bus) je sistem za serijsku komunikaciju kojikoristi do četiri provodnika (obično tri) - jedan za primanje podataka, jedan zaslanje podataka, jedan za sinhronizaciju i jedan (alternativno) za izbor uređajasa kojim se komunicira. To je full dupleks veza, što znači da se podaci šalju iprimaju istovremeno. Maksimalna brzina prenosa je veća nego kod I2C veze.

UART (Universal Asinchronous Receiver / Transmitter).Ova veza jeasinhrona, što znači da se posebna linija za prenos signalnog takta ne koristi.Uneki msituacijama to je ključno obeležje (na primer, radio veza ili infracrvenitalasi daljinski upravljač). Pošto se samo jedna linija komunikacija koristi, kakoprijemnik i predajnik rade na istom kursu definisanog u cilju održavanjaneophodne sinhronizacije. Ovo je veoma jednostavan način prenošenjapodataka jer u suštini predstavlja pretvaranje 8-bitnih podataka iz paralelnog userijski format.Brzina prenosa rate nije visoka, kreće se do 1 Mbit / sec.

3.9 Oscilator

Jednaki impulsi koji dolaze iz oscilatora omogućavaju harmoničan isinhroni rad svih kola u mikrokontroleru. Oscilator modul je obično konfigurisanda koristi kvarcni kristal ili keramički rezonator za frekvencijske stabilizacije.Štaviše, ona takođe može da rade bez elemenata za stabilizaciju frekvencije(kao RC oscilatora). Važno je reći da instrukcije nisu izvršene po stopi kojunameće sam oscilator, već nekoliko puta sporije. To se dešava zato što se svakideo izvodi u nekoliko koraka. U nekim mikrokontrolerima, isti broj ciklusa je

Završni rad Programiranje PIC mikrokontrolera i njihova primena

14

brzina prenosa). Sistemi sa baud rejtom od 3,4 Mb / sec se nedavno pojavio.Rastojanje između uređaja koji komuniciraju preko inter-integrisanih bus kola jeograničen na nekoliko metara.

SPI (Serial Peripheral Interface Bus) je sistem za serijsku komunikaciju kojikoristi do četiri provodnika (obično tri) - jedan za primanje podataka, jedan zaslanje podataka, jedan za sinhronizaciju i jedan (alternativno) za izbor uređajasa kojim se komunicira. To je full dupleks veza, što znači da se podaci šalju iprimaju istovremeno. Maksimalna brzina prenosa je veća nego kod I2C veze.

UART (Universal Asinchronous Receiver / Transmitter).Ova veza jeasinhrona, što znači da se posebna linija za prenos signalnog takta ne koristi.Uneki msituacijama to je ključno obeležje (na primer, radio veza ili infracrvenitalasi daljinski upravljač). Pošto se samo jedna linija komunikacija koristi, kakoprijemnik i predajnik rade na istom kursu definisanog u cilju održavanjaneophodne sinhronizacije. Ovo je veoma jednostavan način prenošenjapodataka jer u suštini predstavlja pretvaranje 8-bitnih podataka iz paralelnog userijski format.Brzina prenosa rate nije visoka, kreće se do 1 Mbit / sec.

3.9 Oscilator

Jednaki impulsi koji dolaze iz oscilatora omogućavaju harmoničan isinhroni rad svih kola u mikrokontroleru. Oscilator modul je obično konfigurisanda koristi kvarcni kristal ili keramički rezonator za frekvencijske stabilizacije.Štaviše, ona takođe može da rade bez elemenata za stabilizaciju frekvencije(kao RC oscilatora). Važno je reći da instrukcije nisu izvršene po stopi kojunameće sam oscilator, već nekoliko puta sporije. To se dešava zato što se svakideo izvodi u nekoliko koraka. U nekim mikrokontrolerima, isti broj ciklusa je

Page 15: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

15

potrebno da izvrši bilo kakvu instrukciju, dok je u drugima, vreme izvršenja nijeisto za sve instrukcije. Prema tome, ukolikosistem koristi kvarcni kristal sa frekvencijom od 20 MHz, vreme izvršenjainstrukcija nije 50ns, već 200, 400 ili 800 ns, u zavisnosti od tipa jedinicemikrokontrolera (MCU).

3.0.1 Tajmer i brojači

Mikrokontroler koristi kvarcni oscilator kristal za svoj rad. Iako to nijenajjednostavnije rešenje, postoji mnogo razloga da ga koriste. Naime, učestalosttog oscilatora je precizno definisana i veoma stabilna, impulsi koje generiše suuvekiste širine, što ih čini idealnim za merenje vremena. Takve oscilatori se koriste u

kvarcnim satovima. Ako je potrebno merenje vremena između dva događaja,dovoljnoje brojati impulse koji dolaze iz ovog oscilatora. To je upravo ono štotajmer radi.

Page 16: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

16

Većina programa koriste ove minijaturne elektronske "štoperice". To suobično 8 - ili 16-bitni SFR-i i njihov sadržaj se automatski povećava svakimdolaskompulsa.Kada je registar potpuno napunjen, generiše se prekid.

Ako tajmer registri koriste interni oscilator za njihov rad, onda je mogućeda se merenje vremena između dva događaja (ako registar ima vrednost T1 utrenutku merenja kada je počeo, i T2 u trenutku kada je završio, onda je proteklovreme jednak rezultatu oduzimanja T2-T1). Ako registri koriste impulse kojidolaze iz spoljnog izvora onda je takav tajmer pretvoren u brojač.Ovo je samojednostavno objašnjenje same operacije.U praksi impulsi koji dolaze iz kvarcnogoscilatora su jednom po svakom mašinskom ciklusu direktno ili preko prescalerdoveo do kola koja su koracimabroj u registru tajmera. Ako jedna instrukcija(jedan mašinski ciklus) traje četiri perioda kvarca onda se ugrađuje kvarcnioscilator sa frekvencijom 4MHz,taj broj će se menjati milion puta u sekundi (svaki mikrosekund).

Lako je izmeriti kratke vremenske intervale (do 256 milisekunde) nanačin opisan gore, jer je to najveći broj koji može sadržati registar.Očigledno tajnedostatak može se lako prevazići na nekoliko načina pomoću sporijegoscilatora, registruje više bita, ili prescaler-a ili prekida. Prva dva rešenja imajuneke slabosti, tako da je poželjno koristiti prescaler ili interupt.

Korišćenje prescalera u operacijama sa vremenom.Prescaler je elektronskiuređaj koji se koristi za smanjenje frekvencije po unapred određenom faktoru.To znači da bi se generisali jedan puls na njenom izlazu, neophodno je da sedonese 1, 2, 4 ili više impulsa na svaki ulaz. Jedan takav sklop je izgrađen umikrokontroleru i njegova brzina može biti promenjena u okviru programa.Koristi se kada je potrebno izmeriti duže periode vremena.Jedan prescaler seobično deli na tajmer i watch-dog tajmer, što znači da se ne mogu koristiti obaistovremeno.

Page 17: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

17

Korišćenje prekida u radu sa tajmerom.Ako se tajmer registar sastojiod 8 bita, najveći broj koji može biti upisan u njemu je 255 (za 16-bit registrujese broj 65.535). Ako se ovaj broj premašen, tajmer će se automatski resetovati ibrojanje će početi od nule ponovo. Ovo stanje se zove prekoračenje. Ako jeomogućeno iz programa, kako preliv može da izazove prekid, što daje potpunonove mogućnosti. Na primer, stanje registara koji se koriste za brojanje sekundi,minuta ili dana može da se promeni u prekidnoj rutini. Ceo proces (osim prekidarutinne) se automatski vrši "u pozadini", koja omogućava glavnim kolima namikrokontroleru da obavljaju drugeoperacije.

Page 18: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

18

Ova slika ilustruje korišćenje prekida u radu sa tajmerom. Odlaganjaproizvoljnog trajanja sa minimalnim mešanjima glavnog programa izvršavanjase mogu lako dobiti dodeljivanjem prescalera tajmeru.

Brojači.Ako tajmer snabdeva impulsima ulazni pin mikrokontrolera ondase pretvara u brojač. Jasno, to je isto elektronsko kolo. Jedina razlika je u tomešto se u ovom slučaju impulsi računaju kroz portove i njihovo trajanje (širina)uglavnom nisu definisani. To je razlog zašto se oni ne mogu koristiti za merenjevremena, ali može da se koristi za merenje nešto drugo: proizvodi na pokretnojtraci, broj osa rotacije, putnici i sl (zavisno od senzora u upotrebi).

Watchdog Timer. To je tajmer povezan potpuno odvojenom RCoscilatora u mikrokontroler.Ako watchdog tajmer je omogućen, svaki put broji dokraja programa, mikrokontroler resetuje javlja i izvršavanje programa počinje odprvog predavanja. Poenta je da se spreči da se to dogodi korišćenjemodređenog komandu. Cela ideja je zasnovana na činjenici da se svaki programrealizuje u nekoliko dužih ili kraćih petlji.Ako uputstva koja resetuje tajmervatchdog su postavljene na odgovarajućim lokacijama programa, poredkomande redovno izvršava, onda rad vatchdog tajmera neće uticati naizvršavanje programa. Ukoliko iz bilo kog razloga (uglavnom električne šumovi uindustriji), programski brojač "zaglavi" na nekoj memorijskoj lokaciji od kojenema povratka, čuvara neće biti izbrisani .

Page 19: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

19

3.0.2 A/D Pretvarači

Spoljni signali su obično fundamentalno drugačiji od onih koje mikrokontrolerrazume (jedinice i nule), tako da oni moraju da budu konvertovani da bimikrokontroler mogao da ih razume. Analog na digital konvertor je elektronskisklop koji pretvara stalne signale u diskretne digitalne brojeve. Ovaj modul sestoga koristi za konvertovanje analognog signala neke vrednosti u binarni broj iprosleđuje ga na CPU za dalju obradu. Drugim rečima, ovaj modul se koristi zamerenje ulaznog napona pina (analogni vrednost). Rezultat merenja je broj(digitalna vrednost) koji se koristi i obrađuje kasnije u programu.

3.0.3 Interna Arhitektura

Svi nadograđeni mikrokontroleri koristi jedan od dva osnovna modeladizajna Harvard i fon Nojman-arhitektura. Ukratko, oni su dva različita načinarazmene podataka između procesora i memorije.

von-Neumann-Arhitektura

Mikrokontroleri koji koriste ovu arhitekturu imaju samo jedan memorijskiblok i jednu 8-bitnu magistralu za podatke. Kao što se svi podaci razmenjujupomoću ovih 8 linija, ovaj bus je preopterećen i sama komunikacija je veomaspora i ne-efikasan. Procesor može da čita uputstvo ili čita / upisuje podatke iz /u memoriju. Oba se ne mogu desiti u isto vreme, jer i instrukcije i podaci koristeisti bus sistem. Na primer, ako neki program linija kaže da se RAM registarmemorije zove "ZBIR" treba inkrementirati jedan (uputstvo: incf SUM),mikrokontroler će uraditi sledeće:

1. Pročita deo programa koji precizira šta treba da se uradi (u ovom slučaju to je"incf" instrukcija za prirasta).

Page 20: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

20

2. Pročita dalje isti deo programa navodeći instrukciju na osnovu koje podatakatreba da se obrađuju (u ovom slučaju to je "zbir" registar).

3. Nakon što uveća, sadržaj ovog registra treba da bude upisan u registar izkojeg je pročitan ("zbir" registar adresa).

Harvard Arhitektura

Mikrokontroleri koji koriste ovu arhitekturu imaju dva različita podatakabus-a. Jedan je 8 bita i povezuje procesor i RAM memoriju. Drugi se sastoji odnekoliko linija (12, 14 ili 16) i povezuje procesor i ROM. Shodno tome, procesormože da pročita uputstvo i izvršiti pristup podacima memorije u isto vreme.Pošto su svi registri RAM memorije 8 bita, svi podaci unutar mikrokontrolera serazmenjuju u istom takvom formatu.Program za pisanje, samo podaci od 8 bitasu uzeti u obzir. Drugim rečima, sve što ikada mogu menjati iz programa i svešto može da utiče će biti 8 bita. Program napisan za neke od ovihmikrokontrolera će se čuvati u internoj memoriji mikrokontrolera ROM nakonšto se kompajliraju u mašinski jezik. Međutim, ove memorijske lokacije nemaju8, vec 12, 14 ili 16 bita. Ostatak bitova 4, 6 ili 8 - predstavlja samu instrukcijunavodeći šta da CPU uradi sa 8-bitnim podacima.

Page 21: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

21

3.0.4 Instrukcije

Instrukcije koje se mogu shvatiti od strane mikrokontrolera su poznatikao set instrukcija. Kada pišete program u asembleru , vi zapravo " ispričatepriču " po specifikaciji uputstva u cilju treba da budu pogubljeni. Glavnoograničenje u ovom procesu je broj raspoloživih instrukcija. Proizvođači se držijednom od sledeće dve strategije:

RISC ( Reduced Instruction Set Computer)

U ovom slučaju,mikrokontroler prepoznaje i izvršava samo osnovneoperacije ( sabiranje, oduzimanje, kopiranje i sl.) Sve ostale komplikovanijeoperacije izvode se kombinovanjem njih ( na primer , množenje vrši obavljasukcesivno dodatkom ). Ograničenja su očigledna (probajte pomoću samonekoliko reči da objasni nekome kako da stignete na aerodrom u nekom drugomgradu ). Međutim , postoje neke velike prednosti. Pre svega , ovaj jezik je lakonaučiti. Pored toga ,mikrokontroler je veoma brz , tako da nije moguće videti svearitmetičke akrobacije koje obavlja. Korisnik može samo videti konačan rezultatsvih tih operacija.

CISC ( Complex Instruction Set Computer)

CISC je suprotno od RISC. Mikrokontroler je dizajniran da prepoznaviše od 200 različitih instrukcija može mnogo da učini i to veoma brzo. Međutim,programer mora da razume šta sve to tako bogat jezik nudi, što nije nimalo lako.

4.0 Pisanje programa za mikrokontrolere

Početniku u svetu mikrokontrolera najteže je napraviti prvi korak. Iakose hardverske mogućnosti mikrokontrolera neprekidno usavršavaju, softveruglavnom ostaje isti.

Za lakše razumevanje ovog problema, potrebna su određena predznanja:

● Osnovno poznavanje elektronskih kola (anoda i katoda LED,povezivanje LED displeja, funkcija taster prekidača, obeležavanje

Page 22: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

22

izvoda integrisanih kola, pojam pina, funkcija diode u logičkim kolima,naponski nivoi logičke 0 i 1, visokoimpedansno stanje, Šmitov okidač)

● Osnovno poznavanje binarnih sistema (bit, bajt, binarno,decimalno,heksadecimalno, BCD i označavanje negativnih brojeva)

● Osnovne logičke operacije (Bulova algebra)

● Pojam multipleksa

● Princip serijskog prenosa podataka

Radi lakšeg snalaženja možemo se služiti sledećim pomoćnim postupcimaprilikom programiranja:

● Ukoliko stavimo ; (tačku-zarez) bilo gde u programu, kompajlerće ignorisati sve karaktere iza njega sve dok ne dođe do znaka za novired. Ovo znači da možemo staviti komentar unutar programa kako binas podsetio šta se uopšte u njemu radi.

● Mogu se pridružiti imena konstantama i registrima.Dosta je lakšečitati na srpskom u šta upisujemo, ili šta označava broj, nego dapokušavamo da se setimo šta znače svi ti brojevi. Zbog toga,koristimo opisna imena kao npr. ZBIR.

● Možemo napraviti zaglavlje programa koristeći tačku-zarez. Primer jedat ispod.

;*********************************************************; Autor : N/A Datum : N/A; Verzija : 0.5 Naslov : Test;; Opis hardvera :; - RC oscilator 200KHz.; - Svi tasteri su povezani od pinova ka masi.; T1 na RB0, T2 na RB1. Uključeni su interni Pull-up otpornici.; - Sve LED od +5V ka pinovima. LED1 na RA0, LED2 na RA2.;; Opis softvera :; - Stanje LED1 menja se prilikom svakog interapta sa T1; - Stanje LED2 menja se tajmerom na svakih 0,5S jedino; ukoliko je istovremeno pritisnut T2;; Dodatni fajlovi : p16F84.inc

;*********************************************************Uočavamo da je napravljena neka vrsta kocke. Ovako izgledapreglednije.

● Ukoliko izdvojimo instrukcije od početka reda i labela sa parrazmaka ili „Tab“ dugmetom, na taj način pokazaćemo asembler-u dali je reč o instrukciji ili labeli, a program izgleda preglednije.

Page 23: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

23

4.1 Korišćenje registara

Registar je RAM memorijska lokacija unutar mikrokontrolera u kojuse može upisivati, sa koje se može čitati, ili obavljati obe ove funkcije.

Sledeća skica prikazuje raspored registara unutar PIC16F84mikrokontrolera. Slika prikazuje adrese na kojima je smeštema RAMmemorija (u obliku osmobitnih registara) unutar mikrokontrolera.

Adresa BANK0 BANK1 Adresa0x00 INDF(1) INDF(1) 0x800x01 TMR0 OPTION_REG 0x810x02 PCL PCL 0x820x03 STATUS STATUS 0x830x04 FSR FSR 0x840x05 PORTA TRISA 0x850x06 PORTB TRISB 0x860x07 / / 0x870x08 EEDATA EECON1 0x880x09 EEADR EECON2(1) 0x890x0A PCLATH PCLATH 0x8A0x0B INTCON INTCON 0x8B0x0C.....0x4F

68 Registra opštenamene (statičkaRAM memorija)

Mapirani u BANK0

0x8C.....

0xCF0x50...0x7F

/ /

0xD0...

0xFF

/ - Neimplementovana memorijska lokacija (čita se kao 0)(1) - Nije fizički registar

Primećujetmo da su registri podeljeni u dve grupe, označene saBANK0 i BANK1. BANK1 se uglavnom koristi za konfigurisanje

Page 24: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

24

trenutnog hardverskog stanja mikrokontrolera. Uglavnom mu je (zajednostavnije programe) dovoljno pristupiti samo prilikom početneinicijalizacije mikrokontrolera. Kako se najbitniji registri (PORTA i PORTB)nalaze u BANK0, program će uglavnom biti u njoj.

Sledeću specifičnost predstavljaju prvih 12 registara u bankama(0x00 – 0x0B). Njima se direktno upravlja radom mikrokontrolera što ihčini povlašćenim (eng. Special Function Registers - registri specijalnenamene), dok je obična RAM memorija (eng. General Purpose Registers -registri opšte namene) dostupna u registrima od 0x0C do 0x4F, a istovremenojoj se može pristupiti i preko 0x8C do 0xCF adresa.

Unutar mikrokontrolera TRIS (TRISA i TRISB) propuštaju podatke usamo jednom smeru. Oni se nalaze na adresama 0x85 i 0x86, respektivno.Da bismo programirali željeni pin tako da bude ulazni ili izlazni (propuštapodatke u jednom ili drugom smeru), pošaljemo 1 ili 0 na njegov bit uodgovarajućem TRIS registru. Pri tome možemo koristiti bilo koji (binarni,decimalni ili heksadecimalni) format brojeva, međutim binarnim se slikovitijepredstavlja stanje željenog pina.

Svi RA (RA0 do RA4) i RB (RB0 do RB7) pinovi mikrokontroleraimaju dvojaku fuknciju. Oni mogu biti ulazni ili izlazni. Da li će biti ulazni iliizlazni podešava se u odgovarajućem TRIS registru.

Na primer ukoliko se u TRISB nalazi sledeća binarnavrednost: b'00101111' pinovi će biti konfigurisani kao naslici. Primećujemo da bit 7 (eng. MSB – Most SingleBit - bit najveće težine ) odgovara pinu RB7 i da seon prilikom binarnog označavanja nalazi sa leve strane.Nasuprot njemu bit 0, bit najmanje težine (eng LSB –Low Single Bit) odgovara pinu RB0. Potpuno istasituacija je i sa TRISA registrom, sa tom razlikom što sunjemu gornji bitovi neiskorišćeni (jer nemaju pripadajućihpinova).

Na gornjoj slici pinovi su konfigurisani po sledećem:

pin RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

bit broj (MSB)7 6 5 4 3 2 1 0(LSB)

stanje 0 0 1 0 1 1 1 1

Ulaz / Izlaz I I U I U U U U

Kako se TRISB nalazi u banci 1 (BANK1) potrebno je prebaciti setamo. Da bi se prebacili iz banke u banku koristi se bit 5 STATUS registra. Zaprebacivanje iz banke 0 u banku 1 potrebno ga je setovati, a za vraćanjeu banku 0, resetovati. STATUS registar se nalazi na adresi0x03(0x03 ili h'03' označava brojeve u heksadecimalnomformatu. Binarni format se piše kao b'00000011', a decimalni kao .03 ili d'03').

Ukoliko je odgovarajući pin konfigurisan (preko svog TRIS registra) kao

Page 25: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

25

izlazni, na njega se iz mikrokontrolera mogu poslati naponski nivoi od 0V i+5V, odnosno na njemu će se u svakom trenutku nalaziti jedan od ovihnapona. Pri tome se naponski nivo od 0V predstavlja kao logička 0, a napon od+5V kao logička 1. Ukoliko je pak pin konfigurisan kao ulazni,mikrokontroler će u svakom trenutku moći da očita gore pomenutevrednosti napona na pinu, i u zavisnosti od logičkog nivoa na pinu preduzmeodgovarajuću akciju.

Pinove koji se ne upotrebljavaju u električnoj šemi potrebno jekonfigurisati kao izlazne. U protivnom varijacije napona na njimaprouzrokuju povećanu potrošnju i grejanje mikrokontrolera, a eventualno injegovu neispravnost.

Da bismo postavili jedan od izlaznih pinova na visoki logički nivo,jednostavno treba poslati “1” na njemu odgovarajući bit u PORTA ili PORTBregistru. Format zapisa je isti kao i za TRIS registre. Slično tome, dabismo pročitali da li se neki pin (ranije konfigurisan kao ulazni) nalazi nalogičkoj 0 ili 1, treba da proverimo da li je odgovarajući bit u PORTA iliPORTB registru u setovanom ili resetovanom stanju.

W (eng. Working - radni) registar je registar opšte namene u kojimožemo smestiti bilo koju brojčanu vrednost (u opsegu od .0 do .255) sakojom želimo raditi. Nakon što smo pridružili određenu vrednost registru W,možemo mu pridružiti neku drugu vrednost (oprez – time bismoautomatski obrisali prethodnu) ili zapamćenu vrednost iz njega premestitina neku drugu memorijsku lokaciju (registar).

Za razliku od ostalih registara on nema svoju adresu, već je integrisanu sklopu samog mikrokontrolera. U opisima instrukcija se mogu srestioznake f, k, b i d. Pri tome je sa f (eng. file) označena adresa jednogod registra iz tabele sa početka ovog poglavlja, k označava konstantnuvrednost, b je redni broj bita u registru a d označava odredište (eng.destination) rezultata operacije.

4.2 Metode pisanja koda

Za pisanje koda možemo koristiti bilo koji tekst editor koji snimačist .txt fajl bez ikakvih formatiranja. Na primer Notepad++ , Code Edit Pro(sam naglašava instrukcije), Windowsov Notepad ili Linuxov Leafpad.U jednom od narednih poglavlja, upoznaćemo se sa MPLAB razvojnimokruženjem, i njegovim editorom.

Najpre je potrebno prebaciti program iz banke 0 u banku 1. Ovo se radisetujući bit 5 STATUS registra, čija je adresa 0x03.

bsf 0x03,5

BSF f,b znači “setuj bit b u registru f” (eng. Bit Set f). Ovde je f=0x03 što jeadresa STATUS registra i b=5 što označava redni broj bita u STATUSregistru. Dakle ovim je rečeno “setuj bit 5 na adresi 0x03”.

Page 26: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

26

Sada se, dakle, program nalazi u banci 1.

movlw b'00101111'

Ovom instrukcijom smešta se binarni broj b'00101111' u W registar. Ovoisto mogli smo da uradimo sa heksadecimalnim brojem i tada bi instrukcijaizgledala ovako:

movlw 0x2F

Obe instrukcije rade potpuno istu stvar. MOVLW k znači “ubaci vrednostkoja sledi direktno u registar W” (eng. Move Literal to W).

Sada treba premestiti ovu vrednost u TRISB registar, da bi sekonfigurisali pinovi PORTB registra.

movwf 0x86

Instrukcija MOVWF f znači: “premesti vrednost registra W u f registar”(eng. Move W to f). U ovom slučaju adresa f je adresa registra TRISB (vidite utabeli). Bitno je primetiti da ovo nije premeštanje u svom bukvalnom značenju,jer je W registar nakon instrukcije ostao nepromenjen. Pre bi joj odgovaraoprevod kopiraj (eng. copy).

TRISB registar sada sadrži željenu vrednost, čime su konfigurisaniulazno/izlazni (skraćeno U/I) pinovi. Sada je potrebno prebaciti program ubanku 0, kako bi se dalje moglo manipulisati signalima na U/I pinovima.

bcf 0x03,5

Ova instrukcija je suprotna od BSF. BCF f,b znači “resetuj bit b u registruf” (eng. Bit Clear f). Brojevi koji slede su adresa registra (f), u ovom slučajuSTATUS registra i broj bita (b), u ovom slučaju bit 5. Dakle ovim je u stvariresetovan bit 5 STATUS registra. Posledica poslednje instrukcije je da seprogram ponovo nalazi u BANK0.

Primećujemo da je adresa STATUS registra ista, iako bi u BANK1trebala biti 0x83.Svim registrima u BANK1 može se pristupati prekoadresa registra u BANK0, jedino je bitno pravilno podesiti u kojoj se bancinalazi program.Razumljivije je čitati program sa normalnim adresama. Zaregistre koji su zajednički za obe banke, ovo je potpuno svejedno.

Ceo prethodni kôd zapisan u jednom bloku izgleda ovako:

bsf 0x03,5 ; Idi u BANK1movlw b'00101111' ; Stavi b'00101111' u Wmovwf 0x86 ; Prebaci b'00101111' u

TRISBbcf 0x03,5 ; Vrati se u BANK0

Page 27: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

27

Nakon što snimimo fajl, promenimo mu .txt ekstenziju u .asm. Zaovo će nam u Windowsu trebati Total Commander, a u Linuxu npr. GnomeCommander.

4.3 Konfigurisanje izlaza

U ovom poglavlju obradićemo slanje odgovarajućih logičkih nivoa naportove. U primeru koji sledi cilj će nam biti da omogućimo treptanje jedne LED(eng. Light Emitting Diode), i u njemu ćemo videti jedan potpuni program.

Najpre treba podesiti drugi bit PORTA registra tako da bude izlazni:

bsf 0x03,5 ; Idi u banku 1movlw b'00000000' ; Stavi 00000 u Wmovwf 0x85 ; Prebaci 00000 u TRISA – svi pinovi su

izlaznibcf 0x03,5 ; Vrati se u BANK0

Ovo je slično kao što je urađeno u prethodnom primeru. Jedina razlika jeu tome što smo sada podesili sve pinove PORTA registra kao izlazne, šaljući0x00 u TRISA registar.

Zatim treba uključiti LED. Zato treba na jedan od pinova (onaj na kome jepovezana LED) poslati logičku 1.

movlw b'00000100' ; Upiši .4 u W registar.

movwf 0x05 ; Prebaci sadržaj iz W (.4) u PORTA, čija adresa je; 0x05. To postavlja logičku 1 samo na pinu RA2.

; Pošto je LED uključena, treba je isključiti.

movlw b'00000000' ; Upiši .0 u W registar.

movwf 0x05 ; Prebaci sadržaj iz W (.0) u PORTA, čija adresa je0x05

Ovim smo postigli da jednom uključimo, i zatim isključimo LED.Ono što želimo da postignemo jeste da LED neprekidno treperi. To semože implementirati vraćajući izvršenje programa na početak. Postavimo“labelu” (oznaku) na početak programa, i zatim recimo programu da nastavisvoje izvršavanje sa tako označene pozicije.

Labela se postavlja veoma jednostavno: upišemo ime, recimo Poc, izatim prepišemo sledeći kod:

Poc movlw b'00000100' ; Upiši .4 u W registar.

movwf 0x05 ; Prebaci sadržaj iz W (.4) u PORTA, čija adresa je; 0x05. To postavlja logičku 1 samo na pinu RA2.

Page 28: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

28

; Pošto je LED uključena, treba je isključiti.

movlw b'00000000' ; Upiši .0 u W registar.

movwf 0x05 ; Prebaci sadržaj iz W (.0) u PORTA, čija adresa je0x05 ; To postavlja logičku 0 na sve pinove (RA0 do RA4)

goto Poc ; Nastavi dalje izvršavanje programa od labele Poc

Kao što se može primetiti, najpre je ispred instrukcije na početkureda stavljena labela “Poc”. Na samom kraju programa je “goto Poc”instrukcijom nastavljeno dalje izvršavanje programa od labele. InstrukcijaGOTO k znači “idi na” (eng. Go-idi, To- na) adresu (k) ili labelu.

Program će sada neprekidno uključivati i isključivati LED odtrenutka dovođenja napona napajanja, a prestaće po njegovom nestanku.

Pogledajmo još jednom isti program:

bsf 0x03,5movlw b'00000000'movwf 0x85bcf 0x03,5

Poc movlw b'00000100'movwf 0x05movlw b'00000000'movwf 0x05goto Poc

Komentari su namerno izostavljeni i sve što možemo videti jesunizovi instrukcija i brojeva. Ovo može da bude krajnje zbunjujuće ukolikokasnije pokušavamo da ispravimo eventualno otkrivenu grešku u programu, aliveć i tokom prvobitnog pisanja programa, kada treba zapamtiti sve tepojedinačne adrese. Čak i kada bismo dodali komentare, program bi i daljedelovao nejasno. Zbog toga treba svim brojevima dati imena. Ovo može dase uradi naredbom “equ”, koja jednostavno znači “jednako nečemudrugom” (eng. Equal – jednak). Važno je da primetimo da ovo nije instrukcija zaPIC već tzv. direktiva koja ima uticaj na sam asembler. Program kojisadrži “equ” direktivu će, dakle, nakon asembliranja u mašinski kôd PIC-a,biti identičan programu bez “equ” direktive. Ovom direktivom samozamenjujemo željeni broj imenom.

Imena moraju biti definisana pre nego što budu upotrebljena, izbog toga ih uvek definišemo na početku svakog programa. Nakonimenovanja registara, unesemo njihova imena i u aktivni deo programa. Ukolikosada prepišemo program bez komentara, ali sa imenovanim registrima, moćićemo da uporedimo preglednost i čitljivost takvog listinga sa prethodnim:

STATUS equ 0x03TRISA equ 0x85PORTA equ 0x05RP0 equ 0x05

Page 29: 94_Zavrsni rad.pdf

4.4 Prazne petlje

U prethodnom programu postoji mala greška. Skoro svaka instrukcijazahteva jedan instrukcijki ciklus da bi se izvršila. Instrukcijski ciklus je 4puta veći od takta oscilatora. Ukoliko kao oscilator za takt za PIC16F84koristimo kvarcni kristal od 4MHz trajanje svake instrukcije će biti4MHz/4ciklusa, ili 1μS. Kako se koristi samo 5 instrukcija, LED će se uključiti iisključiti u samo 6μS. Zbog čega 6 a ne 5? Zbog toga što instrukcije kojemenjaju stanje programskog brojača (eng. Program Counter ) poput GOTO zasvoje izvršenje troše 2 instrukcijska ciklusa.

Kako je to treptanje previše brzo da biste ga uopšte mogli primetiti, zbogsporosti oka delovaće Vam kao da LED svetli konstantno, ali sa polasnage. Dakle potrebno je napraviti adekvatno kašnjenje između trenutkauključenja i isključenja LED.

Uobičajeni princip po kome se implementira kašnjenje jeste damikrokontroleru zadamo da odbrojava od prethodno postavljenog broja donule, i da u trenutku dostizanja nule prekine odbrojavanje. Nulta vrednost,dakle, predstavlja kraj i izlazak iz petlje, nakon čega PIC nastavlja saizvršavanjem daljeg programa.

Najpre treba definisati konstantnu vrednost koja će predstavljatiinicijalnu vrednost brojača. Nazovimo je BROJAC. Zatim treba odlučitikolika će biti stvarna vrednost ovog broja. Najveći broj koji se može zadati jed'255' odnosno 0xFF.

Međutim, kao što je napomenuto u prethodnom poglavlju,naredba equ pridružuje imena običnim brojevima, ne praveći razlikuizmeđu adresa registra i bitova. Zato ćemo, ukoliko probamo njoj pridružitivrednost 0xFF, dobiti grešku pri kompajliranju programa. Ovo se dešava jermemorijska adresa 0xFF nije implementovana, i zbog toga joj ne možemopristupiti.Za to je potrebno da sa strane sagledamo situaciju. Ukoliko imenuBROJAC pridružimo, na primer adresu 0x0C, ona će ukazivati na adresuregistra opšte namene (RAM memoriju koju možemo slobodno koristiti).Prilikom dobijanja napona napajanja, svi neiskorišćeni registri umikrokontroleru (osim registara specijalne namene)postavljaju se na vrednost 0xFF. Zato će BROJAC imati vrednost 0xFF.

Ali, kako onda podesiti BROJAC na drugu vrednost? Sve štotrebamo da uradimo je da ubacimo željenu vrednost u taj registar. Na primer,ukoliko želimo da BROJAC sadrži vrednost 0x85, ne možemo napisatiBROJAC equ 0x85, jer će onda BROJAC sadržati adresu TRISA registra. Zatotrebamo uraditi sledeće:

movlw 0x85 ; Najpre stavimo broj 0x85 u W registar,movwf 0x0C ; a onda ga prebacimo u 0x0C registar

Sada možemo slobodno napisati BROJAC equ 0x0C. Vrednostunutar imenovanog registra BROJAC koji se nalazi na adresi 0x0C će biti0x85.

Korišćenje neinicijalizovanih (0xFF) vrednosti može dovesti dozabune prilikom kasnije analize programa. Verovatno ćemo se pitati kako smomogli smanjiti vrednost u registru bez njegove prethodne inicijalizacije.

Page 30: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

30

Znači, najpre je potrebno imenovati registar:

BROJAC equ 0x0C

Dalje se treba smanjivati vrednost registra BROJAC sve dok nedostigne vrednost 0x00. Unutar PIC postoji instrukcija kojom se može ovouraditi, uz malu pomoć instrukcije goto i labele. Ta instrukcija ima sledećioblik:

decfsz BROJAC,1

Instrukcija DECFSZ f,d (eng. Decrement f, Skip if zero) znači“Smanji vrednost registra f (u ovom slučaju BROJAC odnosno 0x0C) i stavidobijenu vrednost u W ako je d=0, odnosno u registar f ako je d=1. Ukoliko jerezultat nakon smanjenja jednak 0 preskoči sledeću instrukciju”.

Kako se odredište rezultata koristi u dosta instrukcija, a lakše je pamtitiimena umesto brojeva, moguće je i bitu odredišta dati ime, na sledeći način:

W equ .0F equ .1

Mnogo reči, za jednu instrukciju. Pogledajmo njenu primenu u praksi.

BROJAC equ 0x0CPet decfsz BROJAC,Fgoto PetNastavi odavde

Ovde je najpre (inicijalno) postavljena konstanta BROJAC na 0xFF. Usledećem redu definisana je labela nazvana Pet, i zadana je decfszinstrukcija. Decfsz BROJAC,F smanjuje vrednost registra BROJAC za 1, irezultat vraća u registar BROJAC. Ona istovremeno proverava da li je novavrednost registra BROJAC jednaka 0. Ukoliko nije, program se nastavlja odsledeće linije. U sledećoj liniji imamo instrukciju goto, koja vraća izvršenjeprograma na decfsz instrukciju.

To se ponavlja sve dok vrednost registra BROJAC ne budejednaka nuli. Onda program preskače sledeću instrukciju (u ovom primerugoto) i nastavlja od mesta gde je napisano “Nastavi odavde”. Kao što vidimo,ovim se program “vrti” u jednom mestu tačno određeno vreme, pre nego štonastavi dalje. To se naziva “prazna petlja”. Kako bi se jednom petljom postiglomaksimalno kašnjenje od 3μS * 256 = 768μS, biće nam potrebne bar dve petlje(jedna unutar druge) ukupnog kašnjenja od 3μS * 256 * 256 = 0,2S da bismomogli primetiti kako LED treperi.

U prošlom primeru to nije naglašeno, ali svakom programupotrebno je definisati početak (adresu sa koje počinje snimanje kôda) i kraj(posle koga nema više instrukcija). Početak programa se definiše sledećomdirektivom

ORG 0x00

Sada ubacimo ove petlje u program, i dovršimo ga pravećipravi program sa komentarima:

Page 31: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

31

; ****** Imenovanje registra ******STATUSTRISA

equequ

0x030x85

; Adresa STATUS registra; Adresa TRISA registra

PORTA equ 0x05 ; Adresa PORTA registraBROJAC1BROJAC2

equequ

0x0C0x0D

; Prvi brojač za praznu petlju. Inicijalno0xFF; Drugi brojač za praznu petlju. Inicijalno0xFF

RP0F

equequ

0x05.1

; Oznaka bita 5 STATUS registra; Oznaka odredišta rezultata instrukcije

; ****** Podešavanje porta ******orgbsf

0x00STATUS,RP0 ; Prebacuje program u

banku 1movlw b'00000000' ; Postavlja sve pinovemovwf TRISA ; kao izlaznemovwf TRISB ;bcf STATUS,RP0 ; Vraća program u banku 0

; ****** Uključi LED ******

Poc movlw b'00000100' ; Uključuje LED stavljajući vrednostmovwf PORTA ; b'00000100' u W, a zatim i u PORTA

; ****** Prva petlja aktivna pri uključenoj LED oko 0,2S ******

Pet1 decfsz BROJAC1,F ; Smanji BROJAC1 za 1goto Pet1 ; Ukoliko je BROJAC1 jednak 0, nastavi daljedecfsz BROJAC2,F ; Smanji BROJAC2 za 1goto Pet1 ; Ukoliko je BROJAC2 jednak 0, nastavi dalje,

; u suprotnom vrati se na početak petlje.; Ovaj brojač broji nadole od 255 do 0, 255puta; To je tzv. petlja unutar petlje.

; ****** Kašnjenje završeno. Sada isključi LED ******

movlw b'00000000' ; Isključi LED stavljajući 0 u W registar,movwf PORTA ; a zatim u PORTA

; ****** Druga petlja aktivna pri isključenoj LED oko 0,2S ******

Pet2 decfsz BROJAC1,F ; Druga petlja drži LED isključenomgoto Pet2 ; dovoljno dugo da bi se to moglo primetitidecfsz BROJAC2,F ;goto Pet2 ;

; ****** Sada se program vraća na početak ******goto Poc ; Vraćanje na početak programa

; ****** Kraj programa ******end ; Direktiva za označavanje kraja programa.

Page 32: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

32

Radi testiranja programa moramo napraviti sledeću semu:

Takt mikrokontrolera određenje upotrebljenim RCoscilatornim kolom (otpornik od10kΩ i kondenzator od 33pF).

Iako za dati primer nijepotrebno konfigurisati pinoveoba porta, to je poželjno ukolikosu pinovi na PORTBnepovezani. Bolje jeutrošiti instrukciju višenegorizikovati nepouzdan radili oštećenje mikrokontrolera.

U praksi se češće sreće inverzna logika za povezivanje LED tako što seanoda LED poveže na +5V, a katoda (preko otpornika) na pin. Pri tomeće LED svetleti po dovođenju logičke 0 na pin. Ovo je moguće jer pin prilogičkoj 0 može upijati struju do 25mA, a i poželjno zbog manjeg grejanja ipotrošnje mikrokontrolera.

4.5 MPLAB Asembler

U ovom poglavlju upoznaćete se sa MPLAB razvojnim okruženjem,i specijalnim funkcijama njegovog editora.

Asembler služi da tekstualne instrukcije iz .asm fajla pretvori u mašinskikôd koji PIC razume. U protivnom, umesto instrukcije movlw 0x01 trebali bipisati binarni mašinski kôd 110000 00000001.

MPLAB asembler ima mogućnost učitavanja fajla koji sadrži imena. Jošbolje, u sebi ima i predefinisane obrasce (eng. standard code template) za upisasemblerskog programa sa zaglavljem, uobičajenim direktivama, posebnimdelom za interapte (više o njima kasnije).

MPLAB ima jedan poznat bag koji se ogleda u nemogućnosti radasa putanjom do foldera dužom od 51 karaktera. Zato direktno u C: napravimofolder „Moji programi“. U njega kopirajte sledeći fajl:

P16f84.inc - sadrži sve standardne labele

Ovaj fajl trebalo bi da se nalazi u folderu:

Page 33: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

33

C:\Program Files\Microchip\MPASM Suite\P16f84.inc

Onda u tekst editoru napravimo sledeće zaglavlje.

;**********************************************************; Autor :; Datum :; Verzija :; Naslov :;; Opis hardvera :; Opis softvera :; Potrebni fajlovi : p16F84.inc;;**********************************************************

list p=16F84 ; Definiše upotrebljenimikrokontroler

#include <p16F84.inc> ; Ubacuje nazive registra uprogram

CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC; Podešava konfiguracione bitove.; Više o njima kasnije.

ORG 0x00 ; Definiše start programa

; Prostor za programe.

end ; Kraj programa

i snimimo ga u folder „C:\Moji programi“ sa nazivom „Zagl.asm”.

Unutar foldera „C:\Moji programi“ napravimo folder „Proba“.

Ovo zaglavlje možemo koristiti za svaki novi program koji pravimo,međutim uvek ga možemo promeniti, tako da odgovara specifičnimpotrebama.

Ukoliko zavirimo u strukturu p16F84.inc fajla (F3 iz Total Commandera),možemo primeriti da su u njemu imenovani svi registri, pa čak i bitovipojedinih registra. Ukoliko nam njegova trenutna struktura iz bilo kog razlogane odgovara, i ovaj fajl možemo editovati po sopstvenim potrebama. U tomslučaju uvek ga čuvamo zajedno sa .asm programom.

Sada uključimo MPLAB IDE. Ne obazirimo se na prozore koje je otvorio,već sledimo sledeću proceduru: Project, Project Wizard, Next, izaberimoPIC16F84, Next

Page 34: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

34

Izaberimo (ukoliko već nismo) MicrochipMPASM Toolsuite.

Kliknimo na „MPASM Assebmler (Mpasmwin.exe)“, i proverimo da li senalazi u folderu C:\Program Files\Microchip\MPASM Suite. Ukoliko ganema, locirajmo ga ručno klikom na Browse. Ostala dva fajla nam (za sada)nisu bitna.

Next, Upišimo ime projekta (npr. Proba) i izaberimo putanju do ranijenapravljenog foldera C:\Moji programi\Proba

Next, Uđimo u C:\Moji programi. Kliknimo naizmenicno na P16f84.inc,Zagl.asm, i na Add, tako da se oba fajla pojave u desnom prozoru.Kliknimo na slova A pored njih dok se ne promene u C (Copy). Na taj način seodabrani fajlovi kopiraju u trenutni projekat (u folderu Proba), tako da originaliostaju nepromenjeni za idući put. Ostale moguće opcije su U (User) –relativna putanja do fajlova, S (System) – apsolutna putanja i A (Auto) –MPLAB sam odlučuje.

Next i kliknite na

Finish.

U novootvorenom prozoru „Proba.mcw“ duplo kliknimo na Zagl.asm.Otvara se prozor editora u kome možemo pisati naš program.

Sa svim ovim podešavanjima kompletan program bi trebao izgledatiotprilike ovako:

;**********************************************************; Autor Pera Perić; Datum 23.3.2008; Verzija 7,8; Naslov Treptanje LED;; Opis hardvera : - RC oscilator, LED od pina RA2 ka masi; Opis softvera : - Ovim programom omogućeno je treptanje LED;; Potrebni fajlovi : p16F84.inc;**********************************************************

; ****** Inicijalizacija asemblera ******

list p=16F84 ; Definiše upotrebljenimikrokontroler#include <p16F84.inc> ; Ubacuje nazive registra uprogramCONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC; Podešava konfiguracione bitove.

; ****** Imenovanje registra ******

BROJAC1 equ 0x0C ; Prvi brojač za praznu petlju. Inicijalno0xFF

Page 35: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

35

BROJAC2 equ 0x0D ; Drugi brojač za praznu petlju. Inicijalno0xFF

; ****** Podešavanje porta ******

orgbsf

0x00STATUS,RP0 ; Prebacuje program u

BANK1movlwmovwf

b'00000000'TRISA

; Postavlja sve pinove; kao izlazne

movwfbcf

TRISBSTATUS,RP0 ; Vraća program u BANK0

; ****** Uključi LED ******

Poc movlw b'00000100' ; Uključi LED stavljajućib'00100'movwf PORTA ; u W registar, a zatim i uPORTA

; ****** Prve petlja aktivna pri uključenoj LED oko 0,2S ******

Pet1 decfsz BROJAC1,F ; Smanji BROJAC1goto Pet1 ; Ukoliko je BROJAC1 jednak 0, nastavi daljedecfsz BROJAC2,F ; Smanji BROJAC2goto Pet1 ; Ukoliko je BROJAC2 jednak 0, nastavi dalje,

; u suprotnom vrati se na početak petlje.; Ovaj brojač broji nadole od 255 do 0, 255puta; To je tzv. petlja unutar petlje.

; ****** Kašnjenje završeno. Sada isključi LED ******

movlw b'00000000' ; Isključi LED stavljajući 0 u Wregistar,movwf PORTA ; a zatim u PORTA

; ****** Druga petlja aktivna pri isključenoj LED oko 0,2S******

Pet2 decfsz BROJAC1,F ; Druga petlja drži LEDisključenom

goto Pet2 ; dovoljno dugo da bi se to moglo primetitidecfsz BROJAC2,F ;goto Pet2 ;

; ****** Vraćanje programa na početak******

goto Poc ; Vraćanje na početak programa

; ****** Kraj programa ******

end ; Kraj programa.

Page 36: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

36

Kao što se može videti direktiva #include <p16F84.inc> ubacuje fajlp16F84.inc ispred našeg asemblerskog programa. Sam asembler će prikonverziji instrukcija u mašinski kôd uzeti iz fajla nazive samo onih imenovanihregistra koji se koriste u programu. Na taj način program je pregledniji,Nama je skraćeno vreme pisanja programa (za imenovanje registra), aprogram nije ništa duži nego inače.

Sada možemo kompajlirati program. Za kompajliranje pritisnimo tasterF10 na tastaturi. U novootvorenom prozoru „Output“ videćemo kratakopis uspešnosti operacije. Možemo slobodno ignorisati Message [302]. Onanas podseća da upotrebljeni registri (npr. TRISA) nisu u BANK0. Ukolikonas ova poruka nervira, možemo pre prve instrukcije napisati"ERRORLEVEL -302".

U „Output“ prozoru najbitnija je zadnja poruka. Ona mora biti „BUILDSUCCEEDED“.

U folderu „Proba“ sada se nalazi par fajlova. Bitni su nam jedino oni saekstenzijom.err, .lst i.hex.

U fajlu sa .err ekstenzijom, možemo videti spisak grešaka iupozorenja nastalih pri asembliranju programa.

Fajl sa .lst ekstenzijom predstavlja detaljan pregled svihupotrebljenih instrukcija, komentara. Iz njega možemo videti u komtrenutku je tačno nastupila greška u asembliranju.

Fajl sa .hex ekstenzijom predstavlja fajl spreman za snimanje uPIC.

4.6 Ubacivanje programa u kontroler

Za snimanje .hex fajla u PIC neophodan nam je programator kaohardverski deo i određeni softver u kompjuteru preko koga se vršiprogramiranje.

Unutar mikrokontrolera nalaze se takozvani konfiguracioni bitovi. Njimase određuju hardverske specifičnosti mikrokontrolera. Iako su inicijalnoubačeni u CONFIG diirektivu, neki programatori je ignorišu i postupaju posopstvenim setovanjima.

Za PIC16F84 konfiguracioni bitovisu:

Watchdog Timer – dozvoljava odnosno zabranjuje upotrebu WDT uprogramuPower Up Timer Enable – prouzrokuje kašnjenje pri dovođenju napona

napajanja da bi se oscilator mikrokontrolerastabilizovao

Page 37: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

37

Code Protection – onemogućava iščitavanje kôda iz PIC – kopiranjeprogramaOscillator – omogućuje izbor jednog od 4 standardna tipa oscilatora,odnosno

RC – (eng. Resistor Condensator) 1 otpornik i 1 kondenzatorLP – (eng. Low Power) Za kristalne oscilatore male potrošnje 32KHz-200KHzXT – Za klasične kristalne oscilatore 100KHz-4MHzHS – (eng. High Speed) Za kristalne oscilatore veće brzine 4MHz-10MHz

Power Up Timer Enable bit je (osim kada imamo kvalitetanoscilator i kada nam je potreban brz start mikrokontrolera) preporučljivoostaviti uključenim – PWRTE ON.

Code Protection je poželjno isključiti, kako bismo mogli verifikovatiprogram nakon programiranja. Međutim, ukoliko trebamo prodati PIC sanašim programom na koji smo utrošili 3 meseca rada, obavezno bi trebalo daga uključimo.

5.0 Zaključak

Razvoj tehnologije doveo je do sve vece itegracije poluprovodničkihkomponenata, na sve manjem prostoru.To je uslovilo razvoj boljih i “pametnijih”mikrokontrolera.Danas se ni jedan elektronski uređaj ne može zamisliti bezupravljanja.Tu ulogu upravljanja vrše mikrokontroleri.Zbog svoje niske cene, ivisokog nivoa integracije imaju veoma siroku primenu u svim oblastimaupravljanja.

6.0 Literatura

PIC Microcontrollers – Milan Verle PIC 16f84 – Uputstvo za rukovanje Programming and Customizing the PIC Microcontroller, 3rd Ed – Myke

Predko www.google.com http://en.wikipedia.org/wiki/PIC_microcontroller http://www.microchip.com/

Page 38: 94_Zavrsni rad.pdf

Završni rad Programiranje PIC mikrokontrolera i njihova primena

38

7.0 Biografija

Oštreljanović Miroslav, rođen 08.11.1988. godine u Zaječaru.Osnovnu školu “SvetiSava” završava 2003 godine, i iste godine upisuje Mašinsko-Elektrotehničku Školuu Boru, smer Mašinski tehničar za kompijutersko konstruisanje koju završava 2007godine.Po završetku srednje škole upisuje Mašinski fakultet u Nišu školske2007/2008 godine.Osnovne studije na Mašinskom fakultetu završava na smeruMehatronika i upravljanje sa prosečnom ocenom u toku studija 7,3.