tehniČko veleuČiliŠte u zagrebu - nastava.tvz.hr · računalo u procesnoj tehnici može...
TRANSCRIPT
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 Uvod................................................................................................................ 5
2 Podjela računala ............................................................................................ 6
2.1 ''Off line'' računala ............................................................................................... 6 2.2 ''On line'' računala................................................................................................ 6
3 Osnovni sklopovski elementi za ''on line'' način rada.............................. 10
3.1 Senzori i izvršni organi.......................................................................................10 3.2 Analogna obrada signala ...................................................................................11 3.3 Multipleksori........................................................................................................11 3.4 Sample & Hold sklop (S&H)................................................................................12 3.5 Analogno digitalni pretvarač ..............................................................................13 3.6 Digitalno analogni pretvarač ..............................................................................20 3.7 Međusklop (Interface) .........................................................................................21 3.8 Paritetni sklop .....................................................................................................24 3.9 Povezivanje računala sa procesima ..................................................................24 3.10 Računalo..............................................................................................................25
3.10.1 Mikroprocesor ...............................................................................................25 3.10.2 Mikrokontroler ...............................................................................................25 3.10.3 Arhitektura računala ......................................................................................27 3.10.4 Razlika između mikroprocesora i mikrokontrolera .........................................29 3.10.5 Memorijska jedinica.......................................................................................30 3.10.6 Adresno polje mikroračunala .........................................................................30 3.10.7 CPU (Central Processing Unit) ......................................................................31 3.10.8 Sabirnica .......................................................................................................32 3.10.9 U/I jedinica ....................................................................................................33 3.10.10 Serijska komunikacija....................................................................................33 3.10.11 Slobodni brojač .............................................................................................34 3.10.12 Sigurnosni brojač (Watchdog timer) ..............................................................34
4 Mikrokontroler PIC 16F84............................................................................ 35
4.1 Osnovne karakteristike mikrokontrolera PIC 16F84.........................................35 4.1.1 Karakteristike mikrokontrolera .......................................................................35 4.1.2 Karakteristike ulazno/izlaznih sklopova .........................................................35 4.1.3 Specijalne karakteristike mikrokontrolera ......................................................35 4.1.4 Karakteristike CMOS Flash/EEPROM tehnologije.........................................36
4.2 Kratak opis mikrokontrolera ..............................................................................36 4.3 Raspored nožica .................................................................................................37
1
4.4 Generatori takta ..................................................................................................37 4.5 Takt / instrukcijski ciklus....................................................................................39 4.6 Obrada instrukcija ..............................................................................................39 4.7 Reset....................................................................................................................40
4.7.1 Reset kod pada napona napajanja (Reset on Brown-Out).............................40
4.8 Ulazno / izlazni sklopovi .....................................................................................41 4.8.1 PORTA i TRISA ............................................................................................41 4.8.2 PORTB i TRISB ............................................................................................41
4.9 Organizacija memorije........................................................................................42 4.9.1 Programski brojač (Program Counter) ...........................................................43 4.9.2 Stog (Stack) ..................................................................................................44 4.9.3 Status registar ...............................................................................................44 4.9.4 Direktno adresiranje ......................................................................................45 4.9.5 Indirektno adresiranje....................................................................................45 4.9.6 Relativno adresiranje.....................................................................................45
4.10 Prekidi (Interrupts)..............................................................................................46 4.10.1 INTCON registar ...........................................................................................47
4.11 Podatkovna EEPROM memorija ........................................................................48 4.11.1 EECON1 registar ..........................................................................................49
4.12 Slobodni brojač TMR0 ........................................................................................49 4.12.1 OPTION registar ...........................................................................................50
5 Set instrukcija .............................................................................................. 52
5.1 Prijenos podataka ...............................................................................................52 5.2 Aritmetika i logika ...............................................................................................52 5.3 Bit operacije ........................................................................................................52 5.4 Upravljanje tokom programa..............................................................................52 5.5 Opis pojedinih instrukcija ..................................................................................54
6 Razvojni alati za PIC 16F84 ......................................................................... 69
6.1 Asembler .............................................................................................................69 6.1.1 Elementi programskog jezika asembler .........................................................69
7 MPLAB IDE v6.60 ......................................................................................... 71
7.1 MPLAB IDE ..........................................................................................................71 7.2 Zahtjevi sustava ..................................................................................................71 7.3 Izrada jednostavnog projekta.............................................................................71
7.3.1 Uvod .............................................................................................................71 7.3.2 Pisanje izvornog koda ...................................................................................71 7.3.3 Izrada projekta ..............................................................................................73
2
7.3.4 Izgradnja projekta..........................................................................................77 7.3.5 Pokretanje simulatora....................................................................................78 7.3.6 Provjera rada aplikacije .................................................................................79
8 Programiranje mikrokontrolera PIC 16F877 .............................................. 90
8.1 Uvod.....................................................................................................................90 8.2 Instalacija sustava pri programiranju programskim paketom IC-PROG .........90 8.3 Programiranje mikrokontrolera programskim paketom IC-PROG...................91
9 Opis razvojnog sustava............................................................................... 96
9.1 Napajanje.............................................................................................................96 9.2 Led diode.............................................................................................................96 9.3 Tipkala .................................................................................................................97 9.4 LCD zaslon (display)...........................................................................................98 9.5 Sedamsegmentni zaslon ....................................................................................99 9.6 Analogno-digitalni pretvarač (A/D converter) .................................................100 9.7 RS-232 komunikacija ........................................................................................101 9.8 Digitalni termometar - DS1820 .........................................................................102 9.9 Pull-up/pull-down otpornici na portovima.......................................................103 9.10 Direktan pristup portovima ..............................................................................105
10 Primjeri ....................................................................................................... 106
10.1 Uvod...................................................................................................................106 10.2 Makro naredbe ..................................................................................................106 10.3 Potprogrami ......................................................................................................107 10.4 Primjeri ..............................................................................................................108
10.4.1 Program za aktiviranje porta B ....................................................................108 10.4.2 Način upisivanja konstanti ...........................................................................109 10.4.3 Naredbe uvjeta............................................................................................109 10.4.4 Zbrajanje i oduzimanje, indirektno adresiranje.............................................109 10.4.5 Usporedba (komparacija) ............................................................................110 10.4.6 Inkrementiranje i dektrementiranje ..............................................................111 10.4.7 Inicijalizacija Porta A i Porta E.....................................................................112 10.4.8 EEPROM - čitanje podataka sa memorije ...................................................113 10.4.9 EEPROM - upis podatka u memoriju...........................................................113 10.4.10 FLASH programska memorija - čitanje podataka ........................................113 10.4.11 FLASH programska memorija - upisivanje podataka...................................114 10.4.12 Zbrajanje dva 16 bitna broja ........................................................................115 10.4.13 Oduzimanje dva 16 bitna broja....................................................................115 10.4.14 Sortiranje sa indirektnim pristupom .............................................................115 10.4.15 Interupt........................................................................................................116 10.4.16 Preskaler - rad sa TMR0 .............................................................................117
3
10.4.17 Dvosmjerna vrtnja motora ...........................................................................119 10.4.18 Dioda ..........................................................................................................119 10.4.19 LED diode na portu B ..................................................................................122 10.4.20 Usporedba - indirektnim adresiranjem.........................................................123 10.4.21 Protok..........................................................................................................124 10.4.22 Regulacija temperature ...............................................................................125 10.4.23 Pretvorbe ....................................................................................................126 10.4.24 Servo motor.................................................................................................130
11 Popis pojmova i kratica:............................................................................ 133
12 Popis korištene literature:......................................................................... 136
4
1 Uvod
Primjenom mikroprocesorskih i mikrokontrolerskih struktura u elektroničkim uređajima postiže se sve više i više hardverska sličnost, dok specifičnost funkcija uređaja određuje programska podrška.
Pomoću sveprisutnih mikrokontrolera i mikroprocesora povećana je pouzdanost i preciznost upravljanja pojedinim sustavom. Sustav oplemenjen mikrokontrolerom može u potpunosti zamijeniti čovjeka, smanjuje dimenzije uređaja i potrošnju energije. Zbog jednostavnosti i širokog spektra uporabe proširili su krug ljudi koji se bave elektronikom.
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. Koristit će studentima s Informatičkog odjela TVZ-a, Studija računarstva na kolegijima sličnog sadržaja, kao i svima koji ulaze u svijet upravljanja pomoću mikrokontrolera. 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.
U drugom dijelu je opisana izrada izvornog kôda i njegovo implementiranje u projekt, editiranje i ispravljanje pogrešaka, kao i simuliranje njegovog rada na računalu uz mnogo primjera sa vježbi. 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).
5
2 Podjela računala
Na slici 2.1. prikazano je djelovanje čovjeka s obzirom na okolinu, tj. djelovanje s obzirom na informacije koje dobija od svojih osjetila. Na sličnom principu koristimo računala u procesnoj tehnici.
Sl.2.1. Načelo djelovanja čovjeka
Računalo u procesnoj tehnici može poslužiti samo za njegov nadzor ili za automatsko upravljanje cjelokupnim procesom. 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. Dakle, treba razlikovati nadzor nad procesom (očitavanje relevantnih parametara) i upravljanje s njim (podešavanje parametara) bilo izravno (automatski) ili neizravno. Prema načinu unosa podataka u računalo te njihove uporabe za upravljanje tijekom procesa razlikuju se:
Off - line sustavi On- 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.1 ''Off line'' računala
Off-line prijenos podataka odvija se u dvije faze. U prvoj se podaci iz izvora zapisuju na neki prijenosni medij (disketa, priručna memorija, optički mediji i drugo), pa se tek potom sa tih medija prenosi ili upisuje u računalo. Vrijeme između skupljanja podataka i unosa je po potrebi, za sat ili dva, tjedan, mjesec, godinu dana ili nikad. Naravno ovakav sustav nepogodan je za brz i izravan nadzor nad procesima.
2.2 ''On line'' računala
Računala koja rade ″on line″ (slika 2.2) unose podatke automatski kada su generirani. Podatke generiraju razni senzori koji su električnim vodičima spojeni na računalo. Vrijeme potrebno da se ti podaci prebace u računalo mjeri se uglavnom u milisekundama. Za takve sustave kažemo da rade u realnom vremenu, zbog toga što je vrijeme potrebno za obradu podataka definirano
Sl. 2.2. On-line sustav
6
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. Osim toga u realnom vremenu mogu se pratiti i predvidjeti tendencije koje se u procesu mogu pojaviti. Na taj način lako je intervenirati i izbjeći alarmantne situacije. Za razliku od navedenog, kod off-line obrade koja bi trajala dugo dobiveni rezultati bili bi gotovo nekorisni.
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. 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. Ne može se baš sve predvidjeti. Iz navedenog razloga ponekad se on-line sustav izbjegava, a stanje procesa samo se prikazuje voditelju (osobi) koji odlučuje što treba učiniti. No može se dogoditi da voditelj donese neadekvatan zaključak unatoč kvalitetnim informacijama koje mu se predočuju. Da bi se to izbjeglo sve se više uvode ekspertni sustavi, odnosno digitalna računala s programskom potporom koja se služe bazom znanja koncipiranom od tima vrhunskih stručnjaka za proces koji se nadzire. Takav sustav koji može i ne mora biti on-line pomaže voditelju da u kritičnim situacijama donese najbolju odluku. Osnovno načelo rada ekspertnog sustava prikazano je na slici 2.3.
Sl. 2.3. Načelna shema ekspertnog sustava
Dakle, neki se procesi ne mogu nadzirati bez on-line sustava nadzora s digitalnim računalom, jer nikakvo drugo sredstvo nema takvu brzinu rada i moć kao računalo koje može na brze novonastale promjene u procesu smjesta reagirati.
Elementi inteligentnog ponašanja vrlo su značajno svojstvo ovih sustava. Pod tim se misli na prilagodljivost i snalaženje sustava (računala) u promijenjenoj situaciji u odnosu na programski prepoznatljivu i definiranu, a to znači da sustav mora prepoznati promjenu van definiranih okvira, prilagoditi se i donijeti više ili manje adekvatno rješenje da bi se sustav ponašao unutar definiranih granica. Znači u takvim situacijama ne traži se idealno rješenje već prvo prihvatljivo. Kao primjer navest ćemo nekoliko kontrolora procesa: 1.) 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. Napredak tehnologija SCADA sustava je vidljiv u nekoliko segmenata.
Najznačajniji napredak je napravljen na polju tehnologija veznih uz internet. 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.
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. Uvođenjem standardnog programskog sučelja mjerne i upravljačke opreme – OPC (OLE for Process Control), baziranog na Microsoft OLE (Object Linking and Embedding) tehnologiji za komunikaciju između programskih modula u Windows okolini, omogućena je upotreba šireg spektra mjerne i upravljačke opreme i SCADA sustava uz pojednostavljen rad.
Daljnji napredak je vidljiv u proširenju postojećih mogućnosti i povećavanju pouzdanosti.
7
2.) FPGA (field-programmable gate array) je poluvodička naprava koja sadrži programabilne logičke komponente i programabilne međuspojeve. Programabilne logičke komponente mogu biti programirane da poboljšaju funkcionalnost osnovnih logičkih operacija (kao što su AND, OR, XOR, NOT) ili složenijih kombinacijskih sklopova kao što su dekoderi i jednostavne matematičke operacije. Večina FPGA sadrži i memorijske elemente najčešće flip-flop (bistabilne multivibratore) ili više blokova memorije. 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, nešto kao one-chip programabilni model. 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.
3.) ASIC (application-specific integrated circuit) je integrirani sklop projektiran za za opću upotrebu (npr. čip dizajniran isključivo za mobilni telefon bio je ASIC). 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). Moderni ASIC-i često uključuju 32-bitni procesor, memorijske blokove uključujući ROM, RAM, EEPROM, Flash itd. Dizajneri ASIC-a koriste se HDL-om (hardware description language) kao što su Verilog ili VHDL kako bi opisali funkcionalnost ASIC-a.
4.) 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.
Novi kontrolni sustav morao je zadovoljiti slijedeće zahtjeve:
• Jednostavno programiranje, • Programske izmjene bez sistemskih intervencija (bez mijenjanja ožičenja), • Manje, jeftinije i pouzdanije komponente od relejnih kontrolnih sustava, • Jednostavno i jeftino održavanje
Postupnim razvojem došlo se do sustava koji je omogućio jednostavnije povezivanje binarnih signala. Uvjeti pod kojim su ovi signali trebali biti povezani, bili su određeni u kontrolnom programu. S novim sustavima bilo je po prvi puta moguće iscrtati signale na ekranu, te ih pohraniti u vidu datoteke u elektronsku memoriju.
Po definiciji Programibilni logički kontroleri su:
Prema DIN EN61131-1 (1994.) 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. logičko upravljanje, slijedno upravljanje, funkcije odbrojavanja, funkcije brojenja i aritmetičke funkcije, Osnovna namjena PLCa je upravljanje, putem digitalnih ili analognih ulaznih i izlaznih signala, različitim vrstama strojeva ili procesa.
Glavni djelovi PLC-a su:
• mikroprocesor s dodatnim električkim sklopovima, • sklop za opskrbu električnom energijom procesora koji pretvori upravljački istosmjerni napon od
24V u takozvani logički napon (5V), • kvarc za davanje takta procesoru, • prekidač za uključivanje i isključivanje rada procesora, • memorija (sistemska, radna, programska).
Preko sabirnog priključka spaja se centralna jedinica (mikroprocesor) s ulazno - izlaznim elementima (modulima - karticama).
Ulazni modul treba osigurati:
• priključke na koje se priključuju senzori, • prilagodbu napona, • zaštitu centralne jedinice od napona, • zaštitu centralne jedinice od smetnji, • sigurno razlikovanje signala 1/0.
8
Izlazni modul također posreduje između centralne jedinice i automata. Njegove zadaće su:
• povezivanje s izvršnim elementima, • prilagodba napona, • zaštita centralne jedinice, • pojačanje snage, • zaštita od kratkog spoja.
Karakteristike programabilnog logičkog kontrolera:
• omogućava direktan priključak binarnih senzora i aktuatora, • odgovara zahtjevima industrijskog okoliša u odnosu na otpornost na povišenu temperaturu,
vibracije i elektro-magnetska zračenja, • 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, registre, brojače, tajmere),
• operacijski sustav omogućava komunikaciju sa računalom.
p
Optoizolacija Optoizolacija
MEMORIJAProgram Podaci
Mrežni modul napajanja
Ula
zne
stez
aljk
e
Izla
zne
stez
aljk
e
Komunikacijsko sučelje premauređaju za programiranje ilioperatorskom panelu (HMI)
te mrežna komunikacija
Centralnaprocesorska
jedinica
Sl. 2.4. Blok shema PLC-a
9
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.1. Proces je sredina koja se mjeri te upravlja računalom. Računalo služi za obradu podataka prikupljenih iz procesa. Središnji dio služi za povezivanje procesa i računala, koji ćemo sada razmotriti.
Sl. 3.1. Shematski p az on-line sustava
3.1 Senzori i izvršni organi
Senzori mjere razne fizikalne veličine (temperatura, pritisak, vlažnost, protok, kut zakreta, brzina, itd.)
• Statička greška - odstupanje između pokazane i stvarne vrijednosti fizikalne veličine kada se
• zor
• u
• e potrebno da se promjene fizikalne veličine počnu iskazivati i
• ća promjena fizikalne veličine do koje se na izlazu iz senzora još uvijek ne
Od senzora se u osnovi traži da ne djeluju na svojstva ili ponašanje sredine u kojoj se nalaze. U on-
u te on odlučuje kako će rea
rik
te ih pretvaraju u odgovarajuće električne veličine (napon, struja, frekvencija, faza itd.). Mjeriti se mogu različite pojave kao što je vodostaj rijeke, brzina toka iste, temperatura kotla termoelektrane, rastezanje željeza pri zagrijavanju, itd. Senzori se još i nazivaju mjerni pretvornici. Osobitosti o kojima treba voditi računa pri korištenju senzora je točnost, sposobnost približavanja pravoj vrijednosti fizikalne veličine, a koja se ogleda u sljedećim parametrima:
ova ne mijenja. Obično se daje u postocima prema najvećoj vrijednosti koja se može mjeriti. Dinamička greška - koliko senzor "kasni" za promjenama fizičke veličine. Svaki senposjeduje dinamičku grešku. Ova greška nestaje kad se fizikalna veličina prestane mijenjati. Greška ponovljivosti - je najveće odstupanje od srednje vrijednosti pri ponovljenom mjerenjnepromijenjene fizikalne veličine. Mrtvo vrijeme - predstavlja vrijemna izlazu iz senzora. Mrtva zona - je najveočitavaju promijene.
line sustavima se nalazi mnogo analognih veličina stoga signal treba filtrirati, ispraviti (linearizirati) i kondicionirati da bi se analogni signal mogao digitalizirati u A/D pretvorniku.
Postoje dva načina rada. Prvi je da se mjerene veličine prikazuju čovjekgirati i drugi način je kada računalo samo djeluje u procesu. 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, a nakon tih zaključaka djeluje na sustav preko izvršnih organa. Izvršni organi mogu biti prekidač, elektromotor koji upravlja ventilom, regulator izgaranja na ložištu itd. Senzori i izvršni organi za svaki sustav su specifični.Više o tome smo rekli kod on-line sustava na str. 7.
10
3.2 Analogna obrada signala
Električni signali koji dolaze iz senzora imaju različite oblike. S druge strane za analogno-digitalni pretvarač signali su standardnh veličina (0 - 5 VDC, 0 - 10 VDC, –10 do +10 VDC, 0 - 20 mA, 4 - 20 mA), standardizirani. Da bi se to postiglo potrebna je elektronička obrada signala. Signal je potrebno propustiti kroz elektronički sklop koji će mu dati oblik i veličinu, no ne smije se oštetiti informacija koju taj signal nosi. Signal je potrebno linearizirati, pojačati i filtrirati. Da bi signal doveli u željeno analogno područje često koristimo pojačala s povećanjem većim od 1, ali i s povećanjem manjim od 1. Zadatak pojačala je da promjeni vrijednost analognih veličina i prenese ih u novo područje naponskih vrijednosti, a da ne pokvari njihovu analognu informaciju (normiranje). Često se koriste i razni filtri kojima je zadatak odstraniti šum. Karakteristika signala se može poboljšavati i na digitalan način, tako da se senzoru doda mikroračunalo koje posebnim algoritmima oblikuje signal pa tek tada prenosi u ″glavno″ računalo.
3.3 Multipleksori
Da bi se upravljalo procesom potrebno je puno različitih senzora, rijetko kada nam je dovoljan samo jedan. Mjerena veličina svakog senzora bit će prvo podvrgnuta analognoj obradi. Zatim svaka mjerna veličina bi mogla imati svoj A/D pretvarač i svoj interface. Takvo rješenje bi bilo preskupo u sustavima gdje se koristi nekoliko desetaka pa i nekoliko stotina senzora, pa se upotrebljava samo jedan A/D pretvarač i interface. Kod takvog rješenja mora postojati multipleksor (slika 3.2b). Multipleksor (engl. Multiplexer) ili selektor (engl. Data selector) je sklop kojim se podatak sa jednog od više ulaza usmjerava (prenosi) na izlaz. S kojeg ulaza će se odabrati podatak i prenjeti na izlaz ovisi o stanju posebnih ulaza za odabiranje (slika 3.2a). Broj ulaza za podatke N ovisi o broju ulaza za odabiranje M.
M2N =
0D
1ND −
0 1MS S −−
Sl. 3.2a. Opći prikaz djelovanja multipleksora
Na slici 3.2b. prikazana je logička shema multipleksora s četiri ulaza. 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″. Koji sklop ″I″ će prenjeti podatak s ulaza na izlaz, preko sklopa ″ILI″ ovisi o kombinaciji na ulazima za odabiranje podataka i . To se može prikazati i tablicom stanja slika 3.2b.
0S 1S
11
0D
1D
2D
3D
Y
0S1S
Sl. 3.2b. Logička shema i tablica stanja multipleksora
Naravno postaje upitno kojim redom će se signali obrađivati. Samo po sebi se nalaže rješenje redom kojim dolaze no to se rijetko primjenjuje. Brzina promjene pojedinih mjernih veličina je različita pa tako i njihova gustoća uzimanja uzoraka ne može biti ista. Tako se npr. temperatura prostorije ne može promijeniti u vremenu manjem od desetak sekundi, dok se promjena tlaka u parogeneratoru mora mjeriti u milisekudama pa čak i češće (frekvencija uzorkovanja). Stoga se uzorci signala uzimaju prema potrebi obrade mikroračunala. Znači mikroračunalo bira redoslijed obrade podataka prema programu koji izvodi, šaljući adresu ulaznog podatka multipleksoru.
3.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.
Stvarni Sample & Hold sklop uz sklopku i kondenzator, sadrži i serijski otpor sklopke i vodiča ali i unutarnji otpor izvora signala R1, te paralelni otppor R2 (slika 3.3.). Vremenska konstanta R1C mora biti puno manja od vremena T0N, kada je sklopka S zatvorena, a vremenska konstanta R2C mora biti puno veća od intervala uzorkovanja TS.
R1C << T0N, R2C >> TS
T0N - sklopka zatvorena TS - interval uzorkovanja
Sl. 3.3. Stvarna shema Sample&Hold sklopa
12
Sl. 3.4. Shema S&H sklopa
Sl. 3.5. Signal pri S&H obradi
Kašnjenje koje nastaje pri povratku iz stanja zadržavanja u stanje praćenja ograničava frekvenciju uzimanja uzoraka.
3.5 Analogno digitalni pretvarač
Digitalni sustavi koji služe za mjerenje, regulaciju ili automatizaciju na svome će ulazu i izlazu u pravilu imati analognu veličinu. Najveći je broj procesa u prirodi analogan, a to vrijedi i za mnoge veličine u tehničkim sustavima. Da bi računalo moglo obrađivati te signale potrebno ih je kodirati, diskretizirati po vremenu i amplitudi, tek tada kada su pretvoreni u binarne brojeve mogu se unositi u računalo. Zbog toga je potrebno imati uređaje za automatsko pretvaranje između tih dvaju načina prikaza veličina. Proces kvantizacije predstavljat će mjerni proces u kojemu se konstatira koliko standardnih mjernih jedinica sadrži mjerna veličina. Idealna karakteristika A/D pretvorbe prikazana je na slici 3.6. kao i blok shema A/D pretvarača. Pretvorba analogne veličine u digitalnu (i obratno) inherentno je diskontinuirani proces. 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. U idealnom slučaju naponski su intervali (ili koraci) jednake širine i ponekad se nazivaju kanalima. Jedna je od osnovnih karakteristika A/D i D/A pretvorbe broj koraka odnosno kanala koji određuju rezoluciju.
KU
13
Rezolucija ili razlučivanje je širina kanala kao postotak maksimalnog ulaznog napona ili jednostavno njihov omjer. Ako je nM maksimalni broj koji odgovara maksimalnom ulaznom naponu UM, onda je širina koraka jednaka UM/nM, pa se rezolucija svodi na 1/nM. Budući da je broj n izražen binarno sa k bita, maksimalni je broj 2k – 1, pa je uobičajeno da se rezolucija jednostavno izražava kao broj bita što ih ima ulazni ili izlazni podatak.
ua - ulazni napon n - broj bita nM - maksimalni broj bita UM - maksimalni ulazni napon UK - naponski interval (korak)
Sl. 3.6. Idealna karakteristika A/D pretvarača i blok shema
Analogno-digitalni pretvarač ne pretvara u digitalnu vrijednost cjelokupni analogni signal, već samo njegove uzorke u vremenu (slika 3.7.).
Sl. 3.7. Uzorkovanje analognog signala u vremenu
14
Da ne bi signal previše izobličili A/D pretvorbom potrebno je dobro provesti diskretizaciju. 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, a po amplitudi treba imati dovoljnu veliku razlučivost da bi razlikovala male promjene amplitude. A/D pretvorba je povremeno mjerenje vrijednosti signala ako se promatra kao proces. Kako je signal promjenjiv moramo u određenom trenutku uzeti uzorak (sample) signala i tu vrijednost privremeno pohraniti (hold). 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.
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č.
au
pu
Sl. 3.8. Wilkinson-ov A/D pretvarač A/D pretvarač koji ulazni analogni napon pretvara najprije u odgovarajući vremenski interval
prikazan je na slici 3.8. Ulazna analogna veličina ua nalazi se na jednom od ulaza naponskog komparatora K. Na drugom ulazu je napon 0, pa je izlaz komparatora na niskoj razini. Proces pretvorbe započinje impulsom START koji postavlja bistabil u 1. Time se otvara ulaz u brojilo i brojilo počinje brojati impulse iz generatora impulsa. Istovremeno je pobuđen i generator pilastog napona koji je spojen na drugi izlaz komparatora. Rad sklopa može se pratiti pomoću dijagrama na slici 3.9. Kada pilasti napon naraste do vrijednosti ulaznog napona, izlaz iz komparatora odlazi na visoku razinu i vraća bistabil u stanje 0. Time završava pretvorba napona u vrijeme. Za vrijeme T dok je ″I″ sklop otvoren impulsi iz generatora pokreću brojilo, a nakon završetka pretvorbe stanje brojila pokazuje traženu digitalnu veličinu u koju je pretvoren ulazni napon.Treba napomenuti da točnost pretvorbe ovisi o stabilnosti frekvencije generatora impulsa i o linearnosti i stabilnosti pilastog napona.
15
Sl.3.9. 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.). Pri tome prva stepenica ima veličinu Umax/2, druga Umax/4, treća Umax/8, itd. Gdje je Umax najveći ulazni napon koji se može pretvarati. Zbog takvog načina rada taj tip A/D pretvarača zove se i A/D pretvarač sa sukcesivnom aproksimacijom. Ako je stepeničasti napon, koji predstavlja sumu svih stepenica, manji od produženog ulaznog napona, onda do tada generirane stepenice ostaju. Kada stepenasti napon postane veći, briše se doprinos stepenice koja se pojavila posljednja i izazvala prekoračenje ulaznog napona. Tako na kraju usporedbe ostaju samo one stepenice čija je suma približno jednaka veličini ulaznog napona, odnosno neznatno niža od njega. Generiranjem svake naponske stepenice upravlja jedan bistabil, propuštajući kroz zajednički otpornik struju proporcionalnu težinskoj vrijednosti toga bistabila u binarnom brojevnom sustavu. Tako bistabil najmanje težinske vrijednosti B0 upravlja strujom I0 stvarajući najmanju stepenicu napona, sljedeći po redu bistabil B1, upravlja strujom 2I0 stvarajući tako dvostruko veću stepenicu, itd. Bistabili se postavljaju u stanje 1 nizom uzastopnih impulsa. Prvi od tih impulsa postavi u stanje prvi bistabil najveće težinske vrijednosti, koji ukljući odgovarajuću struju, i napravi najveću stepenicu Umax/2. Zatim se uključuje sljedeći bistabil po težinskoj vrijednosti, koji stvori stepenicu Umax/4, itd.Kada suma stepeničastog napona prekorači veličinu ulaznog napona, uspoređivač pošalje signal o prekoračenju.Taj signal postavi u nulu bistabil koji je generirao posljednju stepenicu, zbog toga prestane teći ona struja kojom upravlja taj bistabil pa nestane i njegova stepenica. Kada se tako izredaju svi bistabili i njihove stepenice, pretvorba je završena, a stanje bistabila u obliku binarnog podatka predočavaju na digitalni način veličinu ulaznog napona.
16
Sl. 3.12. A/D pretvarač sa sukcesivnom aproksimacijom
Sl. 3.13. Graf signala sukcesivnog A/D pretvarača
17
c) Sigma-delta A/D pretvarači
Sl.3.13.a Blok shema Sigma-delta A/D pretvarača
Na gornjoj slici ulazni naponski signal VIN je doveden na integrator, čiji izlaz se preko komparatora uspoređuje s referentnom naponskom nulom pretvarača. D-bistabil kontrolira preklopnik s kojim uključujemo/isključujemo referentni napon na ulazu u integrator. Kako ulazni napon raste ili pada, komparator uključuje ili isključuje referentni napon, koji se oduzima od ulaznog signala, s težnjom da zadrži nulu na izlazu integratora.
Brojač C1 konstantno broji impulse dobivene iz generatora takta, dok brojač C2 samo broji
impulse kada je preklopnik zatvoren. Pretpostavimo da je kapacitet brojača C1 1000. Nakon svakog perioda od 1000 impulsa, broj u brojaču C2 je proporcionalan srednjoj vrijednosti ulaznog signala.
Sigma-delta modulacijska tehnika je vrlo uspješno u upotrebi u analogno-digitalnoj pretvorbi
(ADC) nešto više od 20 godina. Iako sigma-delta postoji od polovice prošlog stoljeća, tek skorašnje prednosti VLSI tehnologija je omogućila uporabu da proteče generiran bit sa 1 bitnim ADC-om.
Posljedica visoke rezolucije sigma-delte tehnologije je brzina – sklopovlje treba funkcionirati sa
većim brojem uzoraka, mnogo većim od pojasne širine maksimalnog signala, te zahtjeva veliku složenost digitalnih strujnih krugova. Zbog ovih ograničenja, ovi pretvarači tradicionalno prikazuju visoku rezoluciju, vrlo niskog frekvencijskog zahtjeva, i u zadnje vrijeme govor, zvuk i umjerene brzine (100 kHz i 1 MHz).
Digitalno filtriranje prikazuje rezultate u dugoj prikrivenosti između početka ciklusa uzorka i prvog
ispravnog digitalnog izlaza. Značajno zaostajanje između digitalnog izlaza i njegovog trenutnog pratećeg uzorkovanja. 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.
18
Razlike u odnosu na alternativne tehnologije: • Većina strujnih krugova u sigma-delta pretvaračima je digitalna. To upućuje da se izvođenje neće
značajnije promjeniti s vremenom i temperaturom. Također, izvedivo je postavljanje pretvarača u jedan integrirani sklop sa dodanim strujnim krugom, kao što su D/A pretvarač, DSP (Procesor Digitalnog Signala), mikrokontroler. Konačno, njena izvedba nije skupa i cijena je stalno u padu.
• Oni su sami po sebi monotoni, odnosno promjena digitalnog izlaza je uvijek ista tj. padu ili rastu digitalnog ulaza. To je izrazito značajno u zatvorenim kružnim kontrolnim sustavima, gdje nedostaje interpretacija smjera promjena mjerene varijable, gdje može uzrokovati nestabilni sustav.
• Oni su sami po sebi linearni, te predočavaju manju diferencijalnu nelinearnost. • Ne zahtjevaju dodatni Sample & Hold strujni krug, tijekom velike ulazne brzine uzorkovanja i
male točnosti A/D pretvorbe. • Zahtjevi za analogne protupreklapajuće (anti-aliasing) filtere su minimalni, u većini slučajeva je
dovoljan jednostavni jednopolni RC filter. Za razliku od ostalih gdje su zahtjevi osrednji, za visoke rezolutne zahtjeve koriste se druge vrlo sofisticirane (ne preuzorkovane) tehnologije, drugačije dizajnirane, veće i skuplje.
• Razina smetnje, koji određuje SNR (Signal-To-Noise Ration – omjer snage signala i smetnje), je neovisana o razini ulaznog signala.
• Do tada je stanje digitalnog filtriranja dio nakon A/D pretvaranja, smetnje ubačene kroz pretvarački proces se mogu vrlo uspješno kontrolirati. Ustvari, filter može biti podešen do minimalne razine smetnje sa vrlo specifičnim karakteristikama (npr. 50 Hz).
• Prije svega, oni sami po sebi čine ove uređaje jeftine i pristupačne. U višekanalnoj primjeni, arhitekture jedan pretvarač po kanalu, često će biti efikasniji, ali i skuplji od jednog pretvarača za multipleksirane ulaze.
19
3.6 Digitalno analogni pretvarač
Digitalni signal ima mnoge svoje prednosti, ali je ipak analogni signal u mnogo slučajeva pogodniji. Na primjer, u regulacijskoj tehnici zbog izvršnog sklopa analogne prirode potrebno je digitalne signale pretvoriti u analogne.
02
12n−
izU
Sl. 3.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. On nam je potreban za prikaz podataka na CRT monitoru. D/A pretvarač radi tako da svaki bit binarnog podatka upravlja određenim iznosom električne struje proporcionalnog težinskoj vrijednosti tog bit-a. Tako bit najmanje težinske vrijednosti B0 upravlja strujnim iznosom I0, B1 upravlja strujom 2I0, B2 strujom 3I0, itd. Sve struje teku u istu točku te je konačan iznos određen binarnim brojem zbroj svih struja. Propuštanjem te struje kroz otpornik dobije se napon. Šiljci prijelaznog napona vezani su uz kontinuiranost veličine (slika 3.15.).
stvarniočitani
Šiljak prijelaznog napona
0111
1000
n
t
Sl. 3.15. Graf signala
20
3.7 Međusklop (Interface)
Međusklop (eng. interface) služi za povezivanje računala sa vanjskim uređajima. Vanjski sklopovi imaju drugačiji način rada koji je neovisan o načinu rada digitalnog računala. Zadatak međusklopova je da ta dva različita načina rada uskladi tako da čine cjelinu. Pošto su vanjski sklopovi jako različiti, međusklopovi trebaju biti sastavljeni od standardnih elektroničkih dijelova. Mikroračunala imaju posebne LSI-komponente za prijenos podataka između mikroprocesora i vanjskih jedinica, koje se programski prilagođavaju specifičnim vanjskim jedinicama. To omogućava fleksibilnost i jednostavnost međusklopova. Treba spomenuti da postoje standardni LSI-sklopovi za ulazno – izlazni prijenos. Ti LSI-sklopovi se rade za standardne vanjske jedinice kao što su disketna jedinica, tipkovnica, itd. Neposredni ulazno – izlazni prijenos se vrši paralelno, znači da se svi bit-ovi jedne riječi prenose od jednom (to su međusklopovi u užem smislu).
Uređaji za povezivanje udaljenih jedinica s računalom koriste serijsku vezu jer paralelna nije praktična zbog broja vodiča, znači prenosi se bit po bit. Najprije treba paralelne podatke pretvoriti u serijske te se na prijemnom mjestu opet pretvaraju u paralelne. Svi potrebni sklopovi za povezivanje na daljinu se također zovu interface, mada bi bilo prikladnije reći interface u širem smislu, jer oni sadrže interface u užem smislu, paralelno/serijsku i serijsko/paralelnu pretvorbu.
Uređaji koji koriste serijsku komunikaciju koriste dvije vrste kabela i to: DCE (Data Communications Equipment) i DTE (Data Terminal Equipment). DCE koriste modemi, printeri i sl. dok se DTE koristi za vezu između PC korisnika.
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.
Sl. 3.16. 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. Sklopovi su standardni i direktno su povezani sa sve tri sabirnice. Sklop ima svoj registar (privremenu memoriju) koja ima svoju adresu pa mikroprocesor lako na njega prenese podatke. Nečelo paralelnog prijenosa prikazan je na slici 3.17.
21
Sl. 3.17. Načelna shema osam bitnog paralelnog prijenosa
Prikazani sustav paralelnog prijenosa podataka razvila je tvrtka CENTRONICS, pa se često tako i naziva. Kako bitovi prolaze istovremeno, prijenos je brži od serijskog prijenosa, ali je neprikladan za udaljene veze zbog velikog broja vodiča u spojnom kabelu. Efikasna duljina je 10 m.
Sl. 3.18. Shema jedinice za paralelni prijenos
b) Serijski prijenos podataka. Za razliku od paralenog prijenosa, kod serijskog se podaci šalju po jednoj žici. Da bi se podaci sa sabirnice mogli redosljedno poslati preko serijskog sučelja, u sklopu sučelja obavezno su ugrađeni registri posmaka koji omogućavaju pretvorbu paralelnog prihvata u serijsko odašiljanje i obratno.
Sl. 3.19. Načelo rada serijskog prijenosa podataka
22
Sl. 3.20. UART
Najčešći tip prijenosnog puta u procesima je RS-232C. Postoje i RS-422 (baziran na strujnoj petlji od 4 do 20mA). RS-232C baziran je na naponskom prijenosu, ali na izlazu i ulazu su različiti naponi. Na izlazu se napon kreće od -15 do +15V, na izlazu od -3 do +3V. Brzine prijenosa su do 20Kb/s. RS-422 podržava vodove do kilometra i veće brzine prijenosa (do 100Kb/s).
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. kada se prenosi relativno malo bitova u sekundi, jer su tada prihvatljive veće međusobne razlike taktnih signala, odašiljača i prijemnika. Za veće brzine prijenosa upotrebljava se sinkroni prijenos koji mogu prenositi nekoliko puta više bitova u sekundi. Pri asinkronom načinu prijenosa odašiljač i prijemnik imaju odvojene izvore taktnih signala pa je potrebno relativno velika usklađenost, odnosno točnost tih signala. 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. Inače je način rada pri sinkronom serijskom prijenosu sličan radu pri asinkronom prijenosu. Postoji odašiljač koji paralelne podatke pretvara u serijske, i prijemnik što dolazeće impulse prihvaća i formira podatak spreman za daljnji paralelni prijenos.
Kod asinkronog prijenosa podataka nema informacije o taktu uključenog u samoj poruci, već se koristi česta resinkronizacija koristeći se start i stop bitovima.
Prijenos podataka počinje start bitom, a završava stop bitom. Osim start i stop bita može se slati i paritetni bit, koji štiti od jednostruke pogreške. Također ne može detektirati koji je bit krivo poslan, a ne može detektirati ni višestruke pogreške.
Sl. 3.21. Primjer RS-232 signala
23
3.8 Paritetni sklop
Paritetni sklop koristi se kao generator i ispitivač pariteta pri prijenosu digitalnih signala. Za siguran prijenos kodiranih podataka u digitalnim sustavima vrlo često se koristi metoda pariteta. Svakoj binarnoj kombinaciji, kojom se pokazuje podatak, dodaje se tzv. paritetni bit kako bi ukupan broj jedinica bio uvijek paran (metoda parnog broja jedinica) ili neparan (metoda neparnog broja jedinica).
Na mjestu odakle se odašilje digitalni signal paritetni sklop djeluje kao generator paritetnog bita. Sklop ispituje broj jedinica u podatku i generira paritetni bit. Ako 4-bitni podatak ima parni broj jedinica generator pariteta na izlazu daje stanje 0, ako podatak sadrži neparan broj jedinica, generator pariteta daje na izlazu stanje 1. Time se postiže da je ukupan broj jedinica podataka i paritetnog bita uvijek paran (slika 3.22.).
Sl. 3.22. Primjena paritetnog sklopa
3.9 Povezivanje računala sa procesima
Da bi se računala mogla primjeniti u vezi sa različitim procesima, karakteristične mjerne veličine (parametri procesa) moraju se unositi u računalo koje te podatke obrađuje, izvodeći karakteristične programe, specifične samo za taj proces. Izvođenje tih programa omogućuje da se pomoću računala nadzire odvijanje procesa, da se mjere izvorne ili izvedene veličine tog procesa ili da se procesom upravlja pomoću računala. Najprije treba razraditi odgovarajuće upravljačke, mjerne ili nadzorne algoritme kojima se na adekvatan (primjeren) način rješava postavljeni zadatak. Taj algoritam se zatim ubacuje u računalo pomoću programa napravljenih upotrebom nekog programskog jezika. Tokom rada na procesu ti se programi izvode u računalu, omogućavajući upravljanje procesom, mjerenje ili nadzor procesa. Da bi računalo moglo raditi sa procesom, potrebni su i u samom procesu odgovarajući sklopovi, karakteristični upravo za taj proces. To mogu biti različiti sklopovi. Oni povezuju proces sa elektroničkim i računalnim sustavom i mogu se podjeliti u dvije osnovne kategorije: Senzore (mjerne pretvarače, osjetila) i izvršne organe. Senzori izražavaju različite parametre procesa, najčešće u obliku električnih analognih signala (veličina napona ili struje). Izvršni organi služe za djelovanje na proces, ako se obradom ulaznih podataka ustanovi da to treba učiniti. 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, temperatura, radioaktivno zračenje itd. Budući da ima puno različitih parametara koji se mogu mjeriti, s većom ili manjom točnošću, postoji i veliki broj različitih senzora. Većina tih senzora izražava parametre (mjerne veličine) procesa u analognom obliku, odnosno u obliku veličine napona ili struje, zato ih prvo treba pretvoriti u digitalni oblik koji je pogodan za unos u računalo. Postoji dakako mogućnost, iako manja, da senzori izražavaju neke parametre procesa direktno u digitalnom obliku. Takve veličine nije potrebno pretvoriti u digitalni oblik, nego se mogu bez pretvorbe unositi u računalo.
24
3.10 Računalo
Računalo je ''mozak'' jednog ″on line″ sustava. Ono omogućava brzu reakciju i korekciju u sustavu. Tako na primjer, na temelju prikupljenih meteoroloških podataka računalo danas izračunava vremensku prognozu za sutra, za to bi ljudima koristeći meteorološke algoritme trebalo možda mjesec dana i tada bi ti podaci bili nevažni. Koristeći računalo ti podaci mogu biti obrađeni u vrlo kratkom vremenu pa ta vremenska prognoza postaje upotrebljiva. Računala tako mogu biti korištena u različite svrhe, a to im omogućuje programibilnost. Program koji je unesen u računalo prilagođava računalo određenom sustavu. Gotovo za svaki sustav računalo je sklopovski isto, moguće su male modifikacije.
3.10.1 Mikroprocesor
Mikroprocesor (CPU) je najvažniji elektronički sklop računala, koji preuzima programske instrukcije i na osnovu njih obrađuje podatke. Naziv ''mikro'' koristi se zbog malih dimenzija. Današnji mikroprocesori sadrže preko stotinu milijuna tranzistora ukomponiranih na silicijskoj pločici upakiranoj u kućište.
Prvi mikroprocesor proizvela je tvrtka Intel 1971. godine. To je bio 4-bitni mikroprocesor s brzinom od 6000 operacija u sekundi, zvao se 4004. Nakon tog uviđa se velika prednost mikroprocesora, te se počinju naglo razvijati. Prvi jači mikroprocesor bio je Intelov 8008 i Motorolin 6800 koji su bili 8-bitni procesori. Razvoj mikroprocesora se do danas nije zaustavio, no osnova njihovog rada je u principu ista.
Uz mikroprocesor se može pridodati i matematički koprocesor koji procesoru potpomaže u računskim operacijama. Koprocesor radi paralelno s mikroprocesorom i može preko njemu usmjerenih instrukcija izvršiti vrlo moćne operacije s pokretnim zarezom. Svi noviji procesori imaju integriran koprocesor u kućište s mikroprocesorom.
Značajke mikroprocesora:
• velika prilagodljivost (univerzalnost) • niska cijena • male dimenzije • velika pouzdanost
3.10.2 Mikrokontroler
Mikrokontroler je elektronički uređaj koji, slično kao i računalo, ima zadaću da zamjeni čovjeka u kontroli dijela proizvodnog procesa ili gotovo cijelog proizvodnog procesa. 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), dok je standardni izlaz monitor ili pisač. Teško je definirati što će biti standardni ulaz i izlaz mikrokontroleru. Razlog tome je što su mikrokontroleri uglavnom dizajnirani za specifične zadaće vrlo raznolike od slučaja do slučaja. Primjera ima mnogo, od jednostavne regulacije osvjetljenja, alarmnih sustav, pa dao upravljanja robotima u industrijskim pogonima. 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. Mikrokontroler tada ima za obradu samo dva stanja koje opisuje jedan bit. Složenije je praćenje ako treba pratiti stvarnu razinu nivoa tekućine u spremniku. 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. 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.
Dakle, ulazi mogu biti analogne i digitalne prirode i u suštini podatke će isporučivati nekakav mjerni pretvornik (senzor).
25
Izlazi iz mikrokontrolera također mogu biti analogne i digitalne prirode. Analogni izlazi, bilo naponski ili strujni, mogu se elektromehaničkim sklopovima pretvoriti u neku korisnu radnju kao promjena položaja nekog predmeta, povećanje brzine vrtnje motora i slično. Najjednostavniji primjer je lampica upozorenja koja upozorava čovjeka na promjenu ili neispravnost. Složeniji izlaz biti će kada se želi pratiti veličina promjene bilo kao analogni ili digitalni prikaz.
Naravno, ulaz i izlaz mikrokontrolera nije isključivo vezan na komunikaciju sa strojem. Uglavnom kontroler ima neki vid komunikacije prema korisniku, na primjer s lampicama ili s digitalnim pokazivačem. No nisu rijetki slučajevi da se za komunikaciju s čovjekom koristi računalo tipa PC.
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. On je uistinu malo računalo, a složenost mu ovisi o složenosti zadaće koju ima nadzirati.
Sl. 3.23. Pojednostavljeni model mikroprocesora
26
- Aritmetičko-logička jedinica (izvršna jedinica) ALU izvršava osnovne aritmetičke i logičke operacije (+, -, posmak, komplementiranje, 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). Rezultat operacije se najčešće ponovo pohranjuje u akumulator. Akumulator sudjeluje i u prijenosu podataka između procesora i ostalih komponenti računala, odnosno vanjskog svijeta.
- Programsko brojilo PC (engl. Program Counter) je registar koji sadrži adresu sljedeće instrukcije koja će se izvesti. Upravljačka jedinica ga automatski inkrementira.
- Instrukcijski registar IR je registar u kojem je zapisan operacijski kod čije je izvršavanje u tijeku. Operacijski kod je binarni kod kojim je pojedina instrukcija prikazana i zapisana u memoriji računala.
- DC (engl. Data Counter) je registar u kojem je zapisana adresa memorijske lokacije na kojoj se nalazi operand, pa se taj registar naziva brojilo podataka.
- 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. Ovaj privremeni registar nije element programskog modela mikroprocesora.
- Interna sabirnica – skup linija za prijenos podataka koje su izvedene na samom mikroprocesorskom čipu. Omogućava prijenos podataka između pojedinih registara, aritmetičko-logičke jedinice i upravljačke jedinice. Interna sabirnica je preko međuregistara, odnosno sabirničkog sučelja povezana s vanjskom sabirnicom.
- Upravljačka jedinica – sastoji se od sklopova za dekodiranje instrukcije i upravljačkih sklopova. Upravljački sklopovi u skladu s operacijskim kodom instrukcije koja se izvršava generiraju niz upravljačkih signala. Ti signali upravljaju prijenosom podataka između registara i aritmetičko-logičke jedinice, aktiviraju promjenama vrijednosti programskog brojila, omogućavaju prijenose podataka između procesora i memorije i sl. Sve operacije unutar mikroprocesora sinkroniziraju se signalom vremenskog vođenja (takt). Događaji u mikroprocesoru odvijaju se u točno utvrđenim diskretnim vremenskom trenucima.
Registre u procesoru dijelimo na:
a) registri opće namjene (služe za privremenu pohranu podataka koji se obrađuju, odnosno operanada, međurezultata, rezultata, pohranjuju kazala koja upućuju na pojedine memorijske lokacije)
b) namjenski registri (programsko brojilo [program counter], kazalo stoga [stack pointer], registar stanja programa [program status word, statusni registar])
c) namjenski registri kojima korisnik ne može pristupiti (IR – registar instrukcija, privremeni registar)
3.10.3 Arhitektura računala
Postoje dvije dominantne arhitekture procesora, a to su:
• CISC (engl. Complex Instruction Set Computer)
• RISC (engl. Reduced Instruction Set Computer)
CISC arhitektura (slika 3.25.) je starija arhitektura od RISC, osmislio ju je Von Neumann 1945.
godine. Sustavno je opisao osnovnu građu i djelovanje računala, a na njegovom se modelu temelje i današnja računala (slika 3.24.).
27
Sl. 3.24. Van Neumannov model računala
Da bi popravili performanse CISC arhitektura pokušava smanjiti broj instrukcija koje program mora pozivati. Da bi to napravili moraju imati velik broj mikro instrukcija koje pokrivaju velik raspon zadataka. Jedna mikroinstrukcija, kad se dekodira u procesoru može postati nekoliko zadataka (tasks) koje procesor mora izvršiti. Kao posljedica, instrukcije su varijabilne duljine i često zahtjevaju više od jednog takta za njihovo izvršavanje. Kao što vidimo na slici 3.25. CISC arhitektura koristi samo jednu sabirnicu koja služi kao podatkovna i kao adresna sabirnica.
Sl. 3.25. 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.) računala nastala je na Sveučilištu Harvard. RISC arhitektura pokušava poboljšati performanse reduciranjem broja taktova potrebnih za izvršavanjem zadatka. Imaju mali set pojednostavljenih instrukcija, izvršavajući cijeli mikro kôd odjednom. Ovo znači da zadatak treba više instrukcija koje su jednake duljine i obično trebaju jedan takt za izvršavanje. Zbog ovoga, RISC sustavi su sposobni procesirati više instrukcija paralelno (pipelining). Procesor radi više instrukcija odjednom, počevši drugu instrukciju prije završetka prve. Ovo značajno povećava propusnost i čini RISC bržim od CISC-a. Vidimo na slici 3.26. da ova koncepcija koristi dvije sabirnice. Time se postiže veći protok informacija. Odvajanjem sabirnica omogućava se da instrukcije mogu biti veće od 8 bit-a. 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.
28
Sl. 3.26. Pojednostavljena shema RISC arhitekture ili Harvard-ske arhitekture
Najznačajnije karakteristike RISC mikroprocesora:
• smanjen instrukcijski set • manje kompleksne, jednostavne instrukcije • nije potrebna kontrolna jedinica za dekodiranje instrukcija • maksimalno četiri načina adresiranja memorije • puno registara • manji radni takt
3.10.4 Razlika između mikroprocesora i mikrokontrolera
Sa rastom snage mikroprocesora rasla je i njegova primjenjivost. Zato se na čip veličine mikroprocesora stavlja cijelo računalo – mikrokontroler. Mikrokontroleri su uglavnom dizajnirani za specifične zadatke vrlo raznolike od slučaja do slučaja. U suštini mikrokontroler je malo računalo, a složenost mu ovisi o složenosti zadaće koju mora obavljati. Od namjene mikrokontrolera ovisiti će broj U/I portova, odnosno broj digitalnih i analognih ulaza/izlaza.
POD
ATKO
VNA
SABI
RNI
CA
ME
MO
RIJ
A
Sl. 3.27. Shema mikrokontrolera s njegovim osnovnim elementima
29
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 - reda KB) • Stalna memorija s programskim kodom (u EPROM izvedbi) • Brojači različitih namjena kao sat, brojač impulsa, BCD brojač... • 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.10.5 Memorijska jedinica
Dio mikrokontrolera koji je zadužen za čuvanje podataka. Memorija mora biti u mogućnosti da čita i zapisuje podatke. Zato postoji linija Č/P, ako je Č/P = 1 onda se vrši čitanje u suprotnom vršimo upis.
Sl. 3.28. Model memorijske jedinice
3.10.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, 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. Podatak može biti 8 ili 16 bitni. Za dohvat 2 bajta podatka dovoljna su tri zahvata u memoriju. To je vrlo brz način adresiranja.
30
• direktno (izravno) – prvi bajt je operacijski kod koji govori koja se operacija radi sa podatkom, a drugi i treći bajt naredbe pokazuju lokaciju memorije gdje se nalazi podatak koji se želi obraditi. Ovakvim načinom adresiranja može se doduše adresirati bilo koja lokacija u adresnom polju, ali za dobivanje samo adrese operanda potrebna su dva zahvata u memoriju, to je vrlo spor način adresiranja.
• indirektno (posredno) – drugi i treći bajt naredbe pokazuju adresu lokacije(pointera) gdje se nalazi adresa podatka koji se obrađuje. To je vrlo neekonomično adresiranje, jer za dohvat podatka treba puno zahvata u memoriju. Prednost je da se stvarna adresa operanda može programski mjenjati, mjenjanjem sadržaja pointera tijekom izvođenja programa bez potrebe mijenjanja glavnog programa.
• segmentno – zasniva se na činjenici da se programi većinom vrte u jednom dijelu (segmentu) memorije.
MMU (jedinica za upravljanje memorijom) - zadatak Memory Management Unit je da podjeli memoriju na više segmenata. Tako podijeljena memorija se adresira segmentno.
3.10.7 CPU (Central Processing Unit)
Mikroprocesor (CPU) je najvažniji elektronički sklop računala, koji preuzima programske naredbe i na osnovu njih obrađuje podatke. Naziv ''mikro’’ koristi se zbog malih dimenzija. Sadrži do nekoliko milijuna tranzistora ukomponiranih na silicijskoj pločici upakiranoj u plastično kućište.
Vrijeme izvođenja instrukcija je reda mikrosekunde, a broj instrukcija i veličina binarnog podatka osnovni su parametri koji definiraju kvalitetu mikroprocesora. Mikroprocesori koji se u računalnim sustavima opće namjene koriste dizajnirani su za rad s podacima duljine 4, 8, 16, 32 i 64 bit-a.
Sl. 3.29. Primjer centralne procesorske jedinice sa tri registra
Na slici 3.29. prikazan je primjer centralne procesorske jedinice sa tri registra, 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 , čime je spriječena bilo kakva razmijena podataka. 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, tj. moramo imati neki ″put″ preko kojeg podaci idu iz jednog bloka u drugi, a ti ″putevi″ se zovu sabirnice.
31
3.10.8 Sabirnica
Prijenos podataka između sklopova unutar mikroprocesora i unutar računala vrlo je značajan dio posla, a obavlja se preko SABIRNICA (BUS), višežilnim prenosnim putevima između pojedinih sklopova. Broj vodova sabirnice ovisi o broju bit-a koji opisuju podatke koje je potrebno prenjeti. U suštini prijenos podataka je paralelan.
Dakle postoje dva osnovna sustava sabirnica:
1.) Unutrašnje sabirnice - veze unutar mikroprocesora. 2.) Vanjske sabirnice - veze u računalu izvan mikroprocesora.
Međusobno su odvojene međusklopovima jer se često promet na njima ne odvija istom brzinom. Razmjena podataka u mikroprocesoru obavlja se višestruko brže nego između sklopova računala, te ih je stoga potrebno odvojiti. O prijenosu podataka između unutrašnje i vanjske sabirnice brinu se posebni upravljači (controller).
Unutarnja i vanjska komunikacija odvija se preko tri odvojene sabirnice:
1.) Podatkovne sabirnice – dvosmjerna 2.) Adresne sabirnice – jednosmjerna 3.) Upravljačke sabirnice – jednosmjerna
Naravno, komunikacija posredstvom triju sabirnica ubrzava sustav. Podatku, koji je na sabirnici
podataka, preko adresne sabirnice određuje se mjesto na koje će se uputiti, a upravljačka sabirnica će prijenos odobriti.
REGISTAR 1
REGISTAR 2
REGISTAR 3
CPU
MEMORIJSKA LOKACIJA 0
MEMORIJSKA LOKACIJA 1
MEMORIJSKA LOKACIJA 2
MEMORIJSKA LOKACIJA n
PODACIMEMORIJA
Kontrolne linije
Č/P
ADRESE
Sl. 3.30. Primjer komunikacije memorije i centralne procesorske jedinice pomoću sabirnica
Na slici 3.30. prikazana je komunikacija centralne procesorske jedinice sa memorijom. Memorija se sastoji od 16 memorijskih lokacija koja sa centalnom procesorskom jedinicom komunicira preko podatkovne sabirnice (koja je dvosmjerna). Podatkovna sabirnica sastoji se od onoliko linija koliko memorije želimo adresirati, a služi za prijenos adrese od CPU do memorije, dok adresna sabirnica (koja je jednosmjerna) povezuje sve blokove unutar mikrokontrolera.
32
3.10.9 U/I jedinica
Ove memorijske lokacije se nazivaju portovi. Portovi mogu biti ulazni, izlazni ili dvosmjerni. Kod rada s portovima potrebno je prvo odabrati port s kojim se radi.
ULAZNIREGISTAR
U/Ijedinica
PODACI
PODACI
PODACI
IZLAZNIREGISTAR
Sl. 3.31. Primjer U/I jedinice
3.10.10 Serijska komunikacija
Ovime smo mikrokontroleru omogućili povezivanje na daljinu. Paralelni prijenos nije pogodan za velike udaljenosti zbog većeg broja vodiča. Da bi prijenos funkcionirao treba odrediti skup pravila po kojima će se odvijati, skup pravila po kojem se vrši prijenos podataka nazivamo protokol. Serijski prijenos podataka dijelimo na sinkroni i asinkroni. Sinkroni prijenos između dva uređaja radi pod zajedničkim taktom. Asinkroni prijenos koristimo kad ne znamo frekvencijski takt drugog uređaja, ovu vrstu prijenosa koristimo za slanje manjih podataka.
Sl. 3.32. Serijska jedinica
33
3.10.11 Slobodni brojač
To je registar čija se vrijednost uvećava u pravilnim vremenskim razmacima. Omogućava nam mjerenje vremena.
Sl. 3.33. Slobodni brojač
3.10.12 Sigurnosni brojač (Watchdog timer)
Program u njega upisuje 0 svaki put kad kada se pravilno izvrši. Ako signal izostane, neće doći do upisivanja 0 (znači da se mikrokontroler vrti u beskonačnoj petlji ), vrijednost brojača će se povećavati do svoje maksimalne vrijednosti kada će sam resetirati mikrokontroler.
Sl. 3.34. Sigurnosni brojač
Na taj način onemogućava se duži nepravilan rad mikrokontrolera bez obzira na uzrok neispravnosti. Ova metoda višestruko povećava sigurnost sustava kojeg mikrokontroler nadzire/upravlja.
34
4 Mikrokontroler PIC 16F84
4.1 Osnovne karakteristike mikrokontrolera PIC 16F84
4.1.1 Karakteristike mikrokontrolera
• samo 35 jednorječnih instrukcija • sve su instrukcije jednociklusne, osim instrukcija grananja programa i programskog skoka • radni takt; 4MHz, 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:
- vanjski na nožici RB0/INT - preljev timer-a TMR0 - prekid pri promjeni na RB4, RB5, RB6 i RB7 nožicama porta B - 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.1.2 Karakteristike ulazno/izlaznih sklopova
• 13 ulazno/izlaznih pojedinačno upravljivih nožica • velika struja U/I sklopova za napajanje LED dioda:
- maksimalna ulazna struja po nožici je 25mA - maksimalna izlazna struja po nožici je 20mA
• 8-bit-ni timer/brojač sa 8-bit-nim programibilnim djeliteljem frekfencije
4.1.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
• zaštita koda • SLEEP način rada ( za štednju energije) • odabir vrste oscilatora
4.1.4 Karakteristike CMOS Flash/EEPROM tehnologije
• mala potrošnja, velika brzina • radni napon od 2.0V do 6.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.2 Kratak opis mikrokontrolera
PIC 16F84 je 8-bit-ni mikrokontroler niske cijene, izveden CMOS tehnologijom. Izveden je u RISC (Reduced Instruction Set Computer) arhitekturi. To znači da koristi dvije sabirnice, podatkovnu (8-bit-na) i instukcijsku (14-bit-na). PIC 16F84 ima osam nivoa dubok stog i više prekidnih izvora, što unutarnjih, što vanjskih. Istovremeno izvođenje i prihvaćenje slijedeće instrukcije omogućuje da se svaka instrukcija izvrši u jednom instrukcijskom ciklusu, osim instrukcija skoka i poziva potprograma (za koje su potrebna dva instrukcijska ciklusa). 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. SLEEP način rada omogućuje štednju energije. Iz takvog načina rada mikrokontroler se može vratiti u aktivno stanje putem prekida, vanjskih ili unutarnjih, i/ili resetom. Te ima Watchdog timer sa vlastitim RC oscilatorom koji štiti od softverskog ″zamrzavanja″ ili slučajne beskonačne petlje. Incircuit reprogramibilnost omogućuje optimiranje programskog koda unutar sklopa, bez odvajanja mikrokontrolera od gotovog sklopa. To je vrlo korisno u razvoju sklopova gdje mikrokontroler nije fizički dostupan, a prototip zahtjeva optimizaciju.
MEM. ZAPODATKE
RAM
MEM. ZAPODATKEEEPROM
PORT A PORT B
SLOBODNIBROJAČ
CPU
Sl. 4.1. Blok shema mikrokontrolera PIC 16F84
36
4.3 Raspored nožica
Sl. 4.2. Raspored nožica mikrokontrolera PIC 16F84
1. RA2 – druga nožica porta A 2. RA3 – treća nožica porta A 3. RA4/TOCKI – četvrta nožica porta A, može biti i ulaz takta za timer/brojač 4. MCLR – reset ulaz i Vpp napon programiranja mikrokontrolera 5. VSS – napajanje (″masa″) 6. RB0/INT – nulti pin porta B i interrupt ulaz 7. RB1 – prva nožica porta B 8. RB2 – druga nožica porta B 9. RB3 – treća nožica porta B
10. RB4 – četvrta nožica porta B 11. RB5 – peta nožica porta B 12. RB6 – šesta nožica porta B i ulaz takta u programskom modu 13. RB7 – sedma nožica porta B i linija za ulaz podataka u programskom modu 14. Vdd – pozitivno napajanje 15. OSC1 – nožica koja služi za spajanje vanjskog oscilatora 16. 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 17. RA0 – nulta nožica porta A 18. RA1 – prva nožica porta A
4.4 Generatori takta
PIC 16F84 može raditi sa dvije različite konfiguracije oscilatora. A to su kristalni oscilator (XT) i RC oscilator, radnog takta 4 MHz, 10 MHz ili 20 MHz ovisno o tipu mikrokontrolera. Slika 4.5. prikazuje oblik signala dobiven iz oscilatora u trenutku uključenja, oscilatoru treba neko vrijeme ∆T da se stabilizira na određenu frekvenciju.
37
OSCI 1
OSCI 2
C2
C1
XTAL
Sl. 4.3. Spajanje kristalnog oscilatora
OSCI 1
OSCI 2
C
Vdd
R
Sl. 4.4. Spajanje RC oscilatora
+5
t
U
TSl. 4.5. Oblik signala pri uključenju oscilatora
38
4.5 Takt / instrukcijski ciklus
Takt doveden s nožice OSC1 u mikrokontroleru se dijeli na četiri nepreklapajuća takta koje nazivamo Q1, Q2, Q3 i Q4 koji skupa čine jedan instrukcijski ciklus npr. TCY1.
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. Na Q1 takt u instrukcijskom ciklusu TCY2 programski
brojač (PC) se uvećava za 1 te poziva instrukciju iz programske memorije. 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. U četvrtom taktu Q4 instrukcijskog ciklusa TCY2 se instrukcija pozvana na Q1 sprema u instrukcijski registar.
TCY1 TCY2 TCY3
PC
Q1
Q1 Q1 Q1
Q2
Q2 Q2 Q2
Q3
Q3 Q3 Q3
Q4
Q4 Q4 Q4
OSC1
Sl. 4.6. Vremenski dijagram izvršavanja instrukcije
4.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. No zbog protočne obrade, svaka instrukcija se efektivno izvršava u jednom ciklusu.
39
4.7 Reset
Reset služi da bi sve registre mikrokontrolera doveli u početni položaj. Znači ako se mikrokontroler ''smrzne'' ili smo ga tek uključili treba ga resetirati. Da bi spriječili slučajno dovođenje ''0'' na MCLR nožicu, potrebno ju je preko otpornika spojiti na pozitivan pol napajanja Vdd, slika 4.7.
Sl. 4.7.
Vdd
RA 2
RA 3
RA 4
MCLR
R
PIC 16F84 ima više vrsta resetiranja:
1. Resetiranje pri dovođenju napajanja (Power-on Reset). Ovaj reset traje isto koliko treba oscilatoru da stabilizira frekvenciju (∆T), slika 4.5. odnosno 72 ms
2. Dovođenje ″0″ na MCLR nožicu 3. Reset za vrijeme ″Sleep″ načina rada 4. Reset pri prekoračenju Watchdog timera
4.7.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, te ga ″drži″ 72 ms u resetu koliko je potrebno da se frekvencija stabilizira.
1.8 V
U
t
T
Sl. 4.8. Reset pri padu napona
40
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 STATUS, RP0 ;bank1 movlw b'11111100' ;definiranje ulaznih i izlaznih pinova movwf TRISA ;upis u TRISA registar bcf STATUS, RP0 ;bank0 U primjeru su pinovi RA0 i RA1 proglašeni kao izlazni a RA2, RA3 i RA4 ulazni.
1
RA2
RA3
0TRISA
PORTA
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 STATUS, RP0 ;bank1 movlw 0x0F ;definiranje ulaznih i izlaznih pinova movwf TRISB ;upis u TRISB registar bcf STATUS, RP0 ;bank0
41
bsf PORTB, 4 ;PORTB < 7 : 4 > = 0 bsf PORTB, 5 bsf PORTB, 6 bsf PORTB, 7
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.
1
RB1
RB3
RB2
0TRISB
PORTB
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 STATUS, RP0 - odabrana je banka 0 Bsf 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
4.9.2 Stog (Stack)
PIC 16F84 ima 13-bitni hardverski stog dubok 8 nivoa. Memorijski prostor stoga nije dio ni programske ni podatkovne memorije, a pokazivač stoga nije moguće čitati i u njega upisivati vrijednosti. 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. Sadržaj sa stoga vraća se u programsko brojilo kod izvršavanja instrukcija RETURN, RETLW ili RETFIE, koje se izvršavaju na kraju potprograma.
4.9.3 Status registar
U status registru se upisuju aritmetički status ALU (C, DC, Z), reset status (TO, PD) i bit-ovi za odabir memorijske banke (IRP, RP1, RP0). Ovaj registar može biti odredište za bilo koju instrukciju s bilo kojim drugim registrom. Ako je status registar odredište instrukcije koja utječe na Z, DC ili C bit tada je upis u ova tri bit-a je onemogućen.
IRP RP1 RP0 TO PD Z DC C
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
bit 0bit 7
R – bit koji se može očitati U – neiskorišten bit, čita se kao «0» W – bit koji se može upisati n – vrijednost nakon reseta
C (Carry) – bit na koji utječu operacije zbrajanja i oduzimanja, 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, 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, RP0 (Register Bank Select) – bit-ovi za izbor memorijske banke, RP1 je uvijek «0»
01 = BANK 0 00 = BANK 1
IRP (Register Bank Select) – osmi bit za indirektno adresiranje RAM-a, ne koristi se kod PIC 16F84 i
ne smije biti setiran 0 = banka 2 i 3 1 = banka 0 i 1
44
4.9.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, RP0).
BANK 0 BANK 1
IRP0IRP1
+
00
7F
00 01
07
odabirbanke
odabirlokacije
Sl. 4.12 Direktno adresiranje
4.9.5 Indirektno adresiranje
Ovaj način adresiranja ne uzima adresu iz instrukcije, već je radi pomoću IRP bit-a STATUS registra i FSR registra. Adresiranoj lokaciji se pristupa preko INDF registra koji zapravo nije fizički registar već se njegova adresa nalazi u FSR registru, FSR je pokazivač. Npr. ako memorijska lokacija 05h sadrži vrijednost 10h i ako memorijska lokacija 06h sadrži vrijednost 0Ah, upišemo li vrijednost 05h u FSR registar, INDF registar vratit će vrijednost 10h. Inkrementiranjem FSR registra, INDF registar vratit će vrijednost 0Ah.
Sl. 4.13. Indirektno adresiranje
4.9.6 Relativno adresiranje
Adresa operanda u postupku relativnog adresiranja ovisi o smještaju same naredbe unutar memorije. Oblik naredbe koja koristi relativno adresiranje prikazano je na slici 4.14.
Adresa operanda izračuna se tako, da se adresi, na kojoj se nalazi kod postupka, pribroji pomak. Naziv relativno adresiranje potječe upravo od činjenice, da je adresa operanda određena relativno prema položaju, odnosno smještzaju same naredbe. Relativni pomak računa se kao dvojni komplement, a to znači da on može biti pozitivan i negativan.Budući da na raspolaganju stoji 8 bitova, to je moguće adresirati bilo koju memorijsku lokaciju, udaljenu +127 ili -128 memorijskih lokacija od lokacija same naredbe.
45
Naredbe koje koriste relativno adresiranje su dužine dviju riječi, što ih čini prikladnim za upotrebu. Mana relativnog adresiranja je u relativno kratkom dometu adrese (+127, -128 memorijskih lokacija), te u potrebi za izračunavanjem relativnog pomaka prilikom pisanja programa. Formula po kojoj se izračunava stvarna adresa glasi:
Stvarna adresa (operanda ili skoka) = adresa naredbe+relativni pomak.
Sl. 4.14. Oblik naredbe Relativnog adresiranja
4.10 Prekidi (Interrupts)
Prekid je mehanizam mikrokontrolera koji omogućava da se na neke događaje odgovori u trenutku kada se oni dese, bez obzira što mikrokontroler radi u tom trenutku. Svaki prekid mijenja tok izvršavanja programa, prekida ga, te nakon izvršenja prekidnog potprograma nastavlja na istom mjestu (Slika 4.15). Kontrolni registar prekida naziva se INTCON i nalazi se na adresi 0Bh. Njegova uloga je da omogući ili zabrani prekide, a u slučaju da su zabranjeni, registrira pojedinačne zahtjeve prekida preko svojih bitova.
Sl. 4.15. Prekid glavnog programa
PIC 16F84 ima četiri vrste prekida:
1. Vanjski na nožici RB0/INT
B4, RB5, RB6 i RB7 nožicama porta B memoriju
Vdd
R
RB0/INTT
TOKIZVRŠAVANJAPROGRAMA
NASTAVAKNORMALNOG
TOKAIZVRŠAVANJAPROGRAMA
PROGRAMU KOM SE
OBRAĐUJEPREKID
2. Preljev timer-a TMR0 3. Prekid pri promjeni na R4. Prekid nakon završetka procesa upisivanja podataka u EEPROM
46
GIE bit može zabraniti ili omogućiti sve prekide odjednom. To je vrlo korisno kod pisanja programa jer omogućuje da se na neko vrijeme zabrane svi prekidi. Prekidi koji su ostali ne riješeni obrađuju se nakon ponovnog setiranja GIE bit-a. 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.
EEIE
TOIE
RBIE
INTE
EEIF
TOIF
RBIF
INTFGIE
INTERUPT
Sl. 4.16. Shema prekida
Na slici 4.16. prikazana je opća shema prekida pomoću sklopki. Pomoću GIE sklopke omogućujemo bilo koji od četiri moguća prekida. Koristeći sklopke EEIE, TOIE, RBIF, INTE određujemo vrste prekida, dok nam sklopke sa desne strane EEIF, TOIF, RBIF, INTF pokazuju koji se prekid dogodio nekom trenutku.
4.10.1 INTCON registar
BIF (RB Port Change Interrupt Flag) – bit koji nam govori o promjeni na 4,5,6, ili 7-om pinu porta B
Interrupt Flag) – bit koji nam govori da e došlo do vanjskog prekida
MR0 brojača ačenja
čenja
, ina porta B
0 = onemogućena pojava prekida
INTE (INT External Interrupt Enable) – bit k rekid sa pina RB0/INT
R
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
bit 0bit 7
R – bit koji se može očitati U – neiskorišten bit, čita se kao «0» W – bit koji se može upisati n – vrijednost nakon reseta
INTF (INT External
1 = najmanje jedan pin je promijenio stanje 0 = nije se desila promjena ni na jednom pinu
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 T 1 = došlo je do prekor 0 = nije došlo do prekora RBIE (RB Port Change Interrupt Enable) – bit koji omogućava pojavu prekida na promjenu stanja 4, 5
6 ili 7-og p 1 = omogućena pojava prekida
oji omogućuje vanjski p 1 = prekid je omogućen 0 = prekid je onemogućen
47
T0IE (TMR0 Overflow Interrupt Enable) – bit koji omogućuje prekid prilikom prekoračenja brojača
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.11 Podatkovna EEPROM memorija
PIC 16F84 ima 64 bayt-a EEPROM memorijskih lokacija na adresama od 00h do 63h. Najvažnija osobina ove memorije je da ne gubi sadržaj prilikom nestanka napona napajanja. Stoga ova memorija služi za čuvanje parametaranekog procesa ili nekih važnih promjenjivih podataka.
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. Za čitanje podatka nije potrebno neko vrijeme kao za upis pa se taj podatak može koristiti već u sljedećoj instrukciji.
Primjer djela programa koji vrši čitanje podataka iz EEPROM-a.
Bcf STATUS,RP0 ;bank0 jer je EEADR na 09h Movlw 0x00 ;adresa lokacije koja se cita Movwf EEADR ;adresa se prebacuje u EEADR Bsf STATUS,RP0 ;bank1 jer je EECON1 na 88h Bsf EECON,RD ;citanje iz EEPROM-a Bcf STATUS,RP0 ;bank0 jer je EEDATA na 08h Movf EEDATA,W ;W EEDATA
Da bi upisali podatak u EEPROM memoriju treba prvo upisati adresu željene memorijske lokacije u EEADR registar a podatak u EEDATA registar. Nakon toga setiramo WR bit koji pokreće upisivanje podatka na željenu lokaciju. Nakon upisa WR bit će biti resetiran, a EEIF setiran, što se može iskoristiti za obradu prekida. Vrijednosti 55h i AAh su prvi i drugi ključ koji onemogućuju da dođe do slučajnog upisa u EEPROM. Te dvije vrijednosti se upisuju u EECON2, koji služi samo za prihvaćanje ove dvije vrijednosti i time spriječi slučajan upis. Programske linije u primjeru označene s 1, 2, 3, 4 i 5 moraju biti izvršene tim redoslijedom i u pravilnim vremenskim razmacima, tako da je vrlo važno onemogućiti prekide za vrijeme izvršavanja tih instrukcija. Nakon upisa prekidi se mogu omogućiti.
Primjer dijela programa koji vrši upis podatka 0xEE u prvu lokaciju EEPROM memorije. Bcf STATUS,RP0 ;bank0 jer je EEADR na 09h Movlw 0x00 ;adresa lokacije u koju se pise Movwf EEADR ;adresa se prebacuje u EEADR Movlw 0Xee ;upisujemo vrijednost 0xEE Movwf EEDATA ;podatak ide u EEDATA registar Bsf STATUS,RP0 ;bank1 jer je EEADR na 09h Bcf INTCON,GIE ;svi prekidi se onemogucuju Bsf EECON1,WREN ;omogućuje se upis 1. movlw 55h 2. movwf EECON2 ;prvi kljuc 55h EECON2 3. movlw AAh 4. movwf EECON2 ;drugi kljuc AAh EECON2 5. bsf EECON1,WR ;inicira upis bsf INTCON,GIE ;prekidi se omogucuju
TMR0 1 = prekid je omogućen 0 = prekid je onemogućen
48
EEPROM memoriji se pristupa preko SFR registara, a to su:
EDAT – sadr i podat eba upisati EADR sadrži adresu istupa ECON1 – sadrži kontrolne bit-ove
4.11.1 EECON1 reg
0 = ne inicira čitanje
R (Write Control) – bit koji inicira upis podataka iz EEDATA registra na adresu koja se nalazi u E
ju ljen
o 255 kreće sa liko će brojač je je potrebno oteklo za bilo
lera i brojača. o je dozvoljen
resetirat da bi avati korištenjem unutarnjeg takta
ću bit-a T0CS u OPTION ća ili padajuća) na koju će
E A ž ak koji je pročitan ili ga trE – EEPROM lokacije kojoj se prEEECON2 – služi da zaštiti EEPROM od slučajnog upisa
istar
B e iste i pri čitanju su uvijek nule. it-ovi 5, 6 i 7 s ne kor
EETE
bit 7
WRERR WREN WR RD
U-0 U-0 U-0 R/W-1 R/W-1 R/W-x R/S-0 R/S-x
bit 0
R – bit koji se može očitati U – neiskorišten bit, čita se kao «0» W – bit koji se može upisati n – vrijednost nakon reseta
RD (Read Control) – bit koji inicira prijenos podataka s adrese definirane EEADR u EEDATA registar 1 = inicira čitanje W
EADR registru 1 = inicira upis 0 = ne inicira upis WREN (EEPROM Write Enable) – bit koji omogućuje upis u EEPROM memori 1 = upis je dozvo
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.12 Slobodni brojač TMR0
Fizički brojač je registar čija se vrijednost stalno uvećava za jedan a kad dođe dbrojanjem ponovno od nule. PIC16F84 ima 8 bit-ni brojač, broj bitova određuje do ko
8 e kobrojati (2 = 256). Brojač nam omogućuje da mjerimo vrijeme, ako znamo vrijembrojaču da napravi puni krug od 0 do 256 tada lako možemo izračunati vrijeme koje je pr
skakoje stanje brojača. Na slici 2.2. je prikazana pojednostavljena shema odnosa preNakon svakog prelaska brojača s 255 na 0 setira se bit T0IF u INTCON registru. Ak
mora programerprekid, ovo se može iskoristiti za generiranje prekida. T0IF bit n Stanje brojača može se uvećomogućio generiranje ovog prekida.
ili vanjskog koji se uzima s nožice RA4/TOCKI. Izvor takta se bira pomoa da je moguće birati i ivicu signala (rasturegistru. Izaberemo li v njski takt ta
brojač uvećavati svoju vrijednost.
49
Sigurnosni brojač (Wachdog timer) čuva mikrokontroler od ″smrzavanja″. Ako dođe do nepravilnog ikrokontrolera, sigurnosni brojač ga nakon nekog vremena resetira, a program se počinje
ormalnog toka programa moramo upisati približi svom prekoračenju.
eli instrukcijski ciklus prije nego dođe do strukcijski ciklus se definira pomoću prva tri
bit-a u OPTION registru, najveći djelitelj je 256, čime se omogućuje mjerenje duljih vremenskih užiti brojaču TMR0 ili sigurnosnom brojaču, dodjeljuje se pomoću bita e preskaler dodijeljen TMR0 brojaču sve instrukcije upisa u TMR0
registar (CLRF TMR0, MOVWF TMR0, BSF TMR0…) će obrisati preskaler. Ako je preskaler dodijeljen risati preskaler u isto vrijeme kada i sigurnosni
om programera i može se mijenjati u toku rada ograma.
rada mizvršavati iz početka. Da bi spriječili resetiranje za vrijeme nnulu u WDT registar (instrukcijom CLRWDT) svaki put kad se
Preskaler je naziv za dio mikrokontrolera kojim se dijlogike koja uvećava stanje brojača. Broj kojim se dijeli in
perioda. Preskaler se može pridrPSA u OPTION registru. Kada j
sigurnosnom brojaču samo instrukcija CLRWDT će obrojač. Promjena preskalera je kompletno pod kontrolb
pr
4.12.1 OPTION registar
undi se uvećava TMR ili WDT brojač za jedan.
PS0, PS1, 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 u danoj tablici pokazuje na koliko mikrosek
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
bit 7 bit 0
R – bit koji se može očitati U – neiskorišten bit, čita se kao «0» W – bit koji se može upisati n – vrijednost nakon reseta
50
Bitovi TMR0 WDT 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1:16 1:8 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 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
5 Set instrukcija
5.1 Prijenos podataka
Vrši se između radnog registra (W) i gi ji vlja bilo koju lokaciju RAM-a (Sl. 3.23). Prve tri instrukcije iz tablice (na strani 63) o aj konstante u W registar (MOVLW je skraćenica od MOVE Literal to W), zati ep ta W registra u RAM i prijepis podataka iz RAM-a u W registar (ili u istu tu lokaci M- e mijenja stanje zastavice Z). Instrukcija
LRF upisuje nulu u f registar, a CLRW upisuje nulu u W registar. SWAPF instrukcija unakrsno amjeni mjesta četverobitnim poljima unutar registra.
.2 Aritmetika i logika
Od svih racija PIC kao i većina mikrokontrolera podržava samo zbrajanje i duzimanje i Z postavljaju se u ovisnosti rezultata te dvije operacije, ali sa izuzetkom
a C je poslije oduzimanja i broj oduzet od manjeg.
Logička vođenja operacija I, ILI, EX-ILI, negacije (COMF) i tiranja (RLF i RRF). Instrukcije koje rotiraju lijevo ili desno pomiču bitove kroz zastavicu C za po
registra.
Instrukc vrše setiranje ili resetiranje jednog bit-a bilo gdje u memoriji (tablica na strani 63).
5.4 Upravljanje tokom programa
Za upravljanje toka programa nam služe instrukcije GOTO, CALL, RETURN. ''RETLW k'' instrukcija je identična RETURN instrukciji, samo što prije povratka iz podprograma u W registar upiše konstantu koja je definirana operandom instrukcije. Ova funkcija nam omogućuje kreiranje Lookup tabela. Instrukcija RETFIE služi za povratak iz podprograma a razlikuje se od RETURN po tome što automatski setira bit GIE. BTFSC i BTFSS su uvjetne naredbe skoka, u zavisnosti od bit-a koji se testira u ''f'' registru preskače se ili se ne preskače sljedeća naredba programa.
″f″ re stra ko predstasiguravis poda
u upism prij ka iz ju RA a, pri č mu se
Cz
5
aritmetičkih o. Zastavice C, DC
peojer se oduzimanje vrši kao zbrajanje s negativnom vrijednošću, zastavicinverzna, zn a, a resetirana ako je većači setirana je ako je operacija moguć
jedinica PIC-a ima mogućnost izrojedno mjesto. Bit koji izlazi iz registra upisuje se u C zastavicu, te se upisuje u bit na suprotnoj strani
5.3 Bit operacije
ije BCF i BSF
52
Instrukcija Opis
Trajanje u strojnim
Utječe na STATUS
ciklusima bit-ove
addwf f, d Zbrajanje akumulatora i registra f 1 C, DC, Z andwf f, d Logički I akumulatora i registra f 1 Z clrf f Brisanje registra f 1 Z clrw Brisanje akumulatora 1 Z comf f, d Komplement registra f 1 Z decf f, d Smanjenje registra f za 1 1 Z decfs ,d Smanjenje
instrukciju az f registra f za 1, preskače sljedeću
ko je rezultat 1 1(2) nijedan
incf f, d Povećanje registra f za 1 1 Z incfsz f, d Povećanje registra f za 1, preskače sljedeću
instrukciju ako je rezultat 0 1(2) nijedan
iorwf f, d Inkluzivni ILI akumulatora i f registra 1 Z movf f, d Premještanje sadržaja rgistra f 1 Z movwf f Premještanje sadržaja akumulatora u registar f 1 nijedan nop Nul-operacija 1 nijedan rlf f, d Rotiranje registra f u lijevo kroz Carry bit 1 C rrf f, d Rotiranje registra f u desno kroz Carry bit 1 C subwf f, d Oduzimanje akumulatora od registra f 1 C, DC, Z swapf f, d Zamjena riječi registra f 1 nijedan xorwf f, d Ekskluzivni ILI akumulatora i registra f 1 Z
5.4.1.1.1 Operacije nad bit-ovima bcf f, b Brisanje bit-a b registra f 1 nijedan bsf f, b Postavljanje bit-a b registra f 1 nijedan btfsc f, b Preskače sljedeću instrukciju ako je rezultat 0 1(2) nijedan btfss f, b Preskače sljedeću instrukciju ako je rezultat 0 1(2) nijedan
Instrukcije nad konstantama i kontrolne instrukcije addlw Zbrajanje akumulatora i k k onstante k 1 C, DC, Z andlw k Logički I akumulatora i konstante k 1 Z call k Poziv potprograma 2 nijedan clwrdt Brisanje sigurnosnog brojača 1 TO , PD goto k Grananje programa 2 nijedan iorlw k Inkluzivni ILI akumulatora i konstante k 1 Z movlw k Upisivanje konstante k u akumulator 1 nijedan retfie Povratak iz prekidne rutine 2 nijedan retlw k Povratak iz potprograma s vrijednošću k u
akumulatoru 2 nijedan
return Povratak iz potprograma 2 nijedan sleep Postavljanje mikrokontrolera u standby mode 1 TO , PD sublw k Oduzimanje akumulatora od konstante k 1 C, DC, Z xorlw Ekskluzivni ILI akumulatora i konstante k 1 Z
Tablica instrukcija za mikrokontroler PIC 16F84
53
5.5 Opis pojedinih instrukcija
ADDLW Sintaksa: [labela] ADDLW k
Opis: Sadržaj W registra se zbraja s 8 bit-nom konstantom seW registar
Operacija: (W) + k W OperanZastavBroj riBroj ci
= 0x15
o prijenosa j rezulta
Sintak Opis: istra se zbraja s f registrom
star
OperaOpera
k i Rezultat s prema u
d: 0 ≤ k ≤ 255 ica: C, DC, Z
ječi: 1 klusa: 1
Primjer: ADDLW 0X15 Prije instrukcije: W = 0x10
Poslije instrukcije: WC = 0 (nije došlo d
0xFF) er je t m od aji
ADDWF sa: [labela] ADDWF f, d Sadržaj W reg Ako je d = 0 rezultat se sprema u W regi
Ako je d = 1 rezultat se sprema u f registar (W) + (f) d cija:
nd: 0 ≤ f ≤ 127, d ∈ [0,1] Zastav
Broj ri Broj ciklusa: 1
:
2 C = 0
2: ADD
ržaj adrese 0xC2 = 0x20
FSR = 0xC2 adržaj adrese 0xC2 = 0x37
SintakOpis: Vrši logičku operaciju I nad sadržajem W registra i konstante k, rezultat će bit
1 ako su oba odgovarajuća it-a operanda 1-inice. Re
Operacija: ( Operand: 0 ≤ k ≤ 255 Zastavica: Z Broj riječi: 1 Broj ciklusa: 1
ica: C, DC, Z ječi: 1
Primjer 1
ADDWF REG, W
Prije instrukcije: W = 0x17 REG = 0xC2
Poslije instrukcije: W = 0xD9 REG = 0xC
Primjer
WF INDF, f Prije instrukcije: W = 0x17
FSR = 0xC2 sad Poslije instrukcije: W = 0x17
s ANDLW sa: [labela] ANDLW k
b
zultat se smješta u W registar. W) .AND. k W
54
P er 1: ANDLW 0x5F
rimj
= 0xA3 ;1010 0011 (0xA3)
;0000 0011 (0x03) Z = 0 (rezultat nije nula)
0x55
Prije instrukcije: W = 0xAA ;1010 1010 (0xAA) W = 0x17 ;0101 0101 (0x55) -------------------------------
0 0011 (0x03) ula)
ANDWF
Sintaksa: [labela] ANDWF f, d Opis: Vrši logičku operaciju I nad sadržajem registara W i f
prema u W registar
Prije instrukcije: W Poslije instrukcije: W = 0x03 ;0101 1111 (0x5F)
-------------------------------
Primjer 2: ANDLW
Poslije instrukcije:
;000 Z = 1 (rezultat je n
Ako je d = w rezultat se s
Ako je d = f rezultat se sprema u f registar Operacija: (W) .AND. (f) d Operand: 0 ≤ f ≤ 127 , d∈ [0,1] Zastavi Broj riječi: 1
ca: Z
Broj ciklusa: 1
Primjer 1: ANDWF REG, f
W = 0x17, REG = 0xC2 ;0001 0111 (0x17) W = 0x17, REG = 0x02 ;1100 0010 (0xC2)
------------------------------- ;0000 0010 (0x02)
= 0x17, FSR = 0xC2 ;0001 0111 (0x17) SR = 0xC2 ;1100 0010 (0xC2)
------------------------------- (0x02)
Opis: Resetira bit b u registru f Operacija: (0) (f) < b >
0 ≤ f ≤ 127 , 0 ≤ b ≤ 7
Broj cik
rukcije: REG = 0xC7 ;1100 0111 (0xC7) strukcije: REG = 0x47 ;0100 0111 (0x47)
Prije instrukcije:
Poslije instrukcije:
Primjer 2: ANDWF FSR, w
Prije instrukcije: W Poslije instrukcije: W = 0x02, F
;0000 0010 BCF Sintaksa: [labela] BCF f, b Operand: Zastavica:
Broj riječi: 1 lusa: 1
Primjer 1:
BCF REG, 7 Prije inst Poslije in
55
Primjer 2:
sadržaj adrese (FSR) = 0x27
Sintaks , b pis: f
astavica: Broj riječi: 1
Broj ciklusa: 1
;0000 0111 (0x07) REG = 0x87 ;1000 0111 (0x87)
3 rukcije: W = 0x17
FSR = 0xC2 sadržaj adrese (FSR) = 0x20
: W = 0x17 FSR = 0xC2
Sintaksa: [labela] BTFSC f, b Opis: Ako je bit b u registru f jednak 0-i onda se preskače sljedeća instrukcija. Ako
je bit b jednak nuli tokom izvršavanja tekuće instrukcije onemogućuje se ne i umjesto nje se izvršava NOP, čineći tekuću instrukciju
dvociklusnom.
peraci n
Broj riječi: 1 Broj ciklusa: 1 ili 2 u ovisnosti bit-a b
tiraj bit broj 1 u REG ;Preskoči ovu liniju ako je = 1
vdje skoči ako je = 0
strukcije: Programski brojač je bio na adresi LAB_01 strukcije: Ako je u registru REG bit 1 resetiran, PC pokazuje na
adresu LAB_03. Ako je u registru bit 1 setiran PC pokazuje na adresu LAB_02.
BCF INDF, 3
Prije instrukcije: W = 0x17 FSR = 0xC2 sadržaj adrese (FSR) = 0x2F
Poslije instrukcije: W = 0x17 FSR = 0xC2
BSF
a: [labela] BSF f O Setira bit b u registru Operacija: (1) (f) < b > Operand: 0 ≤ f ≤ 127 , 0 ≤ b ≤ 7 Z
Primjer 1: BSF REG, 7
Prije instrukcije: REG = 0x07
Poslije instrukcije:
Primjer 2: BSF INDF, Prije inst
Poslije instrukcije sadržaj adrese (FSR) = 0x28 BTFSC
izvršavanje nared
O ja: preskoči narednu i strukciju ako je ( f < b > ) = 0 Operand: 0 ≤ f ≤ 127 , 0 ≤ b ≤ 7 Zastavica:
Primjer: LAB_01BTFSC REG, 1 ;TesLAB_02. . . . . . LAB_03. . . . . . ;O
Prije in Poslije in
56
BTF
Sintaksa: [labela] BTFSS f, b Opis: istru f inici onda se preskače sljedeća instrukcija.
uće instrukcije onemogućuje e izvr vanje naredn a NOP, čineći tekuću
Operand: 0 ≤ f ≤ 127 , 0 ≤ b ≤ 7 Zastavica: Broj riječi: 1
i bit-a b
estiraj bit broj 1 u REG _02. . . . . . ;Preskoči ovu liniju ako je = 0
3. . . . . . ;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, PC pokazuje na adresu
e u registru bit 1 resetiran PC pokazuje na adresu LAB_02.
ALL
Sintaksa: [labela] CALL k Opis: Instrukcija poziva podprogram. Prvo se povratna adresa (PC+1) sprema u stog,
tni operand k koji sadrži adresu potprograma smješta u
Operaci k) k C <10 >, (P 1>
Broj ciklusa: 2
Primjer: ;Pozovi podprogram LAB_02
PC = adresa LAB_01
TOS (vrh stoga) = x
OS (vrh stoga) = LAB_01
Sintaksa: [labela] CLRF f Opis: Sadržaj f registra se izjednačava s 0-om, zastavica Z se setira u 1
Operaci Operan Zastavi
Broj riječi: 1 roj cik
Primjer 1: ISB
Prije instrukcije: TRISB = 0xFF Poslije instrukcije: TRISB = 0x00 Z = 1
SS
Ako je bit b u reg jednak jedAko je bit b jednak jedinici tokom izvršavanja teks ša e i umjesto nje se izvršavinstrukciju dvociklusnom.
Operacija: preskoči narednu instrukciju ako je ( f < b > ) = 1 Broj ciklusa: 1 ili 2 u ovisnost
Primjer: LAB_01BTFSC REG, 1 ;TLABLAB_0
LAB_03. Ako j C
zatim se 11 bit-ni direkPC.
ja: (PC) + 1 vrh stoga (TOS – Top Of Stac P : 0 CLATH <4 : 3>) PC <12 : 1
Operand: 0 ≤ k ≤ 2047 Zastavica: Broj riječi: 1
LAB_01CALL LAB_02 : LAB_02. . . . . . Prije instrukcije:
Poslije instrukcije: PC = adresa LAB_02 T CLRF
ja: 0 f d: 0 ≤ f ≤ 127 ca: Z
B lusa: 1
CLRF TR
57
Primjer 2: CLRF INDF
držaj adrese 0xC2 = 0x00 Z = 1
ela] CLRW a s nulom, zastavica Z se setira u jedan.
Operacija: 0 W Operand: Zastavi Broj rije Broj cik
Prim :
Prije instrukcije: W = 0x55 Poslije instrukcije: W = 0x00 Z = 1
CLRWDT Sintak abela] CLRWDT
Prije instrukcije: FSR = 0xC2 sadržaj adrese 0xC2 = 0x33 Poslije instrukcije: FSR = 0xC2 sa
CLRW Sintaksa: [lab Opis: Sadržaj W registra se izjednačav
ca: Z či: 1 lusa: 1
jer
CLRW
sa: [lPD Opis: Resetira sigurnosni brojač i preskaler a bit-ovi TO i se
0 WDT setiraju
eskaler Operacija:
0 WDT pr TO 1 PD 1
Zastavica:
Operand: TO , PD
Broj rije Broj ciklusa: 1
Poslije instrukcije: WDT brojač = 0 TO = 1 PD = 1
WDT preskaler = 1:128
ela] COMF f, d entira sadržaj f registra
= w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar
Operaci
či: 1
Primjer: CLRWDT
Prije instrukcije: WDT brojač = x
WDT preskaler = 1:128
COMF Sintaksa: [lab Opis: Komplem Ako je d
ja: ( f ) d d: 0 ≤ f ≤ 127 , d∈ Operan [0,1]
Zastavica: Z 1 Broj riječi: Broj ciklusa: 1
58
Primjer 1: COMF REG, w
;0001 0011 (0x13)
--------------------- C)
Primjer 2: COMF INDF, f
FSR = 0xC2
kcije: FSR = 0xC2 Sadržaj adrese ( SFR ) = 0x55
Sintaksa: [labela] DECF f, d Opis: Umanjuje f registar za jedan
= w rezultat se sprema u W registar = f rezultat se sprema u f registar
Prije instrukcije: REG = 0x13 Poslije instrukcije: REG = 0x13 ;komplementiranje
W = 0xEC ---------- 1110 1100 (0xE
Prije instrukcije: Sadržaj adrese ( FSR ) = 0xAA
Poslije instru DECF
Ako je dAko je d
Operacija: ( f ) - 1 d Operand: 0 ≤ f ≤ 127 , d ∈ [0,1] Zastavica: Z Broj riječi: 1
Broj ciklusa: 1
EG = 0x01 = 0 Pos tru cije: REG = 0x00
Z = 1
REG, w
Prije instrukcije: REG = 0x13 W = x
Z = 0 Poslije instrukcije: REG = 0x13
DECFSZ Sintaksa: [labela] DECFSZ f,
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 jedeća instrukcija se izvršava kao NOP čineći tekuću
Operan
Primjer 1: DECF REG, f
Prije instrukcije: R
Z lije ins k
Primjer 2: DECF
W = 0x12
Z = 0
d
Ukoliko je rezultat 0 slinstrukciju dvociklusnom.
Operacija: (f) - 1 d d: 0 ≤ f ≤ 127, d∈ [0,1]
Zastavica: Broj riječi: 1
1 ili 2 u ovis osti r Broj ciklusa: n ezultata
59
Primjer:
CNT ;CNT = 10
GOTO Loop ;Preskoči ovu liniju ako je = 0 LAB_03 ;Ovde skoči ako je = 0
i se izvršava onoliko puta koliko je početna vrijednost varijable CNT, što je u ovom primjeru 1
Sintaksa: [labela] GOTO k Opis: Bezuvjetni skok na adresu k.
k PC <10:0>, (PCLATH <4:3>) PC <12:11>
ALL LAB_01 ;Skoči na LAB_01
. . . . . . ;Program nastavlja normalno dalje
Prije instrukcije: PC = adresa LAB_00 ije: PC = adresa LAB_01
d
Ako je d = w rezultat se sprema u W registar prema u f registar
MOVLW .10 MOVWF Loop : ;Blok naredbi : DECFSZ CNT, f ;Umanji sadržaj registra CNT za jedan
U ovom primjeru blok naredb
0.
GOTO
Operacija: Operand: 0 ≤ k ≤ 2047
Zastav ca: i Broj riječi: 1
Broj cik
lusa: 2
Primjer: LAB_00C : LAB_01
Poslije instrukc INCF S a: [labela] INCF f,intaks
Opis: Uvećava f registar za jedan
Ako je d = f rezultat se s Operacija: (f) + 1 d
∈ Operand: 0 ≤ f ≤ 127, d [0,1]
j cik
Prije instrukcije: REG = 0xFF Z = 0
= 0x00
Primjer 2:
REG = 0x10 W = x
Z = 0 nstrukcije: REG = 0x10
Z = 0
Zastavi Broj riječi: 1
ca: Z
Bro
lusa: 1
Primjer 1: INCF REG, f
Poslije instrukcije: REG
Z = 1
INCF REG, w
Prije instrukcije:
Poslije i W = 0x11
60
INC
intaks Z f, džaj f registar za jedan
at se sprema u f registar e eći instrukciju
Operand: 0 ≤ f ≤ 127, d
FSZ S a: [labela] INCFS Opis: Uvećava sadr Ako je d = w rezultat se sprema u W registar
Ako je d = f rezultAko je rezultat = 0 nar dna instrukcija se izvršava kao NOP čindvociklusnom.
Operacija: (f) + 1 d ∈ [0,1]
1
Broj ciklusa: 1
Primjer: , f ;Uvećaj sadržaj REG za jedan
;Preskoči ovu liniju ako je = 0
ski brojač je bio na adresi LAB_01 egistra poslije izvršavanja instrukcije REG = REG + 1. Ako je REG = 0,
e na adresu labele LAB_03. U suprotnom PC pokazuje adresu ukcije LAB_02.
IORLW Sintaks ] IORL
u operac ad sadr tantom k, r
peraciOperand:
Zastavica: Z Broj riječi: 1
Primjer:
W = 0x9A instrukcije: W = 0xBF Z = 0
RWF
Sintaks ] IORWF f, d Opis: Vr aciju ILI nad sadržajem registara W i f
peraci
Zastavica: Z Broj riječi:
LAB_01INCFSZ REGLAB_02. . . . . . LAB_03. . . . . . ;Ovdje skoči ako je = 0
ije: Program Prije instrukc
Sadržaj REG rtada PC pokazujnaredne instr
a: [labela W k iju ILI n žajem registara W i 8 bit-nom konsOpis: Vrši logičk
ezultat se sprema u W registar. O ja: (W) .OR. (k) W
0 ≤ k ≤ 255 Broj ciklusa: 1
IORLW 0x35 Prije instrukcije: Poslije IO
a: [labelaši logičku oper
Ako je d = w rezultat se sprema u W registar istar Ako je d = f rezultat se sprema u f reg
O ja: (W) .OR. (f) d Operand: 0 ≤ f ≤ 127, d∈ [0,1]
Zastavica: Z Broj riječi: 1
Primjer 1:
W = 0x91
0x93
Broj ciklusa: 1
IORWF REG, w
Prije instrukcije: REG = 0x13, Poslije instrukcije: REG = 0x13, W = Z = 0
61
Primjer 2: IORWF REG, f
= 0x91
MOVF
Fj f registra smješta na lokaciju koju određuje operand d
d = w rezultat se sprema u W registar = 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.
Operaci Operan
Prije instrukcije: EG=0x13, W Poslije instrukcije: REG=0x93, W = 0x91
Z = 0
Sintaksa: [labela] MOV f, d
Opis: Sadrža Ako je
Ako je d
ja: (f) d d: 0 ≤ f ≤ 127, d∈ [0,1]
Zastavi Broj riječi: 1
Primjer 1:
Prije instrukcije: FSR = 0xC2 W = 0x00
W = 0xC2
strukcije: W = 0x17 EG = 0xC2
sadržaj adrese 0xC2 = 0x00 Poslije instrukcije: W = 0x17 REG=0xC2
adržaj adrese 0xC2 = 0x00
Sintaksa: [labela] MOVLW k Opis: 8 bit-nu konstantu k upisuje u W registar.
Broj rije
W 0x5A
Poslije instrukcije: W = 0x5A
ca: Z Broj ciklusa: 1
MOVF FSR, w
Poslije instrukcije: Z = 0
Primjer 2: MOVF INDF, f
Prije in R
s Z = 1 MOVLW
Operacija: k (W) Operand: 0 ≤ f ≤ 255 Zastavica:
či: 1 Broj ciklusa: 1
Primjer: MOVL
62
MO
] MOVWF f
peraci
Zastavica: Broj riječi: 1 Broj ciklusa: 1
Primjer 1:
REG = 0x40
W = 0x40
F INDF
rukcije: W = 0x17 REG = 0xC2
sadržaj adrese 0xC2 = 0x00 e: W = 0x17
REG = 0xC2 = 0x17
Sintaksa: [labela] NOP Opis: Ne vrši nikakvu operaciju i ne utječe ni na jednu zastavicu.
Operaci Operand:
Prije instrukcije: PC = x Poslije instrukcije: PC = x + 1
TFIE grama. Vrijednost iz TOS-a se smješta u PC. Omogućuju se
i setiranjem bit-a GIE. TOS PC, 1 GIE
Zastavica: Broj riječi: 1 Broj cik
Prim : RETFIE
Prije instrukcije: PC = x GIE = 0 Poslije instrukcije: PC = TOS GIE = 1
VWF
Sintaksa: [labela Opis: Sadržaj f registra prepisuje se u f registar. O ja: (W) f Operand: 0 ≤ f ≤ 127
MOVWF OPTION_REG
Prije instrukcije: W = 0x40 Poslije instrukcije: OPTION_
Primjer 2:
MOVW Prije inst
Poslije instrukcij sadržaj adrese 0xC2
NOP
ja: Zastavica: Broj riječi: 1 Broj ciklusa: 1
Primjer: NOP ;Kašnjenje od 1µs pri taktu od 4 MHz
RETFIE
Sintaksa: [labela] REOpis: Povratak iz pro
prekid Operacija:
Operand:
lusa: 2
jer
63
RETLW Sintaksa: [labela] RETLW k
Opis: 8 bit-na konstanta k se smješta u W registar a u PC vrijednost s vrha stoga. TOS PC
Poslije instrukcije: W = 0x43 PC = TOS
TOS = TOS – 1
Operand: Zastavica: Broj riječi: 1
Primjer: URN
strukcije: PC = x OS = x
Poslije instrukcije: PC = TOS TOS = TOS - 1
intaks Opis: Sadržaj f registra se rotira za jedno mjesto u lijevo.
Ako je d = w rezultat se sprema u W registar Ako je d = f rezultat se sprema u f registar
, f<7> C, C d<0>
Operacija: (k) W, Operand: 0 ≤ k ≤ 255 Zastavica: Broj riječi: 1 Broj ciklusa: 2
Primjer: RETLW 0x43
Prije instrukcije: W = x PC = x TOS = x
RETURN Sintaksa: [labela] RETURN Opis: Sadržaj TOS-a smješta u PC
Operacija: TOS PC Broj ciklusa: 2
RET Prije in T
RLF S a: [labela] RLF f, d
Operacija: (f<n>) d<n+1>Operand: 0 ≤ f ≤ 127, d∈ [0,1]
ica: C Zastav
a: 1
Primjer 1: w
0
C = 1
Broj riječi: 1 Broj ciklus
registar 1C
RLF REG, Prije instrukcije: REG = 1110 011 C = 0
0 Poslije instrukcije: REG = 1110 011 W = 1100 1100
64
Primjer 2: RLF REG, f
REG = 1110 0110
G = 1100 1100 C = 1
Sintaksa: [labela] RRF f, d Opis: Sadržaj f registra se rotira za jedno mjesto u desno. at se sprema u W registar
Ako je d = f rezultat se sprema u f registar 0>
Prije instrukcije:
C = 0 Poslije instrukcije: RE RRF
Ako je d = w rezult
Operacija: (f<n>) d<n-1>, f<0> C, C d< Operand: 0 ≤ f ≤ 127, d∈ [0,1] Zastavica: C B či: 1 roj rije
REG, w
rukcije: REG = 1110 0110 W = x
C = 0 rukcije: REG = 1110 0110
W = 0111 0011
Prije instrukcije: REG = 1110 0110 C = 0
REG = 0111 0011
SLEEP
Plja mikrokontroler u mod niske potrošnje. Zaustavlja oscilator,
Broj ciklusa: 1
registar 1C
Primjer 1: RRF
Prije inst
Poslije inst C = 0
Primjer 2: RRF REG, f
Poslije instrukcije: C = 0
Sintaksa: [labela] SLEE
PDOpis: Postav se TOresetira a setiran. Sigurnosni brojač i preskaler su resetirani.
T 0 1
Operacija: 0 WD WDT preskaler TO PD 1
Operand: astaviZ ca: TO , PD
Broj riječi: 1 roj cik B lusa: 1
65
Primjer: SLEEP
x
0x00
Prije instrukcije: WDT brojač =
WDT preskaler = x Poslije instrukcije: WDT brojač =
TO = 1 PD = 0
nte k, rezultat se smješta u W
≤ 255
Broj ciklusa: 1
Primjer: SUBLW
Prije instrukcije: W = 0x01, C = x, Z = x Poslije instrukcije: W = 0x02, C = 1, Z = 0, rezultat je pozitivan
W = 0x03, C = x, Z = x
: 1, rezultat je nula
x, Z = x = 0, rezultat je negativan
Sintaksa: [labela] SUBWF f, d Opis: istra se oduzima od sadržaja f rgistra.
zultat se sprema u W registar. at se s
SUBLW Sintaksa: [labela] SUBLW k
Opis: Sadržaj W registra se oduzima od konstaregistar.
(W) W Operacija: k – k Operand: 0 ≤
Zastavica: DC Broj riječi: 1
0x03
Prije instrukcije: Poslije instrukcije W = 0x00, C = 1, Z =
Prije instrukcije: W = 0x04, C = Poslije instrukcije: W = 0xFF, C = 0, Z SUBWF
Sadržaj W regAko je d = w re Ako je d = f rezult prema u f registar.
Operacija: (f) – (W) d peran ∈ O d: 0 ≤ f ≤ 127, d [0,1]
Zastavica: C, DC, Z Broj riječi: 1
Broj ciklusa: 1
Prije ins
REG = 1, W = 2, C = 1, Z = 0, pozitivan rezultat
Prije instruk REG = 2, W = 2, C = x, Z = x Poslije instru REG = 0, W = 2, C = 1, Z = 1, rezultat je nula
cije: REG = 1, W = 2, C = x, Z = x kc REG = 0xFF, W = 2, C = 0, Z = 0, negativan rezultat
Primjer:
SUBWF REG, 1
trukcije: REG = 3, W = 2, C = x, Z = x Poslije instrukcije:
cije: kcije:
Prije instruk
Poslije instru ije:
66
SW
Sintaksa: [labela] SWAPF f, d u mjesta.
Ako je d = w rezultat se . se s
Operacija: d< , f<4:7> <0:3> Operand: 0 , d
APF
Opis: Gornja i donja polovica f registra mijenjaj
sprema u W registarAko je d = f rezultat prema u f registar.
f<0:3> 4:7> d ≤ f ≤ 127 ∈ [0,1]
Zastavica: Broj riječi: 1 Broj ciklusa: 1
REG = 0xF3 ije: REG = 0xF3
W = 0x3F
SWAPF REG, f
: REG = 0xF3 :
ORLW Sintaks W k
pis: ciju i 8 bit-nom ltat s
Operaci W peranastavi
Broj riječi: 1 Broj ciklusa: 1
1 0101 (0xB5) e: W = 0x1A ;1010 1111 (0xAF) Z = 0 ------------------------------- ;0001 1010 (0x1A)
u 0x37 Konst
kcije: W = 0xAF ;1010 1111 (0xAF) Konst = 0x37 ;0011 0111 (0x37)
strukci -----------------------
ORWF
ORku fun ma W i f registara, bit u rezultatu
ko sw rezult
Ako je d = f rezultat se sprema u f registar. Operacija: (W) .XOR. k d Operand: 0 ≤ f ≤ 127, d
Primjer 1:
SWAPF REG, w
: Prije instrukcijenstrukc Poslije i
Primjer 2:
Prije instrukcije Poslije instrukcije REG = 0x3F
X a: [labela] XORL
O Vrši logičku opera isključivo ILI nad sadržajem registara Wkonstantom k, rezu e sprema u W registar. ja: (W) .XOR. k
O d: 0 ≤ k ≤ 255 Z ca: Z
Primjer 1:
XORLW 0xAF Prije instrukcije: W = 0xB5 ;101 Poslije instrukcij
Primjer 2: Konst eq
XORLW
Prije instru
Poslije in je: W = 0x98 -------- Z = 0 ;1001 1000 (0x98) X
Sintaksa: [labela] X WF f, d Opis: Vrši logič kciju isključivo ILI nad sadržaji
je 1 samo a u odgovarajući bitovi operanda različiti. Ako je d = at se sprema u W registar.
∈ [0,1] Zastavica: Z Broj riječi: 1 Broj ciklusa: 1
67
Primjer 1: XORWF REG, f
;1011 0101 (0xB5) 5; ;1010 1111 (0xAF)
------------------------- ;0001 1010 (0x1A)
WF REG, w
rukcije: REG = 0xAF, W = 0xB5; ;1010 1111 (0xAF) Poslije instrukcije: REG = 0xAF, W = 0x1A; ;1011 0101 (0xB5)
------------------------- ;0001 1010 (0x1A)
Prije instrukcije: REG = 0xAF, W = 0xB5; Poslije instrukcije: REG = 0x1A, W = 0xB
Primjer 2: XOR
Prije inst
68
6 vojni a
.1 Asem ler
ki jezik je jezik kojim čovjek i mikrokontroler komuniciraju. Asemblerski jezik je razumljiv o program napisan u asemblerskom jeziku mora se
a bi ga mikrokontroler razumio. Razlikujemo pojam «asembler» i pre blers
ica asem ski j po k mikro
Raz lati za PIC 16F84
6 b
Asemblersčovjeku, sastoji se od riječi i abecednih znakova. Nprevesti u niz nula i jedinica d«asemblerski jezik». Asembler je program vodilac koji prevodi asem ki jezik u jezik nula i jedin , a bler ezik je skup pravila ojima se piše program za kontroler.
Sl. 6.1. Postupak programiranja mikrokontrolera
Program.asm predstavlja datoteku na disku računala koja je napisana po pravilima asemblerskog jezika, Program.hex je datoteka koja je prevedena u jezik nula i jedinica i to heksadecimalnim zapisom, ta datoteka se pomoću programatora upisuje u mikrokontroler. Program se u asemblerskom jeziku može pisati u bilo kojem programu za obradu teksta koji može spremiti datoteku kao ASCII.
Primjer: ovako izgleda naredba RETURN prevedena asemblerom, dobije se 14 bit-ni niz nula i jedinica koji je razumljiv mikrokontroleru.
asm hex RETURN 00 0010 0000 1000
6.1.1 Elementi programskog jezika asembler
Osnovni elementi su:
- Labele - Naredbe - Operandi - Komentari - Direktive
69
Labe e u programskoj ili RAM memoriji. Dužina labele že bit om ili donjom crtom ″_″. Labele se pišu u prvoj
koloni.
potrebom određenog mikrokontrolera i pri pisanju programa treba samo ebe.
a posebnost amog asemblerskog jezika.
Direktiva koju ćemo koristiti glasi:
PROCESOR 16f84 #include ''p16f84.inc'' __CONFIG_CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC
la predstavlja tekstualnu verziju neke adresmo i najviše 32 znaka, bitno je da počinje slov
Naredbe su definirane upoštovati način njihove upotr
Operandi su elementi naredbi nad kojima se izvršava naredba. To su najčešće registri , promjenjive vrijednosti ili konstantne u memoriji.
Komentar je tekst koji programer piše nakon naredbe iz znaka ″ ; ″ da bi program bio jasniji i pregledniji.
Direktiva je slična naredbi, ali je nezavisna od modela mikrokontrolera i predstavljs
70
7 MPLAB IDE v6.60
7.1 MPLAB IDE
MPLAB IDE (Integrated Development Environment) je integrirano razvojno okruženje za pisanje i razv ®oj programa Microchip-ovih PICmicro MCU porodice mikrokontrolera i dsPIC Digital Signal Controllers. Sa MPLAB razvojnim okruženjem možemo:
TM
i povezivati izvorni kôd. da pratimo izvršavanje tijeka programa koristeći ugrađeni(build-in)
enu sa emulatorima MPLAB ICE 2000 i 4000 ili sa MPLAB ICD 2 in alazačem grešaka (debagger).
• Vr koristeći simulator ili emulator. • Pr• Programiranje firmware-a na uređaje koristeći MPLAB ICD 2, PICSTART® Plus ili PRO MATE® II
programatore uređaja. • Velika podrška za pitanja preko MPLAB IDE pomoći (Help).
7.2 Zahtjevi sustava
Potrebna je sljedeća minimalna konfiguracija za rad MPLAB-a IDE:
• PC kompatibilno računalo • Microsoft Windows 98 SE, Windows 2000 SP2, Windows NT SP6, Windows ME, Windows XP • 64 MB radne memorije (128MB preporučeno) • 45 MB slobodnog prostora na tvrdom disku • Internet Explorer 5.0 ili noviji
7.3 Izrada jednostavnog projekta
7.3.1 Uvod
Da bi napravili kôd koji se može izvršavati koristeći ciljani PICmicro MCU mikrokontroler, 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, kompajlere, itd.U MPLAB-u IDE, projekt menadžer se brine o tim procesima.
Prvi korak je pisanje vrlo kratkog izvornog kôda koji spremamo u određenu datoteku. Tada izrađujemo projekt, dodajemo izvorni kôd projektu, alati za prevođenje(language tools) kôda se dodjeljuju projektu, i napokon kôd je izgrađen i testiran.
Pri pokretanju programa na ekranu će se pojaviti MPLAB IDE radna površina (desktop).
7.3.2 Pisanje izvornog koda
Krenite sa pisanjem kôda za aplikaciju koristeći MPLAB IDE editor. Odaberite File>New
• Izraditi i editirati izvorni kôd koristeći ugrađen (build-in) editor. • Asemblirati, kompajlirati • Ispravljati završnu logiku tako
simulator ili u realnom vremternim (in-circuit) pronšiti vremenska mjerenje ikaz varijabli preko Prozora za gledanje (Watch windows).
.U radnom prostoru će se otvoriti prazan prozor za editiranje, pisanje. Unesite ovaj primjer gotovog kôda. Preporuka Copy/Paste.
71
title "PIC16F877 brojac" PROCESSOR 16F877 #include <p16f877.inc> ;Ova datoteka sadrži sva imena registara
;specijalnih namjena i njihove adrese od ;PIC16F877 ;Ta se datoteka nalazi u istom direktoriju ;kao i MPASMWIN.exe
DVAR2 equ 0x0022 ;GPS registra
od koje mikrokontroler
IncCount
;incrementiramo count ;CONT→W ;prosljedi na PORTB
goto IncCount ;petlja
decfsz DVAR,F goto D1
goto D0
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
COUNT equ 0x0020 ;sve tri adrese se DVAR equ 0x0021 ;nalaze u BANK0
org 0x00 ;početna adresa goto Main ; kreće nakon dovođenja napajanja
Main bcf STATUS,RP0 ;BANK0 bcf STATUS,RP1 clrw ;izbriši W registar movwf PORTB ;brišemo PORTB bsf STATUS,RP0 ;BANK1 movwf TRISB ;configuriramo PORTB kao izlazni
Init bcf STATUS,RP0 clrf COUNT ;brišemo count
incf COUNT,F movf COUNT,W movwf PORTB call Delay ;pozivanje Timerskog potprograma
Delay
movlw 0xFF ;vremensko trajanje petlje movwf DVAR2
D0 movwf DVAR
D1
decfsz DVAR2,F
returnend
Kada je kôd unesen, odaberemo akciju File>Save i spremimo datoteku u novi direktorij naziva C:\Projekti kao brojac16f877.asm.
Napomena: Direktiva «__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC » u izvornom kodu se može podesiti i prilikom učitanja .hex datoteke u mikrokontroler programom IC-Prog.
72
Slika 1.
Prit e S
Bilješka: ko nja kô azan s identifikacijskim bojama, označavajući kôd, rezervirane riječi, komentare, itd. Ta opcija označavanja bojama se može
e ogledajte Help>MPLAB Editor Help
ave. isniti
Na n sprema da, tekst je prik
prilagođavati. Za viš informacija oko editora, p .
7.3.3 Izrad
Slje orak pri stvaranju aplikacije je podešavanje projekta. Najlakši način za to je preko MPLAB k ro t (Pr
7.3.3.1 Pokret (Wiza
1. obnj cijom Project>Project Wizard
a projekta
deći k-ovog Čarobnja a za p jek oject Wizard).
anje Čarobnjaka rd)
Čar ak se pokreće ak . Prikazat će se «Welcome!» ekran. Odaber astavak (Slika 2.)
Slika 2.
ite tipku za nNext
2. Odaberite PIC16F877 sa samo-padajućeg Device izbornika. To će biti PIC mikrokontroler korišten u ovoj demonstraciji. Za sljedeći korak Čarobnjaka pritisnite Next (slika 3).
73
Slika 3.
ite Pritisnite nbi se trebnetočna ili je prazna, pritisnite Browse za lociranjem mpasmwin.exe. Ako je MPLAB instaliran u izvorni (default) direktorij, adresa bi se trebala prikazati kao na slici 4. Za sljedeći
e Next.
Slik
3. Potvrd lokaciju Microchip Toolsuite-a. a MPASM Assembler (maasmwin.exe). Puna adresa od MPASM Assembler.exe
ala prikazati u polju Location of Selected Tool kao što je prikazano na slici. Ako je
korak Čarobnjaka pritisnit
a 4.
4. Unesite ime projekta. Radi ove demonstracije, nazovite ga Brojac i pritisnit Browse da bi odabrali projektni direktorij koji smo napravili ra ije da bi spremili izvorni kôd, :\Projekti (slika 5.)
e Cn
74
Slika 5.
5.
Slik
Pritisnite Next. Sada trebamo dodati postojeće datoteke vašem projektu. Pronađite mapu C:\Projekti i odaberite brojac16f877.asm (Slika 6.).
a 6.
,
6. ritisnite Add>> tipku da bi brojac16f84.asm dodijelili projektu. To je jedina datoteka koja je Ppotrebna za stvaranje projekta (sa iznimkom P16F877.H datoteke koja je «sadržana» u brojac16f877.asm, i nije ju potrebno dodavati).
75
Slika 7.
7. Pritisnite Next za nastavak i dovršenje izrade Čarobnjaka. U ovom finalnom prozoru možemo vidjeti i provjeriti parametre ovog projekta.
Slika 8.
8. Pritisnite Finish i završite Čarobnjak.
76
Prozor projekta na radnoj površini bi trebao izgledati kao na slici 9.
Slika 9.
SAVJET: Datoteke se mogu dodavati i projekti spremati sa desnim klikom miša u projektnom prozoru. U slučaju greške, datoteke se mogu ručno brisati tako da ih odaberemo i pokrenemo izbornik desnim klikom na miša.
7.3.4 Izgradnja projekta
ad ijeme je da ga izgradimo. Tako će se asemblirati izvo risteći Microchipov MPASM toolsuite.
Odaberite Project>Build All
K a smo završili sa stvaranjem projekta, vrrni kôd ko
da izgradimo projekt. Datoteka bi se trebala uspješno asemblirati i Output prozor bi trebao izgledati kao na slici 10.
Slika 10.
Ako se datoteke nisu uspješno asemblirale, provjerite sljedeće natuknice i ponovno izgradite projekt:
● Provjerite sintaksu i format kôda unesenog u editorski prozor. Ako je asembler javio greške u Output prozoru, 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.
● Provjerite da li koristite odgovarajući asembler (MPASM assambler) za PICmicro uređaje. Odaberite Project>Set Language Tool Locations. Pritisnite Microchip MPASM
ler (mpasmwin.exe) i provjerite na njezinu lokaciju. Ako ko nije, promijenite ju i tada pritisnite OK.
Toosuite\Executables\ MPASM Assembje lokacija ispravna, pritisnite Cancel. A a
77
Nakon uspješne izgradnje projekta generira se, alatima za prevođenje, izlazne datoteke. Te datotek adrže objektni kôd koji se može upisati u PICmicro mikrokontrolere i informacije (debugging info koje služe za ispravljanje izvornog kôda i simbolično gledanje varijabla kôda preko prozora za gledanje(Watch windows).
Važno: Generirana datoteka.HEX se sada može otvoriti u programu IC-Prog i upisati na PIC
16F877. Bilješka: 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 provjer da li funkcionira. Da bi to učinili trebamo odabrati alat za pronalaženje pogrešaka (debug tool). To m že biti hardwerski ili softwerski alat za inspekciju kôda poslije izvršenja programa (u ovom slučaju ojac16f877.asm). U ovom vodiču ćemo koristiti MP u
Simulator je mikrokontrolera. S što simulatorski program ovisi o brzini PC-a, kompleksnosti koda, preljevom (overhead) operativnog sustava i koliko drugih zadaća (tasks)
eri vrijeme koje je potrebno da se kôd izvrši kao da radi u realnom
rdwerski alati za testiranje kôda na PC platformi.
i u stvarnoj ciljanoj aplikaciji.
rite MPLAB SIM simulator, kao alat za pronalaženje pogreški, selektiranjem Debugger>Select Tool>MPLAB SIM
e srmation)
itio
brLAB SIM sim lator.
softwerski program koji radi na PC-u i simulira instrukcije od PICmicro imulator ne radi u «realnom vremenu», zato
obavlja. Ipak, simulator precizno mjvremenu 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 haVeć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 brzin
Odabe
(slika 11).
Slika 11.
oslije odabira MPLAB SIM, vidjet ćemo sljedeće promjene (vidi pripadajuće brojeve na slici 12). P
21. Statusna traka (status bar) na dnu MPLAB IDE prozora će se promijeniti na «MPLAB SIM». . Dodatne meni opcije bi se trebale pojaviti u Debugger meniju. . Dodatne alatne ikone bi se trebale pojaviti koje služe za ispravljanje pogreški u kôdu
(Debugger Tool Bar). 3
78
Slika12.
7.3.6 Provjera rada aplikacije
DebuggerAplikacija je spremna za pokretanje. Na alatnoj traci će se pojaviti sljedeće ikone prečaca
menij
a:
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
Prv aberite Debugger>Reseto od (ili ikonu na alatnoj traci). Trebala bi se pojaviti zelena strelica a lijevoj strani prozora izvornog kôda, pokazujući na prvu liniju izvornog kôda koja bi se treb
nala izvršiti.
79
Slika13a.
Odaberite Debugger>Run (ili ikonu ) da bi pokrenuli aplikaciju. Tekstualna poruka «Running…» oj ar).
Da bi zaustavili izvršenje programa, selektirajte Debegger>Halt
će se p aviti na statusnoj traci(status b
) (ili ikonu . Zelena strelica će pok
Da bi prolazili kroz aplikaciju korak kroz korak, selektirajte Debugger>Step Into
azat na liniju kôda na kojoj je aplikacija zaustavljena.
(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 la izvršiti.
Imamo j imate koja se pokreće selektiranjem Debugger>Animate
koja bi se treba
oš akciju An (ili pripadajućom
ikonom ). S njom prola pauzom između s
zimo kroz izvorni kôd automatski korak po korak sa određenom vremenskom koka.
Ta se uza može promijeniti i definira na sljedeći način: selektirajte Debugger>S
vremenska paettings 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.
(p
7.3.
a mišom prelazimo preko svake varijable. Prozor za gledanje vrije
Bilješka: Da bi se generirala takva informacija prikazivanja varijable u pojavljujućem op-up) prozorčiću program mora biti kompajliran i povezan.
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 d
dnosti 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 res tiraj aplikaciju.
2. Selektiraj Debugger>Step Into
e
(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. renite još četiri koraka da bi vidjeli kako se vrijednost od DVAR u prozoru za gledanje romijenila u FF. Možete primijetiti kako su vrijednosti u prozoru za gledanje crvene boje ako u ih promijenile prethodne operacije izvršavanja, a crne boje ako ih nisu mijenjale prethodne
ij
Vidi sliku 16.
K psoperac e izvršavanja.
Slika 16.
82
Napomena: Te promjene, kao i promjene u ostalim registrima možemo pratiti i u sljedećim prozorima: Prozor Specijalnih registra (poglavlje 3.6.4) i Prozor File registra (poglavlje 3.6.5 ). Svaki korisnik će sam za sebe odlučiti koji im je od prozora najkorisniji za upotrebu.
7.3.6.4 Prozor Registra Specijalnih Namjena (Specal Functin Registers)
Selektiramo View>8 Specal Functin Registers i pojavit će nam se prozor kao na slici 17.
Slika 17.
U ovom prozoru možemo vidjeti sve Registre specijalne namjene sa njihovom adresom (prvi stupac Address), imenom (drugi stupac SFR Name) i njihovom binarnom, decimalnom i heksadecimalnom vrijednošću (sljedeća tri stupca). U posljednjem stupcu (Char) će se ispisati znak koji odgovara vrijednosti ASCII tabele.
83
7.3.
Selektiranjem V
6.5 Prozor File registra (File Register)
iew>4 File Registers otvorit ćemo prozor za gledanje File registra (slika 19.).
Slika 19.
On pokazuje sve vrijednosti na adresama File registra. Pritiskom na tabular Symbolic (označen crvenom bojom) dobit ćemo simbolični prikaz koji je razumljiviji (slika 20.).
Registri su sortirani po adresama. U ovom prozoru također možemo upisivati vrijednosti u registre kao što je opisano u poglavlju 3.6.5.
Slika 20.
84
7.3.
Pre ozora, osim gledanja, možemo upisivati vrijednosti u registre. To možemo na dva
1. Dođemo do polja u koji ćemo upisati vrijednost i pritskom na Enter (na tipkovnici), ili dvostrukim lijevim klikom miša, možemo upisati neku vrijednost.
2. Drugi način je da pritiskom desnog klika miša iznad određenog polja, kad se pojavi meni, odaberemo opciju Fill Registers …
6.6 Upisivanje vrijednosti registara preko prozora
ko ovog prnačina:
.Pojavit će se prozor kao na slici 18. Slika 18.
Tu određujemo od koje do koje adrese ćemo upisivati vrijednosti i koju vrijednost.
7.3.6.7 Simuliranje rada priključka (pinova) (Stimulus Controller)
Simuliranje pinova je korisna simulatorska opcija, posebice kad nam je u programu potrebno izazvati prekid preko npr. RB0 pina ili kad su nam određeni portovi definirani kao ulazni i onda želimo na njih dovesti odgovarajuće poticaje, da bi vidjeli kako naš program reagira na njih.
Selektirajte Debugger>Stimulus Controller . U prozoru koji se pojavio, pod tabularom Pin Stimulus, pritisnite Add Row. Prikazat će nam se prozor kao na slici 21.
Slika 21.
85
Pod stupcem Type, pritiskom na polje Asynch, odabiremo sinkroni ili asinkroni oblik poticaja. Ako m ati koji pin želimo stimulirati (pod Pin )
.
odabere o asinkroni oblik poticaja Asynch možemo odabrstupcem i oblik akcije (stupac Action).
Slika 22
Akcije:
• High - logička jedinica • Low - logička nula • Toggle - izmjenjivanje pri svakom pritiskom na ire između logičke jedinice i nule • - impulsni poticaj logičke jedinice
Pri završetku uređivanja pritisnite Edit C
FPulse
omplete. Prilikom prolaska kroz kôd akcijama Step Into ili beremo sinkroni oblik poticaja Animate, stimulacija pina će se obaviti pritiskom na tipku Fire. Ako oda
dobit ćemo poticaj u obliku takta.
Slika 23.
86
7.3.6.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. aruje ovako:
1. Selektirajte Debugger>Reset
To se ostv
i resetirajte aplikaciju. 2. Pronađite sljedeću liniju kôda i desnim klikom miša kliknite na nju:
movlw 0xFF ;vremensko trajanje petlje
3. Iz menija koji se pojavio nakon desnog klika miša, selektirajte Set Break Poin . Stop znak bi se trebao pojaviti na lijevoj margini pokraj te linije kôda (slika 21.).
Slika 21.
4. Selektirajte Debugger>Run da bi startali aplikaciju. Trebala bi kratko raditi i zaustaviti se kod linije gdje je postavljena za točka za prekid.
Slika 22.
Bilješka: Nakon zaustavljanja kod točke za prekid, zgodan način za kretanje do neke lokac u kôdu je da stavimo kursor na bilo koju instrukciju u kôdu i pritiskom desnog klika m ša odaberemo Run to Cursor
ijei
. 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. Ako se ta instrukcija slučajno neće nikad izvršiti, aplikacija će nastaviti raditi sve dok ne selektiramo Debugger>Halt.
87
7.3.6.9 Praćenje kôda (Tracing Code)
kôda. Ponekad je bolje, da umjesto kret
Simulirano praćenje može se koristiti za snimanje izvršenja anja kroz linije kôda korak po korak, kôd snimimo u akciji. Omogućimo simulirano praćenje tako da
selektiramo Debugger>Settings i odaberemo «Trace/Pins» tabular.
Slika 23.
U Trace Option području se nalaze dvije kućice koje se mogu potvrditi kvačicom, a one kontroliraju kakav ćemo dosje dobit simuliranim praćenjem. Kada je gornja kućica potvrđena, simulator skuplja podatke kada simulator radi u «Run» modu. On skuplja podatke sve dok nije zaustavljen točkom za prekid ili «ručno». On će ispisati posljednjih 8192 ciklusa. Ovaj mod je vrlo koristan jer možemo vidjeti zapise instrukcija koje su izvršene do točke za prekid.
Ako potvrdimo i drugu kućicu, tada će memorija za praćenje skupiti 8192 ciklusa i prestati skupljati, a aplikacija će biti zaustavljena na točki za prekid. Ovaj mod je koristan da bi vidjeli zapise instrukc on pritiska Run. ija nak
Selektirajte View>Simulator Trace (slika 20). Simulator praćenja ne prikazuje samo sekvencu e instrukcije nego i druge informacije. Prikazizvršen uje još vremensku bazu da svaki ciklus. Podaci
oji se čitaju ili upisuju u File registar će biti uhvaćeni i prikazani u SA, SD, DA i DD stupcima kao što slici 24.
Slika 24.
kse vidi na
88
• Line - pokazuje brojeve ciklusa • Addr - adresa programskog brojila (Program Counter) • Op - vrijednost instrukcije strojnog kôda • Label - prikazuje svaku labelu simbolično • Instruction - prevedenu instrukciju (disassembled instruction)
Sljedeća četiri stupca prikazuju vrijednosti podataka koje se upisuju i čitaju u File registre:
• SA - adresa registra za operaciju čitaj (S
ource Address) • SD - podatak pročitan sa registra (Source Data) • DA - adresa registra za operaciju piši (Destination Address) • DD - 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.
• Cycles - pokazuje vremensku bazu za svaki ciklus. Može se koristiti za mjerenje vremena koje je potrebno da se izvrši rutina. Vrijeme se računa na bazi frekvencije unesene u Debugger>Settings , tabular Clock.
89
8 kontrolera PIC 16F877
8.1
e radi pre
Eas
olere (isporučuje se sa PIC16F877) cime je znatno olakšan rad.
potreba: temperaturne kontrolere, brojače,
IC-Pr g
Pro amiranje mikrokontrolera. Program se nalazi na CD-u, ali preporučamo da se «skine» novija verzija sa Interneta. http://www.ic-prog.com/index1.htm
Programiranje mikro
Uvod
Programiranje mikrokontrolera 16F877, koji se nalazi na Easy-PIC razvojnom sustavu, sko programa IC-Prog.
y-PIC
• Sustav podržava 8, 18, 28 i 40 pinske mikrokontr• Na ploči je jasno označen svaki kratkospojnik, element ili pin • Na sustavu je moguće isprobati većinu industrijskih
tajmere... • Primjeri asembleru cine sam početak rada vrlo efikasnim.
o
gramski paket koji koristimo za progr
pod Download .
Napomena: Korisnici Windows NT/2000/XP operativnog sustava morat će još «skinuti» datoteku icprog.sys i kopirati je u istu mapu gdje i icprog.exe.
8.2 Instalacija sustava pri programiranju programskim paketom IC-PROG
Kratkospojnici (Jumperi) JP3, JP4 i JP5 MORAJU biti postavljeni!
Postupak (uz sliku 1.):
1. Prvo što treba uraditi je priključivanje sustava preko serijskog kabla na računalo. 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.
2. Sljedeći korak je priključivanje napajanja. Napajanje može biti i istosmjerno i izmjenično već prema izboru od 9 do 12 Volti.
3. Kopirati ICprog.exe sa CD-a na tvrdi disk računala. Najbolje je napraviti mapu PIC i u njemu posebnu mapu ICPROG čime će sve biti preglednije. (npr. C:\PIC\ICPROG ). Kopiranjem programa u spomenutu mapu je završena njegova instalacija. Kopirajte datoteku icprog.sys u mapu ako koristite Windows NT/2000/XP.
90
Slika 1.
8.3 Pr
(korišten IC-Prog verzija 1.05C)
og. Ukoliko je to prvo pokretanje ICPROG-a na računalu, pojavit će se prozor kao na slici 2.
Slika 2.
ogramiranje mikrokontrolera programskim paketom IC-PROG
1. Pokrenite IC-pr
91
Potrebno je definirati hardwer preko kojeg se mikrokontroler na ploči programira. Kako je na ploči ugrađen JDM programator njega treba odabrati.
Opcija PORTS se bira na osnovu slobodnog porta na računalu korisnika. Obično je slobodan COM1 , pa njega i treba selektirati. Pritisnite OK.
Slika 3.
Pojavit će se IC-Prog sučelje kao na slici 3.
Do opcije Hardware setting možemo doći selektiranjem Settings>Hardware, ako želimnaknadno promijeniti.
o nešto
VAŽNO: Korisnici Windows namjestiti dodatne parametre za
normalan rad. Selektirajte Settings>Options NT/2000/XP OS moraju još
i u tabularu Misc potvrdite prazni
lika 4.
prozorčić kod opcije Enable NT/2000/XP Driver kao na slici 4. Pritisnite OK.
S
Program će se restartati i promjene će postati važeće.
92
2. Kada se definira hardwer, sljedeći korak je odabir mikrokontrolera koji ćemo programirati. Klikom na Settings > Device> Mikrocip PIC bira se mikrokontroler PIC16F877 koji se koristi na
lika 5.
razvojnom sustavu PIC-easy kao na slici 5.
S
3. Sljedeći korak je učitavanje HEX datoteke (mikrokontroler prima program u toj formi).
Selektirajte ikonicu Open (ili preko odabira File>Open) i pojavit će nam se prozor za
lika 6.
traženje i odabir datoteke (slika 6.).
S
Učitavanje programa se vrši klikom miša na odgovarajuću datoteku (ime_datoteke.hex) i pritisnite Open . Učitani program se pojavljuje u spremniku (buffer) i spreman je za prijenos u mikrokontroler.
Napomena: HEX datoteku pravi bilo koji asemblerski, BASIC ili C ko pajler. m
93
4. ISP prekidač na razvojnom sustavu prebaciti u položaj za upisivanje/programiranje (u modu za upisivanje svijetli dioda PROGRAM MODE ON).
Slika 7.
5. Klikom na ikonu koja se nalazi na sredini alatne trake počinje programiranje mikrokontrolera. Drugi način je da selektiramo sa menija Command>Program All (slika 8.)
Slika 8.
94
Kad počne programiranje pojavit će se sljedeća slika: Slik 9. a
6. Nakon što je programiranje završeno isključiti prekidač ISP (gornji desni ugao razvojnog sustava), kao što je prikazano na slici ispod.
Slika 10.
Napomena: Ne treba vaditi serijski kabel iz konektora za programiranje, što je od velike
pomoći prilikom čestog programiranja!
95
9
9.1 Napajanje
Slika 11.
Opis razvojnog sustava
Za ispravan rad svih elemenata na razvojnom sustavu potrebno je osigurati stabilnih +5V. Kod PIC-Easy sustava, to je postignuto upotrebom naponskog stabilizatora LM7805. Zbog povećane disipacije do koje dolazi pri većem opterećenju, stabilizator je postavljen na odgovarajući hladnjak.
Slika 12.
9.2 Led diode
ustav ima 32 diode koje su povezane na pinove porta A, B, C, D i E. Ove diode se obično koriste u p bitnoj fazi rada, ali i kasnije za indikacije dešavanja u programu. Svaka grupa dioda se uklj pje n i.
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.
Srvoučuje/isključuje reko prekidača SW3. Način povezivanja LED dioda sa mikrokontrolerom prikazan a narednoj slic
96
Slika 13.
Slika 14.
9.3 Tipkala
i.
Sustav posjeduje jedano RESET tipkalo i 24 tipkala za simuliranje komandnih ulaza sustava koji su povezani na pinove RE0, RE1 i portove A, B i C. Shematski prikaz veze tipkala i mikrokontrolera dat je na sljedećoj slic
97
Slika 15.
Oznaka iznad svakog predstavlja naziv pina na koji je odgovarajuće tipkalo priključeno. Da bi se tipkalo koristilo odgovarajući pin portova A, B, C i/ili E mora se definirati kao ulazni. Kratkospojnikom u lijevom donjem kutu razvojnog sustava definira se da li je prilikom aktiviranja tipkala vrijednost odgovarajućeg pina 5V ili 0V. Ako je kratkospojnik u gornjem položaju, onda će se prilikom aktiviranja izvjesnog tipkala na odgovarajući pin doći logička jedinica, a ako je u donjem položaju logička nula. Slika 16.
9.4 LCD zaslon (display)
Kontrast zaslona se regulira potenciometrom u donjem lijevom kutu razvojnog sustava. LCD lon se može priključiti ili na port B ili na port D. Naredna slika prikazuje shemu povezivanja LCD-a
na port D i port B mikrokontrolera PIC16F877. Ako su pinovi LCD zaslona sa donje strane, korisnik treba da zalemi kontakt letvicu na mjestu odgovarajućeg porta u dnu razvojnog sustava, u okviru pravokutnika predviđenim za LCD zaslon!!!.
Predviđen je klasičan LCD zaslon sa 2x16 karaktera. Ipak, to nije ograničenje jer se može koristiti bilo koji zaslon koji ima isti tip komunikacije sa mikrokontrolerom.
zas
98
Slika 17.
Slika 18.
Izgled postavljenog LCD zaslona na port B. Izgled postavljenog LCD zaslona na port D.
9.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. Preko DIP prekidača SW2, definiraju se znamenke koje će biti uključene, a koje ne. Npr. recimo da treba omogućiti prikazivanje krajnje lijeve znamenke. Prebacivanjem četvrtog prekidača na SW2 u radni režim (ON) znamenka sedamsegmentnog zaslona (DIS1 rajnje lijevo znamenka) će pokazivati vrijednost koja je definirana vrijednostima pinova porta B (sl a 20.). Slično se radi kada su u pitanju znamenke DIS2, DIS3 i DIS4. Naredna slika prikazuje način povezivanja sedamsegmentnih zaslona sa mikrokontrolerom.
, kik
99
Slika 19.
Slika 20.
9.6 Analogno-digitalni pretvarač (A/D converter)
Mikrokontroler PIC16F877 koji se koristi na razvojnom sustavu, 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.
100
Slika 21.
Ukoliko se želi očitavanje vrijednosti potenciometra P2 neophodno je taviti kratkospojnik iznad dgovarajućeg potenciometra. Prekidač na RA2 na SW1 mora biti isključen donji položaj). Primjer na lici 19. pokazuje očitavanje vrijednosti napona na potenciometru P2 kao i položaj prekidača SW1 u m slučaju.
Slika 22.
s (o
sto
9.7
ti ne većoj od 10 m. oliraju na koji pin se
komunikacija spaja. Ako se koriste DIP40 i DIP28 mikrokontroleri treba ih spojiti na RC6 i RC7, a u slučaju DIP18 mikrokontrolera na RB1 i RB2. Slika 20. prikazuje vezu računala i razvojnog sustava.
RS-232 komunikacija
RS-232 komunikacija je namijenjena komunikaciji dva uređaja na udaljenosajčešće se preko nje komunicira sa računalom. Kratkospojnici RX i TX kontrN
101
Slika 23.
Slika 24.
9.8 Digita
Dallas-ov DSmože poslužiti povezivanje. Possustava. Na slicisustavu.
lni termometar - DS1820
1820 digitalni termometar, sa mogućnošću mjerenja temperature od –55 do 125°C, za mjerenje temperature okoline i eksperimentiranje. Vrlo je točan i lagan za tavlja se u podnožje sa tri pina neposredno ispod konektora za napajanje razvojnog 26. ilustrirano je povezivanje digitalnog termometra i mikrokontrolera na razvojnom
102
Slika 25.
Digitalna vrijednost temperature se šalje ili na A5 ili RE2 u zavisnosti od toga u kom položaju kratkospojnik koji se nalazi neposredno iznad čipa DS1820. U prikazanom primjeru
ra će se očitavati preko pina RA5. Polukrug oko tropinskog podnožja označava orijentaciju DS1820 prilikom postavljanja u podnožje. Slika 26.
pin Rse nalazi temperatu
9.9 Pull-up/pull-down otpornici na portovima
tavlj inovi odgovarajućeg porta se postavljaju na logičku icu ( em položaju, pinovi porta su na logičkoj nuli (pull-
down). Izgled dijela razvojnog sustava prilikom redefiniranja pinova porta A na logičku jedinicu, a pino
S anjem kratkospojnika u gornji položaj pjedin pull-up). Ukoliko je kratkospojnik u donj
va porta B na logičku nulu dat je na slici 27., a shematski je predstavljeno slikama ispod.
103
Slika 27.
Slika 28.
Slika 29.
104
Port B je na PULL-DOWN otpornicima, što znači da su ti pinovi na logičkoj nuli sve dok se na njih ne postavi željena vrijednost.
Port A je preko SW1 povezan na otpornu mrežu. Ako SW1 nije u ON položaju, odgovarajući pin nema ni pull-up ni pull-down otpornik na sebi . Ovo je jako bitno jer omogućuje da se port A koristi u analognom modu kao A/D pretvarač.
DIP prekidači na sustavu omogućavaju veliku fleksibilnost. Njihovim korištenjem pinovi portova se povezuju sa različitim elementima sustava:
SW1 - uključuju / isključuju PULL-UP ili PULL-DOWN otpornike porta A i pinova RE0 i RE1
porta E. SW2 - uključuje / isključuje sedamsegmentne zaslone SW3 - uključivanje / isključivanje led dioda na portovima A, , D i E.
irektan pristup portovima
Svi pinovi PIC-a se mogu definirati kao ulazni ili kao izlazni. Pinovima portova moguće je pristupiti direktno sa desne strane razvojnog sustava preko «flat» kabla. Na taj način se mogu očitavati ili unositi odgovarajuće vrijednosti na portove sa vanjskih elemenata. Slika 30.
B, C
9.10 D
105
10 Primjeri
10.1 Uvod
om programu. Svaki ovaj primjer možete isprobati u simulatoru
je opisan u prethodnim poglavljima, ali evo jedan kratak odsjetnik:
1.
2.
U ovom poglavlju su prikazani primjeri gotovih programa koji bi vam trebali pomoći da brže savladate programiranje u asemlerskMPLAB IDE i preko programa IC-Prog upisati na mikrokontroler PIC 16F877, koji se nalazi na razvojnom sustavu. Detaljni opis postupka p
Pokrenite MPLAB IDE.
Selektirajte File>New, i u novom prozoru prenesite akcijom Copy/Paste primjer izvornog kôda.
3. Selektirajte File>Save, i spremite datoteku kao ime_datoteke.asm.
4. Izradite projekt preko Čarobnjaka za projekt (vidi poglavlje 7.3).
Iz >Build All5. gradite projekt selektiranjem Project .
Nakon uspješne izgradnje kôda program se može ispitati u simulatoru ili ga možemo odmah upis
7. Selektirajte File>Open File
ati na naš mikrokontroler PIC 16F877. Potrebna .hex datoteka je generirana u istoj mapi u kojoj smo izradili projekt i možemo ju preko programatora IC-Prog upisati u PIC 16F877.
6. Pokrenite IC-Prog.
i odaberite ime_datoteke.hex datoteku u radnoj mapi.
on postavljanja radnih uvjeta razvojnog sustava, selektirajte Command>Program All8. Nak .
9. Programiranje je time je završeno i potrebno je isključiti ISP prekidač.
Na razvojnom sustavu se mogu vidjeti rezultati. Prije primjera nalazi se kratak podsjetnik na makroe i potprograme.
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.
10.2 Makro naredbe
Makro naredbe se definiraju preko direktive macro u okviru koje se zadaje ime makroa i po potrebi argumenti. Ime_makroa macro argument1,arg2,… niz instrukcija
niz instrukcija endm
Definicija makroa se mora nalaziti ispred mjesta gdje se koristi. Kada se u okviru programa pojavi ime makroa, on se zamjenjuje nizom instrukcija koje su navedene prilikom definiranja makroa. Najjednostavnija primjena makroa je davanje imena nizu naredbi koje se ponavljaju.
Kao primjer može poslužiti odabir banke SFR registra. PIC16F877 ima četiri banke: Bank 0, Bank 1, Bank 2, Bank 3. Pristupa im se preko RP1 iRP0 bitova STATUS registra.
106
RP1:RP0 Bank 00 0 01 1 10 2 11 3
bank.inc (spremiti kao "bank.inc" notepad-u). BAN P0 BAN endm
bcf STATUS,RP1 BAN
kroi se spremaju u posebnu datoteku sa nastavkom .INC. Datoteka ima astavak .INC asocirajući da se radi o INCLUDE (u prijevodu uključi-umetni u program) datoteci.
rimupisa podatka u E u memoriju (raspored File registrima po bankama se nalazi u prilogu 8.10).
10.3 Potprogrami
tavlja niz naredbi koji počinje labelom, a završava se naredbom return ili retlw. lavna razlika u odnosu na makro je to što se niz instrukcija potprograma nalazi samo na jednom jestu u okviru programske memorije. Ovaj niz instrukcija se izvršava svaki put kad se navede
return nastavlja se izvršavati od je je potprogram bio pozvan. Definicija potprograma se
može nalaziti i prije i po a.
abela ;poziv potpr. se obavlja sa "call Labela" niz instrukcija
može reći da pomaže programeru manje kucati) i da oni mogu imati svoje argumente dok potprogram troši manje memorije, ali nema svoje argumente koje može pozivati.
K0 macro bcf STATUS,R bcf STATUS,RP1
endm
K1 macro bcf STATUS,RP0
bsf STATUS,RP1
BANK2 macro bsf STATUS,RP0
endm
K3 macro bsf STATUS,RP0 bsf STATUS,RP1 endm
Ovako napisani ma
n
U sljedećim p jerima će se koristiti samo banke 0 i 1, dok će se banka 3 i 4 koristiti samo kod EPROM, odnosno FLASH programsk
Potprogram predsGmnaredba call Ime_potprograma. Kada program stigne do naredbe sljedeće naredbe u glavnom programu kod ko
slije mjesta poziv
L
niz instrukcija niz instrukcija return ili retlw
Napomena: Osnovna razlika između makroa i potprograma je u tome, da se na mjesto makroa uključuje njegov kôd (jednostavno se
107
10.4 Primjeri
10.4.1 Program za aktiviranje porta B
U ovom primjeru definiramo pinove porta B kao izlazne, i na njegove pinove dovodimo u stanje
;deklaracija i konfiguracija procesora ;memorijske adrese u slovima
;ukljucivanje makroa umjesto bsf
FIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
;bcf STSTUS,RP1 ; bsf STSTUS,RP0 movlw 0x00 ;upisi 0 u radni spremnik
TRISB ;upisi u reg. TRISB-definiramo ;pinove portaB kao izlazne ;bcf STATUS,RP0
;b'11111111' movwf PORTB ;svi pinovi porta B odlaze u 1
;labela petlje
;nakon reseta su svi pinovi ulazni
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
bcf STASTUS,RP1
;b'11111111' movwf PORTB ;svi pinovi porta B odlaze u 1
;labela petlje ;nakon reseta su svi pinovi ulazni
logičke jedinice.
PROCESSOR 16F877 #include"p16f877.inc" #include"bank.inc"
__CON BANK1 movwf
BANK0 movlw 0xFF Petlja goto Petlja End
Bez makroa bank.inc to bi izgledalo ovako:
PROCESSOR 16F877 #include "p16f877.inc"
bsf STASTUS,RP0 ;BANKA 1 movlw 0x00 ;upisi 0 u radni spremnik movwf TRISB ;upisi u reg. TRISB-definiramo ;pinove portaB kao izlazne
bcf STATUS,RP0 ;BANKA 0 movlw 0xFF
Petlja goto Petlja
End
108
10.4.2 Način upisivanja konstanti
binarno
li movlw 0x2c
decimalno '44'
4
koj estira azni p RC0 i o je RC1 u nuli
BANK1 movlw b'00000000'
ovlw b'11111111' movwf TRISC
Main ,0 ;kontrola 1 na RC0 ,0 ;ako je nula resetira RB0
RTC,1 ;kontrola 0 na RC1 ;ako je nula setira RB1
registra opće namjene i radnog tra w te indirektno adresiranje koristeći INDF i FSR registre.
PROCESSOR 16f877
#include "p16f877.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org 0x00 goto Main
movlw b'00101100'
heksadecimalno movlw h'2c'
i
movlw d ili movlw .4
10.4.3 Naredbe uvjeta
Ovo je program i t ul in ako je u jedinici setira izlazni RB0, i aksetira RB1 i obratno.
PROCESSOR 16f877 #include "p16f877.inc" #include "bank.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
org 0x00 goto Main movwf TRISB m BANK0
btfss PORTCbcf PORTB
btfsc PORTC,0 ;kontrola 0 na RC0 bsf PORTB,0 ;ako je jedinica setira RB0 btfss PO
bsf PORTB,1 btfsc PORTC,1 ;kontrola 1 na RC1
bcf PORTB,1 ;ako je jedinica setira RB1 goto Main end
10.4.4 Zbrajanje i oduzimanje, indirektno adresiranje
Jednostavni primjeri zbrajanja i oduzimanja konstanti između regis
109
Main clrf FSR clrf INDF
→ w + 120 = 185 → w
;150 - 185 = .221 ili 0xdd → w 5 → w adrese 0x20
w. 0x20=.0 → w
→ w ;0x21 → FSR
;vrijednost reg. INDF→w sadrži vrijednost tra 0x21, a reg. FSR
;sadrži njegovu adresu addlw .20 ;0 + 20 = .20 → w
toj adresi. Ako je u FSR registar upisana adresa npr. 0x22 , a onda u INDF tar upišemo vrijednost d'55', tada će se u registru 0x22 nalaziti podatak d'55'.
dva binarna broja:
– 34
34 00100010
11011101
e STATUS registra,
.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
BANK1
clrf TRISC BANK0
ain
;W = portb - 100
movlw .65 ;65 addlw .120 ;65 sublw .150 addlw .120 ;35 + 221 = 8 movf 0x20,0 ;vrijednost sa ;u addlw .12 ;0 + 12 movlw 0x21 ;0x21 mo FSR vwf movf INDF,0
;INDF :regis
goto Main end
Kada u registar FSR upišemo neku adresu(npr. 0x21), tada će registar INDF sadržavati vrijednost podatak) zapisan na(
regis
Primjer na koji način računalo oduzima
56
je isto što i 56 + (–34)56 00111000
prvi komplement + 1
drugi komp. (-34) 11011110 +56 00111000 22 100010110
10.4.5 Usporedba (komparacija)
Oduzimanjem konstante od sadržaja spremnika PORTB djelujemo naodnosn e CAR bit i o koris
stanjo na nj gov RY i ZERO t timo za upravljanje.
PROCESSOR 16f877
6f877.inc" #include "p1 #include "bank
org 0x00
movlw b'11111111' movwf TRISB
clrf PORTC goto Main M movlw .100 subwf PORTB,0
110
btfsc STATUS,Z ;da li je rez=0 ;portb=100, setiramo RC0
00
ortb<100, >100, resetiramo RC1
tb<100 mo RC2
goto end
gistra:
Prije instrukcije: PortB = 3, W = 2, C = x, Z = x Poslije instrukcije: PortB = 3, W = 1, C = 1, Z = 0 pozitivan rezultat
la
= x , Z = 0 negativan rezultat
10.4.6 Inkr entiranje
lsa većava se za jedan registar PORTB, a dolaskom impulsa na pin edan. Vrijednost registra se ispisuje na izlaznim pinovima
PROCE 1
#include "p16f877.inc" #include "bank.inc"
DT_OFF & _PWRTE_ON & _XT_OSC
ain BANK1
;ili 0xff
;RC0 uvećava PortB
;RC1 smanjuje PortB
anjujemo vrijednost GPS registra 0x20 dok ne dođe do nule i u upisujemo vrijednost .16 i dalje vrtimo petlju.
bsf PORTC,0 btfsc STATUS,C ;da li je portb>100 bsf PORTC,1 ;portb>100, setiramo RC1 btfsc STATUS,C ;da li je portb>1 bcf PORTC,2 ;portb>100, resetiramo RC2
btfss STATUS,C ;da li jep bcf PORTC,1 ;portb btfss STATUS,C ;da li je por bsf PORTC,2 ;portb<100, setira
Main
Primjer sa mogućim stanjem PortB re
Prije instrukcije: PortB = 2, W = 2, C = x, Z = x Poslije instrukcije: PortB = 2, W = 0, C = 1, Z = 1 rezultat je nu
Prije instrukcije: PortB = 1, W = 2, C = x, Z Poslije instrukcije: PortB =1, W = 0xFF, C = 0
mentiranje i dektreme
Dolaskom iRC1 smanjujemo nost registra
mpu na pin RC0 u vrijed za j
porta B.
SSOR 6f877
__CONFIG _CP_OFF & _W
org 0x00 goto Main M Clrf TRISB Movlw b'11111111' Movwf TRISC BANK0
Clrf PORTB Btfsc PORTC,0
PORTB Incf Btfsc PORTC,1 Decf PORTB Goto Main end
Dolaskom impulsa na pin RC0 smtada m
111
PROCESSOR 16f877 #include "p16f877.inc" #include "bank.inc"
SC
Movlw 0xff
K0
ain btfsc PORTC,0 ;Ispituje stanje RC0 Decfsz 0x20 ;dekrementira, preskače sljedeću
;instrukciju kada dođe do nule
x20,4 vivalentno .16 in
end
0.4.7 Inicijalizacija Porta A i Porta E
Port t E (R oji mogu biti logni i digitalni priključnice (portovi). Ako ih želimo koristiti kao digitalne ulazno/izlazne pinove moramo to
i ja ovim kratkim kôdom:
LRF PORTA ;inicijalizacija PORTA tako ;da prvo očistimo izlazne ;rezultate podataka
S, RP0 ;Bank 1 ;konfiguriranje svih ;pinova kao digitalne
;da odredimo koji su ;ulazno/izlazni pinovi
;RA<3:0> kao ulazni ;RA<5:4> kao izlazni ;TRISA<7:6>su uvijek ;čitani kao ’0’.
;pinovi RE<2:0> se jedino TRISE ;mogu koristiti kao u/i pinovi
;ovom vrijednošću su definirani ;kao ulazni
sljedeći pinovi PORTA E<1:0>.
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_O org 0x00 BANK1
Movwf TRISC ;definiranje portova BANK0 Movlw .12 ;.12→w Movwf 0x20 ;prvi slobodan GPR registar u BAN Goto Main M
goto Main bsf 0 ;setira 4 bit - ek
goto Ma
1
A (RA<5:0>) i por E<2:0>) su ulazno/izlazni pinovi k definirani kao ana
definirat u registru ADCON1. Inicijalizacija se obavl
BCF STATUS, RP0 BCF STATUS, RP1 ;Bank0 C
BSF STATUMOVLW 0x06 MOVWF ADCON1 MOVLW 0xCF ;vrijednost korištena
MOVWF TRISA
MOLW B'00000111' MOVWF
Napomena: Na razvojnom sustavu su na testne LED diode priključeni RA<5:0> i PORTE R
112
10.4.8 podataka sa memorije
i primjer ovog kôda:
1 ;Bank 2
;adresa s koje
a memoriju
;Bank 2
10.4.9 - u atka u memoriju
1 STATUS, RP0 ;Bank 3
BTFSC EECON1, WR ;čeka na G završetak upisa B ;Bank 2 MOVF ADDR, W ;adresa na koju
BCF EECON1, EEPGD ;pokazuje na memoriju ;podataka EEPROM
BCF INTCON, GIE ćeni te tu liniju
juč)
) BSF EECON1, WR a
TCON
BCF EECON1, WREN
Mikrokontroler PIC16F877 može koristiti FLASH programsku memoriju za spremanje podataka. a uj
sme vinstrukcija, biti prepo ilna instrukcija i biti će izvršena NOP operacija.
Registri: EEADRH : EEADR: - 2 bajtna riječ
- sadrži 13-bitnu adresu lokacije
EEDATH : EEDATA: - sadrži 13-bitni podatak koji čitamo ili ćemo upisati u programsku memoriju
EEPROM - čitanje
Da ki pbi pročitali ne odatak s neke adrese iz EEPROM-a, dovoljno je kopirat
BSF STATUS, RPSTATUS, RP0BCF
MOVF ADDR, W MOVWF EEADR ;ćemo čitati
STATUS, RP0 ;Bank 3 BSF BCF EECON1, EEPGD ;pokazuje n ;podataka EEPROM
;početak operacije čitanja BSF EECON1, RDBCF STATUS, RP0MOVF EEDATA, W ;W = EEDATA
EEPROM pis pod
BSF BSF
STATUS, RP
OTO $-1 ;CF STATUS, RP0
MOVWF EEADR ;ćemo pisati MOVF VALUE, W ;podatak koji MOVWF EEDATA ;ćemo upisati BSF STATUS, RP0 ;Bank 3
BSF EECON1, WREN ;omogućuje upis
;/onemogućuje prekide mogu;- ako su već ranije o
baci ;\u suprotnom izMOVLW 0x55 ;upisuje vrijednost 55h
rvi klMOVWF EECON2 ;u registar EECON2 (pMOVLW 0xAA ;upisuje vrijednost AAh MOVWF EECON2 i ključ;u reg. EECON2 (drug
;počinje operacija upis;/omogućuje prekide
BSF IN , GIE ;- ako ih koristimo, ;\ u suprotnom izbacite
pisanje ;onemogućuje
10.4.10 FLASH programska memorija - čitanje podataka
T opcija omoguć e čitanje i upisivanje 14-bitnog podatka u programsku memoriju. Taj podatak neće tati pri izvrša anju instrukcija u programskoj memoriji jer će se taj podatak, pri izvršenju
znat kao nedopuštena/neprav
113
Čitanje se vrši na sljedeći način:
ujemo
(ciklusa)
MOVF EEDATA, W ;DATAL = EEDATA MOM AH = EEDATH MOVWF DATAH
10.4.11 ataka
rijskoj OVWF EEDATH
i, liniju
W
MOVWF EECON2 ;registar EECON2 isa
potrebna NOP ;dva NOP-a da se spremi za
CF EECON1, WREN ;onemogućuje upis
BSF STATUS, RP0 ;Bank 2 MOVF ADDRL, W ;upisMOVWF EEADR ;adresu sa MOVF ADDRH,W ;koje ćemo MOVWF EEADRH ;čitati podatak BSF STATUS, RP0 ;Bank 3 BSF EECON1, EEPGD ;pokazuje na FLASH ;programsku memoriju BSF EECON1, RD ;početak operacije čitanja NOP ;potrebna su mu dva NOP NOP BCF STATUS, RP0 ;Bank 2
VWF DATAL OVF EEDATH,W ;DAT
FLASH programska memorija - upisivanje pod
BSF STATUS, RP1 BCF STATUS, RP0 ;Bank 2 MOVF ADDRL, W ;upisujemo adresu MOVWF EEADR ;željene lokacije MOVF ADDRH, W ;u programskoj MOVWF EEADRH ;memoriji MOVF VALUEL, W ;upisujemo vrijednost MOVWF EEDATA ;u program MOVF VALUEH, W ;na željenoj memoM ;lokaciji
;Bank 3 BSF STATUS, RP0 BSF EECON1, EEPGD ;pokazuje na FLASH ;programsku memoriju BSF EECON1, WREN ;omogućuje upis
;/onemogućuje prekide BCF INTCON, G ;- ako su već ranije omogućenIE ;\u suprotnom izbacite tu MOVL 0x55 ;upisuje 55h u MOVWF EECON2 MOVLW 0xAA ;upisuje AAh u
;registar EECON2
BSF EECON1, WR ;počinje operaciju upNOP ;mikrokontroleru su
;upis ;/omogućuje prekide
BSF INTCON, GIE ;- ako ih koristimo, ;\u suprotnom izbacite tu liniju
B
114
10.4.12 Zbrajanje dva 16 bitna broja
T_OSC Main
btf ;kontrola carry bita, preskoči
;za nula MSB2
addwf MSB2,f ;zbroji ga sa MSB2
10.4.13
movf LSB1,W dec
10.4.14
Pod o veličini. Najveći se upisuje na lokaciju i r om os lokacij
R 1 6f8 __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC cblock 0x40 bi,adr,nadr,rsort,sort,asort endc movlw .10 ;sprema 10 u w
PROCESSOR 16F877 #include "p16f877.inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_X
LSB1 equ 0x20 ;argument 1, niži bajt MSB1 equ 0x21 ;argument 1, viši bajt LSB2 equ 0x22 ;argument 2, niži bajt
qu 0x MSB2 e 23 ;argument 2, viši bajt
org 0x00 ;reset vektor goto Main
movf LSB1,w ;zbroji i spremi u LSB2 addwf LSB2,f
sc STATUS,C
incf MSB2,1 ;inkrementiraj i spremi u movf MSB1
end
Oduzimanje dva 16 bitna broja
PROCESSOR 16F877 #include "p16f877.inc" __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
LSB1 equ 0x20 MSB1 equ 0x21
LSB2 equ 0x22 MSB2 equ 0x23
subwf LSB2,1 ;oduzmi i spremi u LSB2 btfss STATUS,C ;kontrola carry bita
f MSB2,1 ;dekrementiraj i spremi u MSB2 movf MSB1 subwf MSB2,1 ;zbroji ga sa MSB2 end
Sortiranje sa indirektnim pristupom
aci sa lokacija od 0x20 do 0x29 se uspoređuju i sortiraju p 0x30 ed tali po veličini do e 0x39.
PROCESSO 6F877 #include "p1 77.inc"
115
movwf rsort ;interacija snimanja movlw 0x30 ;sprema h'30' u w
etna adresa sortiranja
poc ;9 w broj interacija traženja najvećeg
;usporedba carry bita statusa u pomoćni registar 0x2a
FSR,0 ;indirektno, u njega guramo adresu, upis movwf nadr ;upis u nadr
a vrijednost u sort sort
decfsz bi ;dekrement
is najvećeg u FSR ti najveću vrijednost ort u FSR ->0x30 novu adresu
pis najvećeg na 1. adresu 0x30 većav
erupt
promjene porta B, prekoračenja TMR0 i prekid preko pina RB0.
#include "p16f877.inc"
FF&_PWRTE_ON&_XT_OSC
;interupt vektor
movwf asort ;poč
movlw .9 movwf bi ;
movlw 0x20 movwf nadr ;početna adresa najvećeg = h'20' movwf FSR ;spremanje u FSR registar, broj 0x20 movf INDF,0 movwf sort ;podatak se sprema u sort, početna ;najveća vrijednost prva clrf 0x20 ;cisti spremnik incf FSR ;sljedeća adresa : 0x21 subwf INDF,0 ;0x21 - 0x20 indirektno →w btfsc STATUS,C bsf 0x2a,0 ;upis
subwf INDF,0 ;vrijednost lokacije 0x21 u w btfsc 0x2a,0 goto naj ;upisivanje najvećeg broja decfsz bi goto prva goto upis naj movf
movf INDF,0 ;sprem movwf sort ;upis u
goto prva goto upis pis movf nadr,0 u
movwf FSR ;up clrf INDF ;cis movf asort,0 ;as movwf FSR ;na
movf sort,0 movwf INDF ;u incf asort ;u anje adrese decfsz rsort ;umanjivanje broja interacija
goto poc end
10.4.15 Int
U ovom programu omogućujemo prekid uslijed
PROCESSOR 16F877
#include "bank.inc" __CONFIG _CP_OFF&_WDT_O
org 0x00 goto Main org 0x04
Inter goto
116
Main clrf TMR0 BANK1 movlw B'01000000' ;unosimo bin podatak
movwf OPTION_REG ;interrupt preko RB0 na stući brid
;global E
E ;port change E
e .10 samo da vrti
;prekid
0IF ;\ F ;- poništava prekide IF ;/
retfie ;naredba RETURN, vraća program
u prekidne rutine i onemogućuju se daljnji
- r R0
AITstd
o timeconst_2,PRESCEXT ;upisi u spremnik w timeconst_2 ;timeconst_2 → w
movwf WCYCLE
ll WAIT_X endm
WAITst WCYCLE ;prescaler 1:4 (ili PRESCstd)
R0
movwf OPTION_REG
it ON,T0IF ;preskoči sljedeću liniju
;ako je 1 inače goto
;ra BANK0 ;setira bitove za E prekida bsf INTCON,7 bsf INTCON,T0IE ;brojač E bsf INTCON,INT ;vanjski E bsf INTCON,RBIE Petlja movf PORTB,0 ;stalno upisuj movwf 0x20 ;i čekamo prekid movlw .10 movwf 0x0d goto Petlja Inter bcf INTCON,GIE ;0 na GIE-globalni interupt movlw 0xff movwf 0x0d ;prekid bcf INTCON,T bcf INTCON,INT bcf INTCON,RB ;na mjesto prekida end
Kada dođe do prekida, program skače na vektor/adresprekidi.
10.4.16 Preskaler ad sa TM
Prvo napravimo makro WAIT. Spremimo ga kao wait.inc. CONSTANT PRESCstd = .1 WAIT macro timeconst_1 timeconst_1 movlw
W call endm
WAITX macr movl
movlw PRESCEXT ca
d movwf movlw .1 WAIT_X clrf TM BANK1 BANK0 WAITa bcf INTCON,T0IF ;briše bWAITb btfss INTC
117
goto W AITb ;vrti se 255 puta WCYCLE,1 ;dekrementira .100 u .99
ni program
auze nakon pozivanja potprograma ačenja TMR0 brojača (prijelaz iz .255 u .0).
a.
rekidnu rutinu i brojat prekide, n brojati flag b .
o
WAIT .100
reskaler u OPTION registru će biti postavljen na '1' (omjer TMR0 1:4, što znači da će TMR0 dekrementirat) 100
z, jedan ciklus traje 1µs. To iznosi
upišemo
reskaler u OPTION registru će biti postavljen na '7' (omjer TMR0 1:256, što znači da će TMR0 kr
er će trajati 16*244*256=999424 µs što je 0,999424 s. Približno ≈1s. Pri taktu od 4MHz kada jedan ciklus traje 1µs.
Pro
ROCEinclude
RTE_ON&_XT_OSC
sc ORTB
decfsz goto WAITa RETURN ;vraća ga u glav
Ovaj makro će pripremiti parametre koji će definirati dužinu pWAIT ili WAIT_X. Pauza se dobiva tako da se broje prekorKod prekoračenja se u registru INTCON,T0IF (2 bit) javlja zastavic
Prema tome da bi dobili vremenski član - Timer - nije potrebno ići u pnego je dovolj o zastavice ( it)
Ako negdje u programu pozovemo macro Wait tako da upišem
pinkrementirati svaki 4 takt – to je određeno konstantom PRESCstd) i brojat će (prekoračenja i vratiti se u glavni program.
Timer će trajati 4*100*256= 102400 ciklusa. Pri taktu od 4MH102,4 ms.
Ako negdje u programu pozovemo macro Wait tako da
WAITX .244, .3
pin ementirati svaki 256 takt – to je određeno argumentom PRESCext) i brojat će (dekrementirat) 100 prekoračenja i vratiti se u glavni program.
Tim
gram.
P SSOR 16F877 # "p16f877.inc"
#include "wait.inc" #include "bank.inc"
&_WDT_OFF&_PW __CONFIG _CP_OFF cblock 0x20 WCYCLE, PRESC wait endc BANK1 clrf C TRIS BANK0 petlja btf P , 0 bsf PORTC, 0
macro WAIT .100 ;poziv, 0 bcf PORTC
goto petlja
end
118
10.4.17 Dvosmjerna vrtnja motora
Programom mijenjamo smjer vrtnje trofaznog motora (RA0 – tipkalo T1, RA1 – tipkalo pkalo STOP, RB0 – sklopnik M1, RB1 – sklopnik M2).
T2, RA2 –
_OFF&_PWRTE_ON&_XT_OSC clrf TRISB BANK0
;ili M1
prva btfsc PORTB,1 M2 goto resetm1
resetm2
ruga btfsc PORTA,2 ;i nije STOP goto resetm2 btfsc PORTB,0 ;i nije M1
goto resetm2 ORTB,1 ;ukljuci M2
RTB,0 ;iskljuci M1 m2
poje koja svijetli 2 s, pa 1s ne svijetli, i onda opet svijetli 2 s itd.
R 16F877 877.inc"
#include "bank.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC
ti
PROCESSOR 16F877 #include "p16f877.inc" #include "bank.inc"
__CONFIG _CP_OFF&_WDT
BANK1
m1 btfsc PORTA,0 ;kontrola T1 goto prva btfss PORTB,0
goto resetm1
btfsc PORTA,2 ;i nije STOP goto resetm1
;i nije
bsf PORTB,0 ;ukljuci M1 m2 btfsc PORTA,1 ;kontrola T2 goto druga
btfss PORTB,1 ;ili M2 goto d bsf P goto m1 r bcf goto esetm1 PO
resetm2 bcf PORTB,1 ;iskljuci M2 goto m1
end
10.4.18 Dioda
Na RA1 pin je s na LED dioda
1. NAČ k i interapta TMR0 IN - vremensko ašnjenje na baz
PROCESSO
#include "p16f
119
org 0x00 goto main or
ain BANK1
K100' ;preskaler 100
rementiranje ;TMR0 svake 32 µs
000'
kida, jer prilikom prekida GIE ode
puta,jer µs
novno
t da li je dioda svijetlila ili nije
PORTA,1 retfie
end
2. NAČIN - vremensko kašnjenje na bazi petlje.
PROCESSOR 16F84
#include "bank.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC
goto main
g 0x04 goto prekid con equ 0x20 m movlw movwf TRISA
b'11111101'
BANK0 bsf PORTA,1 ;dioda svijetli
BAN movlw b'000001 movwf OPTION_REG ;ink movlw b'10100 movwf INTCON ;dozvola tajmerskog prekida clrf con petlja goto petlja ;čekanje prekida prekid movlw b'10100000' ;dozvola sljedećeg pre movwf INTCON ; ;u nulu
incf con movlw .244 ;prekid se treba desiti 244
;je 32*256*244=1998848 subwf con,0 btfss STATUS,Z retfie clrf con ;postavljanje con varijable po
;u nulu BANK0 Btfss PORTA,1 ;tes
goto skok
BANK1 Movlw b'00000011' Movwf OPTION_REG BANK0 Bcf PORTA,1 retfie skok BANK1 movlw b'00000100' movwf OPTION_REG BANK0
Bsf
#include "p16f84.inc"
org 0x00 goto main org 0x04
120
11111101' TRISA ;RA1 definiramo kao izlazni pin
PORTA,1 ;dioda svijetli
.78
return
aa
goto pet0
;kraj petlje od dvije sekunde ;gašenje diode
dalje RTA,1 ;dioda ne svijetli ;čekanje 1 sekundu
cc
cc,1 goto petl2
.183
PETl0 z bb,1
goto petl1 return
ETl0 movlw .19 movwf aa
petl0
aljel goto ponovo
cblock 0x0c aa,bb,cc endc main BANK1 movlw b' movwf BANK0 ponovo bsf
;čekanje 2 sekunde PET2 movlw movwf cc pet2 call PET1 decfsz cc,1 goto pet2 goto dalje PET1 movlw .116 movwf bb pet1 call PET0
decfsz bb,1 goto pet1
PET0 movlw .108 movwf pet0 decfsz aa,1
return
bcf PO
PETl2 movlw .127 movwf petl2 call PETl1 decfsz goto daljel PETl1 movlw
movwf bb petl1 call
decfs P
decfsz aa,1 goto petl0 return
;kraj petlje od 1 sekunde d end
121
10.4.19 LED diode na portu B
Program za paljenje i gašenje svih LED dioda na portu B u intervalima od 0,5ms. Prvo ćemo enerira pauzu.
;viši bajt argumenta ide u HIcnt
;niži bajt argumenta ide u LOcnt
;testira svoju vrijednost i ako je ;nula, setira se bit Z
cnt,f
Delay1ms dec HIcnt,f decf LOcnt,f
;Del ašnjenje od ;100*10µs=1ms
;dekrementiraj ;trajanje jednog izvršavanja Loop2
lje je 10µs
am koji će koristiti ovu pauzu.
R 16f877.inc"
#include "pause.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
izraditi makro koji g Spremite kao pausems.inc ausems macro arg1 p
local Loop1 local dechi local Delay1ms local Loop2 local Kraj
movlw high arg1 movwf HIcnt
movlw low arg1 movwf LOcnt Loop1
movf LOcnt,f btfsc STATUS,Z goto dechi
Delay1ms call decf LO
goto Loop1 dechi movf HIcnt,f btfsc STATUS,Z
goto Kraj call
f
goto Loop1 Delay1ms: ay1ms realizira k movlw .100 movwf LOOPcnt Loop2: nop nop nop
nop nop nop nop decfsz LOOPcnt,f goto Loop2
;pet return
Kraj endm
ati kratak progrSada je dovoljno napis
877 PROCESSO#include "p16f
122
Cblock 0x20 ;početak RAM-a HIcnt ;registri koje koristi makro pausems LO
0 ;reset vector n
04 ;interapt vector Main ;nema interapt rutine
;početak programa TRISB ;selektiraj banku u kojoj je TRISB
TRISB ;port B je izlazni l elektir
sključi
ičekaj ključi
ičekaj 500 milisekundi (0.5sec) oči na labelu Loop
makro naredbe možemo unesti 16 bitni broj. To znači da
dresiranjem
R 16f877 6f877.inc" nk.inc" CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
0x00 STATUS,RP0
0x40 movwf 0x22 ;početna adresa sortiranja goto petlja
etlja movlw 0x39 ;kada vrijednost FSR
btfsc STATUS,Z ;vrijednosti 0x39, idi goto prekid ;na labelu prekid
;pokazuje na adresu 0x30 ;vrijednost sa adrese u w
;vrijednost sa 0x30-w
cnt LOOPcnt endc ORG 0x0 goto Mai ORG 0x goto Main banksel clrf bankse PORTB ;s aj banku u kojoj je PORTB Loop movlw 0x00 ;i diode na portu B movwf PORTB pausems .500 ;pr 500 milisekundi (0.5sec)
movlw 0xff ;u diode na portu B movw PORTB f pausems .500 ;pr goto Loop ;sk end
U ovom primjeru na mjesto argumentamožemo napraviti pauzu od 65,535 s.
10.4.20 Usporedba - indirektnim a
Podaci se nalaze od adrese 0x30 do 0x39. Treba ih usporediti sa podatkom na adresi 0x20. Ako su jednaki adresu tog podatka stavi na 0x40 i svaki sljedeći dalje. PROCESSO #include "p1 #include "ba __CONFIG _ ORG bcf bcf STATUS,RP1 ;BANK0 movlw 0x2f ;0x30-1 adresa podatka movwf FSR ;w u FSR movlw p subwf FSR,0 ;inkrementirajući dođe do
incf FSR movf 0x20,0
subwf INDF,0 btfss STATUS,Z ;testira bit Z
123
goto petlja ;ako nisu isti, goto petlja pis
R,0 ;adresa u w 0x21 ;w u 0x21
movf 0x22,0 ;vrijednost sa adrese 0x22
;(0x40) u FSR movf 0x21,0 ;vrijednost registra 0x21 u w
oju
incf 0x22 ;inkrementira vrijednost reg.
rekid end
impulsi sa mjerača protoka koji daje 100 impulsa/litri tekućine. Ovaj program će ličinu protoka litre/sekundi.
#include "bank.inc" N&_XT_OSC
org 0x00
goto prekid cblock 0x20
ain movlw b'00000010'
;RC1 kao ulazni pin (dolaze impulsi)
i
tira svake 64µs
v1
đe jedinica na RC1 šao 1 impuls
o
goto u ;jednaki su upis movf FS movwf ;(0x40) u w movwf FSR movwf INDF ;spremamo na lokaciju na k ;pokazuje FSR ;0x22 (0x40+1) movwf FSR ;w u FSR goto petlja p 0x21, 0x22 su pomoćni registri za privremeno spremanje podataka.
10.4.21 Protok
Na RC1 pristižua port B ispisivati ven
PROCESSOR 16F877 #include "p16f877.inc"
__CONFIG _CP_ON&_WDT_OFF&_PWRTE_O
goto main org 0x04 brojac,v1 endc m BANK1 movwf TRISC movlw b'00000000' movwf TRISB ;portb kao izlazn movlw b'00000101' movwf OPTION_REG ;timer se inkremen movlw b'10100000' movwf INTCON ;dozvola timerskog prekida
clrf brojac clrf
BANK0 skok1 btfss PORTC,1 goto skok1 ;tu se vrti petlja dok ne do incf brojac ;povećam brojač,što znaci da je doskok2 btfsc PORTC,1 ;kada dođe nula idemo na ponovn
goto skok2 ;čekanje impulsa goto skok1
124
prekid BANK1 movlw b'10100000' movwf INTCON ;ponovna dozvola prekida
oćne varijable v1 da esilo prekida
ida idem dalje,
ni dešava se
RTB retfie
žu podaci sa 8 bitnog A/D pretvornika o stanju temperature u prostoriji. U spoju sa retvarač nam daje informaciju o temperaturi u rasponu od –20 do +80 °C. Na RC1
je spojen grijač preko releja. Napiši program da temperatura u prostoriji bude 21 plus/minus 1°C. Poč
PROCESSOR 16F877
T_OFF&_PWRTE_ON&_XT_OSC
org 0x00
;TRISC je u bank1 11111101'
TRISC ;RC1 izlazni pin movlw b'11111111'
TRISB ;PORTB ulazni TC & PORTB u bank0
vece od 0 tj. temperatura
,C ;kad je C=1 on mora zagasiti
;grijač tj. temp. veća od 22 bcf PORTC,1 ;gasi RC1
incf v1 ;inkrementiranje pom ;vidimo koliko se d movlw .156 ;156*64 = 9984 µs tj. 1ms subwf v1 btfss STATUS,Z ;ako se desilo 156 prek retfie ;ako nije nastavljam s prekidima movf brojac,0 ;ovaj dio u prekidnoj ruti ;100 puta u sekundi clrf brojac ;brojač natrag u nulu clrf v1 ;v1 natrag u nulu BANK0 movwf PO
end
10.4.22 Regulacija temperature
Na port B pristitermometrom A/D p
etna temperatura u prostoriji je 0°C.
#include "p16f877.inc" #include "bank.inc" __CONFIG _CP_ON&_WD goto main org 0x04 goto main main BANK1 movlw b' movwf movwf BANK0 ;POR petlja movlw .102 subwf PORTB,0 btfss STATUS,C ;c=1, ;veća od 20 bsf PORTC,1 ;pali movlw .108
subwf PORTB,0 btfsc STATUS
goto petlja end
125
Imamo 256 (0-255) mogućih stanja registra kojima moramo pridružiti raspon temperature od -20
6 = 102,4 ≈ 102
– (–20) = 42* ,56 = 1
6f877.inc" _CP_ON&_WDT_OFF&_PWRTE_ON&_XT_OSC
org 0x04
ain movlw .11
3
inarn
_OSC
org 0x00
ain
3
bin
etlja goto petlja end
do 80°C. Raspon temperature: 80 – (–20) = 100°C
256/100 = 2,56 po °C 20°C: raspon 20 – (–20) = 40*2,5
22°C: raspon 22 2 07,52 ≈ 108
10.4.23 Pretvorbe
a) Binarni u EXCESS-3 ESSOR 16F877 PROC #include "p1 __CONFIG
org 0x00 goto main
goto main cblock 0x20 bin,ex3 endc m
movwf bin movlw .3 addwf bin,0 movwf ex petlja goto etlja end b) EXCESS-3 u b i PROCESSOR 16F877 #include "p16f877.inc" __CONFIG _CP_ON&_WDT_OFF&_PWRTE_ON&_XT goto main org 0x04 goto main cblock 0x20 bin,ex3 endc m
movlw .11 movwf ex3 movlw . subwf ex3,0 movwf p
126
c) B
PROCESSOR 16F877
__CONFIG _CP_ON&_ ON&_XT_OSC
main
oz1,oz2,oz3,bin endc
oz1 2
z3
.8
etlja goto petlja
OFF&_PWRTE_ON&_XT_OSC
0x04 main
cblock 0x20 0,bin ;oz2,oz1,oz0 - oktalne znamenke
;con - kontrolna varijabla za petlje
;množenje sa 64 ;premještamo oz2 u w reg
oz2,1 ;zbrajanje oz2 i w i spremanje
inarni u oktalni
#include"p16f877.inc" WDT_OFF&_PWRTE_
org 0x00 goto cblock 0x20
main clrf clrf oz clrf o prva movlw .64 subwf bin,1 btfsc STATUS,C incf oz1 btfsc STATUS,C goto prva movlw .64 addwf bin,1 dva movlw subwf bin,1
btfsc STAT US,C incf oz2 btfsc STATUS,C goto dva movlw .8 addwf bin,0 movwf oz3 p
end d) Oktalni u binarni
PROCESSOR 16F877 #include "p16f877.inc" __CONFIG _CP_ON&_WDT_ org 0x00 goto main org goto oz2,oz1,oz ,con
endc main clrf con clrf STATUS clrf bin
pet2 movf oz2,0 addwf
127
;rezultata u oz2 incf con
goto pet2 ;množenje sa 8
oz1,0 ;premještamo oz1 u w reg addwf oz1,1 ;zbrajanje oz1 i w i spremanje rezultata
;u oz1
subwf con,0 S,Z
ajanje oz2+oz1+oz0
addwf bin,1
;binarni zapis je u bin registru
totice, desetice i jedinice iz broja. To ćemo napraviti preko makro rogramu.
Pon0 Exit1
local Exit2 Pozitiv Negativ
;izračunavanje znamenke stotice
igtem ;izračunavanje znamenke desetice
movlw .6 subwf con,0
btfss STATUS,Z
clrf con clrf STATUS pet1 movf
incf con movlw .3 btfss STATU goto pet1
;zbr movf oz0,0 addwf bin,1 movf oz1,0 movf oz2,0 addwf bin,1
petlja goto petlja end e) Binarni kod u BCD Ovaj program izdvaja znamenke snaredbe koju ćemo kasnije pozvati u p
Spremi kao digbyte.inc
d igbyte macro arg0
local local
local
local clrf Dig1
clrf Dig2 clrf Dig3
ozitiv movf arg0,w P movwf Digtemp movlw .100 Pon0 incf Dig1,f subwf Digtemp,f btfsc STATUS,C goto Pon0 ig1,f decf D
D p,f addwf Exit1 movlw .10
incf Dig2,f subwf Digtemp,f btfsc STATUS,C goto Exit1 decf Dig2,f
128
addwf Digtemp,f ;izračunavanje znamenke jedinice
iz broja.
E SOR 1
_O RTE_ON&_XT_OSC
;Dig3 - jedinica
;adresa reseta
REZ=255
REZ ;poziv makroa
Petlja ;ostani ovdje
ma sadržaj u registrima Dig1, Dig2, Dig3 će biti ovakav:
Dig3
0x22
_PWRTE_ON&_XT_OSC
Exit2 movf Digtemp,w movwf Dig3 endm
Sljedeći primjer izdvaja znamenke
PROC S 6F877
#include "p16f877.inc" #include "digbyte.inc"
__CONFIG _CP_ON&_WDT FF&_PW cblock 0x20 REZ Digtemp Dig1 ;Dig1 - stotica
;Dig2 - desetica Dig2 Dig3 endc
org 0x00 goto Start
Start movlw 0xff
movwf REZ ;;w=255
ain digbyte M Petlja goto end Poslije izvođenja progra
Dig1 Dig2 21 0x20 0x Naravno, u binarnom obliku. BIN u BCD (2. NAČIN)
PROCESSOR 16F877 #include"p16f877.inc"
OFF& __CONFIG _CP_ON&_WDT_ org 0x00 goto main org 0x04 goto main cblock 0x20 con,bcd2,bcd1,bcd0,bin endc
.2 .5 .5
129
main clrf con clrf bin clrf bcd2 clrf bcd1
bcd0 movlw .3 movwf bin
rvi movlw .10
drugi bin,1 drugi1
bcd1,1
a dolaze binarni podaci vrijednosti od 0 puls na RB7 pinu. Na RA0 spojen je ulaz
oračnog motora jemu je za an puni okre 360° ) potrebno 200 impulsa frekvencije 1KHz. vaj program će upravljati rado oračnog mo , tako da broj zadan na portu B određuje pomak otora u postocima (npr. za zadani binarni broj 50 na portu B motor treba napraviti otklon od 180°).
16f877 877.inc"
#include "bank.inc" IG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
Ulaz EQU 0x20 0x00
;u slučaju interrupta skače na tu labelu
00001' ;uključeni pull up otpori na ;PORTB, prekid na rastući brid, TMR0/4 _REG ;pin RA0 je izlazni
b'11111111'
clrf p subwf bin,1 btfss STATUS,C goto drugi incf bcd1 goto prvi
movlw .10 addwf movf bin,0 movwf bcd0
movlwsubwf
.10 btfss STATUS,C
goto tri incf bcd2
goto drugi1 ri movlw .10 t addwf bcd1,1 petlja goto petlja
end
10.4.24 Servo motor
Na pinove porta B u neodređenim vremenskim razmacimo 100 s tim da svaka promjena stanja izaziva kratkotrajni imd
k , ko jedm k
taj (toraO
m
PROCESSOR #include "p16f
__CONF
org goto Main
rg 0x04 o goto Prekid Main BANK1 movlw b'110 movwf OPTION
TRISA,0 bcf movlw
130
movw f TRISB ;svi pinovi PORTB su ulazni TION_REG,0
01000' ;uključivanje interrupata: GIE i INTE ON
CON,RBIF ;reset interrupt flag-a RBIF ;ako je prethodno bio setiran)
INTCON,GIE ;setiranje interrupt flag-a ;GIE (ako je prethodno bio resetiran)
;postavlja CPU u stand by mode (može i bez ;toga)
d_by ;kada se dogodi interrupt, pokreće se ovaj ;potprogram
B ;kopira sadržaj PORTB u registar
;ulaz (0x20) call Kontrola ;poziva potprogram koji kontrolira je
;li podatke na PORTB ;ako je RB7 setran, resetira ga (potrebni
;su nam samo podaci RB6:RB0) az ;uzima sadržaj registra Ulaz
;i zbroji ih same sa sobom (množenje sa 2) call Izlaz ;poziva potprogram za Izlaz(upravljanje
;motorom) by ;vraća program iz prekidne rutine
;početak vremenske petlje koja odbrojava 500 ;µs
movlw .135 movwf TMR0 ;upisuje vrijednost .135 u TMR0 Tloop
INTCON,T0IF ;provjerava je li TMR0 prekoračio 255 loop ;ako nije vraća program na Tloop dok
nop ;prazni ciklusi da se dobije na vremenu
jeri se kHz)
A0
;pozivanje Timer podprograma (mjeri se ;vrijeme druge poluperiode freq 1kHz)
Izlaz ;ponavlja ovaj potprogram dok Ulaz ne bude 0 zni, vraća se
, jer nadalje nije ;potreban
bsf OP BANK0 movlw b'100 movwf INTC Stand_by bcf INT bsf
sleep
goto Stan Prekid movfw PORT movwf Ulaz
bcf Ulaz,7
movfw Ul addwf Ulaz,1
goto Stand_ Timer
btfss goto T
;TMR0 ne prekorači bcf INTCON,T0IF ;kada TMR0 prekorači resetira T0IF interrupt
;flag return ;izlazi iz Timer podprograma
Izlaz bsf PORTA,0 ;uključuje relej spojen na RA0 nop
nop nop
call Timer ;pozivanje Timer potprograma (m;vrijeme prve ;poluperiode freq 1
bcf PORTA,0 ;isključuje relej spojen na R nop
call Timer
decfsz Ulaz ;umanjuje sadržaj registra Ulaz za 1 i ;ako registar Ulaz nema vrijednost 0, goto
return ;kada se registar Ulaz ispra ;iz potprograma
Kontrola btfss Ulaz,7 ;ako se prekid nije dogodio na RB7 goto Stand_by ;vraća se u Stand_by bcf Ulaz,7 ;resetira bit 7 registra Ulaz
131
movf Ulaz btfss STATUS,Z ;ako je sadržaj registra Ulaz 0,
;vraća se iz potprograma Kontrola
end
return goto Stand_by ;u protivnom se vraća u Stand_by
132
11 Popis pojmova i kratica:
ADC (Analog-to al Converter)- analogno digitalni pretvarač Adresiranje ALU (Arithmetic Logic Unit)- 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 - 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)- Centralna procesorska jedinica CRT (Cathode Ray Tube)- Katodna cijev Clock-takt CISC (Complex Instruction Set Computer) CMOS (Complementary Metal Oxide Semiconductor) D DAC (Digital-Dnalog Converter)- 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
A-Digit
133
I Indir dresiranje ektno aInstrukcije Instrukcijski registar
grirani sklopovi
istar
a
eme
nt Unit)
line sustavi
p Timer
podataka
ontroleri
cesa puter) računalo nter)-Programsko brojilo
caPORTA
InteINTF (INT External Interrupt Flag) INTCON regINTE (INT External Interrupt Enable) Izlazni sklopovi K Kašnjenje Kodiranje L LSI – komponente Logička jedinica M
morija MeMemorijska jedinicMikroprocesori Mikrokontroleri Mikroračunala Multipleksiranje Mrtvo vrijMrtva zona Međusklop
eMMU (Memory MenagmN Naredba Namjenski registri
egistri Namjenski rO Obrada podataka OffOn line sustavi
ki kod OpreacijsOscilatorski Start-u
OPTION registraOrganizacija memorije OPTION registar P
eleni prijenosParPIC (Programm Interupt Controller) Prijenos podataka
laProcesna računaProcesor Program
amski jeziciProgrPLC programibilni logički kParitetni sklop Paritetni bit PaPC(
rametri proPersonal Com
PC (Program CouPodatkovna sabirniPORTB
rrupts) Prekidi (InteR Radna memorija
ačunalo R
134
Rezolucija ili razlučivost
puter)
ADA (Supervisory Control And Data Acquisition) adresiranje
rijska komunikacija aka
n Registers)
ta A/D pretvarači
Overflow Interrupt Flag) able)
k Source Select)
trašnja sabirnica
ica rce Edge Select) ock Source Select)
-Privremeni rwgistar
stavica
Registar općenamjene Reset Relativno adresiranjeRS232 RISC (Reduced Instruction Set ComS Sample & Hold sklop Sabirnica SCSegmentnoSenzori SeSerijski prijenos podat
nctioSFR (Special Fubodni brojač Slo
Sigma DelSinkroni prijenos Sigurni brojač Status registar Statička greškaStog (Stack)
Sučelje T
T0IF (TMR0T0IE (TMR0 Overflow Interrupt En
SE (TMR0 Sorce Edge Select) T0T0CS (TMR0 ClocU U/I kanali
ravljačka jedinicaUpUnuUpravljačka sabirnT0SE (TMR0 SoT0CS (TMR0 ClV VLSI tehnologija Vanjska sabirnica W
tchdog timera WaWR (Write Control) WREN (EEPROM Write Enable)
Error Flag) WRERR (EEPROMWR (Work Registar)Z
aZ (Zero) z
135
12 Popis korištene literature:
knjiga, Zagreb abro Smiljanić: Osnove digitalnih računala, Školska knjiga, Zagreb, 1990.
čunala i procesi, Školska knjiga, Zagreb, 1991. rundler: Uvod u mikroprocesore, Tehnička knjiga, Zagreb, 1990.
a lak način, Tehnička knjiga, Zagreb,1987. IC Mikrokontroleri, Mikroelektronika, Beograd, 2000. pulsna i digitalna elektronika, Školska knjiga, Zagreb, 1994.
1. Gabro Smiljanić: Mikroračunala, Školska 2. G3. Gabro Smiljanić: Ra4. Darko G5. Zdenek Sobotka: Mikroprocesori i Mikroračunala n6. D. Andrić i N. Matić: P
Szabo, Im7. Aleksandar
136