TEHNIČKO VELEUČILIŠTE U ZAGREBU ELEKTROTEHNIČKI ODJEL

Mikrokontrolerski sustavi

Goran Malčić, dipl.ing. mr. sc. Velimir Rajković, dipl.ing.

SADRŽAJ

1 2
2.1 2.2

Uvod................................................................................................................ 5 Podjela računala ............................................................................................ 6
''Off line'' računala ............................................................................................... 6 ''On line'' računala................................................................................................ 6

3
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10

Osnovni sklopovski elementi za ''on line'' način rada .............................. 10
Senzori i izvršni organi.......................................................................................10 Analogna obrada signala ...................................................................................11 Multipleksori........................................................................................................11 Sample & Hold sklop (S&H)................................................................................12 Analogno digitalni pretvarač..............................................................................13 Digitalno analogni pretvarač ..............................................................................20 Međusklop (Interface) .........................................................................................21 Paritetni sklop .....................................................................................................24 Povezivanje računala sa procesima ..................................................................24 Računalo..............................................................................................................25 Mikroprocesor ...............................................................................................25 Mikrokontroler ...............................................................................................25 Arhitektura računala ......................................................................................27 Razlika između mikroprocesora i mikrokontrolera .........................................29 Memorijska jedinica.......................................................................................30 Adresno polje mikroračunala .........................................................................30 CPU (Central Processing Unit) ......................................................................31 Sabirnica .......................................................................................................32 U/I jedinica ....................................................................................................33 Serijska komunikacija....................................................................................33 Slobodni brojač .............................................................................................34 Sigurnosni brojač (Watchdog timer) ..............................................................34

3.10.1 3.10.2 3.10.3 3.10.4 3.10.5 3.10.6 3.10.7 3.10.8 3.10.9 3.10.10 3.10.11 3.10.12

4
4.1

Mikrokontroler PIC 16F84............................................................................ 35
Osnovne karakteristike mikrokontrolera PIC 16F84 .........................................35 Karakteristike mikrokontrolera .......................................................................35 Karakteristike ulazno/izlaznih sklopova .........................................................35 Specijalne karakteristike mikrokontrolera ......................................................35 Karakteristike CMOS Flash/EEPROM tehnologije.........................................36

4.1.1 4.1.2 4.1.3 4.1.4 4.2 4.3

Kratak opis mikrokontrolera ..............................................................................36 Raspored nožica .................................................................................................37
1

4.4 4.5 4.6 4.7 4.8

Generatori takta ..................................................................................................37 Takt / instrukcijski ciklus....................................................................................39 Obrada instrukcija ..............................................................................................39 Reset....................................................................................................................40 Reset kod pada napona napajanja (Reset on Brown-Out).............................40 PORTA i TRISA ............................................................................................41 PORTB i TRISB ............................................................................................41 Programski brojač (Program Counter) ...........................................................43 Stog (Stack) ..................................................................................................44 Status registar ...............................................................................................44 Direktno adresiranje ......................................................................................45 Indirektno adresiranje....................................................................................45 Relativno adresiranje.....................................................................................45 INTCON registar ...........................................................................................47 EECON1 registar ..........................................................................................49 OPTION registar ...........................................................................................50 Ulazno / izlazni sklopovi .....................................................................................41

4.7.1 4.8.1 4.8.2 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.10 4.11 4.12 4.10.1 4.11.1 4.12.1

Organizacija memorije........................................................................................42

Prekidi (Interrupts)..............................................................................................46 Podatkovna EEPROM memorija ........................................................................48 Slobodni brojač TMR0 ........................................................................................49

5
5.1 5.2 5.3 5.4 5.5

Set instrukcija .............................................................................................. 52
Prijenos podataka ...............................................................................................52 Aritmetika i logika ...............................................................................................52 Bit operacije ........................................................................................................52 Upravljanje tokom programa..............................................................................52 Opis pojedinih instrukcija ..................................................................................54

6
6.1

Razvojni alati za PIC 16F84 ......................................................................... 69
Asembler .............................................................................................................69 Elementi programskog jezika asembler .........................................................69

6.1.1

7
7.1 7.2 7.3

MPLAB IDE v6.60 ......................................................................................... 71
MPLAB IDE ..........................................................................................................71 Zahtjevi sustava ..................................................................................................71 Izrada jednostavnog projekta.............................................................................71 Uvod .............................................................................................................71 Pisanje izvornog koda ...................................................................................71 Izrada projekta ..............................................................................................73
2

7.3.1 7.3.2 7.3.3

..............98 Sedamsegmentni zaslon .......101 Digitalni termometar ......11 10.........upisivanje podataka .9 9.......79 8 8...............4.91 9 9...................1 10.................. 90 Uvod....102 Pull-up/pull-down otpornici na portovima............2 10..4................4........čitanje podataka sa memorije ...............2 10............5 10................................................................9 10............................. 106 Uvod....................................111 Inicijalizacija Porta A i Porta E..........................108 Program za aktiviranje porta B ...96 Led diode.............................................................................................117 10................4 9....................................8 9.......................................................113 EEPROM .......107 Primjeri ....................................................4.......12 10....16 3 .........................1 10...................................6 Izgradnja projekta.....................96 Tipkala ................115 Sortiranje sa indirektnim pristupom ...............................4.........2 9...............................106 Makro naredbe ...............................14 10....................................................4.....................................................5 9..........................................................4 10..15 10.....90 Instalacija sustava pri programiranju programskim paketom IC-PROG .....................................................................4.............................................................................................upis podatka u memoriju..................1 8........................................................78 Provjera rada aplikacije ...............................................................3 Programiranje mikrokontrolera PIC 16F877 ..............................................3 10........................................5 7..........10 Opis razvojnog sustava.........................................................................................................................115 Interupt...........................................4........................................................................................................3...............................................116 Preskaler ...................................................................................3 10......................čitanje podataka ..................................114 Zbrajanje dva 16 bitna broja ..........................................................108 Način upisivanja konstanti ..............................................................13 10......106 Potprogrami ..............................100 RS-232 komunikacija ..........................................115 Oduzimanje dva 16 bitna broja...................................................99 Analogno-digitalni pretvarač (A/D converter) .......4..........................................................4...................................4.....2 8......................4...................4............................................................... 96 Napajanje.............3......................................................10 10.....7 10.DS1820 .......................113 FLASH programska memorija ...........4 7..........................109 Usporedba (komparacija) .97 LCD zaslon (display)..................................4....3.......................113 FLASH programska memorija .........77 Pokretanje simulatora....................................109 Zbrajanje i oduzimanje.................................3 9.................................................................. indirektno adresiranje.................................................................105 10 10..4...................................................1 9....................rad sa TMR0 ...............90 Programiranje mikrokontrolera programskim paketom IC-PROG..........7................................................110 Inkrementiranje i dektrementiranje ............4.......8 10.4 Primjeri ...............................................................7 9.109 Naredbe uvjeta.......103 Direktan pristup portovima ..................6 9.6 10...........................................112 EEPROM ..............................................

............................................................... 133 Popis korištene literature:..........................................123 Protok..................................... 136 4 ............................22 10.........4...............17 10..................................19 10...............10...............4...........................122 Usporedba .........................................................119 Dioda ..........24 Dvosmjerna vrtnja motora ......130 11 12 Popis pojmova i kratica:........................................119 LED diode na portu B ....................................20 10...........................18 10.23 10...indirektnim adresiranjem .......................................................................................................................4.........126 Servo motor......4.........125 Pretvorbe ..................................................4..............................................4...............21 10.........................................................................4....................................4.............124 Regulacija temperature ............................

kao i svima koji ulaze u svijet upravljanja pomoću mikrokontrolera. Pomoću sveprisutnih mikrokontrolera i mikroprocesora povećana je pouzdanost i preciznost upravljanja pojedinim sustavom. Uz opći prikaz mikrokontrolerskih i mikroprocesorskih struktura objašnjen je i princip rada sa mikrokontrolerom PIC 16F84 tvrtke Microchip koja je jedna od vodećih u proizvodnji mikrokontrolera. smanjuje dimenzije uređaja i potrošnju energije. Za sve to korišten je programski paket MPLAB IDE tvrke Microchip koji je danas jedan od ponajboljih u tom području i što je još važnije svima dostupan (freeware).1 Uvod Primjenom mikroprocesorskih i mikrokontrolerskih struktura u elektroničkim uređajima postiže se sve više i više hardverska sličnost. U ovom udžbeniku je obrađen veći dio predavanja i vježbi iz kolegija Elektronička računala i računalna oprema koji se održava na Elektrotehničkom odjelu Tehničkog veleučilišta u Zagrebu. kao i simuliranje njegovog rada na računalu uz mnogo primjera sa vježbi. Koristit će studentima s Informatičkog odjela TVZ-a. U drugom dijelu je opisana izrada izvornog kôda i njegovo implementiranje u projekt. Studija računarstva na kolegijima sličnog sadržaja. dok specifičnost funkcija uređaja određuje programska podrška. editiranje i ispravljanje pogrešaka. 5 . Sustav oplemenjen mikrokontrolerom može u potpunosti zamijeniti čovjeka. Zbog jednostavnosti i širokog spektra uporabe proširili su krug ljudi koji se bave elektronikom.

godinu dana ili nikad.line sustavi On.1.2 ''On line'' računala Računala koja rade ″on line″ (slika 2. Koji od ovih načina će se primijeniti ovisi o načinu unosa podataka u računalo te njihove obrade i načinu upotrebe dobivenih rezultata za upravljanje procesom.2. Vrijeme potrebno da se ti podaci prebace u računalo mjeri se uglavnom u milisekundama.2) unose podatke automatski kada su generirani. 2. mjesec. tjedan. pa se tek potom sa tih medija prenosi ili upisuje u računalo. Naravno ovakav sustav nepogodan je za brz i izravan nadzor nad procesima. On-line sustav 6 . zbog toga što je vrijeme potrebno za obradu podataka definirano Sl. optički mediji i drugo). Vrijeme između skupljanja podataka i unosa je po potrebi.1 ''Off line'' računala Off-line prijenos podataka odvija se u dvije faze. priručna memorija. Za takve sustave kažemo da rade u realnom vremenu. Prema načinu unosa podataka u računalo te njihove uporabe za upravljanje tijekom procesa razlikuju se: Off . Sl. za sat ili dva. djelovanje s obzirom na informacije koje dobija od svojih osjetila. tj. Načelo djelovanja čovjeka Računalo u procesnoj tehnici može poslužiti samo za njegov nadzor ili za automatsko upravljanje cjelokupnim procesom. Dakle.2 Podjela računala Na slici 2. prikazano je djelovanje čovjeka s obzirom na okolinu. U prvoj se podaci iz izvora zapisuju na neki prijenosni medij (disketa.1.2. 2. treba razlikovati nadzor nad procesom (očitavanje relevantnih parametara) i upravljanje s njim (podešavanje parametara) bilo izravno (automatski) ili neizravno.line sustavi Nadzor – pojam vezan uz one sustave u kojem prevladavaju otvorene petlje Upravljanje – pojam vezan uz one sustave u kojima prevladavaju zatvorene petlje (automatizirani sustavi) 2. Podatke generiraju razni senzori koji su električnim vodičima spojeni na računalo. Na sličnom principu koristimo računala u procesnoj tehnici.

Iz navedenog razloga ponekad se on-line sustav izbjegava. a to znači da sustav mora prepoznati promjenu van definiranih okvira. omogućena je upotreba šireg spektra mjerne i upravljačke opreme i SCADA sustava uz pojednostavljen rad. neki se procesi ne mogu nadzirati bez on-line sustava nadzora s digitalnim računalom. Osim toga u realnom vremenu mogu se pratiti i predvidjeti tendencije koje se u procesu mogu pojaviti. Znači u takvim situacijama ne traži se idealno rješenje već prvo prihvatljivo. a stanje procesa samo se prikazuje voditelju (osobi) koji odlučuje što treba učiniti. Takav sustav koji može i ne mora biti on-line pomaže voditelju da u kritičnim situacijama donese najbolju odluku.) SCADA (Supervisory Control And Data Acquisition) razvojni sustavi su tijekom prošlih nekoliko godina tehnološki brzo napredovali i pratili razvoj ostalih segmenata informatičke industrije. odnosno digitalna računala s programskom potporom koja se služe bazom znanja koncipiranom od tima vrhunskih stručnjaka za proces koji se nadzire.3. Kod vrlo složenih sustava može se dogoditi da tim programom nisu obuhvaćene baš sve moguće situacije do kojih u životu i radu može doći. Pod tim se misli na prilagodljivost i snalaženje sustava (računala) u promijenjenoj situaciji u odnosu na programski prepoznatljivu i definiranu. No može se dogoditi da voditelj donese neadekvatan zaključak unatoč kvalitetnim informacijama koje mu se predočuju. 7 . prilagoditi se i donijeti više ili manje adekvatno rješenje da bi se sustav ponašao unutar definiranih granica. Za razliku od navedenog. Kvaliteta intervencije u sustavu ovisiti će o kvaliteti algoritma koji su razvijeni za upravljanje procesom i zatim uneseni u obliku programske potpore u računalo. Najznačajniji napredak je napravljen na polju tehnologija veznih uz internet. Ne može se baš sve predvidjeti. Veliki problem SCADA sustava je bio u povezivanju računala s mjernom i upravljačkom opremom zbog nestandardnih programskih sučelja takve opreme prema SCADA sustavima što je rezultiralo ograničavanjem mogućnosti odabira opreme. odnosno SCADA razvojog sustava. Na taj način lako je intervenirati i izbjeći alarmantne situacije. kod off-line obrade koja bi trajala dugo dobiveni rezultati bili bi gotovo nekorisni. jer nikakvo drugo sredstvo nema takvu brzinu rada i moć kao računalo koje može na brze novonastale promjene u procesu smjesta reagirati.Osnovni razlog uporabe on-line sustava jest brzina rada i velike mogućnosti obrade podataka kojom raspolaže digitalno računalo. Dakle nadzor sustava gdje se procesi vrlo brzo mijenjaju gotovo je nemoguć bez primjene digitalnog računala. baziranog na Microsoft OLE (Object Linking and Embedding) tehnologiji za komunikaciju između programskih modula u Windows okolini. Kao primjer navest ćemo nekoliko kontrolora procesa: 1. Današnji SCADA razvojni sustavi omogućavaju povezivanje SCADA sustava s web serverom što omogućava nadzor i upravljanje sustava s udaljenih lokacija korištenjem interneta i web preglednika. Da bi se to izbjeglo sve se više uvode ekspertni sustavi. 2. Osnovno načelo rada ekspertnog sustava prikazano je na slici 2. Daljnji napredak je vidljiv u proširenju postojećih mogućnosti i povećavanju pouzdanosti. Načelna shema ekspertnog sustava Dakle. Sl. Elementi inteligentnog ponašanja vrlo su značajno svojstvo ovih sustava. Napredak tehnologija SCADA sustava je vidljiv u nekoliko segmenata.3. Uvođenjem standardnog programskog sučelja mjerne i upravljačke opreme – OPC (OLE for Process Control).

• Jednostavno i jeftino održavanje Postupnim razvojem došlo se do sustava koji je omogućio jednostavnije povezivanje binarnih signala.2. čip dizajniran isključivo za mobilni telefon bio je ASIC).) FPGA (field-programmable gate array) je poluvodička naprava koja sadrži programabilne logičke komponente i programabilne međuspojeve. Novi kontrolni sustav morao je zadovoljiti slijedeće zahtjeve: • Jednostavno programiranje. programska). XOR. S novim sustavima bilo je po prvi puta moguće iscrtati signale na ekranu. Glavni djelovi PLC-a su: • mikroprocesor s dodatnim električkim sklopovima. bili su određeni u kontrolnom programu. • kvarc za davanje takta procesoru. Ulazni modul treba osigurati: • priključke na koje se priključuju senzori. funkcije brojenja i aritmetičke funkcije. Flash itd. RAM. NOT) ili složenijih kombinacijskih sklopova kao što su dekoderi i jednostavne matematičke operacije. 3. radna. jeftinije i pouzdanije komponente od relejnih kontrolnih sustava. Dizajneri ASIC-a koriste se HDL-om (hardware description language) kao što su Verilog ili VHDL kako bi opisali funkcionalnost ASIC-a. Večina FPGA sadrži i memorijske elemente najčešće flip-flop (bistabilne multivibratore) ili više blokova memorije. memorijske blokove uključujući ROM. funkcije odbrojavanja. nešto kao one-chip programabilni model. EEPROM. putem digitalnih ili analognih ulaznih i izlaznih signala. Moderni ASIC-i često uključuju 32-bitni procesor.karticama).. 4. logičko upravljanje. • memorija (sistemska. • prilagodbu napona. Uvjeti pod kojim su ovi signali trebali biti povezani. • prekidač za uključivanje i isključivanje rada procesora. • sigurno razlikovanje signala 1/0.) programabilni logički upravljač (kontroler) jest digitalni elektronički sustav za uporabu u industrijskom okolišu s programabilnom memorijom za internu pohranu u primjeni orijentiranih upravljačkih naredbi kod implementiranja specifičnih funkcija kao što su npr.) ASIC (application-specific integrated circuit) je integrirani sklop projektiran za za opću upotrebu (npr. OR. Programabilne logičke komponente mogu biti programirane da poboljšaju funkcionalnost osnovnih logičkih operacija (kao što su AND. • Programske izmjene bez sistemskih intervencija (bez mijenjanja ožičenja).izlaznim elementima (modulima . Po definiciji Programibilni logički kontroleri su: Prema DIN EN61131-1 (1994. slijedno upravljanje. Ti logički blokovi kao i međuveze mogu biti programirani i poslije tehnološke proizvodnje preko projektanta tako da FPGA može obavljati logičke operacije koje se u tom trenutku od njega zahtjevaju. Preko sabirnog priključka spaja se centralna jedinica (mikroprocesor) s ulazno . te ih pohraniti u vidu datoteke u elektronsku memoriju. Kako je tehnologija iz godine u godinu napredovala maksimalna složenost ASIC-a je također rasla (od 5000 logičkih vrata do nekoliko milijuna). • Manje. Hijerarhija programabilnih međuveza dopušta logičkim blokovima u FPGA-u da budu međusobno povezani ako je to potrebno i sa sistemskim projektantom. različitim vrstama strojeva ili procesa. Osnovna namjena PLCa je upravljanje.) PLC Prvi programibilni logički kontroleri (PLC) razvijali su inženjeri General Motors-a 1968. kada su pokušali pronaći alternativnu zamjenu za složene relejne kontrolne sustave. 8 . • zaštitu centralne jedinice od napona. • zaštitu centralne jedinice od smetnji. • sklop za opskrbu električnom energijom procesora koji pretvori upravljački istosmjerni napon od 24V u takozvani logički napon (5V).

brojače.4. Njegove zadaće su: • povezivanje s izvršnim elementima. • prilagodba napona. 2. Blok shema PLC-a Izlazne stezaljke 9 . • zaštita centralne jedinice. • odgovara zahtjevima industrijskog okoliša u odnosu na otpornost na povišenu temperaturu. tajmere). • pojačanje snage. • operacijski sustav je razvijen za optimalnu obradu Boolove logike • operacijski sustav potpomognut programskim i dijagnostičkim alatima dopušta direktan pristup na binarne ulaze i izlaze kao i na interne binarne i digitalne memorije (flag.Izlazni modul također posreduje između centralne jedinice i automata. • operacijski sustav omogućava komunikaciju sa računalom. Komunikacijsko sučelje prema uređaju za programiranje ili operatorskom panelu (HMI) te mrežna komunikacija Ulazne stezaljke Centralna procesorska jedinica p MEMORIJA Program Podaci Optoizolacija Optoizolacija Mrežni modul napajanja Sl. vibracije i elektro-magnetska zračenja. Karakteristike programabilnog logičkog kontrolera: • omogućava direktan priključak binarnih senzora i aktuatora. • zaštita od kratkog spoja. registre.

• Mrtva zona .). faza itd. 3. a nakon tih zaključaka djeluje na sustav preko izvršnih organa. Shematski prikaz on-line sustava 3. Sl. brzina. U on-line sustavima se nalazi mnogo analognih veličina stoga signal treba filtrirati. Proces je sredina koja se mjeri te upravlja računalom. rastezanje željeza pri zagrijavanju.1 Senzori i izvršni organi Senzori mjere razne fizikalne veličine (temperatura. Svaki senzor posjeduje dinamičku grešku. • Dinamička greška .koliko senzor "kasni" za promjenama fizičke veličine. 7.odstupanje između pokazane i stvarne vrijednosti fizikalne veličine kada se ova ne mijenja. protok. sposobnost približavanja pravoj vrijednosti fizikalne veličine. Računalo služi za obradu podataka prikupljenih iz procesa. brzina toka iste. Od senzora se u osnovi traži da ne djeluju na svojstva ili ponašanje sredine u kojoj se nalaze. koji ćemo sada razmotriti. elektromotor koji upravlja ventilom. frekvencija. Ova greška nestaje kad se fizikalna veličina prestane mijenjati. struja.1. regulator izgaranja na ložištu itd. ispraviti (linearizirati) i kondicionirati da bi se analogni signal mogao digitalizirati u A/D pretvorniku. Prvi je da se mjerene veličine prikazuju čovjeku te on odlučuje kako će reagirati i drugi način je kada računalo samo djeluje u procesu.1. a koja se ogleda u sljedećim parametrima: • Statička greška .Više o tome smo rekli kod on-line sustava na str. • Mrtvo vrijeme . vlažnost.predstavlja vrijeme potrebno da se promjene fizikalne veličine počnu iskazivati i na izlazu iz senzora. Izvršni organi mogu biti prekidač. To znači da računalo iz samog procesa preko senzora uzima željene informacije te od dobivenih mjernih veličina pomoću određenih algoritama donosi zaključke. Obično se daje u postocima prema najvećoj vrijednosti koja se može mjeriti.je najveće odstupanje od srednje vrijednosti pri ponovljenom mjerenju nepromijenjene fizikalne veličine. Senzori se još i nazivaju mjerni pretvornici. temperatura kotla termoelektrane. kut zakreta. Senzori i izvršni organi za svaki sustav su specifični. itd.je najveća promjena fizikalne veličine do koje se na izlazu iz senzora još uvijek ne očitavaju promijene. • Greška ponovljivosti .) te ih pretvaraju u odgovarajuće električne veličine (napon.3 Osnovni sklopovski elementi za ''on line'' način rada Shematski prikaz sustava koji radi u ″on line″ načinu rada prikazan je slikom 3. Osobitosti o kojima treba voditi računa pri korištenju senzora je točnost. itd. pritisak. 10 . Središnji dio služi za povezivanje procesa i računala. Postoje dva načina rada. Mjeriti se mogu različite pojave kao što je vodostaj rijeke.

Često se koriste i razni filtri kojima je zadatak odstraniti šum. N = 2M D0 DN −1 S0 − S M −1 Sl. 11 . rijetko kada nam je dovoljan samo jedan. Multipleksor (engl. S druge strane za analogno-digitalni pretvarač signali su standardnh veličina (0 . pojačati i filtrirati. 3. Opći prikaz djelovanja multipleksora Na slici 3. Signal je potrebno linearizirati. standardizirani. Karakteristika signala se može poboljšavati i na digitalan način.5 VDC. Mjerena veličina svakog senzora bit će prvo podvrgnuta analognoj obradi. no ne smije se oštetiti informacija koju taj signal nosi.10 VDC.2b. preko sklopa ″ILI″ ovisi o kombinaciji na ulazima za odabiranje podataka S0 i S1 . ali i s povećanjem manjim od 1. prikazana je logička shema multipleksora s četiri ulaza.2 Analogna obrada signala Električni signali koji dolaze iz senzora imaju različite oblike. Kod takvog rješenja mora postojati multipleksor (slika 3. Signal je potrebno propustiti kroz elektronički sklop koji će mu dati oblik i veličinu.2b. 3.3.2a). Data selector) je sklop kojim se podatak sa jednog od više ulaza usmjerava (prenosi) na izlaz. –10 do +10 VDC. To se može prikazati i tablicom stanja slika 3.3 Multipleksori Da bi se upravljalo procesom potrebno je puno različitih senzora. 0 . Koji sklop ″I″ će prenjeti podatak s ulaza na izlaz. tako da se senzoru doda mikroračunalo koje posebnim algoritmima oblikuje signal pa tek tada prenosi u ″glavno″ računalo.2a. 0 .20 mA). Da bi signal doveli u željeno analogno područje često koristimo pojačala s povećanjem većim od 1. Zadatak pojačala je da promjeni vrijednost analognih veličina i prenese ih u novo područje naponskih vrijednosti. Multiplexer) ili selektor (engl. pa se upotrebljava samo jedan A/D pretvarač i interface. Zatim svaka mjerna veličina bi mogla imati svoj A/D pretvarač i svoj interface. S kojeg ulaza će se odabrati podatak i prenjeti na izlaz ovisi o stanju posebnih ulaza za odabiranje (slika 3. Kada je potrebno odabrati jedan od četiri ulazna podatka tada multipleksor treba imati dva ulaza za odabiranje podataka. Podaci sa ulaza dovode se na sklopove ″I″. Broj ulaza za podatke N ovisi o broju ulaza za odabiranje M. Da bi se to postiglo potrebna je elektronička obrada signala.2b). 4 . a da ne pokvari njihovu analognu informaciju (normiranje). Takvo rješenje bi bilo preskupo u sustavima gdje se koristi nekoliko desetaka pa i nekoliko stotina senzora.20 mA.

temperatura prostorije ne može promijeniti u vremenu manjem od desetak sekundi. Stoga se uzorci signala uzimaju prema potrebi obrade mikroračunala. Samo po sebi se nalaže rješenje redom kojim dolaze no to se rijetko primjenjuje.S1 S0 D0 D1 Y D2 D3 Sl. te paralelni otppor R2 (slika 3. Znači mikroračunalo bira redoslijed obrade podataka prema programu koji izvodi. dok se promjena tlaka u parogeneratoru mora mjeriti u milisekudama pa čak i češće (frekvencija uzorkovanja).3.sklopka zatvorena TS . Vremenska konstanta R1C mora biti puno manja od vremena T0N.4 Sample & Hold sklop (S&H) Sample & Hold sklop ima zadaću da u trenutku uzorkovanja očita vrijednost analognog signala na ulazu te da ga zadrži sve do sljedećeg uzorkovanja. Na neki način djeluje kao memorija za pamćenje analogne vrijednosti između uzorkovanja kako se na ulazu u A/D sklop ne bi mijenjala vrijednost tijekom pretvorbe. Logička shema i tablica stanja multipleksora Naravno postaje upitno kojim redom će se signali obrađivati. R1C << T0N.3. kada je sklopka S zatvorena. a vremenska konstanta R2C mora biti puno veća od intervala uzorkovanja TS. Brzina promjene pojedinih mjernih veličina je različita pa tako i njihova gustoća uzimanja uzoraka ne može biti ista.2b. Stvarna shema Sample&Hold sklopa 12 . Tako se npr. 3. 3. R2C >> TS T0N . 3. sadrži i serijski otpor sklopke i vodiča ali i unutarnji otpor izvora signala R1. šaljući adresu ulaznog podatka multipleksoru. Stvarni Sample & Hold sklop uz sklopku i kondenzator.).interval uzorkovanja Sl.

3.4. Proces pretvorbe sastoji se u tome da se ulaznoj veličini koja se nalazi u nekom određenom naponskom intervalu pridruži određeni broj n.Sl. 3. 3. Da bi računalo moglo obrađivati te signale potrebno ih je kodirati.5. Shema S&H sklopa Sl. Jedna je od osnovnih karakteristika A/D i D/A pretvorbe broj koraka odnosno kanala koji određuju rezoluciju. regulaciju ili automatizaciju na svome će ulazu i izlazu u pravilu imati analognu veličinu.6. Najveći je broj procesa u prirodi analogan. kao i blok shema A/D pretvarača. tek tada kada su pretvoreni u binarne brojeve mogu se unositi u računalo. diskretizirati po vremenu i amplitudi. Proces kvantizacije predstavljat će mjerni proces u kojemu se konstatira koliko standardnih mjernih jedinica sadrži mjerna veličina. Pretvorba analogne veličine u digitalnu (i obratno) inherentno je diskontinuirani proces. 13 . Zbog toga je potrebno imati uređaje za automatsko pretvaranje između tih dvaju načina prikaza veličina. Idealna karakteristika A/D pretvorbe prikazana je na slici 3. Signal pri S&H obradi Kašnjenje koje nastaje pri povratku iz stanja zadržavanja u stanje praćenja ograničava frekvenciju uzimanja uzoraka.5 Analogno digitalni pretvarač Digitalni sustavi koji služe za mjerenje. a to vrijedi i za mnoge veličine u tehničkim sustavima. U idealnom slučaju naponski su intervali (ili koraci) jednake širine U K i ponekad se nazivaju kanalima.

ua . Ako je nM maksimalni broj koji odgovara maksimalnom ulaznom naponu UM.Rezolucija ili razlučivanje je širina kanala kao postotak maksimalnog ulaznog napona ili jednostavno njihov omjer.maksimalni ulazni napon UK .ulazni napon n . već samo njegove uzorke u vremenu (slika 3.7. Idealna karakteristika A/D pretvarača i blok shema Analogno-digitalni pretvarač ne pretvara u digitalnu vrijednost cjelokupni analogni signal. 3. Budući da je broj n izražen k binarno sa k bita. maksimalni je broj 2 – 1. onda je širina koraka jednaka UM/nM.broj bita nM . pa se rezolucija svodi na 1/nM.7. 3. Uzorkovanje analognog signala u vremenu 14 .naponski interval (korak) Sl. pa je uobičajeno da se rezolucija jednostavno izražava kao broj bita što ih ima ulazni ili izlazni podatak.).maksimalni broj bita UM . Sl.6.

izlaz iz komparatora odlazi na visoku razinu i vraća bistabil u stanje 0.8. Istovremeno je pobuđen i generator pilastog napona koji je spojen na drugi izlaz komparatora. pa je izlaz komparatora na niskoj razini. Wilkinson-ov A/D pretvarač A/D pretvarač koji ulazni analogni napon pretvara najprije u odgovarajući vremenski interval prikazan je na slici 3. a po amplitudi treba imati dovoljnu veliku razlučivost da bi razlikovala male promjene amplitude. Na drugom ulazu je napon 0. A/D pretvorba je povremeno mjerenje vrijednosti signala ako se promatra kao proces.9. 15 . Ulazna analogna veličina ua nalazi se na jednom od ulaza naponskog komparatora K.8. To znači da koraci kojima se uzima signal kod diskretizacije moraju biti gusti po vremenu da se ne izgubi ni jedan harmonik ulaznog signala. Proces pretvorbe započinje impulsom START koji postavlja bistabil u 1. 3. Kako je signal promjenjiv moramo u određenom trenutku uzeti uzorak (sample) signala i tu vrijednost privremeno pohraniti (hold). Kada pilasti napon naraste do vrijednosti ulaznog napona. a nakon završetka pretvorbe stanje brojila pokazuje traženu digitalnu veličinu u koju je pretvoren ulazni napon. Rad sklopa može se pratiti pomoću dijagrama na slici 3.Da ne bi signal previše izobličili A/D pretvorbom potrebno je dobro provesti diskretizaciju. S & H izvodimo jer mjerenje nije moguće izvesti trenutno već ima određeno trajanje. Shannonov teorem govori da se pri uzimanju uzoraka iz nekog kontinuiranog signala uzorci moraju uzimati barem dvostruko većom frekvencijom nego što je frekvencija najvišeg harmonika koji se uzima u obzir pri razmatranju. Time se otvara ulaz u brojilo i brojilo počinje brojati impulse iz generatora impulsa. Imamo dvije osnovne vrste A/D pretvarača: a) A/D pretvarači s vremenskim ekvivalentom b) A/D pretvarači sa sukcesivnom aproksimacijom c) Sigma-delta A/D pretvarači a) A/D pretvarači s vremenskim ekvivalentom A/D pretvarač s vremenskim ekvivalentom naziva se još i Wilkinson-ov A/D pretvarač. ua up Sl.Treba napomenuti da točnost pretvorbe ovisi o stabilnosti frekvencije generatora impulsa i o linearnosti i stabilnosti pilastog napona. Za vrijeme T dok je ″I″ sklop otvoren impulsi iz generatora pokreću brojilo. Time završava pretvorba napona u vrijeme.

9.Kada suma stepeničastog napona prekorači veličinu ulaznog napona. a stanje bistabila u obliku binarnog podatka predočavaju na digitalni način veličinu ulaznog napona. Bistabili se postavljaju u stanje 1 nizom uzastopnih impulsa. itd. Tako na kraju usporedbe ostaju samo one stepenice čija je suma približno jednaka veličini ulaznog napona. briše se doprinos stepenice koja se pojavila posljednja i izazvala prekoračenje ulaznog napona. 16 . itd. odnosno neznatno niža od njega. pretvorba je završena.3. Prvi od tih impulsa postavi u stanje prvi bistabil najveće težinske vrijednosti. Ako je stepeničasti napon. Zatim se uključuje sljedeći bistabil po težinskoj vrijednosti. sljedeći po redu bistabil B1. Zbog takvog načina rada taj tip A/D pretvarača zove se i A/D pretvarač sa sukcesivnom aproksimacijom.Sl. druga Umax/4. Tako bistabil najmanje težinske vrijednosti B0 upravlja strujom I0 stvarajući najmanju stepenicu napona. i napravi najveću stepenicu Umax/2. onda do tada generirane stepenice ostaju. itd. Pri tome prva stepenica ima veličinu Umax/2. treća Umax/8. Gdje je Umax najveći ulazni napon koji se može pretvarati. Generiranjem svake naponske stepenice upravlja jedan bistabil. koji predstavlja sumu svih stepenica.Taj signal postavi u nulu bistabil koji je generirao posljednju stepenicu. Princip rada Wilkinson-ovog A/D pretvarača b) A/D pretvarači sa sukcesivnom aproksimacijom Pretvarač radi tako da se produženi ulazni napon iz produživača uspoređuje s naponom u obliku stepenica (slika 3.).12. uspoređivač pošalje signal o prekoračenju. manji od produženog ulaznog napona. koji ukljući odgovarajuću struju. propuštajući kroz zajednički otpornik struju proporcionalnu težinskoj vrijednosti toga bistabila u binarnom brojevnom sustavu. Kada se tako izredaju svi bistabili i njihove stepenice. upravlja strujom 2I0 stvarajući tako dvostruko veću stepenicu. koji stvori stepenicu Umax/4. zbog toga prestane teći ona struja kojom upravlja taj bistabil pa nestane i njegova stepenica. Kada stepenasti napon postane veći.

Graf signala sukcesivnog A/D pretvarača 17 . 3.12.Sl.13. 3. A/D pretvarač sa sukcesivnom aproksimacijom Sl.

te zahtjeva veliku složenost digitalnih strujnih krugova. Brojač C1 konstantno broji impulse dobivene iz generatora takta. Iako sigma-delta postoji od polovice prošlog stoljeća. dok brojač C2 samo broji impulse kada je preklopnik zatvoren. koji se oduzima od ulaznog signala. Sigma-delta modulacijska tehnika je vrlo uspješno u upotrebi u analogno-digitalnoj pretvorbi (ADC) nešto više od 20 godina. 18 . ovi pretvarači tradicionalno prikazuju visoku rezoluciju. Zbog ovih ograničenja.a Blok shema Sigma-delta A/D pretvarača Na gornjoj slici ulazni naponski signal VIN je doveden na integrator. broj u brojaču C2 je proporcionalan srednjoj vrijednosti ulaznog signala.13. komparator uključuje ili isključuje referentni napon. Pretpostavimo da je kapacitet brojača C1 1000. Značajno zaostajanje između digitalnog izlaza i njegovog trenutnog pratećeg uzorkovanja. Posljedica visoke rezolucije sigma-delte tehnologije je brzina – sklopovlje treba funkcionirati sa većim brojem uzoraka.3. mnogo većim od pojasne širine maksimalnog signala. i u zadnje vrijeme govor. vrlo niskog frekvencijskog zahtjeva. Nakon svakog perioda od 1000 impulsa. s težnjom da zadrži nulu na izlazu integratora. zvuk i umjerene brzine (100 kHz i 1 MHz). Ove karakteristike sprječavaju korištenje ovih pretvarača u složenim sistemima – nakon prebacivanja iz jednog kanala u drugi zahtjeva se mnogo vremenskih ciklusa za postavljanje digitalnog filtriranja. tek skorašnje prednosti VLSI tehnologija je omogućila uporabu da proteče generiran bit sa 1 bitnim ADC-om. Digitalno filtriranje prikazuje rezultate u dugoj prikrivenosti između početka ciklusa uzorka i prvog ispravnog digitalnog izlaza. Kako ulazni napon raste ili pada.c) Sigma-delta A/D pretvarači Sl. D-bistabil kontrolira preklopnik s kojim uključujemo/isključujemo referentni napon na ulazu u integrator. čiji izlaz se preko komparatora uspoređuje s referentnom naponskom nulom pretvarača.

filter može biti podešen do minimalne razine smetnje sa vrlo specifičnim karakteristikama (npr. drugačije dizajnirane. • Razina smetnje. To upućuje da se izvođenje neće značajnije promjeniti s vremenom i temperaturom. Također. ali i skuplji od jednog pretvarača za multipleksirane ulaze. često će biti efikasniji. koji određuje SNR (Signal-To-Noise Ration – omjer snage signala i smetnje). padu ili rastu digitalnog ulaza. smetnje ubačene kroz pretvarački proces se mogu vrlo uspješno kontrolirati. • Ne zahtjevaju dodatni Sample & Hold strujni krug. DSP (Procesor Digitalnog Signala). u većini slučajeva je dovoljan jednostavni jednopolni RC filter. To je izrazito značajno u zatvorenim kružnim kontrolnim sustavima. odnosno promjena digitalnog izlaza je uvijek ista tj. je neovisana o razini ulaznog signala. oni sami po sebi čine ove uređaje jeftine i pristupačne. Konačno. mikrokontroler. Za razliku od ostalih gdje su zahtjevi osrednji. njena izvedba nije skupa i cijena je stalno u padu.Razlike u odnosu na alternativne tehnologije: • Većina strujnih krugova u sigma-delta pretvaračima je digitalna. te predočavaju manju diferencijalnu nelinearnost. Ustvari. • Prije svega. 50 Hz). • Zahtjevi za analogne protupreklapajuće (anti-aliasing) filtere su minimalni. • Oni su sami po sebi linearni. U višekanalnoj primjeni. • Do tada je stanje digitalnog filtriranja dio nakon A/D pretvaranja. • Oni su sami po sebi monotoni. za visoke rezolutne zahtjeve koriste se druge vrlo sofisticirane (ne preuzorkovane) tehnologije. gdje može uzrokovati nestabilni sustav. arhitekture jedan pretvarač po kanalu. izvedivo je postavljanje pretvarača u jedan integrirani sklop sa dodanim strujnim krugom. gdje nedostaje interpretacija smjera promjena mjerene varijable. veće i skuplje. 19 . kao što su D/A pretvarač. tijekom velike ulazne brzine uzorkovanja i male točnosti A/D pretvorbe.

Propuštanjem te struje kroz otpornik dobije se napon. Tako bit najmanje težinske vrijednosti B0 upravlja strujnim iznosom I0. Sve struje teku u istu točku te je konačan iznos određen binarnim brojem zbroj svih struja. 3.15. itd. 3. Šiljci prijelaznog napona vezani su uz kontinuiranost veličine (slika 3. D/A pretvarač radi tako da svaki bit binarnog podatka upravlja određenim iznosom električne struje proporcionalnog težinskoj vrijednosti tog bit-a. 2n−1 U iz 20 Sl.14. D/A pretvarač D/A pretvarač nam je potreban da bi digitalni signal dobiven iz računala pretvorili u odgovarajući analogni signal najčešće napon ili struju. B1 upravlja strujom 2I0. B2 strujom 3I0. n 1000 0111 Šiljak prijelaznog napona stvarni očitani t Sl. On nam je potreban za prikaz podataka na CRT monitoru. u regulacijskoj tehnici zbog izvršnog sklopa analogne prirode potrebno je digitalne signale pretvoriti u analogne.). ali je ipak analogni signal u mnogo slučajeva pogodniji. Na primjer.3. Graf signala 20 .15.6 Digitalno analogni pretvarač Digitalni signal ima mnoge svoje prednosti.

Ti LSI-sklopovi se rade za standardne vanjske jedinice kao što su disketna jedinica. koje se programski prilagođavaju specifičnim vanjskim jedinicama. 21 . interface) služi za povezivanje računala sa vanjskim uređajima. printeri i sl. Sučelje DTE-DCE i komunikacijski kanal Dva su osnovna tipa prijenosa podataka putem U/I kanala: a) parelelni b) serijski a) Paralelni prijenos podataka ukazuje na istovremeni prijenos bitova preko više komunikacijskih vodova. Mikroračunala imaju posebne LSI-komponente za prijenos podataka između mikroprocesora i vanjskih jedinica. Nečelo paralelnog prijenosa prikazan je na slici 3. dok se DTE koristi za vezu između PC korisnika. Sklop ima svoj registar (privremenu memoriju) koja ima svoju adresu pa mikroprocesor lako na njega prenese podatke. međusklopovi trebaju biti sastavljeni od standardnih elektroničkih dijelova.17. Zadatak međusklopova je da ta dva različita načina rada uskladi tako da čine cjelinu. U/I kanali su priključci ili ulazno/izlazni sklopovi koji omogućuju povezivanje računala sa različitim vanjskim uređajima ili s uređajima unutar kučišta sustava. mada bi bilo prikladnije reći interface u širem smislu. Neposredni ulazno – izlazni prijenos se vrši paralelno.7 Međusklop (Interface) Međusklop (eng. paralelno/serijsku i serijsko/paralelnu pretvorbu. jer oni sadrže interface u užem smislu. itd. Svi potrebni sklopovi za povezivanje na daljinu se također zovu interface. Treba spomenuti da postoje standardni LSI-sklopovi za ulazno – izlazni prijenos. DCE koriste modemi.3. 3. Pošto su vanjski sklopovi jako različiti. tipkovnica. Vanjski sklopovi imaju drugačiji način rada koji je neovisan o načinu rada digitalnog računala. znači prenosi se bit po bit.16. Uređaji za povezivanje udaljenih jedinica s računalom koriste serijsku vezu jer paralelna nije praktična zbog broja vodiča. Najprije treba paralelne podatke pretvoriti u serijske te se na prijemnom mjestu opet pretvaraju u paralelne. To omogućava fleksibilnost i jednostavnost međusklopova. Sl. Uređaji koji koriste serijsku komunikaciju koriste dvije vrste kabela i to: DCE (Data Communications Equipment) i DTE (Data Terminal Equipment). Sklopovi su standardni i direktno su povezani sa sve tri sabirnice. znači da se svi bit-ovi jedne riječi prenose od jednom (to su međusklopovi u užem smislu).

ali je neprikladan za udaljene veze zbog velikog broja vodiča u spojnom kabelu.Sl. 3. Efikasna duljina je 10 m. prijenos je brži od serijskog prijenosa. Načelo rada serijskog prijenosa podataka 22 .18.19. Za razliku od paralenog prijenosa.17. kod serijskog se podaci šalju po jednoj žici. 3. 3. Sl. Shema jedinice za paralelni prijenos b) Serijski prijenos podataka. Kako bitovi prolaze istovremeno. Sl. Načelna shema osam bitnog paralelnog prijenosa Prikazani sustav paralelnog prijenosa podataka razvila je tvrtka CENTRONICS. pa se često tako i naziva. u sklopu sučelja obavezno su ugrađeni registri posmaka koji omogućavaju pretvorbu paralelnog prihvata u serijsko odašiljanje i obratno. Da bi se podaci sa sabirnice mogli redosljedno poslati preko serijskog sučelja.

Osim start i stop bita može se slati i paritetni bit. Postoje dva tipa prijenosa s obzirom na vremensku usklađenost prijenosa: • Sinkroni • Asinkroni Asinkroni način prijenosa podataka najčešće se upotrebljava pri malim brzinama prijenosa tj. a završava stop bitom. kada se prenosi relativno malo bitova u sekundi. Prijenos podataka počinje start bitom. i prijemnik što dolazeće impulse prihvaća i formira podatak spreman za daljnji paralelni prijenos.Sl. na izlazu od -3 do +3V. 3. odašiljača i prijemnika. Postoje i RS-422 (baziran na strujnoj petlji od 4 do 20mA). ali na izlazu i ulazu su različiti naponi. Sl. Na izlazu se napon kreće od -15 do +15V. a ne može detektirati ni višestruke pogreške.20. već se koristi česta resinkronizacija koristeći se start i stop bitovima. Pri sinkronom prijenosu to nije problem jer isti taktni signali određuju mjesto svakog bita koji se prenosi i u odašiljaču i u prijemniku. koji štiti od jednostruke pogreške. Primjer RS-232 signala 23 . 3. Za veće brzine prijenosa upotrebljava se sinkroni prijenos koji mogu prenositi nekoliko puta više bitova u sekundi. Kod asinkronog prijenosa podataka nema informacije o taktu uključenog u samoj poruci. Pri asinkronom načinu prijenosa odašiljač i prijemnik imaju odvojene izvore taktnih signala pa je potrebno relativno velika usklađenost. RS422 podržava vodove do kilometra i veće brzine prijenosa (do 100Kb/s). odnosno točnost tih signala.21. Brzine prijenosa su do 20Kb/s. jer su tada prihvatljive veće međusobne razlike taktnih signala. Postoji odašiljač koji paralelne podatke pretvara u serijske. Također ne može detektirati koji je bit krivo poslan. UART Najčešći tip prijenosnog puta u procesima je RS-232C. Inače je način rada pri sinkronom serijskom prijenosu sličan radu pri asinkronom prijenosu. RS-232C baziran je na naponskom prijenosu.

da senzori izražavaju neke parametre procesa direktno u digitalnom obliku. karakteristični upravo za taj proces. Takve veličine nije potrebno pretvoriti u digitalni oblik. Parametri procesa koji će se upotrijebiti za rad ovise o vrsti procesa i mogu biti različite fizikalne veličine kao što su tlak. protok. odnosno u obliku veličine napona ili struje. ako podatak sadrži neparan broj jedinica.22. Primjena paritetnog sklopa 3. paritetni bit kako bi ukupan broj jedinica bio uvijek paran (metoda parnog broja jedinica) ili neparan (metoda neparnog broja jedinica). Sklop ispituje broj jedinica u podatku i generira paritetni bit. Većina tih senzora izražava parametre (mjerne veličine) procesa u analognom obliku. 24 .8 Paritetni sklop Paritetni sklop koristi se kao generator i ispitivač pariteta pri prijenosu digitalnih signala. dodaje se tzv.). kojom se pokazuje podatak. mjerenje ili nadzor procesa.3. temperatura. Oni povezuju proces sa elektroničkim i računalnim sustavom i mogu se podjeliti u dvije osnovne kategorije: Senzore (mjerne pretvarače. s većom ili manjom točnošću. generator pariteta daje na izlazu stanje 1. najčešće u obliku električnih analognih signala (veličina napona ili struje). Ako 4-bitni podatak ima parni broj jedinica generator pariteta na izlazu daje stanje 0. ako se obradom ulaznih podataka ustanovi da to treba učiniti.22. Taj algoritam se zatim ubacuje u računalo pomoću programa napravljenih upotrebom nekog programskog jezika. Svakoj binarnoj kombinaciji. Izvršni organi služe za djelovanje na proces. mjerne ili nadzorne algoritme kojima se na adekvatan (primjeren) način rješava postavljeni zadatak. specifične samo za taj proces.9 Povezivanje računala sa procesima Da bi se računala mogla primjeniti u vezi sa različitim procesima. omogućavajući upravljanje procesom. Tokom rada na procesu ti se programi izvode u računalu. osjetila) i izvršne organe. 3. iako manja. karakteristične mjerne veličine (parametri procesa) moraju se unositi u računalo koje te podatke obrađuje. nego se mogu bez pretvorbe unositi u računalo. Na mjestu odakle se odašilje digitalni signal paritetni sklop djeluje kao generator paritetnog bita. da se mjere izvorne ili izvedene veličine tog procesa ili da se procesom upravlja pomoću računala. izvodeći karakteristične programe. Izvođenje tih programa omogućuje da se pomoću računala nadzire odvijanje procesa. zato ih prvo treba pretvoriti u digitalni oblik koji je pogodan za unos u računalo. Najprije treba razraditi odgovarajuće upravljačke. Budući da ima puno različitih parametara koji se mogu mjeriti. To mogu biti različiti sklopovi. Da bi računalo moglo raditi sa procesom. Time se postiže da je ukupan broj jedinica podataka i paritetnog bita uvijek paran (slika 3. Za siguran prijenos kodiranih podataka u digitalnim sustavima vrlo često se koristi metoda pariteta. Senzori izražavaju različite parametre procesa. Postoji dakako mogućnost. radioaktivno zračenje itd. Sl. potrebni su i u samom procesu odgovarajući sklopovi. postoji i veliki broj različitih senzora.

10 Računalo Računalo je ''mozak'' jednog ″on line″ sustava. slično kao i računalo. Koprocesor radi paralelno s mikroprocesorom i može preko njemu usmjerenih instrukcija izvršiti vrlo moćne operacije s pokretnim zarezom.3. Naziv ''mikro'' koristi se zbog malih dimenzija. Razvoj mikroprocesora se do danas nije zaustavio. Složenije je praćenje ako treba pratiti stvarnu razinu nivoa tekućine u spremniku. To je bio 4-bitni mikroprocesor s brzinom od 6000 operacija u sekundi. 3. Svi noviji procesori imaju integriran koprocesor u kućište s mikroprocesorom. Tada treba definirati koliko će se nivoa pratiti i tu će se upotrijebiti nekakav potenciometarski sklop koji će mikrokontroleru predati određenu analognu vrijednost koju će ovaj potom pomoću A/D pretvornika obraditi i isporučiti odredištu. Razlog tome je što su mikrokontroleri uglavnom dizajnirani za specifične zadaće vrlo raznolike od slučaja do slučaja. Iz svakodnevne prakse pri uporabi računala opće namijene tip PC-a već je poznato da je standardni ulaz tipkovnica i miš (eventualno upravljačka palica).10. alarmnih sustav.1 Mikroprocesor Mikroprocesor (CPU) je najvažniji elektronički sklop računala. Prvi mikroprocesor proizvela je tvrtka Intel 1971. Mikrokontroler tada ima za obradu samo dva stanja koje opisuje jedan bit. ima zadaću da zamjeni čovjeka u kontroli dijela proizvodnog procesa ili gotovo cijelog proizvodnog procesa. ulazi mogu biti analogne i digitalne prirode i u suštini podatke će isporučivati nekakav mjerni pretvornik (senzor).2 Mikrokontroler Mikrokontroler je elektronički uređaj koji. 25 . Koristeći računalo ti podaci mogu biti obrađeni u vrlo kratkom vremenu pa ta vremenska prognoza postaje upotrebljiva. Ulazi mogu biti vrlo jednostavne izvedbe kao na primjer prekidač u sklopu plovka za nadzor najvećeg ili najnižeg nivoa tekućine u spremniku. od jednostavne regulacije osvjetljenja. Dakle. moguće su male modifikacije. koji preuzima programske instrukcije i na osnovu njih obrađuje podatke. Uz mikroprocesor se može pridodati i matematički koprocesor koji procesoru potpomaže u računskim operacijama. na temelju prikupljenih meteoroloških podataka računalo danas izračunava vremensku prognozu za sutra. Današnji mikroprocesori sadrže preko stotinu milijuna tranzistora ukomponiranih na silicijskoj pločici upakiranoj u kućište. Prvi jači mikroprocesor bio je Intelov 8008 i Motorolin 6800 koji su bili 8-bitni procesori. godine. Tako na primjer. a to im omogućuje programibilnost. dok je standardni izlaz monitor ili pisač. Ako je pak povezan s fotoćelijom za brojanje predmeta po načelu prekidanja svjetlosnog snopa radi se o izravnom brojanju impulsa tijekom rada neovisno o vremenu. Primjera ima mnogo. Program koji je unesen u računalo prilagođava računalo određenom sustavu. Računala tako mogu biti korištena u različite svrhe. pa dao upravljanja robotima u industrijskim pogonima. Ono omogućava brzu reakciju i korekciju u sustavu. za to bi ljudima koristeći meteorološke algoritme trebalo možda mjesec dana i tada bi ti podaci bili nevažni. Teško je definirati što će biti standardni ulaz i izlaz mikrokontroleru. Značajke mikroprocesora: • velika prilagodljivost (univerzalnost) • niska cijena • male dimenzije • velika pouzdanost 3. Gotovo za svaki sustav računalo je sklopovski isto. te se počinju naglo razvijati.10. zvao se 4004. Nakon tog uviđa se velika prednost mikroprocesora. no osnova njihovog rada je u principu ista.

No nisu rijetki slučajevi da se za komunikaciju s čovjekom koristi računalo tipa PC. Uglavnom kontroler ima neki vid komunikacije prema korisniku. Najjednostavniji primjer je lampica upozorenja koja upozorava čovjeka na promjenu ili neispravnost.Izlazi iz mikrokontrolera također mogu biti analogne i digitalne prirode. Naravno. na primjer s lampicama ili s digitalnim pokazivačem. Iz navedenog može se zaključiti da se mikrokontroleri prema načinu izrade i komunikacije s okolišem mogu svrstati u jednu od dvije osnovne kategorije: • Mikrokontroler kao samostalna upravljačka jedinica • Mikrokontroler kao osobita kartica u jednom od utora PC računala U suštini mikrokontroler radi na načelu vrlo bliskom računalu. Analogni izlazi. Pojednostavljeni model mikroprocesora 26 . a složenost mu ovisi o složenosti zadaće koju ima nadzirati. Složeniji izlaz biti će kada se želi pratiti veličina promjene bilo kao analogni ili digitalni prikaz. Sl. 3. mogu se elektromehaničkim sklopovima pretvoriti u neku korisnu radnju kao promjena položaja nekog predmeta.23. povećanje brzine vrtnje motora i slično. bilo naponski ili strujni. On je uistinu malo računalo. ulaz i izlaz mikrokontrolera nije isključivo vezan na komunikaciju sa strojem.

DC (engl. posmak. odnosno operanada. Akumulator sudjeluje i u prijenosu podataka između procesora i ostalih komponenti računala.). Upravljačka jedinica – sastoji se od sklopova za dekodiranje instrukcije i upravljačkih sklopova. godine. kazalo stoga [stack pointer]. Upravljački sklopovi u skladu s operacijskim kodom instrukcije koja se izvršava generiraju niz upravljačkih signala. Interna sabirnica – skup linija za prijenos podataka koje su izvedene na samom mikroprocesorskom čipu.24. pohranjuju kazala koja upućuju na pojedine memorijske lokacije) b) namjenski registri (programsko brojilo [program counter]. - - - Privremeni registar WR (Work Registar) je povezan s jednim od ulaza u aritmetičko-logičku jedinicu i služi za privremeno pohranjivanje jednog od podataka koji sudjeluju u aritmetičkoj ili logičkoj operaciji. logičke operacije I i ILI) Akumulator A služi za privremeno pohranjivanje jednog od operanada (podataka nad kojima se obavlja aritmetička ili logička operacija). Complex Instruction Set Computer) • RISC (engl. Rezultat operacije se najčešće ponovo pohranjuje u akumulator. rezultata. 27 . a to su: • CISC (engl.25. Sustavno je opisao osnovnu građu i djelovanje računala. Reduced Instruction Set Computer) CISC arhitektura (slika 3. registar stanja programa [program status word.10. Događaji u mikroprocesoru odvijaju se u točno utvrđenim diskretnim vremenskom trenucima. Operacijski kod je binarni kod kojim je pojedina instrukcija prikazana i zapisana u memoriji računala. Instrukcijski registar IR je registar u kojem je zapisan operacijski kod čije je izvršavanje u tijeku. osmislio ju je Von Neumann 1945. komplementiranje.- Aritmetičko-logička jedinica (izvršna jedinica) ALU izvršava osnovne aritmetičke i logičke operacije (+. odnosno sabirničkog sučelja povezana s vanjskom sabirnicom. Program Counter) je registar koji sadrži adresu sljedeće instrukcije koja će se izvesti. međurezultata. Programsko brojilo PC (engl. pa se taj registar naziva brojilo podataka. Omogućava prijenos podataka između pojedinih registara. Ovaj privremeni registar nije element programskog modela mikroprocesora. Data Counter) je registar u kojem je zapisana adresa memorijske lokacije na kojoj se nalazi operand. -. aktiviraju promjenama vrijednosti programskog brojila. Ti signali upravljaju prijenosom podataka između registara i aritmetičko-logičke jedinice. statusni registar]) c) namjenski registri kojima korisnik ne može pristupiti (IR – registar instrukcija. aritmetičko-logičke jedinice i upravljačke jedinice. odnosno vanjskog svijeta. omogućavaju prijenose podataka između procesora i memorije i sl. Interna sabirnica je preko međuregistara. Upravljačka jedinica ga automatski inkrementira.3 Arhitektura računala Postoje dvije dominantne arhitekture procesora. - - Registre u procesoru dijelimo na: a) registri opće namjene (služe za privremenu pohranu podataka koji se obrađuju. a na njegovom se modelu temelje i današnja računala (slika 3.) je starija arhitektura od RISC. privremeni registar) 3. Sve operacije unutar mikroprocesora sinkroniziraju se signalom vremenskog vođenja (takt).

Sl. Kao posljedica. počevši drugu instrukciju prije završetka prve. Van Neumannov model računala Da bi popravili performanse CISC arhitektura pokušava smanjiti broj instrukcija koje program mora pozivati. RISC arhitektura pokušava poboljšati performanse reduciranjem broja taktova potrebnih za izvršavanjem zadatka. Pojednostavljena shema CISC arhitekture ili Von Neumann-ove arhitekture Najznačajnije karakteristike CISC mikroprocesora: • proširenje instrukcije • kompleksne strojne instrukcije • dekodiranje instrukcija • razni načini adresiranja memorije • relativno malo registara • viši radni takt RISC arhitektura (slika 3.26. Kao što vidimo na slici 3. Ovo značajno povećava propusnost i čini RISC bržim od CISC-a. Vidimo na slici 3. Jedna mikroinstrukcija. 28 . 3.25. CISC arhitektura koristi samo jednu sabirnicu koja služi kao podatkovna i kao adresna sabirnica. Odvajanjem sabirnica omogućava se da instrukcije mogu biti veće od 8 bit-a. Time se postiže veći protok informacija. Procesor radi više instrukcija odjednom.25.24.26. kad se dekodira u procesoru može postati nekoliko zadataka (tasks) koje procesor mora izvršiti. Da bi to napravili moraju imati velik broj mikro instrukcija koje pokrivaju velik raspon zadataka. RISC sustavi su sposobni procesirati više instrukcija paralelno (pipelining). instrukcije su varijabilne duljine i često zahtjevaju više od jednog takta za njihovo izvršavanje. Zbog ovoga. Ovo znači da zadatak treba više instrukcija koje su jednake duljine i obično trebaju jedan takt za izvršavanje. Imaju mali set pojednostavljenih instrukcija. 3.) računala nastala je na Sveučilištu Harvard.Sl. izvršavajući cijeli mikro kôd odjednom. PIC16F84 koristi 14 bit-a za instrukcije što dozvoljava da sve instrukcije budu od jedne riječi i svaka instrukcija se izvršava u jednom ciklusu osim instrukcija skoka i grananja. da ova koncepcija koristi dvije sabirnice.

27. Pojednostavljena shema RISC arhitekture ili Harvard-ske arhitekture Najznačajnije karakteristike RISC mikroprocesora: • smanjen instrukcijski set • manje kompleksne. Zato se na čip veličine mikroprocesora stavlja cijelo računalo – mikrokontroler.26. MEMORIJA Sl.4 Razlika između mikroprocesora i mikrokontrolera Sa rastom snage mikroprocesora rasla je i njegova primjenjivost. odnosno broj digitalnih i analognih ulaza/izlaza. Od namjene mikrokontrolera ovisiti će broj U/I portova. Mikrokontroleri su uglavnom dizajnirani za specifične zadatke vrlo raznolike od slučaja do slučaja. a složenost mu ovisi o složenosti zadaće koju mora obavljati.10.Sl. 3. Shema mikrokontrolera s njegovim osnovnim elementima PODATKOVNA SABIRNICA 29 . U suštini mikrokontroler je malo računalo. 3. jednostavne instrukcije • nije potrebna kontrolna jedinica za dekodiranje instrukcija • maksimalno četiri načina adresiranja memorije • puno registara • manji radni takt 3.

Model memorijske jedinice 3.6 Adresno polje mikroračunala • Adresno polje – sve moguće lokacije koje neka procesorska jedinica može adresirati (ne moraju biti iskorištene baš sve adrese) • Sa prvi bajt može se adresirati 256 lokacija.reda KB) • Stalna memorija s programskim kodom (u EPROM izvedbi) • Brojači različitih namjena kao sat. ako je Č/P = 1 onda se vrši čitanje u suprotnom vršimo upis. Zato postoji linija Č/P. brojač impulsa.10. Memorija mora biti u mogućnosti da čita i zapisuje podatke.. 3.28. Za dohvat 2 bajta podatka dovoljna su tri zahvata u memoriju. • Brojač za nadzor ispravnog rada – WDT (Watch Dog Timer) • Ulazno/izlazni portovi za prihvat i slanje podataka • A/D i D/A pretvornici razlučivosti prema namjeni (uobičajeni 8-bit) • Širok raspon napona napajanja (2V – 6V) 3.Svim mikrokontrolerima su zajednička sljedeća svojstva: • Relativno mali radni takt (reda 10 MHz) • Mali broj jednostavnih instrukcija (red veličine oko 100) • Radna memorija (RAM . To je vrlo brz način adresiranja.10. 30 . Podatak može biti 8 ili 16 bitni.. Sl. dok se sa dva bajta može adresirati i do 64 K lokacija • Moćno mikroračunalo mora imati različite načine adresiranja Adresiranje memorije vršimo na više načina: • neposredno – naredba sadrži sam podatak s kojim se radi. BCD brojač.5 Memorijska jedinica Dio mikrokontrolera koji je zadužen za čuvanje podataka.

29. Vrijeme izvođenja instrukcija je reda mikrosekunde.• direktno (izravno) – prvi bajt je operacijski kod koji govori koja se operacija radi sa podatkom. 31 . koji preuzima programske naredbe i na osnovu njih obrađuje podatke. • segmentno – zasniva se na činjenici da se programi većinom vrte u jednom dijelu (segmentu) memorije. 32 i 64 bit-a. a ti ″putevi″ se zovu sabirnice. Ovakvim načinom adresiranja može se doduše adresirati bilo koja lokacija u adresnom polju.7 CPU (Central Processing Unit) Mikroprocesor (CPU) je najvažniji elektronički sklop računala. a broj instrukcija i veličina binarnog podatka osnovni su parametri koji definiraju kvalitetu mikroprocesora. Sl.29. Mikroprocesori koji se u računalnim sustavima opće namjene koriste dizajnirani su za rad s podacima duljine 4. čime je spriječena bilo kakva razmijena podataka. jer za dohvat podatka treba puno zahvata u memoriju. • indirektno (posredno) – drugi i treći bajt naredbe pokazuju adresu lokacije(pointera) gdje se nalazi adresa podatka koji se obrađuje. to je vrlo spor način adresiranja. tj. 3. 8. 16. mjenjanjem sadržaja pointera tijekom izvođenja programa bez potrebe mijenjanja glavnog programa. MMU (jedinica za upravljanje memorijom) . Tako podijeljena memorija se adresira segmentno.10. Sadrži do nekoliko milijuna tranzistora ukomponiranih na silicijskoj pločici upakiranoj u plastično kućište. To je vrlo neekonomično adresiranje. Prednost je da se stvarna adresa operanda može programski mjenjati.zadatak Memory Management Unit je da podjeli memoriju na više segmenata. registri su dakle memorijske lokacije čija je uloga da pomognu pri obavljanju raznih matematičkih operacija ili bilo kojih drugih operacija sa podacima gdje god da se oni nalazili. Imamo dvije nezavisne cjeline (memoriju i CPU) koje nisu međusobno povezane . prikazan je primjer centralne procesorske jedinice sa tri registra. Ako naprimjer želimo zbrojiti sadržaj dvije lokacije iz memorije i njihov rezultat ponovo vratiti u memoriju potrebna nam je veza između memorije i CPU. a drugi i treći bajt naredbe pokazuju lokaciju memorije gdje se nalazi podatak koji se želi obraditi. ali za dobivanje samo adrese operanda potrebna su dva zahvata u memoriju. moramo imati neki ″put″ preko kojeg podaci idu iz jednog bloka u drugi. Primjer centralne procesorske jedinice sa tri registra Na slici 3. 3. Naziv ''mikro’’ koristi se zbog malih dimenzija.

Međusobno su odvojene međusklopovima jer se često promet na njima ne odvija istom brzinom. 3. Unutarnja i vanjska komunikacija odvija se preko tri odvojene sabirnice: 1. 32 . višežilnim prenosnim putevima između pojedinih sklopova. 2. koji je na sabirnici podataka. Memorija se sastoji od 16 memorijskih lokacija koja sa centalnom procesorskom jedinicom komunicira preko podatkovne sabirnice (koja je dvosmjerna). prikazana je komunikacija centralne procesorske jedinice sa memorijom.30.) Upravljačke sabirnice – jednosmjerna Naravno. Dakle postoje dva osnovna sustava sabirnica: 1. Primjer komunikacije memorije i centralne procesorske jedinice pomoću sabirnica Na slici 3.8 Sabirnica Prijenos podataka između sklopova unutar mikroprocesora i unutar računala vrlo je značajan dio posla. MEMORIJSKA LOKACIJA 0 MEMORIJSKA LOKACIJA 1 MEMORIJSKA LOKACIJA 2 REGISTAR 1 REGISTAR 2 REGISTAR 3 MEMORIJA PODACI ADRESE MEMORIJSKA LOKACIJA n Kontrolne linije Č/P CPU Sl.) Unutrašnje sabirnice .3. Podatkovna sabirnica sastoji se od onoliko linija koliko memorije želimo adresirati. a služi za prijenos adrese od CPU do memorije. a obavlja se preko SABIRNICA (BUS).30.) Adresne sabirnice – jednosmjerna 3. a upravljačka sabirnica će prijenos odobriti.veze unutar mikroprocesora. Razmjena podataka u mikroprocesoru obavlja se višestruko brže nego između sklopova računala. preko adresne sabirnice određuje se mjesto na koje će se uputiti. O prijenosu podataka između unutrašnje i vanjske sabirnice brinu se posebni upravljači (controller). dok adresna sabirnica (koja je jednosmjerna) povezuje sve blokove unutar mikrokontrolera.10.veze u računalu izvan mikroprocesora. U suštini prijenos podataka je paralelan. te ih je stoga potrebno odvojiti. Podatku.) Podatkovne sabirnice – dvosmjerna 2.) Vanjske sabirnice . komunikacija posredstvom triju sabirnica ubrzava sustav. Broj vodova sabirnice ovisi o broju bit-a koji opisuju podatke koje je potrebno prenjeti.

ULAZNI REGISTAR PODACI IZLAZNI REGISTAR PODACI PODACI U/I jedinica Sl. izlazni ili dvosmjerni. ovu vrstu prijenosa koristimo za slanje manjih podataka. Sl. Serijski prijenos podataka dijelimo na sinkroni i asinkroni. 3.32. Sinkroni prijenos između dva uređaja radi pod zajedničkim taktom. Portovi mogu biti ulazni.10 Serijska komunikacija Ovime smo mikrokontroleru omogućili povezivanje na daljinu. Primjer U/I jedinice 3. skup pravila po kojem se vrši prijenos podataka nazivamo protokol.10. Serijska jedinica 33 . Kod rada s portovima potrebno je prvo odabrati port s kojim se radi.31.10. Da bi prijenos funkcionirao treba odrediti skup pravila po kojima će se odvijati.3. Asinkroni prijenos koristimo kad ne znamo frekvencijski takt drugog uređaja. 3.9 U/I jedinica Ove memorijske lokacije se nazivaju portovi. Paralelni prijenos nije pogodan za velike udaljenosti zbog većeg broja vodiča.

11 Slobodni brojač To je registar čija se vrijednost uvećava u pravilnim vremenskim razmacima. neće doći do upisivanja 0 (znači da se mikrokontroler vrti u beskonačnoj petlji ).33. vrijednost brojača će se povećavati do svoje maksimalne vrijednosti kada će sam resetirati mikrokontroler.34. Sl.10. 3. Ako signal izostane. 34 . Sl. Sigurnosni brojač Na taj način onemogućava se duži nepravilan rad mikrokontrolera bez obzira na uzrok neispravnosti. Slobodni brojač 3. 3. Omogućava nam mjerenje vremena.10.12 Sigurnosni brojač (Watchdog timer) Program u njega upisuje 0 svaki put kad kada se pravilno izvrši.3. Ova metoda višestruko povećava sigurnost sustava kojeg mikrokontroler nadzire/upravlja.

4MHz.2 Karakteristike ulazno/izlaznih sklopova • 13 ulazno/izlaznih pojedinačno upravljivih nožica • velika struja U/I sklopova za napajanje LED dioda: .prekid nakon završetka procesa upisivanja podataka u EEPROM memoriju • oko 1 000 piši/briši ciklusa može podnijeti Flash programska memorija • oko 10 000 000 piši/briši ciklusa može podnijeti EEPROM podatkovna memorija • postojanost podataka u EEPROM podatkovnoj memoriji je više od 40 godina 4. RB5.1.vanjski na nožici RB0/INT .1 4.3 Specijalne karakteristike mikrokontrolera • serijsko In-System programiranje – preko dvije nožice • Power-on Reset (reset pri uključenju) • Power-up Timer (određeno kašnjenje nakon uključenja) • Oscilatorski Start-up Timer (određeno kašnjenje od stabilizacije radne frekfencije) • Watchdog Timer sa vlastitim integriranim RC oscilatorom za neovisan rad 35 . osim instrukcija grananja programa i programskog skoka • radni takt.1.4 4.prekid pri promjeni na RB4.maksimalna ulazna struja po nožici je 25mA . trajanje instrukcijskog ciklusa: 1µs (4 takta vanjskog oscilatora za jednu instrukciju) – mogućnost nabave mikrokontrolera koji podnose 10 MHz i 20 MHz vanjski takt • 14 b veličina riječi instrukcijskog koda • 8 b podatkovna sabirnica • 15 registara specijalne namjene • hardverski stog dubok osam nivoa • tri načina adresiranja: -direktno -indirektno -relativno • 1k programske memorije izvedene u Flash tehnologiji • 68 B podatkovne RAM memorije • 64 B podatkovne EEPROM memorije • četiri izvora prekida: . RB6 i RB7 nožicama porta B .1 Mikrokontroler PIC 16F84 Osnovne karakteristike mikrokontrolera PIC 16F84 Karakteristike mikrokontrolera • samo 35 jednorječnih instrukcija • sve su instrukcije jednociklusne.1.preljev timer-a TMR0 .maksimalna izlazna struja po nožici je 20mA • 8-bit-ni timer/brojač sa 8-bit-nim programibilnim djeliteljem frekfencije 4.

ZA PODATKE RAM SLOBODNI BROJAČ MEM. osim instrukcija skoka i poziva potprograma (za koje su potrebna dva instrukcijska ciklusa). ZA PODATKE EEPROM CPU PORT A PORT B Sl. a prototip zahtjeva optimizaciju. PIC 16F84 ima osam nivoa dubok stog i više prekidnih izvora. i/ili resetom.0V do 6. velika brzina • radni napon od 2. bez odvajanja mikrokontrolera od gotovog sklopa.0V • mala potrošnja energije: - < 2 mA pri naponu napajanju od 5 V i radnom taktu od 4 MHz 15 µA pri naponu napajanju od 2 V i radnom taktu od 32 kHz < 1 µA u standby nčinu rada pri naponu napajanju od 2 V 4.1. To je vrlo korisno u razvoju sklopova gdje mikrokontroler nije fizički dostupan. Incircuit reprogramibilnost omogućuje optimiranje programskog koda unutar sklopa. Izveden je u RISC (Reduced Instruction Set Computer) arhitekturi. 4. To znači da koristi dvije sabirnice. vanjskih ili unutarnjih. podatkovnu (8-bitna) i instukcijsku (14-bit-na). Iz takvog načina rada mikrokontroler se može vratiti u aktivno stanje putem prekida.4 Karakteristike CMOS Flash/EEPROM tehnologije • mala potrošnja. Te ima Watchdog timer sa vlastitim RC oscilatorom koji štiti od softverskog ″zamrzavanja″ ili slučajne beskonačne petlje. Istovremeno izvođenje i prihvaćenje slijedeće instrukcije omogućuje da se svaka instrukcija izvrši u jednom instrukcijskom ciklusu. što unutarnjih. što vanjskih. SLEEP način rada omogućuje štednju energije.2 Kratak opis mikrokontrolera PIC 16F84 je 8-bit-ni mikrokontroler niske cijene. Također obično koriste 2:1 sažimanje koda i 4:1 veću brzinu rada (na 20 MHz) od drugih 8-bit-nih mikrokontrolera iste klase. izveden CMOS tehnologijom.1. Blok shema mikrokontrolera PIC 16F84 36 .• zaštita koda • SLEEP način rada ( za štednju energije) • odabir vrste oscilatora 4. MEM.

2. oscilatoru treba neko vrijeme ∆T da se stabilizira na određenu frekvenciju. 37 . 15.4. 14. 3. 13. Raspored nožica mikrokontrolera PIC 16F84 1. RA2 – druga nožica porta A RA3 – treća nožica porta A RA4/TOCKI – četvrta nožica porta A. 8. Slika 4. 11.3 Raspored nožica Sl.4 Generatori takta PIC 16F84 može raditi sa dvije različite konfiguracije oscilatora. 16. radnog takta 4 MHz. 17. 6. 10 MHz ili 20 MHz ovisno o tipu mikrokontrolera.5. 4. A to su kristalni oscilator (XT) i RC oscilator.2. može biti i ulaz takta za timer/brojač MCLR – reset ulaz i Vpp napon programiranja mikrokontrolera VSS – napajanje (″masa″) RB0/INT – nulti pin porta B i interrupt ulaz RB1 – prva nožica porta B RB2 – druga nožica porta B RB3 – treća nožica porta B RB4 – četvrta nožica porta B RB5 – peta nožica porta B RB6 – šesta nožica porta B i ulaz takta u programskom modu RB7 – sedma nožica porta B i linija za ulaz podataka u programskom modu Vdd – pozitivno napajanje OSC1 – nožica koja služi za spajanje vanjskog oscilatora OSC2 – nožica koja služi za spajanje vanjskog kristalnog oscilatora a ako imamo na OSC1 RC osvilator tada služi kao djelitelj frekvencije OSC1 sa 4 RA0 – nulta nožica porta A RA1 – prva nožica porta A 4. 18. 12. prikazuje oblik signala dobiven iz oscilatora u trenutku uključenja. 10. 7. 5. 9. 4.

4. 4. Spajanje RC oscilatora U +5 T Sl.5.3. Spajanje kristalnog oscilatora Vdd R OSCI 1 C OSCI 2 Sl. 4.C2 OSCI 1 XTAL OSCI 2 C1 Sl. Oblik signala pri uključenju oscilatora t 38 .4.

Q3 i Q4 koji skupa čine jedan instrukcijski ciklus npr. U sljedeća dva takta Q2 i Q3 instrukcijskog ciklusa TCY2 instrukcija koja je bila pozvana i spremljena u instrukcijski registar u prijašnjem TCY1 instrukcijskom ciklusu se dekodira i izvodi. Instrukcijske cikluse dijelimo: • Q1 – pozivanje instrukcije iz programske memorije • Q2 – dekodiranje naredbe iz predhodnog instrukcijskog ciklusa • Q3 – izvođenje naredbe iz predhodnog instrukcijskog ciklusa • Q4 – spremanje instrukcije pozvane u Q1 u instrukcijski registar Uzmimo za primjer instrukcijski ciklus TCY2. TCY1 OSC1 Q1 Q2 Q3 Q4 PC TCY2 TCY3 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Sl.6 Obrada instrukcija Ciklusi povezivanja i izvršavanja instrukcija su tako povezani da je za pozivanje potreban jedan instrukcijski ciklus a za dešifriranje i izvršavanje još jedan.4. No zbog protočne obrade. 39 .5 Takt / instrukcijski ciklus Takt doveden s nožice OSC1 u mikrokontroleru se dijeli na četiri nepreklapajuća takta koje nazivamo Q1. U četvrtom taktu Q4 instrukcijskog ciklusa TCY2 se instrukcija pozvana na Q1 sprema u instrukcijski registar. Q2. Na Q1 takt u instrukcijskom ciklusu TCY2 programski brojač (PC) se uvećava za 1 te poziva instrukciju iz programske memorije. TCY1.6. svaka instrukcija se efektivno izvršava u jednom ciklusu. 4. Vremenski dijagram izvršavanja instrukcije 4.

Ovaj reset traje isto koliko treba oscilatoru da stabilizira frekvenciju (∆T). U 1.5.7. potrebno ju je preko otpornika spojiti na pozitivan pol napajanja Vdd.7.4. PIC 16F84 ima više vrsta resetiranja: 1. Znači ako se mikrokontroler ''smrzne'' ili smo ga tek uključili treba ga resetirati. slika 4. Reset pri prekoračenju Watchdog timera 4.1 Reset kod pada napona napajanja (Reset on Brown-Out) Ovaj impuls generira sam mikrokontroler ako napon napajanja padne ispod dozvoljene granice koja je potrebna za normalan rad mikrokontrolera.7 Reset Reset služi da bi sve registre mikrokontrolera doveli u početni položaj. Resetiranje pri dovođenju napajanja (Power-on Reset). odnosno 72 ms 2. te ga ″drži″ 72 ms u resetu koliko je potrebno da se frekvencija stabilizira. Reset za vrijeme ″Sleep″ načina rada 4. Dovođenje ″0″ na MCLR nožicu 3. 4. RA 2 Vdd RA 3 R RA 4 MCLR Sl. Reset pri padu napona 40 .8. 4.8 V T t Sl. Da bi spriječili slučajno dovođenje ''0'' na MCLR nožicu. slika 4.7.

4.8

Ulazno / izlazni sklopovi

PIC 16F84 ima dva porta, PORTA i PORTB. Portom nazivamo grupu ulazno/izlaznih nožica (pinova) kojima možemo pristupati istovremeno. Fizički, port je registar koji je povezan s pinovima mikrokontrolera. Svi pinovi portova se mogu definirati kao ulazni ili izlazni, prema potrebama sustava. Definiraju se upisivanjem nule i jedinice u registru TRIS, upisivanjem ″1″ pin postaje ulazni a upisivanjem ″0″ izlazni. Pošto imamo dva porta imamo i dva TRIS registra, TRISA i TRISB. PORTA i PORTB se nalaze u banci 0 a TRISA i TRISB u banci 1.

4.8.1

PORTA i TRISA

Ovaj port ima pet pridruženih pinova, od RA0 do RA4. Pin RA4 može biti samo ulazni, jer se na tom pinu nalazi i ulaz takta za brojač TMR0. Bitom T0CS u registru OPTION se bira funkcija (ulaz takta ili standardni ulaz porta) ovog pina, točnije rečeno bira se izvor takta (vanjski ili nutarnji) brojača TMR0.
Primjer konfiguriranja porta:

bsf movlw movwf bcf

STATUS, RP0 b'11111100' TRISA STATUS, RP0

;bank1 ;definiranje ulaznih i izlaznih pinova ;upis u TRISA registar ;bank0

U primjeru su pinovi RA0 i RA1 proglašeni kao izlazni a RA2, RA3 i RA4 ulazni.

PORTA

RA2 RA3 1

TRISA

0

Sl. 4.9. PORTA koristi 5 bitova

4.8.2

PORTB i TRISB

PORTB ima 8 pridruženih pinova, od RB0 do RB7. Svaki pin ima pull-up tranzistor i njime se definira linija na logičku jedinicu. Svim tranzistorima se upravlja pomoću samo jednog bita, RBPU bitom OPTION registra. Četiri pina ovog porta mogu izazvati prekid RB4: RB7 i to samo ako su konfigurirani kao ulazni.
Primjer konfiguriranja porta:

bsf movlw movwf bcf

STATUS, RP0 0x0F TRISB STATUS, RP0

;bank1 ;definiranje ulaznih i izlaznih pinova ;upis u TRISB registar ;bank0 41

bsf bsf bsf bsf

PORTB, 4 PORTB, 5 PORTB, 6 PORTB, 7

;PORTB < 7 : 4 > = 0

Primjer pokazuje kako su pinovi RB0, RB1, RB2 i RB3 proglašeni za ulazne, a pinovi RB4, RB5, RB6 i RB7 za izlazne, te nakon čega su izlazni pinovi postavljeni u jedinicu.

PORTB

RB1 RB2 RB3 1

TRISB

0

Sl. 4.10. PORTB koristi 8 bitova

4.9

Organizacija memorije

PIC16F84 ima dva odvojena memorijska bloka, jedan za podatke i drugi za program. Blok za podatke čini EEPROM memorija, GPR i SFR registri u RAM memoriji a programski blok čini Flash memorija. Programska memorija je izrađena u Flash tehnologiji što omogućuje programiranje mikrokontrolera više puta pa čak i kada bude ugrađen u sustav. Ima 1024 lokacije širine 14 bit-a. Nulta lokacija je rezervirana za reset a četvrta lokacija za prekid (interrupt). Memorija za podatke se sastoji od EEPROM i RAM memorije. EEPROM memorija ima 64 lokacije širine 8 bit-a (sl. 4.11) kojima se pristupa indirektno preko EEADR i EEDATA registara, sadržaj ove memorije se ne gubi pri prekidu napajanja. RAM memorija ima 68 osmobitnih lokacija koje zauzimaju prostor u memorijskoj mapi od 0x0C do 0x4F lokacije. Lokacije RAM memorije se nazivaju GPR (General Purpose Registrers) registri. SFR (Special Function Registers) registri zauzimaju prvih 12 lokacija u banci 0 i banci 1. To su registri specijalne namjene i oni su direktno vezani za rad mikrokontrolera.

42

Sl. 4.11. Organizacija memorije Podatkovna memorija je još podijeljena na dvije banke, BANK0 i BANK1. Banke se biraju preko RP0 bit-a u Status registru.
Primjer:

Bcf Bsf

STATUS, RP0 - odabrana je banka 0 STATUS, RP0 - odabrana je banka 1

4.9.1

Programski brojač (Program Counter)

Programski brojač (PC) je 13 bit-ni registar koji sadrži adresu instrukcije koja se izvršava. Fizički je realiziran pomoću 5 bit-nog registra PCLATH koji predstavlja 5 najviših bit-ova adrese i 8 bit-nog registra PCL koji predstavlja preostalih 8 bit-a adrese.

43

Ako je status registar odredište instrukcije koja utječe na Z. RP1 je uvijek «0» 01 = BANK 0 00 = BANK 1 IRP (Register Bank Select) – osmi bit za indirektno adresiranje RAM-a. bit je setiran kada se oduzima manja vrijednost od veće 1 = pojavio se prijenos najvišeg bit-a rezultata 0 = nema prijenosa najvišeg bit-a rezultata DC (Digit Carry) – isto kao i Carry samo ovaj bit predstavlja prijenos sa četvrtog mjesta 1 = pojavio se prijenos na četvrtom mjestu 0 = nema prijenosa Z (Zero) – bit je setiran kada je rezultat aritmetičko logičke operacije nula 1 = rezultat je nula 0 = rezultat nije nula PD (Power-down) – bit je setiran nakon uključenja napajanja i svakog regularnog reseta 1 = nakon uključenja napajanja 0 = izvršenjem SLEEP instrukcije TO (Time-out) – bit je setiran nakon uključenja napajanja i izvršenja CLRWDT i SLEEP Instrukcije.9. a resetira kad dođe do prekoračenja sigurnosnog brojača 1 = nije bilo prekoračenja sigurnosnog brojača 0 = došlo je do prekoračenja sigurnosnog brojača RP1. Njegova osnovna zadaća je da sačuva vrijednost PC-a nakon što se iz glavnog programa skoči na adresu potprograma. Da bi se program znao vratiti odakle je počeo mora sa stoga vratiti vrijednost PC-a.2 Stog (Stack) PIC 16F84 ima 13-bitni hardverski stog dubok 8 nivoa. čita se kao «0» n – vrijednost nakon reseta C (Carry) – bit na koji utječu operacije zbrajanja i oduzimanja. koje se izvršavaju na kraju potprograma. DC. RP0). RETLW ili RETFIE. Memorijski prostor stoga nije dio ni programske ni podatkovne memorije. reset status (TO. 4.9.3 Status registar U status registru se upisuju aritmetički status ALU (C. a pokazivač stoga nije moguće čitati i u njega upisivati vrijednosti. Z). DC ili C bit tada je upis u ova tri bit-a je onemogućen. ne koristi se kod PIC 16F84 i ne smije biti setiran 0 = banka 2 i 3 1 = banka 0 i 1 44 . RP1. R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP bit 7 RP1 RP0 TO PD Z DC C bit 0 R – bit koji se može očitati W – bit koji se može upisati U – neiskorišten bit. Ovaj registar može biti odredište za bilo koju instrukciju s bilo kojim drugim registrom.4. Sadržaj sa stoga vraća se u programsko brojilo kod izvršavanja instrukcija RETURN. RP0 (Register Bank Select) – bit-ovi za izbor memorijske banke. PD) i bit-ovi za odabir memorijske banke (IRP.

već je radi pomoću IRP bit-a STATUS registra i FSR registra. ako memorijska lokacija 05h sadrži vrijednost 10h i ako memorijska lokacija 06h sadrži vrijednost 0Ah. da je adresa operanda određena relativno prema položaju. odnosno smještzaju same naredbe. Indirektno adresiranje 4.13.14. 45 . Sl. INDF registar vratit će vrijednost 0Ah. 4.Budući da na raspolaganju stoji 8 bitova. Npr.4 Direktno adresiranje Vrši se preko 9 bit-ne adrese koja se dobije povezivanjem sedmog bit-a direktne adrese iz instrukcije i dva bit-a iz STATUS registra (RP1. da se adresi. Naziv relativno adresiranje potječe upravo od činjenice. FSR je pokazivač.9. upišemo li vrijednost 05h u FSR registar. Oblik naredbe koja koristi relativno adresiranje prikazano je na slici 4.6 Relativno adresiranje Adresa operanda u postupku relativnog adresiranja ovisi o smještaju same naredbe unutar memorije. INDF registar vratit će vrijednost 10h. RP0).5 Indirektno adresiranje Ovaj način adresiranja ne uzima adresu iz instrukcije. Relativni pomak računa se kao dvojni komplement. a to znači da on može biti pozitivan i negativan. to je moguće adresirati bilo koju memorijsku lokaciju.12 Direktno adresiranje 4. pribroji pomak. 4.4. IRP1 IRP0 7 0 + odabir banke odabir lokacije 00 00 01 7F BANK 0 BANK 1 Sl. na kojoj se nalazi kod postupka. udaljenu +127 ili -128 memorijskih lokacija od lokacija same naredbe. Adresiranoj lokaciji se pristupa preko INDF registra koji zapravo nije fizički registar već se njegova adresa nalazi u FSR registru.9. Adresa operanda izračuna se tako. Inkrementiranjem FSR registra.9.

15). Oblik naredbe Relativnog adresiranja 4. Prekid glavnog programa PIC 16F84 ima četiri vrste prekida: 1. 4. te nakon izvršenja prekidnog potprograma nastavlja na istom mjestu (Slika 4.Naredbe koje koriste relativno adresiranje su dužine dviju riječi. 4.15. Mana relativnog adresiranja je u relativno kratkom dometu adrese (+127. bez obzira što mikrokontroler radi u tom trenutku. -128 memorijskih lokacija). Kontrolni registar prekida naziva se INTCON i nalazi se na adresi 0Bh. što ih čini prikladnim za upotrebu. 4. RB6 i RB7 nožicama porta B Prekid nakon završetka procesa upisivanja podataka u EEPROM memoriju 46 . Vanjski na nožici RB0/INT Preljev timer-a TMR0 Prekid pri promjeni na RB4. RB5. 3.14. te u potrebi za izračunavanjem relativnog pomaka prilikom pisanja programa. a u slučaju da su zabranjeni. Sl. TOK IZVRŠAVANJA PROGRAMA Vdd R T RB0/INT PROGRAM U KOM SE OBRAĐUJE PREKID NASTAVAK NORMALNOG TOKA IZVRŠAVANJA PROGRAMA Sl. registrira pojedinačne zahtjeve prekida preko svojih bitova. prekida ga.10 Prekidi (Interrupts) Prekid je mehanizam mikrokontrolera koji omogućava da se na neke događaje odgovori u trenutku kada se oni dese. Formula po kojoj se izračunava stvarna adresa glasi: Stvarna adresa (operanda ili skoka) = adresa naredbe+relativni pomak. Njegova uloga je da omogući ili zabrani prekide. Svaki prekid mijenja tok izvršavanja programa. 2.

INTE određujemo vrste prekida. Koristeći sklopke EEIE. Ako se obradi bilo koji od ovih prekida mora se resetirati bit koji je izazvao prekid jer će se u suprotnom prilikom povratka u glavni program prekid ponovno obraditi.6. čita se kao «0» n – vrijednost nakon reseta RBIF (RB Port Change Interrupt Flag) – bit koji nam govori o promjeni na 4.GIE bit može zabraniti ili omogućiti sve prekide odjednom. TOIE. RBIF. Prekidi koji su ostali ne riješeni obrađuju se nakon ponovnog setiranja GIE bit-a. EEIE TOIE RBIE GIE INTE EEIF TOIF RBIF INTF INTERUPT Sl. dok nam sklopke sa desne strane EEIF. 4. 5. TOIF. INTF pokazuju koji se prekid dogodio nekom trenutku.5. Pomoću GIE sklopke omogućujemo bilo koji od četiri moguća prekida. 6 ili 7-og pina porta B 1 = omogućena pojava prekida 0 = onemogućena pojava prekida INTE (INT External Interrupt Enable) – bit koji omogućuje vanjski prekid sa pina RB0/INT 1 = prekid je omogućen 0 = prekid je onemogućen 47 . To je vrlo korisno kod pisanja programa jer omogućuje da se na neko vrijeme zabrane svi prekidi.16. 4.16. Shema prekida Na slici 4.1 INTCON registar R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x GIE bit 7 EEIE T0IE INTE RBIE T0IF INTF RBIF bit 0 R – bit koji se može očitati W – bit koji se može upisati U – neiskorišten bit.10. prikazana je opća shema prekida pomoću sklopki. ili 7-om pinu porta B 1 = najmanje jedan pin je promijenio stanje 0 = nije se desila promjena ni na jednom pinu INTF (INT External Interrupt Flag) – bit koji nam govori da e došlo do vanjskog prekida 1 = prekid se desio 0 = prekid se nije desio T0IF (TMR0 Overflow Interrupt Flag) – bit koji nam govori da je došlo do prekoračenja TMR0 brojača 1 = došlo je do prekoračenja 0 = nije došlo do prekoračenja RBIE (RB Port Change Interrupt Enable) – bit koji omogućava pojavu prekida na promjenu stanja 4. RBIF.

5. Bcf Movlw Movwf Bsf Bsf Bcf Movf STATUS.GIE .W . Vrijednosti 55h i AAh su prvi i drugi ključ koji onemogućuju da dođe do slučajnog upisa u EEPROM.bank0 jer je EEADR na 09h . 3. a EEIF setiran. Najvažnija osobina ove memorije je da ne gubi sadržaj prilikom nestanka napona napajanja.adresa lokacije u koju se pise . Te dvije vrijednosti se upisuju u EECON2.bank0 jer je EEDATA na 08h . 4 i 5 moraju biti izvršene tim redoslijedom i u pravilnim vremenskim razmacima. Za čitanje podatka nije potrebno neko vrijeme kao za upis pa se taj podatak može koristiti već u sljedećoj instrukciji. 2.11 Podatkovna EEPROM memorija PIC 16F84 ima 64 bayt-a EEPROM memorijskih lokacija na adresama od 00h do 63h.RP0 0x00 EEADR 0Xee EEDATA STATUS.bank1 jer je EECON1 na 88h . Programske linije u primjeru označene s 1.podatak ide u EEDATA registar . Bcf Movlw Movwf Movlw Movwf Bsf Bcf Bsf movlw movwf movlw movwf bsf bsf STATUS.inicira upis . Stoga ova memorija služi za čuvanje parametaranekog procesa ili nekih važnih promjenjivih podataka. Primjer djela programa koji vrši čitanje podataka iz EEPROM-a. Nakon upisa WR bit će biti resetiran. 3.drugi kljuc AAh EECON2 . tako da je vrlo važno onemogućiti prekide za vrijeme izvršavanja tih instrukcija. 4.omogućuje se upis . Nakon upisa prekidi se mogu omogućiti. Primjer dijela programa koji vrši upis podatka 0xEE u prvu lokaciju EEPROM memorije.prekidi se omogucuju 48 . što se može iskoristiti za obradu prekida.upisujemo vrijednost 0xEE . 1. 2.adresa lokacije koja se cita .citanje iz EEPROM-a .adresa se prebacuje u EEADR .svi prekidi se onemogucuju .W EEDATA Da bi upisali podatak u EEPROM memoriju treba prvo upisati adresu željene memorijske lokacije u EEADR registar a podatak u EEDATA registar.RP0 EECON. koji služi samo za prihvaćanje ove dvije vrijednosti i time spriječi slučajan upis. Iz EEPROM memorije čitamo podatak tako da setiramo RD bit koji inicira prijenos podataka s adrese koja se nalazi u registru EEADR u EEDATA registar. Nakon toga setiramo WR bit koji pokreće upisivanje podatka na željenu lokaciju.adresa se prebacuje u EEADR .RP0 INTCON.bank1 jer je EEADR na 09h .RP0 0x00 EEADR STATUS.RP0 EEDATA.WR INTCON.GIE EECON1.bank0 jer je EEADR na 09h .RD STATUS.WREN 55h EECON2 AAh EECON2 EECON1.T0IE (TMR0 Overflow Interrupt Enable) – bit koji omogućuje prekid prilikom prekoračenja brojača TMR0 1 = prekid je omogućen 0 = prekid je onemogućen EEIE (EEPROM Write Complete Interrupt Enable) – bit koji omogućava prekid nakon završetka upisa u EEPROM memoriju 1 = prekid je omogućen 0 = prekid je onemogućen GIE (Global Interrupt Enable) – bit koji dozvoljava ili zabranjuje sve prekide 1 = svi prekidi su omogućeni 0 = svi prekidi su onemogućeni 4.prvi kljuc 55h EECON2 .

čita se kao «0» n – vrijednost nakon reseta RD (Read Control) – bit koji inicira prijenos podataka s adrese definirane EEADR u EEDATA registar 1 = inicira čitanje 0 = ne inicira čitanje WR (Write Control) – bit koji inicira upis podataka iz EEDATA registra na adresu koja se nalazi u EEADR registru 1 = inicira upis 0 = ne inicira upis WREN (EEPROM Write Enable) – bit koji omogućuje upis u EEPROM memoriju 1 = upis je dozvoljen 0 = upis nije dozvoljen WRERR (EEPROM Error Flag) – bit koji nam govori da je došlo do greške prilikom upisa u EEPROM 1 = došlo je do greške 0 = do greške nije došlo EEIF (EEPROM Write Operation Interrupt Flag) – bit koji nam govori da je upis u EEPROM završen 1 = upis je završen 0 = upis nije počeo ili nije završen 4.EEPROM memoriji se pristupa preko SFR registara.1 EECON1 registar Bit-ovi 5.2. je prikazana pojednostavljena shema odnosa preskalera i brojača. Ako je dozvoljen prekid. Stanje brojača može se uvećavati korištenjem unutarnjeg takta ili vanjskog koji se uzima s nožice RA4/TOCKI. ako znamo vrijeme koje je potrebno brojaču da napravi puni krug od 0 do 256 tada lako možemo izračunati vrijeme koje je proteklo za bilo koje stanje brojača. U-0 U-0 U-0 R/W-1 R/W-1 R/W-x R/S-0 R/S-x EETE bit 7 R – bit koji se može očitati W – bit koji se može upisati WRERR WREN WR RD bit 0 U – neiskorišten bit. 6 i 7 se ne koriste i pri čitanju su uvijek nule. Izvor takta se bira pomoću bit-a T0CS u OPTION registru. ovo se može iskoristiti za generiranje prekida. a to su: EEDAT A – sadrži podatak koji je pročitan ili ga treba upisati EEADR – sadrži adresu EEPROM lokacije kojoj se pristupa EECON1 – sadrži kontrolne bit-ove EECON2 – služi da zaštiti EEPROM od slučajnog upisa 4. Brojač nam omogućuje da mjerimo vrijeme. PIC16F84 ima 8 bit-ni brojač. Izaberemo li vanjski takt tada je moguće birati i ivicu signala (rastuća ili padajuća) na koju će brojač uvećavati svoju vrijednost. Na slici 2. Nakon svakog prelaska brojača s 255 na 0 setira se bit T0IF u INTCON registru. 49 . T0IF bit mora programer resetirat da bi omogućio generiranje novog prekida. broj bitova određuje do koliko će brojač 8 brojati (2 = 256).12 Slobodni brojač TMR0 Fizički brojač je registar čija se vrijednost stalno uvećava za jedan a kad dođe do 255 kreće sa brojanjem ponovno od nule.11.

Ako dođe do nepravilnog rada mikrokontrolera. PS1. BSF TMR0…) će obrisati preskaler.Sigurnosni brojač (Wachdog timer) čuva mikrokontroler od ″smrzavanja″. Ako je preskaler dodijeljen sigurnosnom brojaču samo instrukcija CLRWDT će obrisati preskaler u isto vrijeme kada i sigurnosni brojač. Preskaler je naziv za dio mikrokontrolera kojim se dijeli instrukcijski ciklus prije nego dođe do logike koja uvećava stanje brojača. sigurnosni brojač ga nakon nekog vremena resetira. najveći djelitelj je 256. 50 . Promjena preskalera je kompletno pod kontrolom programera i može se mijenjati u toku rada programa. 4. a program se počinje izvršavati iz početka. MOVWF TMR0. Da bi spriječili resetiranje za vrijeme normalnog toka programa moramo upisati nulu u WDT registar (instrukcijom CLRWDT) svaki put kad se približi svom prekoračenju. čita se kao «0» n – vrijednost nakon reseta PS0. Kada je preskaler dodijeljen TMR0 brojaču sve instrukcije upisa u TMR0 registar (CLRF TMR0.1 OPTION registar R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU bit 7 INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 0 R – bit koji se može očitati W – bit koji se može upisati U – neiskorišten bit. PS2 (Prescaler Rate Select) – bit-ovi koji definiraju faktor djeljenja preskalera Koristimo li takt od 4 MHz jedan instrukcijski ciklus (4 interna takta) koji traje 1 µs. Broj kojim se dijeli instrukcijski ciklus se definira pomoću prva tri bit-a u OPTION registru. čime se omogućuje mjerenje duljih vremenskih perioda. dodjeljuje se pomoću bita PSA u OPTION registru. Preskaler se može pridružiti brojaču TMR0 ili sigurnosnom brojaču. broj u danoj tablici pokazuje na koliko mikrosekundi se uvećava TMR ili WDT brojač za jedan.12.

Bitovi 000 001 010 011 100 101 110 111 TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128 PSA (Prescaler Assignment) – bit koji vrši dodjelu preskalera 1 = preskaler je dodijeljen WDT brojaču 0 = preskaler je dodijeljen TMR0 brojaču T0SE (TMR0 Sorce Edge Select) – bit kojim se bira brid signala za okidanje brojača TMR0 1 = padajući brid 0 = rastući brid T0CS (TMR0 Clock Source Select) – bit kojim se bira izvor taka za TMR0 1 = vanjski preko RA4/TOCKI nožice 0 = interni takt (¼ takta oscilatora) INTEDG (Interrupt Edge Select) – bit kojim se bira brid signala na koji se pojavljuje vanjski prekid s nožice RB0/INT 1 = rastući brid 0 = padajući brid RBPU (PORB Pull-up Enable) – bit koji uključuje ili isključuje pull-up tranzistore 1 = uključeni 0 = isključeni 51 .

pri čemu se mijenja stanje zastavice Z). a resetirana ako je veći broj oduzet od manjeg. zastavica C je poslije oduzimanja inverzna.2 Aritmetika i logika Od svih aritmetičkih operacija PIC kao i većina mikrokontrolera podržava samo zbrajanje i oduzimanje. negacije (COMF) i rotiranja (RLF i RRF). BTFSC i BTFSS su uvjetne naredbe skoka. SWAPF instrukcija unakrsno zamjeni mjesta četverobitnim poljima unutar registra. samo što prije povratka iz podprograma u W registar upiše konstantu koja je definirana operandom instrukcije.3 Bit operacije Instrukcije BCF i BSF vrše setiranje ili resetiranje jednog bit-a bilo gdje u memoriji (tablica na strani 63). Logička jedinica PIC-a ima mogućnost izvođenja operacija I. u zavisnosti od bit-a koji se testira u ''f'' registru preskače se ili se ne preskače sljedeća naredba programa. zatim prijepis podataka iz W registra u RAM i prijepis podataka iz RAM-a u W registar (ili u istu tu lokaciju RAM-a. 3. Bit koji izlazi iz registra upisuje se u C zastavicu. DC i Z postavljaju se u ovisnosti rezultata te dvije operacije. Ova funkcija nam omogućuje kreiranje Lookup tabela.4 Upravljanje tokom programa Za upravljanje toka programa nam služe instrukcije GOTO. CALL. ILI.23). 52 . EX-ILI. 5. te se upisuje u bit na suprotnoj strani registra. Instrukcija RETFIE služi za povratak iz podprograma a razlikuje se od RETURN po tome što automatski setira bit GIE. Zastavice C. Instrukcija CLRF upisuje nulu u f registar.1 Set instrukcija Prijenos podataka Vrši se između radnog registra (W) i ″f″ registra koji predstavlja bilo koju lokaciju RAM-a (Sl.5 5. a CLRW upisuje nulu u W registar. 5. ''RETLW k'' instrukcija je identična RETURN instrukciji. ali sa izuzetkom jer se oduzimanje vrši kao zbrajanje s negativnom vrijednošću. Prve tri instrukcije iz tablice (na strani 63) osiguravaju upis konstante u W registar (MOVLW je skraćenica od MOVE Literal to W). znači setirana je ako je operacija moguća. Instrukcije koje rotiraju lijevo ili desno pomiču bitove kroz zastavicu C za po jedno mjesto. 5. RETURN.

1 Operacije nad bit-ovima Brisanje bit-a b registra f Postavljanje bit-a b registra f Preskače sljedeću instrukciju ako je rezultat 0 Preskače sljedeću instrukciju ako je rezultat 0 Instrukcije nad konstantama i kontrolne instrukcije Zbrajanje akumulatora i konstante k Logički I akumulatora i konstante k Poziv potprograma Brisanje sigurnosnog brojača Grananje programa Inkluzivni ILI akumulatora i konstante k Upisivanje konstante k u akumulator Povratak iz prekidne rutine Povratak iz potprograma s vrijednošću k u akumulatoru Povratak iz potprograma Postavljanje mikrokontrolera u standby mode Oduzimanje akumulatora od konstante k Ekskluzivni ILI akumulatora i konstante k Tablica instrukcija za mikrokontroler PIC 16F84 goto k iorlw k movlw k retfie retlw k return sleep sublw k xorlw 53 . d f f.1. Z Z Z Z Z Z nijedan Z nijedan Z Z nijedan nijedan C C C. b f.1. d f.Instrukcija addwf andwf clrf clrw comf decf decfsz incf incfsz iorwf movf movwf nop rlf rrf subwf swapf xorwf bcf bsf btfsc btfss addlw andlw call clwrdt f. b f. d f. b k k k Opis Trajanje u strojnim ciklusima 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 1 1 1(2) 1(2) 1 1 2 1 2 1 1 2 2 2 1 1 1 Utječe na STATUS bit-ove C. DC. b f. d f. d f. DC. DC. d f. d f. d f. d f. d f. d f. DC. preskače sljedeću instrukciju ako je rezultat 1 Povećanje registra f za 1 Povećanje registra f za 1.d f. Z nijedan Z nijedan nijedan nijedan nijedan C. preskače sljedeću instrukciju ako je rezultat 0 Inkluzivni ILI akumulatora i f registra Premještanje sadržaja rgistra f Premještanje sadržaja akumulatora u registar f Nul-operacija Rotiranje registra f u lijevo kroz Carry bit Rotiranje registra f u desno kroz Carry bit Oduzimanje akumulatora od registra f Zamjena riječi registra f Ekskluzivni ILI akumulatora i registra f 5. d f f.4. PD nijedan Z nijedan nijedan nijedan nijedan TO . PD C. Z Z Zbrajanje akumulatora i registra f Logički I akumulatora i registra f Brisanje registra f Brisanje akumulatora Komplement registra f Smanjenje registra f za 1 Smanjenje registra f za 1. Z Z nijedan TO . d f.

DC. d Opis: Sadržaj W registra se zbraja s f registrom Ako je d = 0 rezultat se sprema u W registar Ako je d = 1 rezultat se sprema u f registar Operacija: (W) + (f) d Operand: 0 ≤ f ≤ 127. DC.1] Zastavica: C. d ∈ [0. rezultat će bit 1 ako su oba odgovarajuća bit-a operanda 1-inice. Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: ADDWF REG. Rezultat se smješta u W registar. Z Broj riječi: 1 Broj ciklusa: 1 Primjer: ADDLW 0X15 Prije instrukcije: Poslije instrukcije: W = 0x10 W = 0x15 C = 0 (nije došlo do prijenosa jer je rezultat maji od 0xFF) ADDWF Sintaksa: [labela] ADDWF f. W Prije instrukcije: Poslije instrukcije: Primjer 2: W = 0x17 REG = 0xC2 W = 0xD9 REG = 0xC2 C=0 ADDWF INDF.5 ADDLW Opis pojedinih instrukcija Sintaksa: [labela] ADDLW k Opis: Sadržaj W registra se zbraja s 8 bit-nom konstantom k i Rezultat se sprema u W registar Operacija: (W) + k W Operand: 0 ≤ k ≤ 255 Zastavica: C. Operacija: (W) .5.AND. f Prije instrukcije: Poslije instrukcije: W = 0x17 FSR = 0xC2 sadržaj adrese 0xC2 = 0x20 W = 0x17 FSR = 0xC2 sadržaj adrese 0xC2 = 0x37 ANDLW Sintaksa: [labela] ANDLW k Opis: Vrši logičku operaciju I nad sadržajem W registra i konstante k. k W Operand: 0 ≤ k ≤ 255 Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 54 .

FSR = 0xC2 .0000 0010 (0x02) BCF Sintaksa: [labela] BCF f.0000 0011 (0x03) Z = 1 (rezultat je nula) ANDWF Sintaksa: [labela] ANDWF f. (f) d Operand: 0 ≤ f ≤ 127 . w Prije instrukcije: Poslije instrukcije: W = 0x17. REG = 0x02 .1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: ANDWF REG.1100 0010 (0xC2) ------------------------------.0000 0010 (0x02) Primjer 2: ANDWF FSR. f Prije instrukcije: Poslije instrukcije: W = 0x17.1010 1010 (0xAA) . 0 ≤ b ≤ 7 Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer 1: BCF REG. 7 Prije instrukcije: Poslije instrukcije: REG = 0xC7 REG = 0x47 .1100 0010 (0xC2) ------------------------------.0101 1111 (0x5F) ------------------------------.Primjer 1: ANDLW 0x5F Prije instrukcije: Poslije instrukcije: W = 0xA3 W = 0x03 .AND. d ∈ [0.0000 0011 (0x03) Z = 0 (rezultat nije nula) Primjer 2: ANDLW 0x55 Prije instrukcije: Poslije instrukcije: W = 0xAA W = 0x17 .0001 0111 (0x17) W = 0x17.0001 0111 (0x17) W = 0x02. b Opis: Resetira bit b u registru f Operacija: (0) (f) < b > Operand: 0 ≤ f ≤ 127 .0101 0101 (0x55) ------------------------------. REG = 0xC2 . FSR = 0xC2 .0100 0111 (0xC7) (0x47) 55 .1100 0111 .1010 0011 (0xA3) . d Opis: Vrši logičku operaciju I nad sadržajem registara W i f Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: (W) .

Operacija: preskoči narednu instrukciju ako je ( f < b > ) = 0 Operand: 0 ≤ f ≤ 127 . 56 . Ako je u registru bit 1 setiran PC pokazuje na adresu LAB_02. . PC pokazuje na adresu LAB_03. 0 ≤ b ≤ 7 Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer 1: BSF REG.1000 0111 (0x07) (0x87) BSF INDF. 7 Prije instrukcije: Poslije instrukcije: Primjer 2: REG = 0x07 REG = 0x87 . .Testiraj bit broj 1 u REG LAB_02. . . . . . 3 Prije instrukcije: Poslije instrukcije: W = 0x17 FSR = 0xC2 sadržaj adrese (FSR) = 0x20 W = 0x17 FSR = 0xC2 sadržaj adrese (FSR) = 0x28 BTFSC Sintaksa: [labela] BTFSC f. čineći tekuću instrukciju dvociklusnom. b Opis: Setira bit b u registru f Operacija: (1) (f) < b > Operand: 0 ≤ f ≤ 127 . b Opis: Ako je bit b u registru f jednak 0-i onda se preskače sljedeća instrukcija. 3 Prije instrukcije: Poslije instrukcije: W = 0x17 FSR = 0xC2 sadržaj adrese (FSR) = 0x2F W = 0x17 FSR = 0xC2 sadržaj adrese (FSR) = 0x27 BSF Sintaksa: [labela] BSF f. . 1 .Preskoči ovu liniju ako je = 1 LAB_03.Primjer 2: BCF INDF.Ovdje skoči ako je = 0 Prije instrukcije: Programski brojač je bio na adresi LAB_01 Poslije instrukcije: Ako je u registru REG bit 1 resetiran. . 0 ≤ b ≤ 7 Zastavica: Broj riječi: 1 Broj ciklusa: 1 ili 2 u ovisnosti bit-a b Primjer: LAB_01BTFSC REG. . . Ako je bit b jednak nuli tokom izvršavanja tekuće instrukcije onemogućuje se izvršavanje naredne i umjesto nje se izvršava NOP.0000 0111 . .

. . . čineći tekuću instrukciju dvociklusnom. . (PCLATH <4 : 3>) PC <12 : 11> Operand: 0 ≤ k ≤ 2047 Zastavica: Broj riječi: 1 Broj ciklusa: 2 Primjer: LAB_01CALL : LAB_02. Ako je bit b jednak jedinici tokom izvršavanja tekuće instrukcije onemogućuje se izvršavanje naredne i umjesto nje se izvršava NOP.BTFSS Sintaksa: [labela] BTFSS f. . zastavica Z se setira u 1 Operacija: 0 f Operand: 0 ≤ f ≤ 127 Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: CLRF TRISB Prije instrukcije: Poslije instrukcije: TRISB = 0xFF TRISB = 0x00 Z=1 57 . . . . . Prije instrukcije: LAB_02 .Pozovi podprogram LAB_02 Poslije instrukcije: CLRF PC = adresa LAB_01 TOS (vrh stoga) = x PC = adresa LAB_02 TOS (vrh stoga) = LAB_01 Sintaksa: [labela] CLRF f Opis: Sadržaj f registra se izjednačava s 0-om. .Testiraj bit broj 1 u REG LAB_02. . Ako je u registru bit 1 resetiran PC pokazuje na adresu LAB_02. Operacija: (PC) + 1 vrh stoga (TOS – Top Of Stack) k PC <10 : 0>. PC pokazuje na adresu LAB_03. zatim se 11 bit-ni direktni operand k koji sadrži adresu potprograma smješta u PC. . . . b Opis: Ako je bit b u registru f jednak jedinici onda se preskače sljedeća instrukcija. . 1 .Ovdje skoči ako je = 1 Prije instrukcije: Programski brojač je bio na adresi LAB_01 Poslije instrukcije: Ako je u registru REG bit 1 setiran. .Preskoči ovu liniju ako je = 0 LAB_03. Operacija: preskoči narednu instrukciju ako je ( f < b > ) = 1 Operand: 0 ≤ f ≤ 127 . . Prvo se povratna adresa (PC+1) sprema u stog. 0 ≤ b ≤ 7 Zastavica: Broj riječi: 1 Broj ciklusa: 1 ili 2 u ovisnosti bit-a b Primjer: LAB_01BTFSC REG. CALL Sintaksa: [labela] CALL k Opis: Instrukcija poziva podprogram.

d Opis: Komplementira sadržaj f registra Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: ( f ) d Operand: 0 ≤ f ≤ 127 . Operacija: 0 W Operand: Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer: CLRW Prije instrukcije: Poslije instrukcije: CLRWDT Sintaksa: [labela] CLRWDT Opis: Resetira sigurnosni brojač i preskaler a bit-ovi TO i PD se setiraju Operacija: 0 WDT 0 WDT preskaler 1 TO 1 PD Operand: Zastavica: TO . d ∈ [0. PD Broj riječi: 1 Broj ciklusa: 1 Primjer: W = 0x55 W = 0x00 Z=1 CLRWDT Prije instrukcije: Poslije instrukcije: WDT brojač = x WDT preskaler = 1:128 WDT brojač = 0 TO = 1 PD = 1 WDT preskaler = 1:128 COMF Sintaksa: [labela] COMF f.Primjer 2: CLRF INDF Prije instrukcije: Poslije instrukcije: FSR = 0xC2 sadržaj adrese 0xC2 = 0x33 FSR = 0xC2 sadržaj adrese 0xC2 = 0x00 Z=1 CLRW Sintaksa: [labela] CLRW Opis: Sadržaj W registra se izjednačava s nulom. zastavica Z se setira u jedan.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 58 .

komplementiranje ------------------------------1110 1100 (0xEC) Primjer 2: COMF INDF.1] Zastavica: Broj riječi: 1 Broj ciklusa: 1 ili 2 u ovisnosti rezultata 59 .1 d Operand: 0 ≤ f ≤ 127 . Operacija: (f) . f Prije instrukcije: Poslije instrukcije: Primjer 2: REG = 0x01 Z=0 REG = 0x00 Z=1 DECF REG.Primjer 1: COMF REG.0001 0011 (0x13) . d Opis: Umanjuje f registar za jedan Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Ukoliko je rezultat 0 sljedeća instrukcija se izvršava kao NOP čineći tekuću instrukciju dvociklusnom.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: FSR = 0xC2 Sadržaj adrese ( FSR ) = 0xAA FSR = 0xC2 Sadržaj adrese ( SFR ) = 0x55 DECF REG. d ∈ [0. d Opis: Umanjuje f registar za jedan Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: ( f ) . f Prije instrukcije: Poslije instrukcije: DECF Sintaksa: [labela] DECF f. d ∈ [0. w Prije instrukcije: Poslije instrukcije: REG = 0x13 REG = 0x13 W = 0xEC .1 d Operand: 0 ≤ f ≤ 127. w Prije instrukcije: Poslije instrukcije: REG = 0x13 W=x Z=0 REG = 0x13 W = 0x12 Z=0 DECFSZ Sintaksa: [labela] DECFSZ f.

f Prije instrukcije: Poslije instrukcije: Primjer 2: REG = 0xFF Z=0 REG = 0x00 Z=1 INCF REG.Ovde skoči ako je = 0 U ovom primjeru blok naredbi se izvršava onoliko puta koliko je početna vrijednost varijable CNT..CNT = 10 . što je u ovom primjeru 10. d ∈ [0.Umanji sadržaj registra CNT za jedan .. w Prije instrukcije: Poslije instrukcije: REG = 0x10 W=x Z=0 REG = 0x10 W = 0x11 Z=0 60 .10 MOVWF CNT Loop : : DECFSZ CNT.. Operacija: k PC <10:0>.Program nastavlja normalno dalje Prije instrukcije: PC = adresa LAB_00 Poslije instrukcije: PC = adresa LAB_01 INCF Sintaksa: [labela] INCF f.Skoči na LAB_01 . .Preskoči ovu liniju ako je = 0 .Primjer: MOVLW . (PCLATH <4:3>) Operand: 0 ≤ k ≤ 2047 Zastavica: Broj riječi: 1 Broj ciklusa: 2 Primjer: PC <12:11> LAB_00CALL : LAB_01 LAB_01 .. GOTO Sintaksa: [labela] GOTO k Opis: Bezuvjetni skok na adresu k.Blok naredbi . f GOTO Loop LAB_03 .1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: INCF REG. d Opis: Uvećava f registar za jedan Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: (f) + 1 d Operand: 0 ≤ f ≤ 127..

Preskoči ovu liniju ako je = 0 . . (f) d Operand: 0 ≤ f ≤ 127. w Prije instrukcije: Poslije instrukcije: REG = 0x13. Operacija: (W) . IORLW Sintaksa: [labela] IORLW k Opis: Vrši logičku operaciju ILI nad sadržajem registara W i 8 bit-nom konstantom k. d ∈ [0. . W = 0x93 Z=0 61 . . . (k) W Operand: 0 ≤ k ≤ 255 Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer: IORLW 0x35 Prije instrukcije: Poslije instrukcije: IORWF Sintaksa: [labela] IORWF f. . U suprotnom PC pokazuje adresu naredne instrukcije LAB_02.OR.Uvećaj sadržaj REG za jedan . LAB_03. tada PC pokazuje na adresu labele LAB_03. d Operacija: (f) + 1 Operand: 0 ≤ f ≤ 127.OR. Ako je REG = 0.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: W = 0x9A W = 0xBF Z=0 IORWF REG.INCFSZ Sintaksa: [labela] INCFSZ f. W = 0x91 REG = 0x13.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer: LAB_01INCFSZ REG. . d Opis: Uvećava sadržaj f registar za jedan Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Ako je rezultat = 0 naredna instrukcija se izvršava kao NOP čineći instrukciju dvociklusnom. d ∈ [0. . . . d Opis: Vrši logičku operaciju ILI nad sadržajem registara W i f Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: (W) . f LAB_02. rezultat se sprema u W registar. .Ovdje skoči ako je = 0 Prije instrukcije: Programski brojač je bio na adresi LAB_01 Sadržaj REG registra poslije izvršavanja instrukcije REG = REG + 1. .

W = 0x91 Z=0 MOVF FSR.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: EG=0x13. Operacija: (f) d Operand: 0 ≤ f ≤ 127. W = 0x91 REG=0x93. f Prije instrukcije: Poslije instrukcije: W = 0x17 REG = 0xC2 sadržaj adrese 0xC2 = 0x00 W = 0x17 REG=0xC2 sadržaj adrese 0xC2 = 0x00 Z=1 MOVLW Sintaksa: [labela] MOVLW k Opis: 8 bit-nu konstantu k upisuje u W registar. Operacija: k (W) Operand: 0 ≤ f ≤ 255 Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer: MOVLW 0x5A Poslije instrukcije: W = 0x5A 62 .Primjer 2: IORWF REG. f Prije instrukcije: Poslije instrukcije: MOVF Sintaksa: [labela] MOVF f. d Opis: Sadržaj f registra smješta na lokaciju koju određuje operand d Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija d = 1 se koristi za testiranje sadržaja f registra jer izvršavanje ove instrukcije utječe na zastavicu Z. w Prije instrukcije: Poslije instrukcije: Primjer 2: FSR = 0xC2 W = 0x00 W = 0xC2 Z=0 MOVF INDF. d ∈ [0.

Kašnjenje od 1µs pri taktu od 4 MHz PC = x PC = x + 1 Sintaksa: [labela] RETFIE Opis: Povratak iz programa.MOVWF Sintaksa: [labela] MOVWF f Opis: Sadržaj f registra prepisuje se u f registar. 1 GIE Operand: Zastavica: Broj riječi: 1 Broj ciklusa: 2 Primjer: RETFIE Prije instrukcije: Poslije instrukcije: PC = x GIE = 0 PC = TOS GIE = 1 63 . Vrijednost iz TOS-a se smješta u PC. f Operacija: (W) Operand: 0 ≤ f ≤ 127 Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer 1: MOVWF OPTION_REG Prije instrukcije: Poslije instrukcije: Primjer 2: W = 0x40 OPTION_REG = 0x40 W = 0x40 MOVW F INDF Prije instrukcije: Poslije instrukcije: W = 0x17 REG = 0xC2 sadržaj adrese 0xC2 = 0x00 W = 0x17 REG = 0xC2 sadržaj adrese 0xC2 = 0x17 NOP Sintaksa: [labela] NOP Opis: Ne vrši nikakvu operaciju i ne utječe ni na jednu zastavicu. Operacija: Operand: Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer: NOP Prije instrukcije: Poslije instrukcije: RETFIE . Operacija: TOS PC. Omogućuju se prekidi setiranjem bit-a GIE.

d Opis: Sadržaj f registra se rotira za jedno mjesto u lijevo.1 Primjer 1: RLF REG. f<7> C. W. Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: (f<n>) d<n+1> .1] Zastavica: C Broj riječi: 1 Broj ciklusa: 1 C registar 1 PC = x TOS = x PC = TOS TOS = TOS . TOS PC Operacija: (k) Operand: 0 ≤ k ≤ 255 Zastavica: Broj riječi: 1 Broj ciklusa: 2 Primjer: RETLW 0x43 Prije instrukcije: Poslije instrukcije: W=x PC = x TOS = x W = 0x43 PC = TOS TOS = TOS – 1 RETURN Sintaksa: [labela] RETURN Opis: Sadržaj TOS-a smješta u PC Operacija: TOS PC Operand: Zastavica: Broj riječi: 1 Broj ciklusa: 2 Primjer: RETURN Prije instrukcije: Poslije instrukcije: RLF Sintaksa: [labela] RLF f. C d<0> Operand: 0 ≤ f ≤ 127. d ∈ [0. w Prije instrukcije: Poslije instrukcije: REG = 1110 0110 C=0 REG = 1110 0110 W = 1100 1100 C=1 64 .RETLW Sintaksa: [labela] RETLW k Opis: 8 bit-na konstanta k se smješta u W registar a u PC vrijednost s vrha stoga.

f<0> C. C d<0> Operand: 0 ≤ f ≤ 127. Sigurnosni brojač i preskaler su resetirani. Zaustavlja oscilator. Operacija: 0 WDT 0 WDT preskaler 1 TO 1 PD Operand: Zastavica: TO . f Prije instrukcije: Poslije instrukcije: REG = 1110 0110 C=0 REG = 1100 1100 C=1 RRF Sintaksa: [labela] RRF f. PD se resetira a TO setiran. f Prije instrukcije: Poslije instrukcije: SLEEP Sintaksa: [labela] SLEEP Opis: Postavlja mikrokontroler u mod niske potrošnje. d Opis: Sadržaj f registra se rotira za jedno mjesto u desno. d ∈ [0. Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar Operacija: (f<n>) d<n-1>. w Prije instrukcije: Poslije instrukcije: REG = 1110 0110 W=x C=0 REG = 1110 0110 W = 0111 0011 C=0 Primjer 2: RRF REG.1] Zastavica: C Broj riječi: 1 Broj ciklusa: 1 registar 1 C Primjer 1: RRF REG.Primjer 2: RLF REG. PD Broj riječi: 1 Broj ciklusa: 1 REG = 1110 0110 C=0 REG = 0111 0011 C=0 65 .

W = 2. Z = 0. rezultat je nula W = 0x04. 1 Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: REG = 3. C = x. Z = 0. Z Broj riječi: 1 Broj ciklusa: 1 Primjer: W = 0x01. rezultat je pozitivan W = 0x03. Z = x REG = 1. pozitivan rezultat REG = 2. Z = x REG = 0. Z = x W = 0x02. negativan rezultat 66 . W = 2. W = 2. Z = x REG = 0xFF. C = x. Ako je d = f rezultat se sprema u f registar. C = 1. W = 2. d ∈ [0. rezultat je negativan SUBWF REG. Z = x W = 0x00. C = x. Operacija: k – (W) W Operand: 0 ≤ k ≤ 255 Zastavica: DC Broj riječi: 1 Broj ciklusa: 1 Primjer: SUBLW 0x03 Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: SUBWF Sintaksa: [labela] SUBWF f. C = x. C = 1. Z = 1. rezultat se smješta u W registar. Z = x W = 0xFF. Ako je d = w rezultat se sprema u W registar. d Opis: Sadržaj W registra se oduzima od sadržaja f rgistra. C = 0.Primjer: SLEEP Prije instrukcije: Poslije instrukcije: WDT brojač = x WDT preskaler = x WDT brojač = 0x00 TO = 1 PD = 0 SUBLW Sintaksa: [labela] SUBLW k Opis: Sadržaj W registra se oduzima od konstante k. Operacija: (f) – (W) d Operand: 0 ≤ f ≤ 127. C = 1. W = 2.1] Zastavica: C. Z = 0. Z = 1. C = x. DC. Z = 0. C = 1. W = 2. C = x. C = 0. rezultat je nula REG = 1.

0001 1010 (0x1A) Konst equ 0x37 XORLW Konst Prije instrukcije: Poslije instrukcije: W = 0xAF Konst = 0x37 W = 0x98 Z=0 .1010 1111 (0xAF) . Ako je d = f rezultat se sprema u f registar. f<4:7> d<0:3> Operacija: f<0:3> Operand: 0 ≤ f ≤ 127. d ∈ [0. Ako je d = w rezultat se sprema u W registar. k W Operand: 0 ≤ k ≤ 255 Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 Primjer 1: REG = 0xF3 REG = 0x3F XORLW 0xAF Prije instrukcije: Poslije instrukcije: Primjer 2: W = 0xB5 W = 0x1A Z=0 . d Opis: Gornja i donja polovica f registra mijenjaju mjesta. Ako je d = w rezultat se sprema u W registar.SWAPF Sintaksa: [labela] SWAPF f. Operacija: (W) .1010 1111 (0xAF) ------------------------------. d ∈ [0. d Opis: Vrši logičku funkciju isključivo ILI nad sadržajima W i f registara. f Prije instrukcije: Poslije instrukcije: XORLW Sintaksa: [labela] XORLW k Opis: Vrši logičku operaciju isključivo ILI nad sadržajem registara W i 8 bit-nom konstantom k.1001 1000 (0x98) XORWF Sintaksa: [labela] XORWF f.XOR. Operacija: (W) . bit u rezultatu je 1 samo ako su odgovarajući bitovi operanda različiti.0011 0111 (0x37) ------------------------------. d<4:7>.1011 0101 (0xB5) . Ako je d = f rezultat se sprema u f registar. k d Operand: 0 ≤ f ≤ 127. w Prije instrukcije: Poslije instrukcije: Primjer 2: REG = 0xF3 REG = 0xF3 W = 0x3F SWAPF REG.1] Zastavica: Broj riječi: 1 Broj ciklusa: 1 Primjer 1: SWAPF REG.XOR.1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1 67 . rezultat se sprema u W registar.

0001 1010 (0x1A) 68 . W = 0xB5. w Prije instrukcije: Poslije instrukcije: REG = 0xAF. . W = 0xB5. . W = 0x1A. REG = 0xAF.1011 0101 (0xB5) ------------------------. W = 0xB5. f Prije instrukcije: Poslije instrukcije: Primjer 2: REG = 0xAF.1010 1111 (0xAF) ------------------------. REG = 0x1A.0001 1010 (0x1A) XORWF REG.1010 1111 (0xAF) .1011 0101 (0xB5) .Primjer 1: XORWF REG.

6. a asemblerski jezik je skup pravila po kojima se piše program za mikrokontroler. Postupak programiranja mikrokontrolera Program. Program se u asemblerskom jeziku može pisati u bilo kojem programu za obradu teksta koji može spremiti datoteku kao ASCII. sastoji se od riječi i abecednih znakova.asm predstavlja datoteku na disku računala koja je napisana po pravilima asemblerskog jezika. No program napisan u asemblerskom jeziku mora se prevesti u niz nula i jedinica da bi ga mikrokontroler razumio. asm RETURN hex 00 0010 0000 1000 6. Razlikujemo pojam «asembler» i «asemblerski jezik». ta datoteka se pomoću programatora upisuje u mikrokontroler.1 Elementi programskog jezika asembler Osnovni elementi su: - Labele Naredbe Operandi Komentari Direktive 69 .hex je datoteka koja je prevedena u jezik nula i jedinica i to heksadecimalnim zapisom. Asemblerski jezik je razumljiv čovjeku.1. Primjer: ovako izgleda naredba RETURN prevedena asemblerom.1. Program.1 Razvojni alati za PIC 16F84 Asembler Asemblerski jezik je jezik kojim čovjek i mikrokontroler komuniciraju.6 6. Sl. dobije se 14 bit-ni niz nula i jedinica koji je razumljiv mikrokontroleru. Asembler je program prevodilac koji prevodi asemblerski jezik u jezik nula i jedinica.

Labele se pišu u prvoj koloni. Naredbe su definirane upotrebom određenog mikrokontrolera i pri pisanju programa treba samo poštovati način njihove upotrebe.inc'' __CONFIG_CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC 70 . Dužina labele može biti najviše 32 znaka. ″ da bi program bio jasniji i pregledniji. promjenjive vrijednosti ili konstantne u memoriji. To su najčešće registri . bitno je da počinje slovom ili donjom crtom ″_″. Direktiva je slična naredbi. Komentar je tekst koji programer piše nakon naredbe iz znaka ″ . Direktiva koju ćemo koristiti glasi: PROCESOR 16f84 #include ''p16f84. Operandi su elementi naredbi nad kojima se izvršava naredba. ali je nezavisna od modela mikrokontrolera i predstavlja posebnost samog asemblerskog jezika.Labela predstavlja tekstualnu verziju neke adrese u programskoj ili RAM memoriji.

60 MPLAB IDE MPLAB IDE (Integrated Development Environment) je integrirano razvojno okruženje za pisanje i ® TM razvoj programa Microchip-ovih PICmicro MCU porodice mikrokontrolera i dsPIC Digital Signal Controllers. • Prikaz varijabli preko Prozora za gledanje (Watch windows). Pri pokretanju programa na ekranu će se pojaviti MPLAB IDE radna površina (desktop).0 ili noviji 7. dodajemo izvorni kôd projektu.2 Zahtjevi sustava Potrebna je sljedeća minimalna konfiguracija za rad MPLAB-a IDE: • PC kompatibilno računalo • Microsoft Windows 98 SE. Windows XP • 64 MB radne memorije (128MB preporučeno) • 45 MB slobodnog prostora na tvrdom disku • Internet Explorer 5. pisanje. • Vršiti vremenska mjerenje koristeći simulator ili emulator.1 Izrada jednostavnog projekta Uvod Da bi napravili kôd koji se može izvršavati koristeći ciljani PICmicro MCU mikrokontroler. Tada izrađujemo projekt. Sa MPLAB razvojnim okruženjem možemo: • Izraditi i editirati izvorni kôd koristeći ugrađen (build-in) editor.U radnom prostoru će se otvoriti prazan prozor za editiranje. izvorni kôd se treba staviti unutar projekta i tada se kôd izgrađuje koristeći selektirane alate za prevođenje (language tools): asemblere.7 7. Preporuka Copy/Paste.2 Pisanje izvornog koda Krenite sa pisanjem kôda za aplikaciju koristeći MPLAB IDE editor. • Asemblirati.3 7.1 MPLAB IDE v6.U MPLAB-u IDE. 7. itd. kompajlere. • Velika podrška za pitanja preko MPLAB IDE pomoći (Help). i napokon kôd je izgrađen i testiran. 71 . Windows NT SP6. PICSTART Plus ili PRO MATE II programatore uređaja. kompajlirati i povezivati izvorni kôd. • Ispravljati završnu logiku tako da pratimo izvršavanje tijeka programa koristeći ugrađeni(build-in) simulator ili u realnom vremenu sa emulatorima MPLAB ICE 2000 i 4000 ili sa MPLAB ICD 2 internim (in-circuit) pronalazačem grešaka (debagger). Odaberite File>New . alati za prevođenje(language tools) kôda se dodjeljuju projektu.3. Windows 2000 SP2. ® ® • Programiranje firmware-a na uređaje koristeći MPLAB ICD 2.3. Unesite ovaj primjer gotovog kôda. Prvi korak je pisanje vrlo kratkog izvornog kôda koji spremamo u određenu datoteku. 7. projekt menadžer se brine o tim procesima. Windows ME.

brišemo PORTB .BANK0 .RP0 COUNT COUNT.F COUNT.Ta se datoteka nalazi u istom direktoriju .RP0 STATUS.vremensko trajanje petlje 0x0020 0x0021 0x0022 0x00 Main STATUS.title "PIC16F877 brojac" PROCESSOR 16F877 #include <p16f877. 72 .PIC16F877 .specijalnih namjena i njihove adrese od .petlja Init Kada je kôd unesen.inc> .GPS registra .Ova datoteka sadrži sva imena registara .prosljedi na PORTB .BANK1 .W PORTB Delay IncCount .brišemo count . kreće nakon dovođenja napajanja .sve tri adrese se . Napomena: Direktiva «__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC » u izvornom kodu se može podesiti i prilikom učitanja .F D0 DVAR 0xFF DVAR2 .nalaze u BANK0 .asm.pozivanje Timerskog potprograma .exe __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC COUNT equ DVAR equ DVAR2 equ org goto Main bcf bcf clrw movwf bsf movwf bcf clrf IncCount incf movf movwf call goto Delay movlw movwf D0 movwf D1 decfsz goto decfsz goto return end DVAR.početna adresa od koje mikrokontroler .CONT→W .izbriši W registar .RP1 PORTB STATUS.hex datoteke u mikrokontroler programom IC-Prog. odaberemo akciju File>Save i spremimo datoteku u novi direktorij naziva C:\Projekti kao brojac16f877.incrementiramo count .RP0 TRISB STATUS.configuriramo PORTB kao izlazni .F D1 DVAR2.kao i MPASMWIN.

pogledajte Help>MPLAB Editor Help . Bilješka: Nakon spremanja kôda.3. 7. Najlakši način za to je preko MPLAB-ovog Čarobnjaka za projekt (Project Wizard). tekst je prikazan s identifikacijskim bojama.1 1.) Slika 2. itd. komentare.3 Izrada projekta Sljedeći korak pri stvaranju aplikacije je podešavanje projekta. 2. Za sljedeći korak Čarobnjaka pritisnite Next (slika 3). rezervirane riječi. 7. 73 . Ta opcija označavanja bojama se može prilagođavati.Slika 1. Odaberite PIC16F877 sa samo-padajućeg Device izbornika. označavajući kôd. Odaberite Next tipku za nastavak (Slika 2. Za više informacija oko editora. Pokretanje Čarobnjaka (Wizard) Čarobnjak se pokreće akcijom Project>Project Wizard.3.3. Pritisnitie Save. Prikazat će se «Welcome!» ekran. To će biti PIC mikrokontroler korišten u ovoj demonstraciji.

Pritisnite na MPASM Assembler (maasmwin. Puna adresa od MPASM Assembler. nazovite ga Brojac i pritisnite Browse da bi odabrali projektni direktorij koji smo napravili ranije da bi spremili izvorni kôd. 4. C:\Projekti (slika 5.) 74 .exe bi se trebala prikazati u polju Location of Selected Tool kao što je prikazano na slici. Unesite ime projekta. Slika 4.Slika 3. pritisnite Browse za lociranjem mpasmwin. adresa bi se trebala prikazati kao na slici 4.exe.exe). Potvrdite lokaciju Microchip Toolsuite-a. Za sljedeći korak Čarobnjaka pritisnite Next. Ako je netočna ili je prazna. Ako je MPLAB instaliran u izvorni (default) direktorij. Radi ove demonstracije. 3.

. 5. To je jedina datoteka koja je potrebna za stvaranje projekta (sa iznimkom P16F877.H datoteke koja je «sadržana» u brojac16f877.asm. Pronađite mapu C:\Projekti i odaberite brojac16f877. 6. Pritisnite Next.asm (Slika 6.Slika 5. Pritisnite Add>> tipku da bi brojac16f84. Slika 6.).asm dodijelili projektu. 75 . Sada trebamo dodati postojeće datoteke vašem projektu. i nije ju potrebno dodavati).

Slika 7. Pritisnite Finish i završite Čarobnjak. Pritisnite Next za nastavak i dovršenje izrade Čarobnjaka. 8. U ovom finalnom prozoru možemo vidjeti i provjeriti parametre ovog projekta. 76 . 7. Slika 8.

Ako se datoteke nisu uspješno asemblirale. 7. Ako je lokacija ispravna. promijenite ju i tada pritisnite OK. 77 .Prozor projekta na radnoj površini bi trebao izgledati kao na slici 9. SAVJET: Datoteke se mogu dodavati i projekti spremati sa desnim klikom miša u projektnom prozoru.4 Izgradnja projekta Kada smo završili sa stvaranjem projekta. provjerite sljedeće natuknice i ponovno izgradite projekt: ● Provjerite sintaksu i format kôda unesenog u editorski prozor. ● Provjerite da li koristite odgovarajući asembler (MPASM assambler) za PICmicro uređaje. Datoteka bi se trebala uspješno asemblirati i Output prozor bi trebao izgledati kao na slici 10. Slika 10. Odaberite Project>Build All da izgradimo projekt.3. U slučaju greške. Slika 9. vrijeme je da ga izgradimo.exe) i provjerite na njezinu lokaciju. A ako nije. pritisnite Cancel. dvostrukim pritiskom miša na grešku MPLAB će otvoriti odgovarajuću liniju u izvornom kôdu pokazujući na nju sa zelenom strelicom na lijevoj margini prozora izvornog kôda. datoteke se mogu ručno brisati tako da ih odaberemo i pokrenemo izbornik desnim klikom na miša. Ako je asembler javio greške u Output prozoru. Tako će se asemblirati izvorni kôd koristeći Microchipov MPASM toolsuite. Odaberite Project>Set Language Tool Locations. Pritisnite Microchip MPASM Toosuite\Executables\ MPASM Assembler (mpasmwin.

Nakon uspješne izgradnje projekta generira se, alatima za prevođenje, izlazne datoteke. Te datoteke sadrže objektni kôd koji se može upisati u PICmicro mikrokontrolere i informacije (debugging information) koje služe za ispravljanje izvornog kôda i simbolično gledanje varijabla kôda preko prozora za gledanje(Watch windows). Važno: Bilješka: Generirana datoteka.HEX se sada može otvoriti u programu IC-Prog i upisati na PIC 16F877. Velika korist od projekta se najviše vidi kada je mnogo datoteka koje se trebaju kompajlirat\asemblirat i povezat da bi činile izvršnu aplikaciju – kao u stvarnim aplikacijama. Projekti sve to prate. Opcije za izgradnju(build options), se mogu namještati za svaku datoteku od koje svaka može pristupati drugim pogodnostima alata za prevođenje(language tools), kao što su izlazna izvješća i optimizacija kompajlera.

7.3.5

Pokretanje simulatora

Sada kad je projekt izgrađen, trebamo provjeriti da li funkcionira. Da bi to učinili trebamo odabrati alat za pronalaženje pogrešaka (debug tool). To može biti hardwerski ili softwerski alat za inspekciju kôda poslije izvršenja programa (u ovom slučaju brojac16f877.asm). U ovom vodiču ćemo koristiti MPLAB SIM simulator. Simulator je softwerski program koji radi na PC-u i simulira instrukcije od PICmicro mikrokontrolera. Simulator ne radi u «realnom vremenu», zato što simulatorski program ovisi o brzini PC-a, kompleksnosti koda, preljevom (overhead) operativnog sustava i koliko drugih zadaća (tasks) obavlja. Ipak, simulator precizno mjeri vrijeme koje je potrebno da se kôd izvrši kao da radi u realnom vremenu i u aplikaciji. Bilješka: Ostali pronalazači pogreška (debuggers) sadrže MPLAB ICE 2000, MPLAB ICE 4000 i MPLAB ICD2. To su opcionalni hardwerski alati za testiranje kôda na PC platformi. Većina operacija od MPLAB IDE alata za pronalaženje pogreški su iste kao i od simulatora, ali za razliku od simulatora, ovi alati dozvoljavaju da ciljani PIC mikrokontroler radi pri punoj brzini u stvarnoj ciljanoj aplikaciji. alat za pronalaženje pogreški, selektiranjem

Odaberite MPLAB SIM simulator, kao Debugger>Select Tool>MPLAB SIM (slika 11). Slika 11.

Poslije odabira MPLAB SIM, vidjet ćemo sljedeće promjene (vidi pripadajuće brojeve na slici 12). 1. Statusna traka (status bar) na dnu MPLAB IDE prozora će se promijeniti na «MPLAB SIM». 2. Dodatne meni opcije bi se trebale pojaviti u Debugger meniju. 3. Dodatne alatne ikone bi se trebale pojaviti koje služe za ispravljanje pogreški u kôdu (Debugger Tool Bar).

78

Slika12.

7.3.6

Provjera rada aplikacije

Aplikacija je spremna za pokretanje. Na alatnoj traci će se pojaviti sljedeće ikone prečaca Debugger menija:

Run Halt Animate Step into Reset Sve te akcije služe za pregledavanje i ispitivanje ispravnosti kôda zajedno sa specijalnim prozorima za gledanje kao što su File Reisters, Watch, Special Function registers i dr. U prozorima se mogu pratiti promjene u registrima tijekom izvršavanja programa. Prozorima se mogu pristupiti preko View menija. U nastavku teksta će biti objašnjeni. 7.3.6.1 Pokretanje kôda

Prvo odaberite Debugger>Reset (ili ikonu na alatnoj traci). Trebala bi se pojaviti zelena strelica na lijevoj strani prozora izvornog kôda, pokazujući na prvu liniju izvornog kôda koja bi se trebala izvršiti.

79

Slika13a.

Odaberite Debugger>Run (ili ikonu ) da bi pokrenuli aplikaciju. Tekstualna poruka «Running…» će se pojaviti na statusnoj traci(status bar). Da bi zaustavili izvršenje programa, selektirajte Debegger>Halt (ili ikonu pokazat na liniju kôda na kojoj je aplikacija zaustavljena. ). Zelena strelica će

Da bi prolazili kroz aplikaciju korak kroz korak, selektirajte Debugger>Step Into (ili ikonu ).Tada će se izvršiti trenutna linija kôda na kojoj je program zaustavljen i zelena strelica će skočiti na sljedeću liniju kôda koja bi se trebala izvršiti. Imamo još akciju Animate koja se pokreće selektiranjem Debugger>Animate (ili pripadajućom ikonom ). S njom prolazimo kroz izvorni kôd automatski korak po korak sa određenom vremenskom pauzom između skoka. Ta se vremenska pauza može promijeniti i definira na sljedeći način: selektirajte Debugger>Settings i pod tabularom Debugger Animation promijenimo vrijednost (slika 13b.) Slika 13b.

80

Vrijednost koju unosimo označava milisekunde po koraku [msecs]. To znači da će prije izvršenja sljedećeg koraka čekati 0,5 sekundi. 7.3.6.2 Praćenje varijabli

Vrijednosti varijabla se mogu vidjeti u svakom trenutku tako da postavimo kursor miša iznad imena varijable bilo gdje u izvornom kôdu. Pojavit će se mali prozorčić sa trenutnom vrijednošću varijable. Slika 14.

Bilješka:

Da bi se generirala takva informacija prikazivanja varijable u pojavljujućem(pop-up) prozorčiću program mora biti kompajliran i povezan.

7.3.6.3

Korisnički prozori za gledanje varijabli (Watch Windows)

Korisnici često žele imat pregled ključnih varijabli cijelo vrijeme. Varijable se lakše prate ako otvorimo prozore za gledanje nego da mišom prelazimo preko svake varijable. Prozor za gledanje vrijednosti varijabli će biti prisutan cijelo vrijeme na ekranu. Prozori (Watch Windows) se mogu naći pod View menijem.

1. Selektiraj View>Watch da bi otvorili prozor za gledanje. 2. Selektiraj PORTB sa Add SFR izbornika vrhu prozora. Pritisnite Add SFR i dodajte ga na listu za gledanje. Da bi ubrzali pretraživanje možete počet tipkati PORTB nakon odabira padajućeg izbornika. 3. Selektiraj COUNT sa izbornika Add Symbol na vrhu prozora. Pritisnite Add Symbol da bi ga dodali na listu prozora za gledanje. 4. Simboli se mogu unositi direktno ili selektiranjem sa padajućeg izbornika. Direktno unosimo tako da pomaknemo kursor do nove prazne linije i utipkamo «DVAR» i pritisnemo Enter. Ili odaberemo DVAR sa padajućeg izbornika za odabir simbola i pritisnemo Add Symbol i tako ga dodamo listi prozora za gledanje.

81

Slika 15.

Tri simbola bi se trebala nalaziti u prozoru za gledanje. Prva je ispisana adresa File registra, slijedi ime simbola konačno vrijednost simbola. Korisnici mogu gledati kako se vrijednosti simbola mijenjaju pri kretanju kroz program korak po korak. 1. Selektiraj Debugger>Reset i resetiraj aplikaciju. 2. Selektiraj Debugger>Step Into (ili klikni na odgovarajuću ikonu na alatnoj traci) dok ne dođete do sljedeće programske linije: incf COUNT,F ; uvećaj registar COUNT za 1 3. Koraknite još jednom i vidite da se vrijednost od COUNT u prozoru za gledanje promijenila iz 0 u 1. 4. Krenite dva koraka da bi vidjeli kako se vrijednost PORTB u prozoru za gledanje promijenila iz 0 u 1. 5. Krenite još četiri koraka da bi vidjeli kako se vrijednost od DVAR u prozoru za gledanje promijenila u FF. Možete primijetiti kako su vrijednosti u prozoru za gledanje crvene boje ako su ih promijenile prethodne operacije izvršavanja, a crne boje ako ih nisu mijenjale prethodne operacije izvršavanja. Vidi sliku 16. Slika 16.

82

kao i promjene u ostalim registrima možemo pratiti i u sljedećim prozorima: Prozor Specijalnih registra (poglavlje 3.3. Slika 17.4) i Prozor File registra (poglavlje 3.6. Svaki korisnik će sam za sebe odlučiti koji im je od prozora najkorisniji za upotrebu.4 Prozor Registra Specijalnih Namjena (Specal Functin Registers) Selektiramo View>8 Specal Functin Registers i pojavit će nam se prozor kao na slici 17. U posljednjem stupcu (Char) će se ispisati znak koji odgovara vrijednosti ASCII tabele.6. imenom (drugi stupac SFR Name) i njihovom binarnom.5 ). decimalnom i heksadecimalnom vrijednošću (sljedeća tri stupca).6.Napomena: Te promjene. 83 . 7. U ovom prozoru možemo vidjeti sve Registre specijalne namjene sa njihovom adresom (prvi stupac Address).

). 84 .6. Slika 20. Registri su sortirani po adresama.3.6. On pokazuje sve vrijednosti na adresama File registra. U ovom prozoru također možemo upisivati vrijednosti u registre kao što je opisano u poglavlju 3.5. Slika 19. Pritiskom na tabular Symbolic (označen crvenom bojom) dobit ćemo simbolični prikaz koji je razumljiviji (slika 20.7.).5 Prozor File registra (File Register) Selektiranjem View>4 File Registers otvorit ćemo prozor za gledanje File registra (slika 19.

pod tabularom Pin Stimulus. kad se pojavi meni.3. posebice kad nam je u programu potrebno izazvati prekid preko npr.6. To možemo na dva načina: 1. pritisnite Add Row. možemo upisati neku vrijednost. Prikazat će nam se prozor kao na slici 21. možemo upisivati vrijednosti u registre. Slika 18. Dođemo do polja u koji ćemo upisati vrijednost i pritskom na Enter (na tipkovnici). osim gledanja. odaberemo opciju Fill Registers … . 85 .Pojavit će se prozor kao na slici 18. ili dvostrukim lijevim klikom miša. Drugi način je da pritiskom desnog klika miša iznad određenog polja.6 Upisivanje vrijednosti registara preko prozora Preko ovog prozora. 2. 7.3. da bi vidjeli kako naš program reagira na njih. Slika 21.6. Selektirajte Debugger>Stimulus Controller . RB0 pina ili kad su nam određeni portovi definirani kao ulazni i onda želimo na njih dovesti odgovarajuće poticaje.7. U prozoru koji se pojavio.7 Simuliranje rada priključka (pinova) (Stimulus Controller) Simuliranje pinova je korisna simulatorska opcija. Tu određujemo od koje do koje adrese ćemo upisivati vrijednosti i koju vrijednost.

Slika 22. Prilikom prolaska kroz kôd akcijama Step Into ili Animate. pritiskom na polje Asynch.Pod stupcem Type. Slika 23. Akcije: • • • • High Low . Ako odaberemo sinkroni oblik poticaja dobit ćemo poticaj u obliku takta. 86 .izmjenjivanje pri svakom pritiskom na Fire između logičke jedinice i nule Pulse .logička jedinica . odabiremo sinkroni ili asinkroni oblik poticaja.impulsni poticaj logičke jedinice Pri završetku uređivanja pritisnite Edit Complete. stimulacija pina će se obaviti pritiskom na tipku Fire.logička nula Toggle . Ako odaberemo asinkroni oblik poticaja Asynch možemo odabrati koji pin želimo stimulirati (pod Pin stupcem) i oblik akcije (stupac Action).

Trajna točka za prekid nije dodana toj liniji i simbol točke za prekid se neće vidjeti – samo će se strelica kretati do te linije. To se ostvaruje ovako: 1. 87 . Bilješka: Nakon zaustavljanja kod točke za prekid. selektirajte Set Break Poin . Pronađite sljedeću liniju kôda i desnim klikom miša kliknite na nju: movlw 0xFF . Slika 21. Selektirajte Debugger>Run da bi startali aplikaciju. Ako se ta instrukcija slučajno neće nikad izvršiti.7. aplikacija će nastaviti raditi sve dok ne selektiramo Debugger>Halt.8 Postavljanje točaka za prekid (Setting Breakpoints) Točke za prekid koristimo kada želimo da nam se kôd kreće do određene lokacije i tada zaustavi. 2.6. zgodan način za kretanje do neke lokacije u kôdu je da stavimo kursor na bilo koju instrukciju u kôdu i pritiskom desnog klika miša odaberemo Run to Cursor. Iz menija koji se pojavio nakon desnog klika miša.3. 4. Slika 22. Selektirajte Debugger>Reset i resetirajte aplikaciju.vremensko trajanje petlje 3.). Stop znak bi se trebao pojaviti na lijevoj margini pokraj te linije kôda (slika 21. Trebala bi kratko raditi i zaustaviti se kod linije gdje je postavljena za točka za prekid.

a one kontroliraju kakav ćemo dosje dobit simuliranim praćenjem. Ovaj mod je koristan da bi vidjeli zapise instrukcija nakon pritiska Run. On skuplja podatke sve dok nije zaustavljen točkom za prekid ili «ručno». a aplikacija će biti zaustavljena na točki za prekid. Prikazuje još vremensku bazu da svaki ciklus. simulator skuplja podatke kada simulator radi u «Run» modu. U Trace Option području se nalaze dvije kućice koje se mogu potvrditi kvačicom. Omogućimo simulirano praćenje tako da selektiramo Debugger>Settings i odaberemo «Trace/Pins» tabular. 88 .6. Slika 23. tada će memorija za praćenje skupiti 8192 ciklusa i prestati skupljati.7.9 Praćenje kôda (Tracing Code) Simulirano praćenje može se koristiti za snimanje izvršenja kôda. Ovaj mod je vrlo koristan jer možemo vidjeti zapise instrukcija koje su izvršene do točke za prekid. da umjesto kretanja kroz linije kôda korak po korak. On će ispisati posljednjih 8192 ciklusa.3. Slika 24. Ako potvrdimo i drugu kućicu. SD. Kada je gornja kućica potvrđena. Simulator praćenja ne prikazuje samo sekvencu izvršene instrukcije nego i druge informacije. Podaci koji se čitaju ili upisuju u File registar će biti uhvaćeni i prikazani u SA. DA i DD stupcima kao što se vidi na slici 24. Ponekad je bolje. kôd snimimo u akciji. Selektirajte View>Simulator Trace (slika 20).

podatak pročitan sa registra (Source Data) DA .adresa registra za operaciju čitaj (Source Address) SD . tabular Clock.adresa registra za operaciju piši (Destination Address) DD . Vrijeme se računa na bazi frekvencije unesene u Debugger>Settings . • Cycles .prevedenu instrukciju (disassembled instruction) Sljedeća četiri stupca prikazuju vrijednosti podataka koje se upisuju i čitaju u File registre: • • • • SA .vrijednost instrukcije strojnog kôda Label .podatak upisan u registar (Destination Data) Ako je koje polje označeno crticama to znači da pri toj instrukciju nije korišten taj registar.prikazuje svaku labelu simbolično Instruction .pokazuje vremensku bazu za svaki ciklus. 89 .• • • • • Line . Može se koristiti za mjerenje vremena koje je potrebno da se izvrši rutina.pokazuje brojeve ciklusa Addr .adresa programskog brojila (Program Counter) Op .

28 i 40 pinske mikrokontrolere (isporučuje se sa PIC16F877) Na ploči je jasno označen svaki kratkospojnik. Prvo što treba uraditi je priključivanje sustava preko serijskog kabla na računalo.exe sa CD-a na tvrdi disk računala. Sljedeći korak je priključivanje napajanja.com/index1. Primjeri asembleru cine sam početak rada vrlo efikasnim. Na računalu mora biti slobodan jedan COM port (najvjerojatnije COM 1 kod novijih računala ili COM2 kod starijih modela) na kojeg se priključuje serijski kabel iz kompleta. Easy-PIC • • • • Sustav podržava 8..sys u mapu ako koristite Windows NT/2000/XP. brojače.ic-prog. se radi preko programa IC-Prog. IC-Prog Programski paket koji koristimo za programiranje mikrokontrolera.exe. Program se nalazi na CD-u.1 Programiranje mikrokontrolera PIC 16F877 Uvod Programiranje mikrokontrolera 16F877. Kopirajte datoteku icprog. 90 . Kopirati ICprog. element ili pin cime je znatno olakšan rad. (npr. Napomena: Korisnici Windows NT/2000/XP operativnog sustava morat će još «skinuti» datoteku icprog. Najbolje je napraviti mapu PIC i u njemu posebnu mapu ICPROG čime će sve biti preglednije. koji se nalazi na Easy-PIC razvojnom sustavu. C:\PIC\ICPROG ).): 1.. 3. tajmere.8 8.2 Instalacija sustava pri programiranju programskim paketom IC-PROG Kratkospojnici (Jumperi) JP3. JP4 i JP5 MORAJU biti postavljeni! Postupak (uz sliku 1.htm pod Download . 18. Napajanje može biti i istosmjerno i izmjenično već prema izboru od 9 do 12 Volti. Kopiranjem programa u spomenutu mapu je završena njegova instalacija. ali preporučamo da se «skine» novija verzija sa Interneta.sys i kopirati je u istu mapu gdje i icprog. http://www. 8. Na sustavu je moguće isprobati većinu industrijskih potreba: temperaturne kontrolere. 2.

Ukoliko je to prvo pokretanje ICPROG-a na računalu. 91 . 8. Pokrenite IC-prog.3 Programiranje mikrokontrolera programskim paketom IC-PROG (korišten IC-Prog verzija 1. Slika 2.Slika 1. pojavit će se prozor kao na slici 2.05C) 1.

Potrebno je definirati hardwer preko kojeg se mikrokontroler na ploči programira. Slika 3. Slika 4. ako želimo nešto naknadno promijeniti. Pritisnite OK. Do opcije Hardware setting možemo doći selektiranjem Settings>Hardware. Pojavit će se IC-Prog sučelje kao na slici 3. Kako je na ploči ugrađen JDM programator njega treba odabrati. VAŽNO: Korisnici Windows NT/2000/XP OS moraju još namjestiti dodatne parametre za normalan rad. Program će se restartati i promjene će postati važeće. Pritisnite OK. pa njega i treba selektirati. Selektirajte Settings>Options i u tabularu Misc potvrdite prazni prozorčić kod opcije Enable NT/2000/XP Driver kao na slici 4. Obično je slobodan COM1 . Opcija PORTS se bira na osnovu slobodnog porta na računalu korisnika. 92 .

Selektirajte ikonicu Open (ili preko odabira File>Open) i pojavit će nam se prozor za traženje i odabir datoteke (slika 6. Sljedeći korak je učitavanje HEX datoteke (mikrokontroler prima program u toj formi).2. 3. BASIC ili C kompajler. Slika 6. sljedeći korak je odabir mikrokontrolera koji ćemo programirati.). Napomena: HEX datoteku pravi bilo koji asemblerski. Klikom na Settings > Device> Mikrocip PIC bira se mikrokontroler PIC16F877 koji se koristi na razvojnom sustavu PIC-easy kao na slici 5. 93 . Kada se definira hardwer.hex) i pritisnite Open . Učitani program se pojavljuje u spremniku (buffer) i spreman je za prijenos u mikrokontroler. Slika 5. Učitavanje programa se vrši klikom miša na odgovarajuću datoteku (ime_datoteke.

) Slika 8. 5. 94 .4. Klikom na ikonu koja se nalazi na sredini alatne trake počinje programiranje mikrokontrolera. ISP prekidač na razvojnom sustavu prebaciti u položaj za upisivanje/programiranje (u modu za upisivanje svijetli dioda PROGRAM MODE ON). Slika 7. Drugi način je da selektiramo sa menija Command>Program All (slika 8.

kao što je prikazano na slici ispod. 6.Kad počne programiranje pojavit će se sljedeća slika: Slika 9. Napomena: Ne treba vaditi serijski kabel iz konektora za programiranje. Slika 10. Nakon što je programiranje završeno isključiti prekidač ISP (gornji desni ugao razvojnog sustava). što je od velike pomoći prilikom čestog programiranja! 95 .

ali i kasnije za indikacije dešavanja u programu.9 9. D i E. 9. Svaka grupa dioda se uključuje/isključuje preko prekidača SW3. Opis razvojnog sustava Napajanje Za ispravan rad svih elemenata na razvojnom sustavu potrebno je osigurati stabilnih +5V.2 Led diode Sustav ima 32 diode koje su povezane na pinove porta A.1 Slika 11. C. Napomena: LED diode se uključuju logičkom nulom. To znači da mikrokontroler mora na pinu imati logičku nulu da bi dioda svjetlila. 96 . to je postignuto upotrebom naponskog stabilizatora LM7805. Kod PIC-Easy sustava. B. stabilizator je postavljen na odgovarajući hladnjak. Ove diode se obično koriste u prvobitnoj fazi rada. Način povezivanja LED dioda sa mikrokontrolerom prikazan je na narednoj slici. Slika 12. Zbog povećane disipacije do koje dolazi pri većem opterećenju.

Shematski prikaz veze tipkala i mikrokontrolera dat je na sljedećoj slici. 97 . 9. RE1 i portove A. Slika 14. B i C.Slika 13.3 Tipkala Sustav posjeduje jedano RESET tipkalo i 24 tipkala za simuliranje komandnih ulaza sustava koji su povezani na pinove RE0.

LCD zaslon se može priključiti ili na port B ili na port D. Da bi se tipkalo koristilo odgovarajući pin portova A. Oznaka iznad svakog predstavlja naziv pina na koji je odgovarajuće tipkalo priključeno. C i/ili E mora se definirati kao ulazni. Naredna slika prikazuje shemu povezivanja LCD-a na port D i port B mikrokontrolera PIC16F877.Slika 15. a ako je u donjem položaju logička nula. Ipak. 98 . u okviru pravokutnika predviđenim za LCD zaslon!!!. Kontrast zaslona se regulira potenciometrom u donjem lijevom kutu razvojnog sustava. Slika 16. Ako je kratkospojnik u gornjem položaju. to nije ograničenje jer se može koristiti bilo koji zaslon koji ima isti tip komunikacije sa mikrokontrolerom. onda će se prilikom aktiviranja izvjesnog tipkala na odgovarajući pin doći logička jedinica. korisnik treba da zalemi kontakt letvicu na mjestu odgovarajućeg porta u dnu razvojnog sustava. B. Kratkospojnikom u lijevom donjem kutu razvojnog sustava definira se da li je prilikom aktiviranja tipkala vrijednost odgovarajućeg pina 5V ili 0V. Ako su pinovi LCD zaslona sa donje strane. 9.4 LCD zaslon (display) Predviđen je klasičan LCD zaslon sa 2x16 karaktera.

recimo da treba omogućiti prikazivanje krajnje lijeve znamenke. Izgled postavljenog LCD zaslona na port D. Npr.). Slika 18. Prebacivanjem četvrtog prekidača na SW2 u radni režim (ON) znamenka sedamsegmentnog zaslona (DIS1. Izgled postavljenog LCD zaslona na port B. a koje ne. Preko DIP prekidača SW2.5 Sedamsegmentni zaslon Sedamsegmentni zaslon se sastoji od četiri znamenke čije se osvježavanje i ispis vrši preko porta B u kombinaciji sa portom A. 9. definiraju se znamenke koje će biti uključene. 99 . krajnje lijevo znamenka) će pokazivati vrijednost koja je definirana vrijednostima pinova porta B (slika 20. Slično se radi kada su u pitanju znamenke DIS2. Naredna slika prikazuje način povezivanja sedamsegmentnih zaslona sa mikrokontrolerom.Slika 17. DIS3 i DIS4.

9. 100 .6 Analogno-digitalni pretvarač (A/D converter) Mikrokontroler PIC16F877 koji se koristi na razvojnom sustavu. Slika 20. u sebi ima implementirane 10 bitne A/D pretvarače. U svrhu prezentacije izdvojena su dva pina RA2 i RA3 sa kojih se mogu očitavati analogne vrijednosti napona koji se određuju potenciometrima P2 i P3.Slika 19.

Ako se koriste DIP40 i DIP28 mikrokontroleri treba ih spojiti na RC6 i RC7.Slika 21. Slika 20. 101 . 9. Prekidač na RA2 na SW1 mora biti isključen (donji položaj). Kratkospojnici RX i TX kontroliraju na koji pin se komunikacija spaja. Primjer na slici 19. prikazuje vezu računala i razvojnog sustava. Ukoliko se želi očitavanje vrijednosti potenciometra P2 neophodno je staviti kratkospojnik iznad odgovarajućeg potenciometra. Najčešće se preko nje komunicira sa računalom. Slika 22.7 RS-232 komunikacija RS-232 komunikacija je namijenjena komunikaciji dva uređaja na udaljenosti ne većoj od 10 m. a u slučaju DIP18 mikrokontrolera na RB1 i RB2. pokazuje očitavanje vrijednosti napona na potenciometru P2 kao i položaj prekidača SW1 u tom slučaju.

9.DS1820 Dallas-ov DS1820 digitalni termometar. Slika 24. 102 . može poslužiti za mjerenje temperature okoline i eksperimentiranje.8 Digitalni termometar . ilustrirano je povezivanje digitalnog termometra i mikrokontrolera na razvojnom sustavu. sa mogućnošću mjerenja temperature od –55 do 125°C. Vrlo je točan i lagan za povezivanje.Slika 23. Postavlja se u podnožje sa tri pina neposredno ispod konektora za napajanje razvojnog sustava. Na slici 26.

Digitalna vrijednost temperature se šalje ili na pin RA5 ili RE2 u zavisnosti od toga u kom položaju se nalazi kratkospojnik koji se nalazi neposredno iznad čipa DS1820. a shematski je predstavljeno slikama ispod. Ukoliko je kratkospojnik u donjem položaju. U prikazanom primjeru temperatura će se očitavati preko pina RA5.Slika 25. 9.9 Pull-up/pull-down otpornici na portovima Stavljanjem kratkospojnika u gornji položaj pinovi odgovarajućeg porta se postavljaju na logičku jedinicu (pull-up). Slika 26. 103 . Polukrug oko tropinskog podnožja označava orijentaciju DS1820 prilikom postavljanja u podnožje. pinovi porta su na logičkoj nuli (pulldown). Izgled dijela razvojnog sustava prilikom redefiniranja pinova porta A na logičku jedinicu. a pinova porta B na logičku nulu dat je na slici 27..

Slika 27. Slika 29. 104 . Slika 28.

D i E. SW2 . Port A je preko SW1 povezan na otpornu mrežu. 9. Slika 30.uključuju / isključuju PULL-UP ili PULL-DOWN otpornike porta A i pinova RE0 i RE1 porta E. DIP prekidači na sustavu omogućavaju veliku fleksibilnost.uključivanje / isključivanje led dioda na portovima A.10 Direktan pristup portovima Svi pinovi PIC-a se mogu definirati kao ulazni ili kao izlazni. što znači da su ti pinovi na logičkoj nuli sve dok se na njih ne postavi željena vrijednost. Ako SW1 nije u ON položaju. C. 105 . B. Njihovim korištenjem pinovi portova se povezuju sa različitim elementima sustava: SW1 .Port B je na PULL-DOWN otpornicima. Ovo je jako bitno jer omogućuje da se port A koristi u analognom modu kao A/D pretvarač. odgovarajući pin nema ni pull-up ni pull-down otpornik na sebi .uključuje / isključuje sedamsegmentne zaslone SW3 . Na taj način se mogu očitavati ili unositi odgovarajuće vrijednosti na portove sa vanjskih elemenata. Pinovima portova moguće je pristupiti direktno sa desne strane razvojnog sustava preko «flat» kabla.

i u novom prozoru prenesite akcijom Copy/Paste primjer izvornog kôda. PIC16F877 ima četiri banke: Bank 0. Nakon postavljanja radnih uvjeta razvojnog sustava.1 Primjeri Uvod U ovom poglavlju su prikazani primjeri gotovih programa koji bi vam trebali pomoći da brže savladate programiranje u asemlerskom programu. koji se nalazi na razvojnom sustavu. Selektirajte File>Open File i odaberite ime_datoteke. Pokrenite IC-Prog. Prije primjera nalazi se kratak podsjetnik na makroe i potprograme. Bank 1. selektirajte Command>Program All. 10. 3. Bank 2. Najjednostavnija primjena makroa je davanje imena nizu naredbi koje se ponavljaju. Bank 3. Selektirajte File>Save. Potrebna . on se zamjenjuje nizom instrukcija koje su navedene prilikom definiranja makroa.2 Makro naredbe Makro naredbe se definiraju preko direktive macro u okviru koje se zadaje ime makroa i po potrebi argumenti. Kada se u okviru programa pojavi ime makroa. Nakon uspješne izgradnje kôda program se može ispitati u simulatoru ili ga možemo odmah upisati na naš mikrokontroler PIC 16F877. Ime_makroa macro niz instrukcija niz instrukcija endm argument1. ali evo jedan kratak podsjetnik: 1. To znači da mikrokontroler mora na pinu imati logičku nulu da bi dioda svjetlila. 9. 106 .hex datoteka je generirana u istoj mapi u kojoj smo izradili projekt i možemo ju preko programatora IC-Prog upisati u PIC 16F877. Izradite projekt preko Čarobnjaka za projekt (vidi poglavlje 7. Na razvojnom sustavu se mogu vidjeti rezultati.10 10. Svaki ovaj primjer možete isprobati u simulatoru MPLAB IDE i preko programa IC-Prog upisati na mikrokontroler PIC 16F877. Programiranje je time je završeno i potrebno je isključiti ISP prekidač. Detaljni opis postupka je opisan u prethodnim poglavljima. 7. Pokrenite MPLAB IDE. Kao primjer može poslužiti odabir banke SFR registra. i spremite datoteku kao ime_datoteke.hex datoteku u radnoj mapi. 6.… Definicija makroa se mora nalaziti ispred mjesta gdje se koristi. 8. 2. Selektirajte File>New. Izgradite projekt selektiranjem Project>Build All. 5.asm. Napomena: LED diode se uključuju logičkom nulom.3). 4. Pristupa im se preko RP1 iRP0 bitova STATUS registra.arg2.

RP0 STATUS. Kada program stigne do naredbe return nastavlja se izvršavati od sljedeće naredbe u glavnom programu kod koje je potprogram bio pozvan.RP0 STATUS.inc" notepad-u).3 Potprogrami Potprogram predstavlja niz naredbi koji počinje labelom.RP1 STATUS.10). odnosno FLASH programsku memoriju (raspored File registrima po bankama se nalazi u prilogu 8.poziv potpr.RP1 STATUS. Definicija potprograma se može nalaziti i prije i poslije mjesta poziva. Glavna razlika u odnosu na makro je to što se niz instrukcija potprograma nalazi samo na jednom mjestu u okviru programske memorije. BANK0 macro bcf bcf endm BANK1 macro bcf bsf endm BANK2 macro bsf bcf endm BANK3 macro bsf bsf endm STATUS.RP1:RP0 00 01 10 11 Bank 0 1 2 3 bank.RP1 Ovako napisani makroi se spremaju u posebnu datoteku sa nastavkom .INC asocirajući da se radi o INCLUDE (u prijevodu uključi-umetni u program) datoteci.inc (spremiti kao "bank. dok će se banka 3 i 4 koristiti samo kod upisa podatka u EEPROM. 10.RP0 STATUS. se obavlja sa "call Labela" . U sljedećim primjerima će se koristiti samo banke 0 i 1. da se na mjesto makroa uključuje njegov kôd (jednostavno se može reći da pomaže programeru manje kucati) i da oni mogu imati svoje argumente dok potprogram troši manje memorije.INC. 107 . ali nema svoje argumente koje može pozivati. Ovaj niz instrukcija se izvršava svaki put kad se navede naredba call Ime_potprograma.RP1 STATUS. Datoteka ima nastavak . a završava se naredbom return ili retlw.RP0 STATUS. Labela niz instrukcija niz instrukcija niz instrukcija return ili retlw Napomena: Osnovna razlika između makroa i potprograma je u tome.

4 10. TRISB-definiramo .svi pinovi porta B odlaze u 1 .upisi u reg.RP0 .pinove portaB kao izlazne .4.svi pinovi porta B odlaze u 1 .RP0 0xFF PORTB Petlja .bcf STATUS.1 Primjeri Program za aktiviranje porta B U ovom primjeru definiramo pinove porta B kao izlazne.nakon reseta su svi pinovi ulazni 0x00 TRISB 0xFF PORTB Petlja Bez makroa bank.inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC bcf bsf movlw movwf bcf movlw movwf Petlja goto End STASTUS.deklaracija i konfiguracija procesora .b'11111111' .RP0 0x00 TRISB STATUS.RP0 . i na njegove pinove dovodimo u stanje logičke jedinice.inc" .labela petlje . bsf STSTUS. TRISB-definiramo .nakon reseta su svi pinovi ulazni 108 .labela petlje .upisi 0 u radni spremnik .upisi 0 u radni spremnik .inc to bi izgledalo ovako: PROCESSOR 16F877 #include "p16f877.ukljucivanje makroa umjesto bsf __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC BANK1 movlw movwf BANK0 movlw movwf Petlja goto End .BANKA 1 .BANKA 0 .RP1 .bcf STSTUS.pinove portaB kao izlazne .10.memorijske adrese u slovima .inc" #include"bank.upisi u reg. PROCESSOR 16F877 #include"p16f877.b'11111111' .RP1 STASTUS.

PROCESSOR 16f877 #include "p16f877.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org goto BANK1 movlw movwf movlw movwf BANK0 btfss bcf btfsc bsf btfss bsf btfsc bcf goto end 0x00 Main b'00000000' TRISB b'11111111' TRISC PORTC.inc" #include "bank.kontrola 1 na RC1 .1 PORTB.4.2 Način upisivanja konstanti binarno movlw b'00101100' heksadecimalno movlw h'2c' ili movlw 0x2c decimalno movlw d'44' ili movlw . PROCESSOR 16f877 #include "p16f877.kontrola 0 na RC0 .inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org goto 0x00 Main 109 .1 PORTB.3 Naredbe uvjeta Ovo je program koji testira ulazni pin RC0 i ako je u jedinici setira izlazni RB0.4 Zbrajanje i oduzimanje.kontrola 0 na RC1 .ako je nula resetira RB0 .ako je jedinica setira RB1 Main 10.4.0 PORTC.kontrola 1 na RC0 .0 PORTB. i ako je RC1 u nuli setira RB1 i obratno.0 PORTC.ako je jedinica setira RB0 .10. indirektno adresiranje Jednostavni primjeri zbrajanja i oduzimanja konstanti između registra opće namjene i radnog registra w te indirektno adresiranje koristeći INDF i FSR registre.ako je nula setira RB1 .1 Main .44 10.0 PORTB.1 PORTC.4.

odnosno na njegov CARRY i ZERO bit i to koristimo za upravljanje.150 .sadrži njegovu adresu .100 110 0x00 b'11111111' TRISB TRISC PORTC Main .inc" #include "bank.W = portb .65 → w .0 .0 + 12 → w . a onda u INDF registar upišemo vrijednost d'55'.0 . Primjer na koji način računalo oduzima dva binarna broja: 56 – 34 je isto što i 56 + (–34) 56 00111000 34 00100010 prvi komplement 11011101 + 1 drugi komp. PROCESSOR 16f877 #include "p16f877.20 Main .65 + 120 = 185 → w .20 → w Kada u registar FSR upišemo neku adresu(npr. FSR .Main clrf clrf movlw addlw sublw addlw movf addlw movlw movwf movf FSR INDF .221 ili 0xdd → w .vrijednost reg.150 .INDF sadrži vrijednost :registra 0x21.65 . (-34) 11011110 +56 00111000 22 100010110 10.4.u w.12 0x21 FSR INDF.0x21 → w .185 = .0 + 20 = . tada će se u registru 0x22 nalaziti podatak d'55'.vrijednost sa adrese 0x20 .0 . 0x22 . 0x20=.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org BANK1 movlw movwf clrf BANK0 clrf goto Main movlw subwf . tada će registar INDF sadržavati vrijednost (podatak) zapisan na toj adresi. Ako je u FSR registar upisana adresa npr.5 Usporedba (komparacija) Oduzimanjem konstante od sadržaja spremnika PORTB djelujemo na stanje STATUS registra. INDF→w .35 + 221 = 85 → w .0 addlw goto end . a reg.100 PORTB.120 .120 0x20.0x21 → FSR . 0x21).

C = x. setiramo RC1 .inc" #include "bank. setiramo RC0 . C = 0. W = 0xFF.da li je portb>100 .C PORTC. .da li je portb>100 .0 STATUS.portb=100.2 STATUS.ili 0xff . resetiramo RC1 . Z = 0 PortB = 2.portb<100.16 i dalje vrtimo petlju. W = 2.2 Main .C PORTC.1 PORTB Main .da li jeportb<100.inc" __CONFIG _CP_OFF & _W DT_OFF & _PWRTE_ON & _XT_OSC org goto Main BANK1 Clrf Movlw Movwf BANK0 Clrf Btfsc Incf Btfsc Decf Goto end 0x00 Main TRISB b'11111111' TRISC PORTB PORTC.0 PORTB PORTC. W = 2. W = 2.1 STATUS. Z = x PortB =1. W = 0. Z = 1 PortB = 1. C = x. PROCESSOR 16f877 #include "p16f877. resetiramo RC2 . 111 .4. Z = 0 pozitivan rezultat rezultat je nula negativan rezultat 10.6 Inkrementiranje i dektrementiranje Dolaskom impulsa na pin RC0 uvećava se za jedan registar PORTB. C = 1. a dolaskom impulsa na pin RC1 smanjujemo vrijednost registra za jedan.Z PORTC.RC1 smanjuje PortB Dolaskom impulsa na pin RC0 smanjujemo vrijednost GPS registra 0x20 dok ne dođe do nule i tada mu upisujemo vrijednost .btfsc bsf btfsc bsf btfsc bcf btfss bcf btfss bsf goto end STATUS. C = 1.C PORTC. Vrijednost registra se ispisuje na izlaznim pinovima porta B. W = 1.portb>100.portb>100.C PORTC.da li je portb<100 .1 STATUS. Z = x PortB = 3.RC0 uvećava PortB . C = x. setiramo RC2 Primjer sa mogućim stanjem PortB registra: Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: Prije instrukcije: Poslije instrukcije: PortB = 3.portb>100.da li je rez=0 . Z = x PortB = 2.

112 .rezultate podataka .prvi slobodan GPR registar u BANK0 . Inicijalizacija se obavlja ovim kratkim kôdom: BCF BCF CLRF BSF MOVLW MOVWF MOVLW MOVWF STATUS..konfiguriranje svih .Bank0 .4. RP0 0x06 ADCON1 0xCF TRISA .da prvo očistimo izlazne .12 0x20 Main PORTC.mogu koristiti kao u/i pinovi . RP1 PORTA STATUS.TRISA<7:6>su uvijek .ulazno/izlazni pinovi .Bank 1 .pinovi RE<2:0> se jedino .ekvivalentno . Ako ih želimo koristiti kao digitalne ulazno/izlazne pinove moramo to definirati u registru ADCON1.ovom vrijednošću su definirani .PROCESSOR 16f877 #include "p16f877.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org BANK1 Movlw Movwf BANK0 Movlw Movwf Goto Main btfsc Decfsz goto bsf goto end 0x00 0xff TRISC .setira 4 bit .inicijalizacija PORTA tako .kao ulazni MOLW MOVWF B'00000111' TRISE Napomena: Na razvojnom sustavu su na testne LED diode priključeni sljedeći pinovi PORTA RA<5:0> i PORTE RE<1:0>.instrukciju kada dođe do nule . preskače sljedeću .7 Inicijalizacija Porta A i Porta E Port A (RA<5:0>) i port E (RE<2:0>) su ulazno/izlazni pinovi koji mogu biti definirani kao analogni i digitalni priključnice (portovi).RA<5:4> kao izlazni .da odredimo koji su .pinova kao digitalne .vrijednost korištena .0 0x20 Main 0x20.inc" #include "bank.čitani kao ’0’.16 10.definiranje portova .RA<3:0> kao ulazni .12→w . .4 Main .dekrementira. RP0 STATUS.Ispituje stanje RC0 .

onemogućuje pisanje 10.pokazuje na memoriju .omogućuje upis .ćemo upisati ..ćemo pisati . GIE 0x55 EECON2 0xAA EECON2 EECON1. EECON2 (drugi ključ) .Bank 3 . RP0 EEDATA. Taj podatak neće smetati pri izvršavanju instrukcija u programskoj memoriji jer će se taj podatak.podatak koji .čitanje podataka Mikrokontroler PIC16F877 može koristiti FLASH programsku memoriju za spremanje podataka. W EEDATA STATUS.početak operacije čitanja . .2 bajtna riječ .čeka na .podataka EEPROM . WR INTCON.Bank 2 .10. RP1 STATUS. RP0 ADDR. GIE EECON1.pokazuje na memoriju . Registri: EEADRH : EEADR: .upis podatka u memoriju BSF BSF BTFSC GOTO BCF MOVF MOVWF MOVF MOVWF BSF BCF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF BSF BCF STATUS.Bank 2 .u registar EECON2 (prvi ključ) .u reg. Ta opcija omogućuje čitanje i upisivanje 14-bitnog podatka u programsku memoriju.ćemo čitati .9 EEPROM . RP0 EECON1. W EEADR VALUE. W EEADR STATUS.upisuje vrijednost 55h . RP0 EECON1. RD STATUS. EEPGD EECON1.počinje operacija upisa . WR $-1 STATUS.čitanje podataka sa memorije Da bi pročitali neki podatak s neke adrese iz EEPROM-a.podataka EEPROM .ako ih koristimo.sadrži 13-bitni podatak koji čitamo ili ćemo upisati u programsku memoriju 113 . biti prepoznat kao nedopuštena/nepravilna instrukcija i biti će izvršena NOP operacija.\ u suprotnom izbacite .\u suprotnom izbacite tu liniju ./onemogućuje prekide .Bank 2 . EEPGD EECON1.Bank 3 . pri izvršenju instrukcija.upisuje vrijednost AAh . WREN . WREN INTCON.sadrži 13-bitnu adresu lokacije EEDATH : EEDATA: ./omogućuje prekide .adresa na koju .10 FLASH programska memorija . RP0 EECON1.ako su već ranije omogućeni .Bank 3 . RP0 ADDR. W .8 EEPROM . dovoljno je kopirati primjer ovog kôda: BSF BCF MOVF MOVWF BSF BCF BSF BCF MOVF STATUS.4..4.4.adresa s koje . RP1 STATUS.završetak upisa .W = EEDATA 10.

DATAH = EEDATH 10. RP0 ADDRL.ako ih koristimo.ako su već ranije omogućeni. EEPGD EECON1./omogućuje prekide .koje ćemo .upisuje 55h u .pokazuje na FLASH .Bank 2 .upisujemo vrijednost .\u suprotnom izbacite tu liniju .. W EEADR ADDRH. RP0 ADDRL.upisujemo adresu . W DATAL EEDATH.upisujemo .DATAL = EEDATA .željene lokacije .u programskoj . GIE 0x55 EECON2 0xAA EECON2 EECON1.potrebna su mu dva NOP (ciklusa) .počinje operaciju upisa .upisivanje podataka BSF BCF MOVF MOVWF MOVF MOVWF MOVF MOVWF MOVF MOVWF BSF BSF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF NOP NOP BSF BCF STATUS.Bank 2 . RP0 EEDATA. GIE EECON1.onemogućuje upis INTCON..pokazuje na FLASH .na željenoj memorijskoj .Bank 2 .registar EECON2 . EEPGD EECON1. W EEDATH STATUS. WR .memoriji .W EEADRH STATUS.W DATAH .upis .mikrokontroleru su potrebna .Bank 3 .adresu sa .upisuje AAh u .čitati podatak .11 FLASH programska memorija . RP1 STATUS. ./onemogućuje prekide .Bank 3 .Čitanje se vrši na sljedeći način: BSF MOVF MOVWF MOVF MOVWF BSF BSF BSF NOP NOP BCF MOVF MOVWF MOVF MOVWF STATUS. WREN INTCON.dva NOP-a da se spremi za . . RP0 EECON1.u program .registar EECON2 .programsku memoriju . RD STATUS.\u suprotnom izbacite tu liniju . WREN 114 . W EEADR ADDRH. W EEDATA VALUEH. RP0 EECON1.početak operacije čitanja . W EEADRH VALUEL.4.programsku memoriju .omogućuje upis .lokaciji .

argument 2.f STATUS.nadr.kontrola carry bita .4.4.zbroji ga sa MSB2 LSB1.10 .inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC LSB1 MSB1 LSB2 MSB2 movf subwf btfss decf movf subwf end equ equ equ equ 0x20 0x21 0x22 0x23 .sprema 10 u w 115 .dekrementiraj i spremi u MSB2 .w LSB2.inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC LSB1 MSB1 LSB2 MSB2 org goto Main movf addwf btfsc incf movf addwf end LSB1. niži bajt .f .reset vektor 10.1 STATUS.10.C MSB2. viši bajt .argument 1.za nula .inkrementiraj i spremi u MSB2 .inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC cblock 0x40 bi. preskoči .1 MSB1 MSB2.rsort.4.argument 2.1 10.12 Zbrajanje dva 16 bitna broja PROCESSOR 16F877 #include "p16f877.asort endc movlw . Najveći se upisuje na lokaciju 0x30 i redom ostali po veličini do lokacije 0x39.W LSB2. PROCESSOR 16F877 #include "p16f877.C MSB2. niži bajt .kontrola carry bita.adr.1 MSB1 MSB2.zbroji i spremi u LSB2 .zbroji ga sa MSB2 equ equ equ equ 0x00 Main 0x20 0x21 0x22 0x23 .oduzmi i spremi u LSB2 . viši bajt .sort.13 Oduzimanje dva 16 bitna broja PROCESSOR 16F877 #include "p16f877.14 Sortiranje sa indirektnim pristupom Podaci sa lokacija od 0x20 do 0x29 se uspoređuju i sortiraju po veličini.argument 1.

upis u nadr .0x20 indirektno →w .sljedeća adresa : 0x21 .cisti spremnik .indirektno.upis najvećeg u FSR .C 0x2a.vrijednost lokacije 0x21 u w .upisivanje najvećeg broja prva naj .cisti najveću vrijednost .upis statusa u pomoćni registar 0x2a .interupt vektor 116 .0 INDF. broj 0x20 . prekoračenja TMR0 i prekid preko pina RB0.upis najvećeg na 1.0 FSR sort.umanjivanje broja interacija 10.0 INDF asort rsort poc .inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto 0x00 Main 0x04 Inter . upis . PROCESSOR 16F877 #include "p16f877. adresu 0x30 .početna adresa najvećeg = h'20' .interacija snimanja .asort u FSR ->0x30 .najveća vrijednost .0 FSR INDF asort.15 Interupt U ovom programu omogućujemo prekid uslijed promjene porta B.0 sort bi prva upis nadr. početna .0x21 .0 STATUS.spremanje u FSR registar.0 nadr INDF. u njega guramo adresu.9 bi 0x20 nadr FSR INDF.broj interacija traženja najvećeg .0 0x2a.podatak se sprema u sort.0 sort 0x20 FSR INDF.sprema h'30' u w .dekrement upis .usporedba carry bita .sprema vrijednost u sort .4.na novu adresu .inc" #include "bank.uvećavanje adrese .movwf movlw movwf poc movlw movwf movlw movwf movwf movf movwf clrf incf subwf btfsc bsf subwf btfsc goto decfsz goto goto movf movwf movf movwf decfsz goto goto movf movwf clrf movf movwf movf movwf incf decfsz goto end rsort 0x30 asort .0 naj bi prva upis FSR.početna adresa sortiranja w .upis u sort .9 .

1 TMR0 OPTION_REG INTCON.0 na GIE-globalni interupt .prekid .T0IF INTCON.brojač E .setira bitove za E prekida .RBIF .ako je 1 inače goto 117 .INTE INTCON. vraća program .1 WAIT macro movlw call endm macro movlw movwf movlw call endm movwf movlw clrf BANK1 movwf BANK0 bcf btfss timeconst_1 timeconst_1 WAITstd timeconst_2./ . CONSTANT PRESCstd = .global E .10 samo da vrti .T0IF .T0IF INTCON.Main clrf BANK1 movlw movwf BANK0 bsf bsf bsf bsf TMR0 B'01000000' OPTION_REG INTCON.timeconst_2 → w WAITX WAITstd WAIT_X .rastući brid .port change E .GIE 0xff 0x0d INTCON.INTF INTCON. 10.T0IE INTCON.poništava prekide .interrupt preko RB0 na .0 0x20 .PRESCEXT timeconst_2 WCYCLE PRESCEXT WAIT_X WCYCLE .\ .vanjski E .naredba RETURN.preskoči sljedeću liniju .unosimo bin podatak .7 INTCON..i čekamo prekid Petlja movf movwf movlw movwf goto bcf movlw movwf bcf bcf bcf retfie end Inter .RBIE PORTB.prescaler 1:4 (ili PRESCstd) WAITa WAITb .rad sa TMR0 Prvo napravimo makro WAIT.inc.briše bit . Spremimo ga kao wait.na mjesto prekida Kada dođe do prekida.upisi u spremnik .stalno upisuje .prekid . program skače na vektor/adresu prekidne rutine i onemogućuju se daljnji prekidi.16 Preskaler .10 0x0d Petlja INTCON.4.

Ako negdje u programu pozovemo macro Wait tako da upišemo WAITX . što znači da će TMR0 inkrementirati svaki 256 takt – to je određeno argumentom PRESCext) i brojat će (dekrementirat) 100 prekoračenja i vratiti se u glavni program.dekrementira . 0 PORTC. Pri taktu od 4MHz kada jedan ciklus traje 1µs.99 . jedan ciklus traje 1µs. 0 .goto decfsz goto RETURN WAITb WCYCLE. nego je dovoljno brojati zastavice (flag bit).3 preskaler u OPTION registru će biti postavljen na '7' (omjer TMR0 1:256. Pauza se dobiva tako da se broje prekoračenja TMR0 brojača (prijelaz iz .100 u .T0IF (2 bit) javlja zastavica.100 preskaler u OPTION registru će biti postavljen na '1' (omjer TMR0 1:4. Pri taktu od 4MHz.244.255 u . Program.inc" #include "bank.nije potrebno ići u prekidnu rutinu i brojat prekide. Približno ≈1s. što znači da će TMR0 inkrementirati svaki 4 takt – to je određeno konstantom PRESCstd) i brojat će (dekrementirat) 100 prekoračenja i vratiti se u glavni program.inc" __CONFIG _CP_OFF&_WDT_OFF&_PW RTE_ON&_XT_OSC cblock 0x20 WCYCLE. Prema tome da bi dobili vremenski član .1 WAITa .0). . PRESC wait endc BANK1 clrf TRISC BANK0 petlja btfsc bsf WAIT bcf goto end PORTB. PROCESSOR 16F877 #include "p16f877.inc" #include "wait. 0 petlja . Timer će trajati 4*100*256= 102400 ciklusa.4 ms.poziv macro 118 .Timer .999424 s. To iznosi 102.vrti se 255 puta . Ako negdje u programu pozovemo macro Wait tako da upišemo WAIT .100 PORTC.vraća ga u glavni program Ovaj makro će pripremiti parametre koji će definirati dužinu pauze nakon pozivanja potprograma WAIT ili WAIT_X. Timer će trajati 16*244*256=999424 µs što je 0. Kod prekoračenja se u registru INTCON.

RB1 – sklopnik M2).0 m2 PORTB.17 Dvosmjerna vrtnja motora Programom mijenjamo smjer vrtnje trofaznog motora (RA0 – tipkalo T1. i onda opet svijetli 2 s itd.1 resetm2 PORTA.0 PORTA. RB0 – sklopnik M1.1 m1 PORTB.iskljuci M1 .1 resetm1 PORTB. pa 1s ne svijetli.2 resetm2 PORTB. RA1 – tipkalo T2. 1.0 prva PORTB.1 m1 .ili M2 .i nije M2 .ili M1 . PROCESSOR 16F877 #include "p16f877.vremensko kašnjenje na bazi interapta TMR0 PROCESSOR 16F877 #include "p16f877.kontrola T1 .4.0 resetm1 PORTA.4.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC 119 . RA2 – tipkalo STOP.18 Dioda Na RA1 pin je spojena LED dioda koja svijetli 2 s.10.inc" #include "bank.ukljuci M2 .iskljuci M2 prva m2 druga resetm1 resetm2 10.i nije STOP .inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC BANK1 clrf BANK0 m1 btfsc goto btfss goto btfsc goto btfsc goto bsf btfsc goto btfss goto btfsc goto btfsc goto bsf goto bcf goto bcf goto end TRISB PORTA. NAČIN .0 resetm2 PORTB.ukljuci M1 .1 druga PORTB.kontrola T2 .inc" #include "bank.i nije M1 .2 resetm1 PORTB.i nije STOP .

1 skok b'00000011' OPTION_REG PORTA.Z con PORTA.244 con.postavljanje con varijable ponovno .1 2.dozvola tajmerskog prekida .jer .TMR0 svake 32 µs .u nulu .prekid se treba desiti 244 puta.dioda svijetli .vremensko kašnjenje na bazi petlje.čekanje prekida .test da li je dioda svijetlila ili nije .inc" #include "bank.preskaler 100 .inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto 0x00 main 0x04 main 120 . PROCESSOR 16F84 #include "p16f84.dozvola sljedećeg prekida.1 .1 b'00000100' OPTION_REG b'10100000' INTCON con petlja b'10100000' INTCON con .je 32*256*244=1998848 µs movlw movwf clrf petlja goto prekid movlw movwf incf movlw subwf btfss retfie clrf BANK0 Btfss goto BANK1 Movlw Movwf BANK0 Bcf retfie skok BANK1 movlw movwf BANK0 Bsf retfie end b'00000100' OPTION_REG PORTA. NAČIN .con main org goto org goto equ BANK1 movlw movwf BANK0 bsf BANK1 movlw movwf 0x00 main 0x04 prekid 0x20 b'11111101' TRISA PORTA. .u nulu .0 STATUS.jer prilikom prekida GIE ode .inkrementiranje .

108 aa aa.19 aa aa.1 petl0 .kraj petlje od 1 sekunde ponovo 121 .cblock aa.RA1 definiramo kao izlazni pin .gašenje diode .cc endc main BANK1 movlw movwf BANK0 0x0c b'11111101' TRISA PORTA.116 bb PET0 bb.dioda ne svijetli .78 cc PET1 cc.183 bb PETl0 bb.1 .čekanje 1 sekundu PETl2 movlw movwf petl2 call decfsz goto goto PETl1 movlw movwf petl1 call decfsz goto return PETl0 movlw movwf petl0 decfsz goto return daljel goto end .1 pet0 .1 petl2 daljel .1 .127 cc PETl1 cc.bb.1 pet1 .kraj petlje od dvije sekunde .dioda svijetli .čekanje 2 sekunde ponovo bsf PET2 pet2 movlw movwf call decfsz goto goto PET1 pet1 movlw movwf call decfsz goto return movlw movwf decfsz goto return dalje bcf PET0 pet0 PORTA.1 pet2 dalje .1 petl1 .

Spremite kao pausems.f STATUS.f LOcnt.petlje je 10µs .nula.trajanje jednog izvršavanja Loop2 .Z Kraj Delay1ms HIcnt.100 LOOPcnt . PROCESSOR 16f877 #include "p16f877.19 LED diode na portu B Program za paljenje i gašenje svih LED dioda na portu B u intervalima od 0.Z dechi Delay1ms LOcnt.dekrementiraj .niži bajt argumenta ide u LOcnt LOOPcnt.f STATUS.testira svoju vrijednost i ako je .f Loop2 . setira se bit Z high arg1 HIcnt low arg1 LOcnt .f Loop1 .inc" #include "pause.inc pausems macro arg1 local local local local local Loop1 dechi Delay1ms Loop2 Kraj movlw movwf movlw movwf Loop1 movf btfsc goto call decf goto dechi movf btfsc goto call decf decf goto Delay1ms: movlw movwf Loop2: nop nop nop nop nop nop nop decfsz goto return Kraj endm Sada je dovoljno napisati kratak program koji će koristiti ovu pauzu. Prvo ćemo izraditi makro koji generira pauzu.viši bajt argumenta ide u HIcnt .Delay1ms realizira kašnjenje od .f Loop1 .5ms.4.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC 122 HIcnt.100*10µs=1ms LOcnt.10.

4.5sec) .interapt vector .uključi diode na portu B .inc" #include "bank.početna adresa sortiranja .RP1 0x2f FSR 0x40 0x22 petlja 0x39 FSR.selektiraj banku u kojoj je PORTB .BANK0 .testira bit Z 123 .5sec) .Z prekid FSR 0x20.500 0xff PORTB .pokazuje na adresu 0x30 .inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ORG bcf bcf movlw movwf movlw movwf goto petlja movlw subwf btfsc goto incf movf subwf btfss 0x00 STATUS.port B je izlazni .0 STATUS.isključi diode na portu B .inkrementirajući dođe do .500 Loop . Ako su jednaki adresu tog podatka stavi na 0x40 i svaki sljedeći dalje.indirektnim adresiranjem Podaci se nalaze od adrese 0x30 do 0x39.20 Usporedba .pričekaj 500 milisekundi (0.Z .na labelu prekid .pričekaj 500 milisekundi (0.početak RAM-a . Treba ih usporediti sa podatkom na adresi 0x20.nema interapt rutine .0 INDF.0 STATUS.w u FSR .registri koje koristi makro pausems 0x00 Main 0x04 Main TRISB TRISB PORTB 0x00 PORTB .535 s.RP0 STATUS.selektiraj banku u kojoj je TRISB .vrijednost sa adrese u w .početak programa .reset vector . To znači da možemo napraviti pauzu od 65.0x30-1 adresa podatka .Cblock HIcnt LOcnt LOOPcnt endc ORG goto ORG goto Main banksel clrf banksel Loop movlw movwf pausems movlw movwf pausems goto end 0x20 .vrijednost sa 0x30-w .vrijednosti 0x39. idi .skoči na labelu Loop U ovom primjeru na mjesto argumenta makro naredbe možemo unesti 16 bitni broj. 10.kada vrijednost FSR . PROCESSOR 16f877 #include "p16f877.

w u FSR 0x21.adresa u w .1 skok1 brojac PORTC.ako nisu isti. goto petlja .jednaki su .inc" #include "bank.RC1 kao ulazni pin (dolaze impulsi) .portb kao izlazni .1 skok2 skok1 . .što znaci da je došao 1 impuls .(0x40) u w .timer se inkrementira svake 64µs . PROCESSOR 16F877 #include "p16f877. 0x22 su pomoćni registri za privremeno spremanje podataka.0x22 (0x40+1) .povećam brojač.spremamo na lokaciju na koju .inkrementira vrijednost reg.0 INDF 0x22 FSR petlja .v1 endc main BANK1 movlw movwf movlw movwf movlw movwf movlw movwf clrf clrf BANK0 0x00 main 0x04 prekid 0x20 b'00000010' TRISC b'00000000' TRISB b'00000101' OPTION_REG b'10100000' INTCON brojac v1 PORTC.dozvola timerskog prekida skok1 btfss goto incf skok2 btfsc goto goto . 10.21 Protok Na RC1 pristižu impulsi sa mjerača protoka koji daje 100 impulsa/litri tekućine.čekanje impulsa 124 .(0x40) u FSR .0 0x21 0x22.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto cblock brojac.0 FSR 0x21.pokazuje FSR .kada dođe nula idemo na ponovno .4.goto goto upis movf movwf movf movwf movf movwf incf movwf goto prekid end petlja upis FSR. Ovaj program će na port B ispisivati veličinu protoka litre/sekundi.vrijednost sa adrese 0x22 .tu se vrti petlja dok ne dođe jedinica na RC1 .vrijednost registra 0x21 u w .w u 0x21 .

156 v1 STATUS. U spoju sa termometrom A/D pretvarač nam daje informaciju o temperaturi u rasponu od –20 do +80 °C.156*64 = 9984 µs tj.RC1 izlazni pin .PORTC & PORTB u bank0 petlja .v1 natrag u nulu 10.0 STATUS.gasi RC1 125 .vidimo koliko se desilo prekida . 1ms .4.C PORTC.PORTB ulazni . PROCESSOR 16F877 #include "p16f877.vece od 0 tj.C PORTC.102 PORTB. Početna temperatura u prostoriji je 0°C.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto main BANK1 movlw movwf movlw movwf BANK0 movlw subwf btfss bsf movlw subwf btfsc bcf goto end 0x00 main 0x04 main . temperatura .inkrementiranje pomoćne varijable v1 da .ako nije nastavljam s prekidima .kad je C=1 on mora zagasiti .108 PORTB.veća od 20 . Na RC1 je spojen grijač preko releja.inc" #include "bank.Z brojac.1 petlja .grijač tj.1 .ako se desilo 156 prekida idem dalje.c=1.0 STATUS.ovaj dio u prekidnoj rutini dešava se . veća od 22 .brojač natrag u nulu . temp.pali .TRISC je u bank1 b'11111101' TRISC b'11111111' TRISB .0 brojac v1 PORTB .prekid BANK1 movlw movwf incf movlw subwf btfss retfie movf clrf clrf BANK0 movwf retfie end b'10100000' INTCON v1 .ponovna dozvola prekida .22 Regulacija temperature Na port B pristižu podaci sa 8 bitnog A/D pretvornika o stanju temperature u prostoriji.100 puta u sekundi . Napiši program da temperatura u prostoriji bude 21 plus/minus 1°C. .

4 ≈ 102 22°C: raspon 22 – (–20) = 42*2. Raspon temperature: 80 – (–20) = 100°C 256/100 = 2.0 bin petlja 0x00 main 0x04 main 0x20 126 .inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto cblock bin.ex3 endc main movlw movwf movlw subwf movwf petlja goto end .inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org goto org goto cblock bin.0 ex3 etlja 0x00 main 0x04 main 0x20 b) EXCESS-3 u binarni PROCESSOR 16F877 #include "p16f877.52 ≈ 108 10.11 ex3 .11 bin .56 = 102.23 Pretvorbe a) Binarni u EXCESS-3 PROCESSOR 16F877 #include "p16f877.Imamo 256 (0-255) mogućih stanja registra kojima moramo pridružiti raspon temperature od -20 do 80°C.56 po °C 20°C: raspon 20 – (–20) = 40*2.3 bin.56 = 107.ex3 endc main movlw movwf movlw addwf movwf petlja goto end .3 ex3.4.

kontrolna varijabla za petlje pet2 .0 oz3 petlja prva .bin.1 STATUS.1 STATUS.oktalne znamenke .oz0 .množenje sa 64 .oz1.64 bin.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org 0x00 goto main org 0x04 goto main cblock 0x20 oz2.0 oz2.con endc main clrf clrf clrf movf addwf con STATUS bin oz2.oz2.zbrajanje oz2 i w i spremanje 127 oz1 oz2 oz3 .8 bin.C dva .con .oz0.C prva .C oz1 STATUS.bin endc main clrf clrf clrf movlw subwf btfsc incf btfsc goto movlw addwf dva movlw subwf btfsc incf btfsc goto movlw addwf movwf petlja goto end d) Oktalni u binarni PROCESSOR 16F877 #include "p16f877.1 .oz1.C oz2 STATUS.oz3.64 bin.oz2.8 bin.1 .premještamo oz2 u w reg .inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org 0x00 goto main cblock 0x20 oz1.c) Binarni u oktalni PROCESSOR 16F877 #include"p16f877.

f .0 bin.f STATUS.3 con.inc digbyte macro local local local local local clrf clrf clrf Pozitiv movf movwf movlw Pon0 incf subwf btfsc goto decf addwf Exit1 movlw incf subwf btfsc goto decf arg0 Pon0 Exit1 Exit2 Pozitiv Negativ Dig1 Dig2 Dig3 arg0.10 Dig2.rezultata u oz2 incf movlw subwf btfss goto clrf clrf pet1 movf addwf incf movlw subwf btfss goto movf addwf movf addwf movf addwf petlja goto end e) Binarni kod u BCD Ovaj program izdvaja znamenke stotice. desetice i jedinice iz broja.C Exit1 Dig2.1 oz2.izračunavanje znamenke desetice 128 .f STATUS.C Pon0 Dig1.6 con.0 oz1.0 STATUS..0 STATUS.1 con . To ćemo napraviti preko makro naredbe koju ćemo kasnije pozvati u programu.množenje sa 8 con STATUS oz1.binarni zapis je u bin registru petlja .w Digtemp . Spremi kao digbyte.f Digtemp.Z pet2 .zbrajanje oz2+oz1+oz0 oz0.f con .izračunavanje znamenke stotice .premještamo oz1 u w reg .zbrajanje oz1 i w i spremanje rezultata .100 Dig1.1 .f Digtemp.1 oz1.u oz1 .f Digtemp.0 bin.Z pet1 .0 bin.

u binarnom obliku.desetica . NAČIN) .bcd0.jedinica 0x00 Start 0xff REZ REZ Petlja .Exit2 addwf movf movwf endm Digtemp.w=255 .adresa reseta .REZ=255 . PROCESSOR 16F877 #include "p16f877.ostani ovdje .f Digtemp.Dig1 .stotica .poziv makroa .5 0x21 . Dig2.2 0x20 Naravno.Dig3 .bcd1.Dig2 .bin endc 129 .bcd2. BIN u BCD (2.inc" __CONFIG _CP_ON&_WDT_OFF&_PW RTE_ON&_XT_OSC cblock REZ Digtemp Dig1 Dig2 Dig3 endc org goto Start Main Petlja movlw movwf digbyte goto end Poslije izvođenja programa sadržaj u registrima Dig1.inc" #include "digbyte.5 0x22 PROCESSOR 16F877 #include"p16f877.w Dig3 . Dig3 će biti ovakav: Dig1 Dig2 Dig3 0x20 .inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC org 0x00 goto main org 0x04 goto main cblock 0x20 con.izračunavanje znamenke jedinice Sljedeći primjer izdvaja znamenke iz broja.

za zadani binarni broj 50 na portu B motor treba napraviti otklon od 180°).PORTB.1 STATUS.1 petlja prvi drugi drugi1 movlw subwf btfss goto incf goto tri petlja movlw addwf goto end 10.10 bin.1 bin.0 b'11111111' EQU 0x20 .C tri bcd2 drugi1 .main clrf clrf clrf clrf clrf movlw movwf movlw subwf btfss goto incf goto movlw addwf movf movwf con bin bcd2 bcd1 bcd0 .C drugi bcd1 prvi .4. Ovaj program će upravljati radom koračnog motora. PROCESSOR 16f877 #include "p16f877. kojemu je za jedan puni okretaj (360° ) potrebno 200 impulsa frekvencije 1KHz. TMR0/4 . prekid na rastući brid.inc" #include "bank.u slučaju interrupta skače na tu labelu .10 bcd1.24 Servo motor Na pinove porta B u neodređenim vremenskim razmacima dolaze binarni podaci vrijednosti od 0 do 100 s tim da svaka promjena stanja izaziva kratkotrajni impuls na RB7 pinu.10 bin.3 bin .uključeni pull up otpori na .10 bcd1.1 STATUS.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC Ulaz org goto org goto Main BANK1 movlw movwf bcf movlw 0x00 Main 0x04 Prekid b'11000001' OPTION_REG TRISA. tako da broj zadan na portu B određuje pomak motora u postocima (npr. Na RA0 spojen je ulaz koračnog motora.pin RA0 je izlazni 130 .0 bcd0 .

ako je prethodno bio setiran) .pozivanje Timer potprograma (mjeri se .li podatke na PORTB .i zbroji ih same sa sobom (množenje sa 2) .postavlja CPU u stand by mode (može i bez .izlazi iz Timer podprograma .GIE (ako je prethodno bio resetiran) .uključivanje interrupata: GIE i INTE .poluperiode freq 1kHz) .135 u TMR0 .poziva potprogram koji kontrolira je .provjerava je li TMR0 prekoračio 255 .motorom) .prazni ciklusi da se dobije na vremenu PORTA. resetira ga (potrebni .ako registar Ulaz nema vrijednost 0.kopira sadržaj PORTB u registar .kada se dogodi interrupt.vraća program iz prekidne rutine .isključuje relej spojen na RA0 .reset interrupt flag-a RBIF .GIE .µs .RBIF INTCON.pozivanje Timer podprograma (mjeri se .vrijeme prve .poziva potprogram za Izlaz(upravljanje .flag .0 Timer Ulaz Izlaz Ulaz.ako je RB7 setran. jer nadalje nije .0 Timer PORTA.kada se registar Ulaz isprazni.ponavlja ovaj potprogram dok Ulaz ne bude 0 .7 . vraća se .vrijeme druge poluperiode freq 1kHz) . .T0IF Tloop INTCON.umanjuje sadržaj registra Ulaz za 1 i .uključuje relej spojen na RA0 .movwf bsf BANK0 movlw movwf Stand_by bcf bsf sleep TRISB OPTION_REG.T0IF . pokreće se ovaj .ako nije vraća program na Tloop dok .toga) goto Prekid movfw movwf call bcf movfw addwf call goto Timer movlw movwf Tloop btfss goto bcf return Izlaz bsf nop nop nop nop call bcf nop call decfsz goto return Kontrola btfss goto bcf Stand_by .1 Izlaz Stand_by .kada TMR0 prekorači resetira T0IF interrupt .vraća se u Stand_by .početak vremenske petlje koja odbrojava 500 .TMR0 ne prekorači .setiranje interrupt flag-a .iz potprograma .0 b'10001000' INTCON INTCON.uzima sadržaj registra Ulaz .ako se prekid nije dogodio na RB7 .potreban 131 .su nam samo podaci RB6:RB0) .ulaz (0x20) .resetira bit 7 registra Ulaz.135 TMR0 INTCON.7 Ulaz Ulaz.7 Stand_by Ulaz.potprogram PORTB Ulaz Kontrola Ulaz.upisuje vrijednost .svi pinovi PORTB su ulazni .

.u protivnom se vraća u Stand_by 132 .ako je sadržaj registra Ulaz 0.Z Stand_by .vraća se iz potprograma Kontrola .movf btfss return goto end Ulaz STATUS.

Aritmetičko logička jedinica Analogna veličina Analogno – digitalni pretvarač Algoritam Analogna informacija Arhitektura računala ASCII kod (American Standard Code for Information Interchange).Američki standardni kod za razmjenu informacija Asinkroni prijenos podataka ASIC (application-specific integrated circuit) B B .analogno digitalni pretvarač Adresiranje ALU (Arithmetic Logic Unit).Katodna cijev Clock-takt CISC (Complex Instruction Set Computer) CMOS (Complementary Metal Oxide Semiconductor) D DAC (Digital-Dnalog Converter).Centralna procesorska jedinica CRT (Cathode Ray Tube).Digitalno analogni pretvarač Dekoderi Dinamička greška Digitalni sustav DCE (Data Communications Equipment)-Podatkovna komunikacijska oprema DTE (Data Terminal Equipment)-Podatkovna terminalna oprema DC (Digit Carry) E EEPROM (Electrically Erasable Read-Only Memory) Ekspertni sustavi Električni signali EEDATA registar EEADR registar F FIFO (FIrst in – First out) FPGA (field-programmable gate array) FSR registra G Generator takta Građa računala Greška ponovljivosti GPR (General Purpose Registrers) registri GIE sklopke H Harvard-ska arhitektura 133 .11 A Popis pojmova i kratica: ADC (Analog-to-Digital Converter).Bajt (byte) Binarni podatak b – bit (binary digit) Boolova logika Brojač Bistabil Bit operacije BCF (Bit Clear Function) BSF (Bit Set Function) C CPU (Central Processing Unit).

I Indirektno adresiranje Instrukcije Instrukcijski registar Integrirani sklopovi INTF (INT External Interrupt Flag) INTCON registar INTE (INT External Interrupt Enable) Izlazni sklopovi K Kašnjenje Kodiranje L LSI – komponente Logička jedinica M Memorija Memorijska jedinica Mikroprocesori Mikrokontroleri Mikroračunala Multipleksiranje Mrtvo vrijeme Mrtva zona Međusklop MMU (Memory Menagment Unit) N Naredba Namjenski registri Namjenski registri O Obrada podataka Off line sustavi On line sustavi Opreacijski kod Oscilatorski Start-up Timer OPTION registra Organizacija memorije OPTION registar P Pareleni prijenos podataka PIC (Programm Interupt Controller) Prijenos podataka Procesna računala Procesor Program Programski jezici PLC programibilni logički kontroleri Paritetni sklop Paritetni bit Parametri procesa PC(Personal Computer) računalo PC (Program Counter)-Programsko brojilo Podatkovna sabirnicaPORTA PORTB Prekidi (Interrupts) R Radna memorija Računalo 134 .

Rezolucija ili razlučivost Registar općenamjene Reset Relativno adresiranje RS232 RISC (Reduced Instruction Set Computer) S Sample & Hold sklop Sabirnica SCADA (Supervisory Control And Data Acquisition) Segmentno adresiranje Senzori Serijska komunikacija Serijski prijenos podataka SFR (Special Function Registers) Slobodni brojač Sigma Delta A/D pretvarači Sinkroni prijenos Sigurni brojač Status registar Statička greška Stog (Stack) Sučelje T T0IF (TMR0 Overflow Interrupt Flag) T0IE (TMR0 Overflow Interrupt Enable) T0SE (TMR0 Sorce Edge Select) T0CS (TMR0 Clock Source Select) U U/I kanali Upravljačka jedinica Unutrašnja sabirnica Upravljačka sabirnica T0SE (TMR0 Sorce Edge Select) T0CS (TMR0 Clock Source Select) V VLSI tehnologija Vanjska sabirnica W Watchdog timera WR (Write Control) WREN (EEPROM Write Enable) WRERR (EEPROM Error Flag) WR (Work Registar)-Privremeni rwgistar Z Z (Zero) zastavica 135 .

Gabro Smiljanić: Mikroračunala. Gabro Smiljanić: Računala i procesi. Zagreb. Impulsna i digitalna elektronika. Zagreb.1987. Zagreb 2. 1994. Školska knjiga. 6. 136 . Andrić i N. D. 3.12 Popis korištene literature: 1. Zdenek Sobotka: Mikroprocesori i Mikroračunala na lak način. 1990. Školska knjiga. Matić: PIC Mikrokontroleri. 5. Gabro Smiljanić: Osnove digitalnih računala. Zagreb. Aleksandar Szabo. Mikroelektronika. Zagreb. Darko Grundler: Uvod u mikroprocesore. Beograd. Tehnička knjiga. 7. 1990. Tehnička knjiga. 4. Zagreb. Školska knjiga. 2000. 1991. Školska knjiga.

Sign up to vote on this title
UsefulNot useful