11.07.2015 Views

PROGRAMIRANJE MIKROKONTROLERA

PROGRAMIRANJE MIKROKONTROLERA

PROGRAMIRANJE MIKROKONTROLERA

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>PROGRAMIRANJE</strong> <strong>MIKROKONTROLERA</strong>Programiranje mikrokontrolera u asembleru predstavljaoptimalan nacin programiranja sa stanovištaiskorišćenjaograničenihugrađenih resursa, kao na primer, programskememorije i dr. S druge strane za složenijeprojekte programnapisan u asembleru može biti komplikovan za čitanjeirazumevanje. Zato se danas mikrokontroleri programiraju uvišimim programskim jezicima, , a najpoznatiji i najčešcekorišćenije programski jezik C.Pretpostavkom da student poseduje osnovna znanja oprogramskom jeziku C i onjegovim osnovnim strukturama podataka. Takođe,pretpostavlja se znanje tzv. . ANSI C-a. CEfikasnostprogramiranja je povećanai zbog upotrebe elemenatastrukturalnog programiranja i širokogskupa operatora.


Proširenjaza standardni ANSI C jezik• Arhitektura 8051 podržavanekoliko fizičkiodvojenih memorijskih prostora idelova za smeštanjeprograma. Postoje memorijski prostori koji omogućavajuavaju:• - čitanjeali ne i upis• - upis i čitanje• - upis i čitanjeali brže u odnosu na ostale memorije• Memoriji za podatke se brzo pristupa jer se koristi 8-bitnaadresa. Za pristupinternoj memoriji se koriste tri razlicita memorijska tipa:• - data - oznacava da se pristupa internoj memoriji podataka uz direktnoadresiranje, Štoomogucava brz pristup (128B).• - idata - označavaava da se pristupa celoj memoriji za podatke (256B) uz indirektnoadresiranje.• - bdata – označavaava da se pristupa lokacijama ukupne velicine od 16 bajtova kojese mogu adresirati po bitovima.• - xdata - da se može pristupiti bilo kojoj lokaciji unutar memorijskog prostora(64k) i koristi se kod large memorijskog modela.• - pdata - oznacava de se pristupa samo jednoj stranici velicine 256 bajta odspoljašnjememorije za podatke. Ovaj tip se koristi kod compact memorijskogmodela.


C51 koristi tri memorijska modela:• - Small Model - Kod ovog modela, sve promenljive, podrazumevano, , senalaze u unutrašnjojnjoj memoriji za podatke 8051 sistema tj. koristi se datamemorijski tip. Kod ovog modela, promenljivama se pristupa na efikasannacin. Medutim, sviobjekti koji nisu eksplicitno postavljeni u nekom drugommemorijskom prostoru,moraju da se uklope u okviru unutrašnjegnjeg RAM-a kojije sam po sebi vrlo mali.• - Compact Model - Kod ovog modela, podrazumevamo, sve promenljive senalaze u jednoj stranici spoljašnjememorije za podatke tj. koristi sememorijski tip pdata. Ovaj model može obezbediti maksimalno 256 bajtovapromenljivih, jer se koristi indirektno adresiranje kroz registre R0 i R1.• - Large Model - Kod ovog modela, sve promjenljive se nalaze u spoljašnjojmemoriji za podatke (do 64k prostora) tj. koristi se xdata memorijski tip.Pristup memoriji kod ovog modela ja u odnosu na ostale modele najsporiji ineefikasan, narocito kod promjenljivih koje sadrže nekoliko bajtova.


-Familija8051 mikrokontrolera sadrži poseban memorijski prostor za pristupspecijalnim funkcijskim registrima (Special Function Registers - SFRs).Oviregistri se koriste u programu za kontrolu tajmera, brojača, serijskog ulaza iizlaza, ulazno-izlaznihportova I periferija. Nalaze se na adresama od 0x80 do0xFF (128 bajta) ) i može im se pristupati bitski, bajtovski, ili na nivou reči. Svinazivi ovih registara su predefinisani u okviru C51 kompajlera.


Struktura C programa za mikrokontrolere familije 8051• -Prvired programa ( sadrži direktivu #include za čitanje(ubacivanje) izvornog fajla sadeklaracijama za odgovarajuci mikrokontroler. . U toku kompajliranja, fajl naveden udirektivi #include se ubacuje u osnovni fajl (u ovom slucaju u main.c). Pored #includeznačajnaajna direktiva je i #define kojom se definiše makro ili konstanta. . Na primer:• #include > //ukljuukljucenjematematickihfunkcija• #include //ukljuukljucenjeadresa portova, registara i specijalnih• bita u memoriji• #define PI 3.14159 /* definisanje konstante PI, sada se u programu• svuda piše PI a kompajler zna da je to broj 3.14159 */• #define Timer0H 0xE4 //Konstantau kodu Timer0H se zameni sa vrednošcu• =0xE4• #define Timer0L 0xF0• -Trebazapaziti da je u programu main.c promenljiva i definisana kao unsigned char,štoznači da je osmobitna. Kako port P1 ima osam nožicaica, vrednost koja mu sepridružujeuje mora biti osmobitna tj. . u intervalu od 0 do 255. Pojedinim nožicamaportaP1 pristupa se pisanjem P1^x gde x oznacava broj nožice(npr.. P1^2=0), gde je x uopsegu od 0 do7.Ovo je bio jednostavan primer programa napisanog u C programu.


KEIL UVISION 3-Project Workspace vam daje pristup:Datoteci i grupi u okviru projekta,CPU registrima ,Alatima,Tekstualnimpredlozima za najčešćekorišćene blokove teksta.-Funkcija u projektu za brzu navigaciju-Output Window daje poruke o grešci i brz pristup-Memory Window daje pristup memoriji-The Watch & Call Stack prozor vam omogućava pregled i izmenu programa i prikazuje trenutnu funkciju pozivastabla.-Radni prozor se koristi za uređivanje datoteka,-Peripheral Dialog će vampomoći da proverite status periferija.


Kadakoristite Keil μ Vision3, projekt razvoja ciklusa je otprilike isti kao štoje za bilo koji drugisoftver .1-Izradiprojekt,odaberi ciljni čipiz baze podataka i konfiguriši(podesii(podesi) postavke alata.2-Napravisource(izvornu) datoteku u C.3-Izradidokumentaciju korišćenjemprojekt menadžeraera.4-Ispravigreškeu izvornu datoteku.5-Ispitajpovezane aplikacije.


CAP:tipka je trenutno unutar tastature za velika slova.NUM: tipka je trenutno u NUM LOCK statusu.SCRL: tipka je trenutno u zaključanom stanju.OVR: označava pisanje preko editor načina koji zamenjuje znakove kao što ste upisali.R / W čitanje / pristup pisanju;R / O read-only pristup-sprečava modifikacije iz teksta.Status Bar-Status Bar prikazan na ekranu prikazuje poruke i informacije o trenutnimμ Vision komandama i druge informacije kako je objašnjenou nastavku:Debug Channel prikazuje aktivan alat za ispravljanje i prikazuje ime ili simulacije kada je programtestiran.Vreme izvršenja prikazuje vreme trajanja simulacije.Pozicija kursora pokazuje trenutnu poziciju u editor datoteci (L: broj linija, C: broj kolona).Keyboard Editor prikazuje informacije:


Logičkianalizator-μ Vision3 Logic Analyzer daje grafičkiprikaz promene vrednostivarijable(promenljive) ili VTREGs koje ste naveli.


Memorijski prozorMemory prozor prikazuje sadržajaj u raznim područjimamemorije. . Do četirirazličitaita područjamože se pregledati u različitimitim stranicama. . U kontekstumeni vam omogućavaizbor dozvoljenog izlaznog formata.


Serijski Windowμ Vision3 nudi dva serijska prozora za serijski ulaz i izlaz. Serijski izlazpodataka iz simuliranog CPU je prikazan u ovom prozoru.


Stvaranje jednog projekta u uVision 3• Pokrenite Keil uVison3 program.


Kreirajte novi dizajn projekta. Odaberite novi projekt izpadajućegmenija


Otvoriće vam se sledeći prozor koji vas pita da sačuvate(saveuvate(save) kod vašegprojekta npr.na desktopu. Napišeteime projekta npr.displej.


Nakon štoste kliknuli na save(sačuvaj),otvarase prozor kojiU ovom sluće vas pitati koji čipželitekoristiti.slučajuodaberite Atmel AT89S8253 mikrokontrolerkao cilj


Pojaviće se novi prozor koji će vas pitati da li želitekopiratistandard 8051 kod pokretanja u folder projekta. Osim ako stestari korisnik, trebate kliknuti No,u suprotnom kliknite Yes.


Možetesada izraditi projekt, ali ne postoji izvorni k^d.


Koristite 'Obnovisve ciljne datoteke'-Rebuild all target izpadajućegmenija Project.Sada imate izvorni k^d koji jedodat grupi.


Zatim kliknite na označenuikonicu koja vam služi zakreiranje novog fajla.Otvoriće vam se nova radna površina“Text 1”. 1


U radnoj površiniText 1 napišiteite k^d vašegprojekta.


Zatim sačuvajtek^d opcijom Save iz padajućegmenija File.


Naravno sačuvajtek^d pod ekstenzijom src. Ekstenzijasačuvanogfajla zavisi od toga u kom je programu pisan.Ekstenzija src. pokazuje da je kod pisan u programskomjeziku C.


Sledeće štatreba uraditi jeste da se taj fajl doda u prozoruProject Workspace 1 to desnim klikom na Source Group 1,pana opciju Add Files Group.


Pronađite gde vam je smeštentaj fajl i kliknite na Add. Zatimidite na opciju 'Obnovisve ciljne datoteke'-Rebuild all targetiz padajućegmenija Project.


Pojaviće vam se sledeći prozor.Ako postoje greškeuprogramu,kao štoje ovde slučajpisaće vam u Output Windowkakva je greškai u kom se redu nalazi.


Po ispravljanju grešakaponovo idite na opciju 'Obnovisveciljne datoteke'-Rebuild all target iz padajućegmenija Project,i dobićetenaredni prozor. Potrebno je da piše 0 Errors (s).


Pre simulacije kliknite na Target 1 i desnim klikom miša odaberite opcijeza Target 1,da bi se osigurala brzina za ciljni sklop. Brzina zavisi od tipamikrokontrolera. Za ovaj slučajizaberite 24.0 MHz ciljno polje i postavitekristal (XTAL) na frekvenciji 24.0 MHz.


Da biste pokrenuli simulaciju odaberite Start / Stop DebugSesion opciju iz padajućegmenija Debug.


Prozor projekta uVision sada sadrži pod-prozoreprozore. Radni prozor pokazujetrenutni sadržajaj najvažnijihnijih registara. Takođe se prikazuje vremeizvršavanjakoda u sekundama. Editor prozor pokazuje C k^d,adisassembly prozor pokazuje kodove koji grade ceo projekt.


Za ispravljanje programa idite na korak Debug Step Over. Step OverThe command će ispravljati jedan red ili celi potprogram, zavisno od togagde je pokazivač postavljen..Pritisnite F11 i pojaviće se mali žutipokazivač koji vam omogućavada prtite korak po korak-svakulinijuprograma.


Odaberite opciju “project”,zatimu tom padajućemmeniju izaberite"Opcijeza Target 'Target 1'. Odaberite zlaz(output) na kartici i zaokružite'KreirajHex File' okvir. Zatim idite na opciju 'Obnovisve ciljne datoteke'-Rebuild all target iz padajućegmenija Project.


Sada idete na opciju “Open file” iz padajućegmenija “File”da bi ste videli generisani HEX fajl,naravno on je snimljentamo gde vam je izvorni kod pa se može pokrenuti i otuda. Zatip fajla(Files of type) izaberite svi fajlovi(All files).


Sledeće štatreba uraditi jeste da čekirateodnosno označitefajl sa ekstenzijom .hex. To vam je generisani HEXfajl,odnosno heksadecimalna vrednost koju treba prebaciti umikrokontroler.


Ovde se vidi dobijeni HEX fajl.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!