80
UNIVERZITET U NIŠU ELEKTORNSKI FAKULTET KATEDRA ZA ELEKTRONIKU Smer: ELEKTRONIKA Predmet: Mikroprocesorski sistemi SEMINARSKI RAD MORZEOV TELEGRAF studenti: Nebojša Savković 10 633 Vojislav Stoiljković 10 662 mentor: prof. dr Mile Stojčev

SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

  • Upload
    others

  • View
    27

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

UNIVERZITET U NIŠU ELEKTORNSKI FAKULTET KATEDRA ZA ELEKTRONIKU Smer: ELEKTRONIKA Predmet: Mikroprocesorski sistemi

SEMINARSKI RAD MORZEOV TELEGRAF

studenti: Nebojša Savković 10 633

Vojislav Stoiljković 10 662 mentor:

prof. dr Mile Stojčev

Page 2: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

1

Sadržaj

1. Uvod 2. Teorijski uvod 2.1 Mikrokontroleri 2.1.1 Mikrokontroler kao klasa procesora koja se koristi kod embedded sistema 2.1.2 Šta su mikrokontroleri? 2.1.3 Tipovi i arhitektura mikrokontrolera 2.1.4 Blok šema mikrokontrolera i opis pojedinih blokova 2.1.4.1 Programska memorija (ROM) 2.1.4.2 Radna memorija (RAM) 2.1.4.3 EEPROM memorija 2.1.4.4 SFR registri (registri posebne namene) 2.1.4.5 Programski brojač 2.1.4.6 CPU (centralna procesorska jedinica) 2.1.4.7 Ulazno/izlazni portovi (I/O Portovi) 2.1.4.8 Oscilator 2.1.4.9 Tajmeri/brojači 2.1.4.10 Watchdog tajmer 2.1.4.11 Kolo za napajanje 2.1.4.12 Serijska komunikacija 2.2 Morzeova azbuka 2.2.1 Osnovna pravila upotrebe 2.2.2 Opšta pravila slanja 2.2.3 Slanje telegrama sa identičnim tekstom 2.2.4 Slanje nepravilnosti - Servisna upozorenja 2.2.5 Ispitivanje broja poslatih reči – Potvrda o prijemu 2.2.6 Postupak slanja

2.3 Treperenje dirke 3. Hardver 3.1 Blok dijagram sistema 3.2 Opis hardvera 3.2.1 Opis mikrokontrolera AT89S8253 3.2.1.1 PIN konfiguracija

3.2.1.2 Blok dijagram 3.2.1.3 Opis pinova 3.2.1.4 Registar specijalnih funkcija (SFR) 3.2.1.5 Opis X2 moda 3.2.1.6 Reset 3.2.1.7 Takt registar 3.2.1.8 Prekidi 3.2.1.9 Registar prekida 3.2.1.10 Tajmeri / brojači 3.2.1.11 Modovi uštede energije 3.2.1.12 Baud Rates – Brzina bauda 3.2.1.13 Registar kontrole memorije

Page 3: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

2

3.2.1.14 IN-sistem programiranje (ISP) specifikacija 3.2.1.15 UART 3.2.2 AT89ISP kablovski interfejs 3.2.2.1 Uvod 3.2.2.2 AT89ISP softver

3.2.2.3 AT89ISP kabli 3.2.2.4 Dimenzije Konektora 3.2.2.5 Povezivanje 3.2.2.6 Naponski nivoi 3.2.3 LCD displej 3.2.4 Buzer 3.2.5 Taster

4. Softver 4.1 Algoritam 4.2 Opis softvera 4.2.1 Glavni program 5. Realizacija hardvera 6. Realizacija softvera 7. Labaratorijska vežba 8. Zaključak 9. Literatura 10. Dodatak

Page 4: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

3

1. UVOD

Morzeova azbuka je metod za prenošenje signala i osmišljena je i prvi put upotrebljena na električnom telegrafu izumitelja Semjuela Morzea. Semjuel Finli Briz Morze (engl. Samuel Finley Breese Morse, 27. april 1791. - 2. april 1872.) je poznat kao pronalazač Morzeove azbuke i utemeljivač telegrafa kao sredstva komunikacije. 1844. je po prvi put javno preneta poruka Morzeovom azbukom. Morzeova azbuka služi za prenos poruka na daljinu. Svako slovo je zamenjeno signalom koji se sastoji iz kratkih i dugih zvučnih ili svetlosnih signala. Prilikom učenja telegrafije, kratki signal se beleži kao tačka a dugi kao crta, ali se nikada tako ne izgovaraju, već se "pevaju" i to kratki znak kao TI a dugi znak kao TAA. Kratki signal na kraju morzeovog znaka se peva kao TIT. Na primer slovo A koje se piše kao .- se peva kao TI TAA, a slovo R koje se piše kao .-. se peva kao TI TAA TIT. U radio-telegrafiji, Morzeova azbuka se prenosi zvučnim signalima frekfencije 800 Hz i to tako da dugi znak traje kao tri kratka (trajanje kratkog znaka zavisi od brzine emitovanja morzeovog koda). Tišina izmeñu dva signala je u trajanju jednog kratkog signala, a izmeñu znakova se pravi pauza u trajanju jednog dugog signala. Brzina emitovanja Morzeove azbuke se izražava u broju znakova u minutu ili broju reči u minutu, a prema sposobnosti brzine emitovanja i prijema telegrafije, operatori se dele u klase. Održavaju se i takmičenja operatora u brzini prijema i otpravljanja telegrafijom. Učenje Morzeove azbuke u radio-telegrafiji se vrši isključivo emitovanjem zvučnih signala ili pevanjem. Znak se ne pamti kao kombinacija tačaka i crta, već se svaki znak pamti kao jedna zvučna slika. Takoñe, učenje se ne vrši abecednim rasporedom, već postoje metode koje koriste redoslede znakova takve da ih je lakše zapamtiti, ali i meñusobno razlikovati.

Sl. 1.1 Prvi Morzeov telegraf

Page 5: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

4

Iako je doživeo razne prepravke i usavršavanja u skladu sa razvojem tehnike i tehnoloških dostignuća, sam princip Morzeove telegrafije se održao do današnjih dana i još uvek nalazi primenu u raznim vidovima komunikacije. I pored toga što je prenos uglavnom automatizovan i nije potrebno fizičko kucanje karaktera, jako je bitno razumeti primljenu poruku i prepoznati zvuk za odreñeni karakter. Ovim projektom je realizovan Morzeov telegraf, primenom mikrokontrolera i LCD displeja i simulirana neka od osnovnih pravila komunikacije istim, radi učenja Morzeove azbuke i osnovnih principa telegrafije. Takoñe, pokazane su velike mogućnosti mikrokontrolera kao i njegova primena u ureñajima koji nas okružuju.

Page 6: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

5

2. Teorijski uvod

2.1 Mikokontroleri

2.1.1 Mikrokontroler kao klasa procesora koja se koristi kod embedded sistema Mikrokontroleri su relativno spori ali sa aspekta iskorišćenja silicijuma po površini-veoma-efikasni procesori, uglavnom namenjeni za upravljačko-intenzivne aplikacije. Karakteriše ih mikroprogramska CISC bazirana arhitektura, što znači da je broj taktnih intervala za izvršenje različitih tipova instrukcija u velikoj meri promenljiv. Moć izračunavanja kao i broj memorijskih resursa je veoma ograničen, a obim reči staze-podataka relativno mali (obično 8 ili 16 bitova). Sa druge strane, kompleksnost skupa instrukcija pruža odgovarajući programski interfejs, uključujući instrukcije za množenje i deljenje kao i veći broj memorijsko adresnih načina rada. Kao rezultat se dobija veoma kompaktan kôd (programi su relativno mali). S obzirom da su mikrokontroleri namenjeni za upravljačko-orijentisani aplikacioni domen, oni poseduju bogat skup instrukcija za manipulisanje podacima na nivou-bita, kao i periferijskim komponentama kakvi su tajmeri ili serijski U/I portovi. Veoma često jednostavni procesori koji su se ranije koristili kao CPU-ovi u računarskim sistemima (kakvi su, recimo procesori iz familije Intel 8051, Motorola 6502, 6811, i dr., koji su bili popularni kao CPU-ovi u kućnim računarima) danas se ponovo koriste u nešto izmenjenoj formi kao mikrokontroleri kod embedded sistema.

2.1.2 Šta su mikrokontroleri? Kod odreñenih aplikacija veoma često je neophodno ugraditi odreñeni iznos lokalnog procesiranja na licu mesta procesa. Tako na primer, automat za izdavanje karata na autobuskim stanicama treba da ima odreñeni nivo autonomnosti u radu (pameti) tako da za unete podatke preko lokalne tastature sam izračuna cenu karte i izda je. Zbog ovakvog načina rada računarske mašine opšte namene ne predstavljaju dobro rešenje (izbor) za ovakav tip aplikacije, prvenstveno zbog velikog gabarita (dimenzije) mašine, a takoñe i zbog visoke cene. Upravo su ovo idealne aplikacije za mikrokontrolere. Nasuprot mikroprocesorima, mikrokontroleri su više orijentisani ka postizanju superiornijih performansi kod aplikacija namemjenih upravljanju, bezbednosti i pouzdanosti u radu. Imajući u vidu da je cena ureñaja baziranih na mikrokontrolerima od izuzetne važnosti za krajnjeg korisnika, mikrokontroleri su integrisali na čipu veliki broj standardnih periferala, kontrolere raznih tipova ureñaja, kao i memoriju. Na osnovu prethodnog može se zaključiti da je Mikrokontroler računar na čipu. On sadrži skoro sve osnovne gradivne blokove računarskog sistema (CPU, ROM, RAM, U/I periferije tipa AD i DA konvertore, serijske komunikacione interfejse (UART), paralelne interfejs portove (PIA), tajmere/brojače, LCD drajvere, i dr.) koje se mogu integrisati na jedinstvenom čipu. Danas su mikrokontroleri najviše prodavan tip procesora. Ne bez razloga projektanti sistema relativno male složenosti kažu da su to čipovi upravo projektovani po njihovoj meri, tj. čipove o kojima sanjaju. Nasuprot mikroprocesorima, cena mikrokontrolera je veoma niska (do nekoliko dolara u odnosu na cenu od stotinu dolara kakva je cena mikroprocesora). Za odreñene aplikacije niska cena mikrokontrolera je idealno rešenje. Taktna frekvencija na kojoj rade, obim adresibilne memorije, i obim podataka sa kojima manipulišu varira od jednog mikrokontrolera do drugog, šta više i kod jednog istog

Page 7: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

6

proizvoñača, tako da je posao projektanta da izabere najbolji mikrokontroler za datu aplikaciju. Važan razlog korišćenja mikrokontrolera, u odnosu na PC mašinu, predstavlja njegova kompaktnost koja se može iskazati konstatacijom: Računar na jednom čipu. Svi mikrokontroleri imaju usañenu memoriju na čipu kao i veći broj ulazno-izlaznih interfejs linija. Veliki broj mikrokontrolera poseduje AD i DA konvertore, impulsno-širinski modulisane (PWM) generatore, sofisticirani sistem prekida, veći broj seriskih i paralelnih ulazno-izlaznih portova, fleksibilni sistem tajmer-brojač dogañaja, LCD drajver, i dr. Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim funkcijama koje sistem treba da obavi. Na primer, u današnjim automobilima ugrañuje se veliki broj (reda 100) mikrokontrolera koji se koriste za upravljanje radom kočionog sistema, ubrizgavanjem goriva, klima sistemom za grejanje-hlañenje, prikazom informacije na pokaznoj tabli, i td. Drugim rečima, jedno-čipni računar omogućava projektantima da ugrade računar u bilo kom ureñaju koji postavlja makar i minimalne zahteve za odreñenim iznosom izračunavanja. Mikrokontroleri se veoma često koriste i u situacijama kada treba da se veoma brzo reaguje na spoljne signale posebno ako se takvi sistemi koriste za rad u realnom vremenu pa zbog toga koriste procesiranje bazirano na obradi prekida. Mikrokontroleri mogu takoñe da rade po nadzorom operativnih sistema za rad u realnom vremenu (RTOS) čiji je obim manji, pri čemu ovakvi sistemi bolje reaguju (za kreće vreme) na odzive sistema koji se odnose na rad u realnom vremenu, nego što je to slučaj sa operativnim sistemima opšte namene koji se instaliraju na većim mašinama kakve su recimo PC mašine.

2.1.3 Tipovi i arhitektura mikrokontrolera

Arhitekture mikrokontrolera se mogu podeliti na sledeća dva tipa: 1. Harvard tip- karakteriše se razdvojenim memorijama za program i podatke. Svaki tip memorije ima svoj sopstveni fizički adresni prostor i koristi sopstvenu internu adresnu magistralu. Prednost ove arhitekture je ta što se pristup programskoj memoriji i memoriji za podatke ostvaruje konkurentno. Ovakvim pristupom se skraćuje ukupno vreme izvršenja programa. Proizvoñači mikrokontrolera Microchip, Zilog, National Semiconductor i Cypress zasnivaju svoje proizvode na Harvard arhitekturi, mada postoje neke neznatne ali važne razlike u pristupima kako ove kompanije implementiraju arhitekturu. Arhitekture ovih mikrokontrolera su tipične za RISC pristup. 2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti adresni prostor. To znači da se instrukcioni kôd može izvršavati kako iz programske tako i iz memorije za podatke. Poznati proizvoñači ovih tipova mikrokontrolera su Intel, Atmel, Motorola i dr. Ključna osobina ovih proizvoda je povećan broj instrukcija i adresnih načina rada koji u kombinaciji sa relokatibilnim softverskim magacinom (stack) omogućavaju efikasno korišćenje programskog jezika visokog nivoa C. Arhitekture ovih mikrokontrolera su tipične za CISC pristup. Mikrokontroleri i digitalni signal procesori (DSP) su poznati tipovi aplikaciono integrisanih procesora (ASIP). U suštini mikrokontroler je mikroprocesor koji je optimiziran za embedded upravljačke aplikacije. Kod ovakvih aplikacija se obično nadgledaju (monitorišu) i postavljaju brojni jedno-bitni upravljački (control) signali, a pri tome se ne obavlja neko intenzivno izračunavanje nad podacima. Zbog ovoga mikrokontroleri imaju jednostavne staze podataka (datapaths) koje su prilagoñene za brzo izvršenje operacija na nivou-bita (bit manipulation) kao i operacija čitanja i upis sadržaja bitova sa spoljnih pinova čipa.

Page 8: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

7

Pored jednostavne CPU, na istom čipu, mikrokontroleri imaju inkorporirano nekoliko periferalnih komponenata tipične za upravljačke aplikacije, kakve su serijske komunikacione periferije, tajmere/brojače dogañaja, PWM generatore, AD i DA konvertore, i dr. Pored ostalog programska memorija i memorija za podatke su takoñe inkorporirane na samom čipu. Inkorporiranjem periferala i memorije na istom integrisanom kolu smanjuje se broj dodatnih integrisanih kola koje treba ugraditi u sistem, što rezultira kompaktijoj implementaciji i globalno posmatrano smanjenoj potrošnji, tj rešenje postaje tipa low-power. Činjenica da se programskim putem može direktno pristupati spoljnim pinovima čipa omogućava da program može lako da monitoriše stanje senzora, postavlja u definisano stanje aktuatore, i vrši prenos podataka ka/iz drugih ureñaja. Veliki broj proizvoñača naziva mikrokontrolere embedded procesorima. Razlika izmeñu embedded procesora i mikrokontrolera često nije jasna, mada se u stručnoj literaturi termin embedded procesor najčešće koristi za veće (32-bitne) procesore, a termin mikrokontroler za manje (4-, 8-, i 16-bitne) procesore.

2.1.4 Blok šema mikrokontrolera i opis pojedinih blokova

Sl. 2.1.1 Slikoviti opšti blok dijagram mikrokontrolera

2.1.4.1 Programska memorija (ROM) Ovo je memorija u kojoj je trajno sačuvan program koji se izvršava. Očigledno od njene veličine zavisi i maksimalna dužina programa koji može biti napisan. ROM memorija može da se nalazi unutar mikrokontrolera ili da se dodaje spolja u vidu posebnog čipa što zavisi od tipa mikrokontrolera. Obe varijante imaju svoje prednosti i mane. Ako se dodaje spolja, mikrokontroler je jeftiniji i program može da bude znatno duži. Istovremeno, broj slobodnih pinova se smanjuje pošto se za povezivanje memorije sa kontrolerom koriste njegovi ulazno/izlazni portovi. Unutrašnja ROM memorija je obično manja i skuplja ali takav čip ima više mogućnosti za povezivanje sa spoljnim svetom. Veličine spoljne memorije se kreću u opsegu 512 bajtova do 64Kb.

Page 9: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

8

2.1.4.2 Radna memorija (RAM) Sadržaj ove memorije se briše po nestanku napona napajanja i služi da se u nju privremeno smeste različiti podaci i konstante koji nastaju i koriste se u toku rada. Na primer, kada se u programu vrši sabiranje (bilo čega), potrebno je imati registar koji će predstavljati ono što u svakodnevnom životu nazivamo „ zbir“. U tu svrhu se jedan od registara u RAM memoriji tako imenuje i tu se smešta rezultat operacije sabiranja. Veličina RAM-a se kreće do nekoliko kilobajta.

2.1.4.3 EEPROM memorija Ovo je posebna vrsta memorije koju nemaju svi mikrokontroleri. Njen sadržaj može da se menja u toku rada (kao kod ROM-a). U nju se obično smeštaju različite vrednosti do kojih dolazi u toku rada a koje moraju ostati sačuvane i posle isključenja ureñaja (vrednosti za kalibraciju, šifre, vrednosti do kojih treba vršiti neko odbrojavanje i slično). Loša strana ove memorije je relativno spor proces upisa – reda milisekundi.

2.1.4.4 SFR registri (registri posebne namene) To je poseban deo RAM memorije čija je namena unapred definisana od strane proizvoñača. Svaki od ovih registara ima svoje ime i kontroliše po neki sklop unutar mikrokontrolera. Na primer, upisivanjem nula i jedinica u SFR registar koji kontroliše neki ulazno/izlazni port, svaki od ovih pinova može da postane ulazni ili izlazni (svaki bit u ovom registru ima zadatak da kontroliše ulogu po jednog pina).

2.1.4.5 Programski brojač Ovo je motor koji pokreće program i ukazuje na adresu u programskoj memoriji na kojoj se nalazi instrukcija koja treba da se izvrši. Odmah po njenom izvršenju, vrednost mu se uvećava za jedan. Zbog ovog automatskog uvećanja, program se izvršava instrukciju po instrukciju, onako kako je i napisan. Meñutim... U svakom trenutku njegova vrednost može da se izmeni što će za posledicu imati skok na novu lokaciju u programskoj memoriji. Ovako se izvršavaju podprogrami ili instrukcije grananja. Po dolasku na novo mesto u programu, nastavlja se njegovo ravnomerno odbrojavanje +1, +1, +1...

2.1.4.6 CPU (centralna procesorska jedinica) Kao što i samo ime govori, ovo je deo mikrokontrolera zadužen za nadgledanje i kontrolu svih zbivanja unutar istog, i na njegov rad ne može da se utiče. Sastoji se iz nekoliko manjih celina od koji su najvažnije Dekoder instrukcija – predstavlja deo elektronike koji prepoznaje programske instrukcije i na osnovu toga upravlja ostalim kolima. Aritmetičko logička jedinica (ALU) – obavlja sve matematičke i logičke operacije nad podacima. Mogućnosti ovog kola su iskazane pomoću takozvanog seta instrukcija koji je drugačiji za svaki mikrokontroler. Akumulator – je poseban SFR registar koji je tesno povezan sa radom ALU jedinice. To je neka vrsta radnog stola gde se stavljaju podaci nad kojima treba obaviti neku operaciju (sabiranje, pomeranje itd.). Takoñe, ovde se nalazi i rezultat, spreman za dalji rad. U grupi SFR registara, jedan je tesno povezan sa akomulatorom. To je Status Registar. U njemu se u

Page 10: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

9

svakom trenutku vidi status broja koji se nalazi u akomulatoru (broj je veći ili manji od nule itd.).

2.1.4.7 Ulazno/izlazni portovi (I/O Portovi) Da bi mikrokontroler imao bilo kakvu korisnu namenu, on mora biti povezan sa dodatnom elektronikom, odnosno sa spoljnim svetom. U tu svrhu svaki mikrokontroler ima jedan ili više registara (u ovom slučaju se zovu portovi) na njegovom kućištu. Zašto ulazno/izlazni? Zato što svakom pinu korisnik može po želji da promeni ulogu. Slikovito rečeno, ovo su jedini registri u mikrokontroleru čije stanje može da se proveri i voltmetrom!

2.1.4.8 Oscilator Ujednačeni impulsi koji dolaze iz ovog sklopa omogućavaju skladan i sinhron rad svih ostalih delova mikrokontrolera. Najčešće može da se konfiguriše tako da za stabilizaciju frekvencije koristi kvarc-kristal ili keramički rezonator. Pored toga, vrlo često može da radi i bez elemenata za stabilizaciju frekvencije (kao RC oscilator). Važno je znati da se instrukcije ne izvršavaju onom brzinom koju diktira sam oscilator već nekoliko puta sporije. Ovo se dešava zbog toga što se svaka instrukcija izvršava u nekoliko koraka (kod nekih kontrolera je za izvršenje bilo koje instrukcije potreban isti broj ciklusa dok je kod nekih vreme izvršenja instrukcija različito). Zbog toga, ako sistem koristi kvarc-kristal od 20MHz vreme izvršenja jedne programske instrukcije nije 50nS već 200, 400, ili čitavih 800 nS.

2.1.4.9 Tajmeri/brojači Većina programa na neki način koristi ove minijaturne elektronske štoperice. To su najčešće 8 ili 16-to bitni SFR registri čija se vrednost automatski uvećava nailaskom impulsa. Kada se ovaj registar popuni do kraja – dolazi do interapta! Ako se za njihovu pobudu koristi interni oscilator mikrokontrolera, moguće je meriti proteklo vreme izmeñu dva dogañaja (vrednost registra na početku merenja = T1, na kraju merenja = T2, proteklo vreme = T2-T1). Ako se za pobudu koriste impulsi iz spoljnog izvora, ovakav tajmer se pretvara u brojač.

2.1.4.10 Watchdog tajmer Sam naziv dovoljno govori o nameni ovog tajmera (Watchdog u prevodu znači pas čuvar). To je tajmer čiji je ulaz povezan na poseban i potpuno nezavisan RC oscilator u okviru kontrolera. Ako se omogući njegov rad, svaki put kada odbroji do kraja mikrokontroler se resetuje i izvršavanje programa kreće od prve instrukcije, kao kod prvog priključenja napona napajanja. Trik se sastoji u tome da se posebnom komandom to nikad ne dozvoli! Cela ideja počiva na činjenici da se svaki program vrti u krug, odnosno da se izvršava u nekoliko manjih ili većih petlji. Ako se na ključna mesta u programu, pored komandi koje se redovno izvršavaju postave i instrukcije koje resetuju na nulu vrednost watchdog tajmera, njegov rad će proći potpuno neprimećeno. Ako se iz bilo kojih razloga (u industrijskom okruženju to su najčešće smetnje) programski brojač zaglavi na memorijskoj lokaciji odakle nema povratka, vrednost registra koji watchdog uporno uvećava će dostići maksimum i dolazi do reseta.

Page 11: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

10

2.1.4.11 Kolo za napajanje Dve stvari u ukviru sklopa koji brine o napajanju mikrokontrolera zaslužuju pažnju: Brown out – ovo je potencijalno opasno stanje koje se javlja u toku isključenja kontrolera ili u situacijama kada zbog prisustva jakih smetnji vrednost napona napajanja zaosciluje na ivici dozvoljene vrednosti. Pošto je mikrokontroler sastavljen od više sklopova koji rade na različitim naponima, ovo može da izazove njegovo potpuno nekontrolisano ponašanje. Da bi se to izbeglo, često se ugrañuje kolo za brown out (braun aut) reset. Kada napon napajanja padne ispod vrednosti koja je dozvoljena ovaj sklop trenutno resetuje kompletnu elektroniku. Pin za reset - često se obeležava sa MCLR (Master Clear Reset) i služi za spoljni reset mikrokontrolera dovoñenjem logičke nule ili jedinice (zavisi od tipa mikrokontrolera). U slučaju da nije već ugrañeno, na ovaj pin se može priključiti jednostavno spoljno kolo za brown reset.

2.1.4.12 Serijska komunikacija Veza mikrokontrolera sa spoljnim svetom koja se ostvaruje preko I/O portova je idealno rešenje za manja rastojanja – do nekoliko metara. Meñutim, kada treba ostvariti komunikaciju izmeñu dva ureñaja na većim rastojanjima ili kada iz drugog razloga nije moguće koristiti paralelnu vezu (npr. daljinska kontrola letilice), očigledno je da tako nešto ne dolazi u obzir. U takvim i sličnim situacijama, komunikacija putem povorke impulsa iliti serijska veza je odgovor koji se sam nameće. Problem serijske komunikacije je odavno uspešno rešen i danas se u većinu mikrokontrolera kao standardna oprema ugrañuje i po nekoliko različitih sistema za ovakvu vezu. Koji će od njih biti iskorišćen u konkretnom slučaju, zavisi od više faktora. Neki od tih faktora su: sa koliko ureñaja mikrokontroler mora da razmenjuje podatke, kolika mora da bude brzina prenosa podataka, kolika je udaljenost izmeñu ureñaja, da li postoji potreba da se podaci istovremeno i šalju i primaju i drugi. Jedna od važnijih stvari kod upotrebe serijske veze je strogo pridržavanje Protokola. Odnosno, to je skup pravila koja mraju da se primenjuju da bi ureñaji pravilno tumačili podatke koje razmenjuju. Uglavnom, mikrokontroleri automatski vode računa o tome, tako da se posao korisnika (programera) svodi na prosto upisivanje i čitanje podataka.

2.2 Meñunarodna Morzeova azbuka ITU Radiokomunikaciona skupština, imajući u vidu:

1) da je osnovna verzija Morzeove azbuke u upotrebi još od 1884god., 2) da Morzeova azbuka nastavlja biti upotrebljavana u nekim radiokomunikacionim

servisima uključujući amatere i amaterske satelitske servise, a ka umanjenju mobilnih istacionarnih servisa,

3) da je bilo neophodno azbuku unapreñivati s vremena na vreme do podmirenja potreba radiokomunikacionih servisa,

preporučuje da bi Dodatak 1 trebalo upotrebiti za definisanje znakova Morseove azbuke i njihovu upotrebu u radiokomunikacionim servisima.

Page 12: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

11

Dodatak 1

2.2.1 Osnovna pravila upotrebe

Morzeovi kodni signali

Naredni pisani znaci koji mogu biti upotrebljeni i adekvatni znaci Morzeove azbuke : Pismo a . − i . . r . − . b − . . . j . − − − s . . . c − . − . k − . − t − d − . . l . − . . u . . − e . m − − v . . . − akcentovano e . . − . . n − . w . − − f . . − . o − − − x − . . − g − − . p . − − . y − . − − h . . . . q − − . − z − − . Cifre 1 . − − − − 6 − . . . . 2 . . − − − 7 − − . . . 3 . . . − − 8 − − . . 4 . . . . − 9 − − − − . 5 . . . . . 0 − − − − − Stavljanje interpukcijskih znakova i ostalih oznaka Tačka ....................................................................... [ . ] . − . − . − Zapeta ...................................................................... [ , ] − − . . − − Dve tačke ................................................................. [ : ] − − − . . . Znak Pitanja .......................................................... [ ? ] . . − − . . Apostrof .................................................................. [ ’ ] . − − − − . Crtica ili znak oduzimanja .................................. [ – ] − . . . . − Kosa crta ili znak deljenja ..................................... [ / ] − . . − . Leva pomoćna zagrada (zagrade) ......................... [ ( ] − . − − . Desna pomoćna zagrada (zagrade) ....................... [ ) ] − . − − . − Znaci navoda .................................................... [ “ ” ] . − . . − . Znak jednakosti ..................................................... [ = ] − . . . − Razumljiv ............................................................... . . . − . Greška .................................................................... . . . . . . . . Znak sabiranja ...................................................... [ + ] . − . − . Pozivanje do prenosa ............................................ − . −

Page 13: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

12

Čekanje ................................................................... . − . . . Kraj slanja .............................................................. . . . − . − Početni znak (pre početka svakog slanja) ........... − . − . − Znak Množenja ..................................................... [ × ] − . . − Komercijalno et ................................................... [ @ ] .– – .– . Razmak i trajanje kod znakova Jedna crtica je istog trajanja kao i tri tačke. Razmak izmeñu znakova je istog trajanja kao i jedna tačka. Razmak izmeñu dva slova je istog trajanja kao tri tačke. Razmak izmeñu dve reči je istog trajanja kao sedam tačaka. Kod Vitstonovog instrumenta, iskorišćeni su perforatori, razmak izmeñu dva slova mora biti jednak jednoj izbušenoj centralnoj rupi, a razmak izmeñu dve reči mora biti jednak trima izbušenih centralnih rupa. Prenošenje znakova za koje ne postoje odgovarajući znaci u Morzeovoj azbuci Znaci koji nemaju odgovarajuće znake u Morzeovoj azbuci, ali oni koji su prihvaćeni u pismu i telegrafiji, moraju biti poslati na sledeći način: znak množenja Za znak množenja, znak istovetan znaku X u pismu mora biti poslan. procenat ili promil Kod prikazivanja znaka % ili ‰, cifra 0, razlomačka crta i cifra 0 ili 00 mora biti poslato jedno za drugim (0/0, 0/00). Celi btojevi, razlomljeni brojevi ili razlomci, prikazuju se pomoću % ili ‰ znaka, moraju biti poslati pomoću vezivanja za ceo broj, razlomljeni brojevi ili razlomci dalje % ili ‰ pomoću kratke crte. primer: Za 2%, šalje se 2-0/0, a ne 20/0 Za 41/2 ‰, šalje se 4-1/2-0/00, a ne 41/20/00. znaci navoda Posebni znaci kao znaci navoda moraju biti poslati pre i posle reči ili rečenice. Meñutim, gde su znaci obrnuto iskorišćeni, apostrof mora biti dvaput poslat pre i posle reči ili rečenice do znaka navoda. znaci minut i sekunda Prenos minuta ( � ) ili sekunde ( ˝ ) znaka, čim takav znak prati cifru, na primer 1´15˝ - apostrof znak (. − − − −.) mora biti upotrebljen jednom ili dva puta kao dodatni. Znak (.− . . −.) rezervisan za navodnike ne mora biti upotrebljen kao drugi znak.

Page 14: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

13

slanje grupa cifara i slova, rednih brojeva i razlomaka Grupe koje sadrže cifre i slova moraju biti poslate bez razmaka izmeñu cifara i slova. Redni brojevi sastavljeni od cifara i slova, 30me, 25th itd., moraju biti poslati u obliku 30ME, 25TH itd. Brojevi koji sadrže i razlomke moraju biti poslati kao razlomak vezan sa celim brojem uz kratku crticu. primer: Za 1 ⅗, šalje se 1-3/5, a ne 13/5. Za ⅗ 8, šalje se 3/5-8, a ne 3/58. Za 363⅓4 5642, šalje se 363-1/2 4 5642, a ne 3631/2 4 5642.

2.2.2 Opšta pravila slanja Svaka komunikacija izmeñu dve stanice mora počinjati sa pozivnim znakom. Kada poziva, pozivna stanica mora slati pozivni znak (ne više od dva puta) ka željenoj stanici, reč DE prati se pomoću njenog vlastitog pozivnog znaka, odgovarajući servis skraćuje do naznačenog prioriteta telegrama, indikacija razloga za poziv i signal (– . –), ako ne tu je specijalni pravilnik osobina o tipu upotrebljenih ureñaja. Poziv uvek treba da bude urañen ručnom brzinom.

Pozvana stanica treba da odgovori odmah po prijemu pozivnog signala od pozivne stanice, reč DE prati se pomoću njenog vlastitog pozivnog znaka i signal (– . – ). Ako pozivana stanica nije u mogućnosti da primi, ona treba da dâ signal čekanja. Ako to čekanje prevazilazi deset minuta, razlog i moguće trajanje mora biti dato. Kada pozvana stanica ne daje odgovor, poziv mora biti ponovljen sa adekvatnim intervalom. Kada pozvana stanica ne daje odgovor na ponovljeni poziv, stanje kod putanje mora biti ispitano.

Dupla crtica (– . . . –) mora biti poslata svakom odvojeno: - najava od servisa signalizacije - servis signalizacije sa svim drugim - servis signalizacije s’ adresama - stanica sa odredišta s’ tekstom - tekst s’ potpisom Slanje, čim počne, ne može biti prekinuto do slanja sa mesta višeg prioriteta izuzev u slučaju apsolutno hitnog poziva.

Svaki telegram mora biti poslat sa krst signalom (. – . – .) .

Kraj u slanju mora biti označen pomoću krst signala (. – . – .) praćen pomoću navoñenja slanja znakom K (– . –) . Kraj u slanju mora biti označen pomoću stanice koja šalje poslednji telegram. Korekno označavanje je kraj slanja znakom (. . . – . –) .

Page 15: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

14

2.2.3 Slanje telegrama sa identičnim tekstom Identični tekst Kada stanica ima da pošalje na istovetno mesto više od pet telegrama koji imaju istovetni tekst i obuhvatju više od pedeset reči, tekst se sme preneti jedanput samo. U tom slučaju tekst mora biti prenet u prvom telegramu jedino, a tekst u svim telegramima sa identičnim tekstom koji slede moraju biti pomoću reči TEXT NR . . .(broj prvog telegrama). Ovaj postupak zahteva slanje uzastopno svih telegrama sa istovetnim tekstom.

Prijemna stanica mora biti obaveštena o slanju telegrama sa istim tekstom pomoću servisnog upozorenja kod sledeće linije: ...TELEGRAMI SA ISTOVETNIM TEKSTOM SLEDE

Kada je prijem moguć pomoću sredstava za bušenje traka, prijemna stanica trebalo bi biti obaveštena u dovoljnom vremenu do dozvole za prijem telegrama sa identičnim tekstom pomoću traka.

2.2.4 Slanje nepravilnosti - Servisna upozorenja Naznačivanje čekanja, odgovarajući znak (. – . . .) mora biti poslat.

Ako pošiljaoc primeti grešku, on mora da stane i pošalje znak greške (. . . . . . . .), ponoviti poslednju reč i korektno je poslati i nastaviti zatim sa slanjem.

Ako je neophodno prekinuti slanje zbog nekog razloga, postupak mora biti kao kad je slanje zaustavljeno. - Morze jednostruki, preneti servis sa tačkom - Morze dvostruki, preneti slova BK - Nekada slanje mora biti prekinuto, primaoc mora ponoviti poslednju korektno primljenu reč propraćenu znakom pitanja. Pošiljaoc mora nastaviti slanje od te reči. - Ako je ponavljanjem postavljeno pitanje zbog prethodnog dugačkog prekida, telegram i deo telegrama moraju biti tačno naznačeni.

Servisno upozorenje XQ mora biti umetnut izmeñu telegrama u nizu.

2.2.5 Ispitivanje broja poslatih reči – Potvrda o prijemu Ispitivanje broja poslatih reči

Kada primaoc pronañe neslaganje izmeñu broja aktuelnih prikazanih reči u uvodnoj liniji i primljenog broja, on mora obavestiti pošiljaoca uz naznačavanje broja primljenih reči, posmatrajući dalje prvi znak u svakoj reči (primer: 17 WDS J C R B 2 D . . . i td.). Ako pošiljaoc ima samo izrañene greške u slanju broja reči, on mora odgovoriti ADMITTED i označiti stvaran broj reči ( primer: 17 ADMITTED ), ako ne, on mora ispraviti tekst i ustanoviti koji su bili netačni saglasno sa prvobitnim prijemom. U oba slučaja, on mora prekinuti, ako je neophodno, prvobitno slanje, ubrzano on mora biti u ispravnom stanju ili potvrditi broj reči.

Page 16: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

15

Potvrda o prijemu

Posle potvrde o broju reči i ispravki bilo kojih grešaka, prijemna stanica treba potvrditi predajnoj stanici prijem telegrama ili niz telegrama. Sam telegram mora biti potvrñen pomoću slova R koje prati broj primljenih telegrama, kao primer R 436. Za SVH telegram, državni telegram sa prioritetom ili telegram oblika izjava Povelje Ujedinjenih Nacija, prijem mora biti potvrñen u obliku:

R 436 SVH ili R 436 ETAT. Za niz telegrama, slovo R mora biti poslato sa brojem primljenih telegrama, a takoñe prvi i poslednji broj u nizu,kao primer:

R 6 157 162. Ako niz uključuje SVH telegram ili državni telegram sa prioritetom, potvrda prijema mora biti dopunjena pomoću broja ovog telegrama stoga:

R 6 157 162 INCLUDING 159 SVH 161 ETAT U svakom slučaju, potvrda o prijemu mora biti poslata odmah u sledećoj formi :

LR 683 MISSING 680 RETAINED 665 Ova potvrda o prijemu sadrži poslednji prijem (683), broj 680 nedostaje i broj 665 sačuvati. Pošiljaoc mora prijaviti potvrdu o prijemu odmah posle slanja SVH telegrama, državnih telegrama sa prioritetom ili telegram oblika izjava Povelje Ujedinjenih Nacija. U takvim slučajevima, potvrda o prijemu mora imati sledeću formu :

LR SVH 683

2.2.6 Postupak slanja Slanje mora biti voñeno kao praćenje, saglasno jačini saobraćaja: - naizmenično slanje telegrama - naizmenično slanje u nizu Kod naizmeničnog slanja prijemna stanica ne mora imati pogodan prekid slanja datom mestu u komunikaciji sa višim prioritetom, sem u trnutku apsolutne hitnosti. Razmena telegrama u naizmeničnom rasporedu izmeñu dve stanice u direktnoj komunikaciji mora pratiti pravila koje se odnose na ureñenju slanja. Telegram sa višim prioritetom u ureñenom slanju ne mora se ceniti u naizmeničnom ureñenju. Stanica koja ima pravilan kraj slanja mora imati tačan nastavak kada ima telegram koji čeka da se pošalje ili kada telegrami stižu koji su naslovljeni sa prioritetom višim od stanice koja ima prenos u komunikaciji, ako ne poslednji već početo njegovo slanje. Kada stanica ima kraj slanja, stanica koja upravo ima prijem mora poslati i njegovo ime, ako poslednja nema ništa za slanje, poslednji mora da nastavi slanje njegovog saobraćaja. Ako isto tako ima bilo šta za slanje, stanica mora promeniti znak kraja za znak rada. Kada je saobraćaj izravnat, a osnova u sporazumevanju izmeñu stanica u komunikaciji, telegram može biti razmenjen u nizu naizmenično. Telegrami u istom nizu moraju biti razmatrani u obliku jednog slanja. Meñutim, svaki korektno primljeni telegram mora biti sačuvan na prijemnom mestu do sledećeg, osim prvog početnog telegrama ili u toku vremena potrebnog za slanje osrednjeg telegrama. Svaki niz mora sadržati maksimalno pet telegrama. Ipak, svaki telegram sadrži više od 100 reči kod Morzeovom aparatu ili više od 150 reči kod aparata sa zvučnim čitanjem mora brojati niz ili ograničiti niz već u toku slanja.

Page 17: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

16

Stanica koja šalje mora završiti niz u toku slanja jedino kada ima slovni telegram da pošalje. To ne treba vratiti slanjem do stanice koja nema rad sa telegramima sa višim prioritetom u delatnosti.

2.3 Treperenje dirke U trenutku kada se odreñena dirka pritisne (prekidač zatvori) na kontaktima dirke, ne javlja se samo jedan čisti prelaz iz stanja otvoreno u stanje zatvoreno. Naprotiv dirka zatreperi više puta izmeñu stanja otvoreno i zatvoreno pre nego što ona konačno zauzme poziciju zatvoreno. Slična situacija se javlja i kada se dirka otpušta. Period treperenja dirke zavisi od njene konstrukcije. Kvalitetne dirke trepere od 1 do 5 ms, a loše od 20 do 100 ms. Ako se o treperenju ne vodi računa, mikroračunar će smatrati da je dirka, umesto jedanput, više puta pritisnuta i osloboñena. Postoji veći broj rešenja kako da se eliminiše problem treperenja dirki. Četiri hardverska metoda su prikazana na slici 2.3.2. Sve tehnike za eliminaciju treperenja dirki, koje su prikazane na slici 2.3.2, pogodne su za primenu kod onih aplikacija gde se čitanje stanja dirki vrši hardverski. Kod aplikacija gde se čitanje stanja dirki vrši softverski, eliminacija efekta treperenja dirki sastoji se u aktiviranju brojača čija je perioda brojanja duža od vremena treperenja dirke u toku procesa aktiviranja i deaktiviranja. Kada je pritisak dirke detektovan, softver smešta kôd dirke u lokaciju za privremeno memorisanje. Ako je dirka i dalje pritisnuta kada se nakon isteka vremena vrši nova analiza tastature, tada se za tu dirku smatra da je pritisnuta, pa se kôd te dirke predaje rutini za obradu.

Sl. 2.3.1 Efekat treperenja dirke

Na slici 2.3.1 prikazan je efekat treerenja dirke koji je karakterističan kako za pritiskanje tako i oslobañanje dirke. U trenutku kada se dirka pritisne za nju se smatra da je zatvorena. Ali u trenutku otpuštanja, ona mora ostati otvorena još najmanje 10 ms pre nego što se smatra da će konačno biti otvorena.

Page 18: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

17

Sl. 2.3.2 Hardverski metodi za eliminisanje uticaja efekta treperenja dirki

Page 19: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

18

3. Hardver

3.1 Blok dijagram

Sl. 3.1.1 Blok dijagram sistema

Na slici 3.1.1 dat je blok dijagram Morzeovog telegrafa. Srce ovog sistema predstavlja mikrokontroler iz Atmel-ove serije mikrokontrolera AT89S8253. U ovom sistemu mikro prekidač predstavlja ulaznu komponentu kojom se kuca Morzeova azbuka. Kolom za signalizaciju pokazuje se trenutno stanje sistema. Zelena dioda svetli kada se otkuca signal za kraj slanja, a žuta dioda svetli kada nema signala za kraj slanja i blinka kada se otkuca nepostojeći karakter Morzeove azbuke. Buzer služi za zvučno predstavljanje Morzeove azbuke. Na LCD displeju se ispisuju otkucani karakteri Morzeove azbuke. Programiranje mikrokontrolera vrši se preko ISP programabilnog interfejsa.

Page 20: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

19

3.2 Opis Hardvera

3.2.1 Opis mikrokontrolera AT89S8253 Karakteristike:

• Kompatibilan sa MCS®51 proizvodima

• 12K bajta za in-sistem programabilni (ISP) fleš programsku memoriju - Serijski interfejs za programsko upisivanje - Izdržljivost: 10000 upisa/čitanja

• 2K bajta EEPROM memorije za podatke - Izdržljivost: 10000 upisa/čitanja

• 64 bitna korisničko polje za potpisivanje • 2.7V do 5.5V radni opseg

• Potpuno stabilan rad: 0 do 24MHz (x1 i x2 mod) • Dvonivoisko programsko zaključavanje memorije

• 256x8 bitni unutrašnji RAM • 32 Programabilnih I/O linija • Tri 16 bitna Tajmera/Brojača • Devet prekidna izvora • Poboljšani UART serijski port sa detekcijom grešaka frejma i automatskim

prepoznavanjem adresa • Poboljšani ISP (dupli upis / bafer za čitanje) serijski interfejs • Niske snage prazan hod i mod smanjene snage

• Prekid obnavljanja iz moda smanjene snage • Programabilni Watchdog brojač

• Dvostruki indikator podataka • Zastava gašenja • Fleksibilno programiranje (bit i stranica mod)

- Stranica mod: 64 bajta/stranica za kodnu memoriju / 32 bajta/stranica za memoriju podataka

• Četvoronivoiski poboljšani prekidni kontroler

• Programabilni i prespojiv X2 takt opcija • Unutrašnje uključivanje reseta • 42-pinsko PDIP alternativno kućište za smanjenje EMC zračenja

Page 21: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

20

AT89S8253 je nisko naponski, visoko performansni CMOS 8 bitni mikrokontroler sa 12K bajta in-sistem programabilne (ISP) fleš programske memorije i 2K bajta EEPROM memorije za podatke. Mikrokontroler je proizveden korišćenjem Atmelove visoke gustine pouzdane memorijske tehnologije i saglasan je sa industrijskim standardom MSC-51 instrukciskim setom. Fleš programske memorije i EEPROM memorije za podatke se mogu reprogramirati u sistemu preko SPI-serijskog interfejsa. Pomoću kombinacije raznovrsnih 8 bitnih CPU sa flešom na monolitnom čipu, Atmel AT89S8253 je snažan mikrokontroler koji obezbeñuje veoma fleksibilno i jeftino rešenje za veliki broj ugrañenih upravljačkih aplikacija.. AT89S8253 poseduje sledeće standardne osobine: 12K bajta in-sistem programabilne fleš memorije, 2K bajta EEPROM memorije za podatke, 256 bajtni RAM, 32 I/O linija, programabilni Watchdog brojač, dvostruki indikator podataka, tri 16 bitna tajmera/brojača, šest vektora, četvoronivoisku prekidnu arhitekturu, potpuni dvostruki poboljšani serijski port, precizni analogni komparator, na čipu, i takt oscilator. Na kraju, AT89S8253 je namenjen kod statičke logike za operacije bliže do nulte frekfencije i podržava dva softverska selektivna moda štednje energije. Mod praznog hoda zaustavlja CPU dok dozvoljava RAM-u, tajmerima/brojačima, serijskom portu i prekid sistemu da nastave funkcionisanje. U modu niske snage snima se sadržaj RAM-a ali se zamrzavaju i onesposobljavaju sve druge funkcije čipa do sledećeg spoljnjeg prekida ili hardverskog reseta. Na ploči fleš programska memorija je dostupna preko ISP serijskog interfejsa. Držanje RST aktivne snage mikrokontroler u serijskom programiranju interfejsa dopušta upis u programsku memoriju ili čitanje iz nje, osim ako su aktivni jedan ili više bitova za zaključavanje.

3.2.1.1 PIN konfiguracija

Sl. 40 pinski PDIP/SOIC

Page 22: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

21

3.2.1.2 Blok dijagram

Page 23: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

22

3.2.1.3 Opis pinova

VCC - Napon napajanja

GND - Masa

Port 0 - Port 0 pinovi su 8-bitni bi-direkcionih I/O pinova sa unutrašnjim pobudama. Port 0 izlazni bafer može odvoditi 6 TTL ulaza. Kada jedinicu držimo upisanu na port 0 pinove oni su visoko pobuñeni pomoću unutrašnje pobude i mogu biti upotrebljeni kao ulazni. Kao ulazni, port 0 pinovi koji su bili spoljno nisko pobuñeni su izvor struje ( ) zbog unutrašnjeg pobuñivanja. Port P0 može da se koristi kao univerzalni ulaz i izlaz samo ako se ne koristi spoljna memorija. Ako se koristi, tada je P0 adresni izlaz za A0-A7 kad je ALE visok, a magistrala podataka (Data Bus) kada je ALE nizak. Port 1 - Port 1 pinovi su 8-bitni bi-direkcionih I/O pinova sa unutrašnjim pobudama. Port 1 izlazni bafer može odvoditi 6 TTL ulaza. Kada jedinicu držimo upisanu na port 1 pinove oni su visoko pobuñeni pomoću unutrašnje pobude i mogu biti upotrebljeni kao ulazni. Kao ulazni, port 1 pinovi koji su bili spoljno nisko pobuñeni su izvor struje ( ) zbog unutrašnjeg pobuñivanja. Funkcije pinova porta 1 date se u tabeli ispod. Port pin Dodatne funkcije P1.0 T2 (spoljašnji brojački ulaz za tajmera/brojača 2 ), izlaz takta P1.1 T2EX(tajmera/brojača 2 hvatanje/prekoračenje okidna direktna kontrola) P1.5 MOSI (master izlaz podataka, slave ulaz podataka pin za ISP kanal) P1.6 MISO (master ulaz podataka, slave izlaz podataka pin za ISP kanal) P1.7 SCK (master takt izlaz, slave takt ulazni pin za ISP kanal) Port 2 - Port 2 pinovi su 8-bitni bi-direkcionih I/O pinova sa unutrašnjim pobudama. Port 2 izlazni bafer može odvoditi 6 TTL ulaza. Kada jedinicu držimo upisanu na port 2 pinove oni su visoko pobuñeni pomoću unutrašnje pobude i mogu biti upotrebljeni kao ulazni. Kao ulazni, port 2 pinovi koji su bili spoljno nisko pobuñeni su izvor struje ( ) zbog unutrašnjeg pobuñivanja.

Ako se koristi mikrokontroler sa internim ROM-om i nema spoljnjeg ROM-a ili RAM-a, mogu se koristiti sve linije ovog porta kao univerzalni ulazi ili izlazi. Ako se koristi spoljna memorija, onda su ovo visoki adresni izlazi, od A8 do Al 5. U tom slučaju, čak i ako se koriste samo neke adrese, preostale nožice ovog porta ne mogu da se koriste kao ulazi ili izlazi.

Port 2 prihvata kodne podatke u toku fleš programiranja i verifikacije. Port 3 - Port 3 pinovi su 8-bitni bi-direkcionih I/O pinova sa unutrašnjim pobudama.

Port 3 izlazni bafer može odvoditi 6 TTL ulaza. Kada jedinicu držimo upisanu na port 3 pinove oni su visoko pobuñeni pomoću unutrašnje pobude i mogu biti upotrebljeni kao ulazni. Kao ulazni, port 3 pinovi koji su bili spoljno nisko pobuñeni su izvor struje ( ) zbog unutrašnjeg pobuñivanja.

Page 24: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

23

Port 3 isto takoñe odgovara funkcijama sa različitim specijalnim osobinama kod AT89S8253 kao na spisku ispod: Port pin Dodatne funkcije P3.0 RXD (serijski ulazni port) P3.1 TXD (serijski izlazni port) P3.2 INT0 (spoljašnji prekid 0) P3.3 INT1 (spoljašnji prekid 1) P3.4 T0 (tajmer 0 spoljašnji ulaz) P3.5 T1 (tajmer 1 spoljašnji ulaz) P3.6 WR (spoljašnji selekcioni ulaz za upis u memoriju podataka) P3.7 RD (spoljašnji selekcioni ulaz za čitanje memorije podataka) Port 3 prihvata kodne podatke u toku fleš programiranja i verifikacije. PSEN - Program Store Enable (aktiviranje spoljašnjeg ROM-a). Normalno se ovaj izlaz spaja sa CS ili OE ulazom na spoljnom EPROM-u, jer ga mikrokontroler aktivira (dovodi na nizak nivo) svaki put kad čita bajt iz programske memorije (za kontrolu spoljašnjeg RAM-a se koriste druge nožice). ALE/PROG - Address Latch Enable (Upis u adresni registar). Da bi se sve funkcije spakovale u standardno kućište od samo 40 nožica, pribegnuto je multipleksiranju nekih signala. Tako je port P0 dobio dve funkcije, izlazne adrese A0-A7 i ulaz/izlaz podataka D0-D7. Pre svakog očitavanja programa iz spoljne memorije ili prozivanja RAM-a mikrokontroler na P0 prosleñuje niži bajt adresnog registra i aktivira izlaz ALE. Spoljni registar na visok nivo ALE memoriše stanje P0, a izlazi ovog registra se koriste kao A0-A7. U drugom delu mašinskog ciklusa mikrokontrolera P0 se koristi kao magistrala podataka (Data Bus). EA - External Access (Spoljni pristup). Ako je ovaj ulaz nizak, mikrokontroler će sve instrukcije čitati iz spoljnog ROM-a.

RST - Reset ulaz. Držanjem RST pina za vreme dva mašinska ciklusa na visokom potencijalu mikrokontroler se vraća u početno stanje. Svaki mašinski ciklus zauzima 6 ciklusa ili takt ciklus.

XTAL1 - ulaz prema invertujućem pojačavaču i ulaz prema unutrašnjem takt operacionom strujnom kolu.

XTAL2 - izlaz iz invertujućeg pojačavača

3.2.1.4 Registar specijalnih funkcija (SFR) Mapa sa memorijskom oblašću na čipu je nazvana Registar Specijalnih Funkcija (SFR) i prikazana je u priloženoj tabeli. Upozorenje da nisu sve adrese zauzete, a ne zauzete adrese mogu biti ne primenjene kod čipa. Pristup čitanja do ovih adresa u glavnom je nasumično izabrani period i pristup upisivanja imaće neodreñeni efekat. Korisnik softvera ne treba upisivati jedinice na ove lokacije sa liste, jer ona može biti upotrebljena u budućem softveru za pozivanje novih osobina. U ovom slučaju, reset ili neaktivna vrednost kod novih bitova će uvek biti 0.

Page 25: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

24

AT89S8253 SFR mapa i početne vrednosti

3.2.1.5 Opis X2 moda

Takt za celo strujno kolo i periferije je normalno podeljen sa 2 pre postojećeg iskorišćenja kod CPU jezgra i periferija. Ovo omogućuje neki ciklus koeficijent (obavezni ciklus) koji će biti prihvaćen na XTAL1 ulazu. U X2 modu ovaj delitelj je zaobiñen.

Sl. Blok dijagram generisanja takta

Page 26: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

25

3.2.1.6 Reset

U toku resetovanja, svi I/O registri su postavljeni na njihovu inicijalnu vrednost, pinovi portova su slabo pobuñeni prema VCC, a program se startuje izvršenjem iz početnog vektora, 0000H. AT89S8253 ima tri načina resetovanja: početni reset, brown-out reset i spoljašnji reset.

3.2.1.7 Takt registar CLKREG - Takt Registar

Simbol Funkcija PWDEX Power-down izlazni režim rada. Kada PWDEX=1, buñenje iz

Power-down-a je spoljšnje kontrolisano. Kada PWDEX=0, buñenje iz Power-down-a je unutrašnje vreme.

X2 Kada X2=0, frekfencija (na XTAL1 pinu) je unutrašnje podeljena sa 2, to je iskorišćeno kao sistemska frekfencija. Kada X2=1, podeljena sa 2 nije više korištena i XTAL1 frekfencija postaje sistemska frekfencija. Ovo omogućuje korisniku da upotrebi 6 MHz kristal umesto 12 MHz kristala u cilju smanjenja EMI-a. X2 bit je postavljen na startu na vrednosti za X2, korisnik postavlja i može biti izmenjena na početku softvera.

3.2.1.8 Prekidi

AT89S8253 poseduje 6 prekidnih izvora: dva spoljašnja prekida, dva tajmer prekida, prekid serijskog porta i prekid analognog komparatora. Ovi prekidi i sistemski reset imaju posebni program vektor kod pokretanja iz programskog memorijskog prostora. Svaki prekidni izvor može biti pojedinačno aktiviran ili onemogućen postavljanjem ili brisanjem bita u registru dozvole prekida IE. IE registar takoñe sadrži bit globalnog onemogućavanja, EA, koji onemogućuje sve prekide. Svaki prekidni izvor može biti pojedinačno programiran u jednom od četiri nivoa prioriteta postavljanjem ili brisanjem bita u registru prioriteta prekida IP i IPH. Prekidna servisna rutina u radu može biti prekinuta pomoću prekida višeg prioriteta ali ne može biti uz pomoć prekida istog ili nižeg prioriteta. Prekid najvišeg prioriteta ne može biti prekinut od bilo kog drugog prekidnog izvora. Ako su dva zahteva različitih prioritetnih nivoa nerešeni na kraju instrukcije, zahtev od najvišeg nivoa prioriteta će biti servisiran. Ako su zahtevi sa istim prioritetnim nivoom aktivirani na kraju instrukcije, unutrašnji birani redosled odlučuje koji će zahtev biti servisiran. Biranje redosleda je osnova kod vektorskog adresiranja; prekid sa nižim vektorom adresiranja ima viši prioritet od prekida sa višim vektorom adresiranja. Treba primetiti da biranje redosleda je samo iskorišćeno kod rešavanja nerešenih zahteva kod istog prioritetnog nivoa.

Page 27: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

26

Spoljašnji prekidi i mogu biti bilo kog nivoa aktivacije ili promenjive aktivacije, zavisno od bita IT0 i IT1 u registru TCON. Zastave koje proizvode ovi prekidi su IE0 i IE1 bit u TCON-u. Kada je servisna rutina vektorska, hardver briše zastave koje generišu spoljašnje prekide jedino ako je prekid bio prelazno aktiviran. Ako je prekid bio aktiviran nivoom, tada spoljašnji zahtev izvora (donekle od hardvera na čipu) kontroliše postavljanje zastave. Tajmer 0 i tajmer 1 prekidi su generisani pomoću TF0 i TF1, koji su postavljeni bitovima kod promene u njihovom dotičnom Tajmer/Brojač registru (sem za tajmer 0 u režimu rada 3). Kada je tajmerski prekid generisan, hardver na čipu briše zastave koje su generisane kada je servisna rutina izvršena. Prekid serijskog porta je generisan pomoću logičkog OR od RI i TI u SCON-u. Ni jedna od ove dve zastave nije obrisana od hardvera kada je servisna rutina završena. Servisna rutina normalno mora odrediti da li RI ili TI generiše prekid, a bit mora biti obrisan u softveru. CF bit u ACSR-u generiše prekid komparatora. Zastava nije obrisana pomoću hardvera kada je završena servisna rutina i mora biti obrisana softverski. Većina od bitova koje generišu prekidi mogu biti postavljeni ili obrisani pomoću softvera, sličan rezultat isti kao da je bio postavljen ili obrisan pomoću hardvera. Da bi prekid mogao biti generisan i neizbežni prekidi mogu biti otkazani u softveru. Prekidi Izvori Vektor adresa Sistemski reset RST ili ROP ili BOD 0000H Spoljni prekid 1 IE0 0003H Tajmer 0 prekoračenje TF0 000BH Spoljni prekid 0 IE1 0013H Tajmer 1 prekoračenje TF1 001BH Serijski port RI ili TI 0023H Tajmer 2 prekoračenje TF2 i EXF2 002BH

3.2.1.9 Registar prekida

IE - Registar dozvole prekida

Simbol Funkcija EA Globalno uključivanje/isključivanje. Svi prekidi su onemogućeni

kada je EA=0. Kada EA=1, svi prekidni izvori su uključivanje/isključivanje po postavljanju/brisanju njegovog vlastitog bita dozvole.

EC Dozvola prekida komparator ES Dozvola prekida serijskog porta ET1 Dozvola tajmer 1 prekida EX1 Dozvola spoljnog prekida 0 ET0 Dozvola tajmer 0 prekida EX0 Dozvola spoljnog prekida 1

Page 28: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

27

IP - Registar prioriteta prekida

Simbol Funkcija PC Nizak prioritet komparator prekida PS Nizak prioritet prekida serijskog porta PT1 Nizak prioritet tajmer 1 prekida PX1 Nizak prioritet spoljnjeg prekida 1 PT0 Nizak prioritet tajmer 0 prekida PXO Nizak prioritet spoljnjeg prekida 0

IPH - Registar visokog prioriteta prekida

Simbol Funkcija PCH Visoki prioritet komparator prekida PSH Visoki prioritet prekida serijskog porta PT1H Visoki prioritet tajmer 1 prekida PX1H Visoki prioritet spoljnjeg prekida 1 PT0H Visoki prioritet tajmer 0 prekida PXOH Visoki prioritet spoljnjeg prekida 0

3.2.1.10 Tajmeri / brojači Mikrokonroler AT89S8253 sadrži tri tajmersko-brojačka registra. Prva dva zajednička su za sve modele iz familije 8051, dok je treći dodat modelima 8052. Označavaju se kao tajmeri 0,1 i 2. Sva tri registra se mogu konfigurisati da rade i kao tajmeri i kao brojači. Tajmer 0 i Tajmer 1 Ova dva tajmera mogu da rade kao brojački registri, ili registri koji mere zadati vremenski interval. Oba tajmera mogu raditi u četiri radna rezima. Kada radi kao brojač, sadržaj tajmerskog registra se uvećava za jedan na svaku silaznu ivicu odgovarajućeg ulaza mikrokontrolera (T0 za tajmer 0 i T1 za tajmer 1). Maksimalna frekvencija ulaznog signala koju brojač može da prati je 24 puta manja od radnog takta mikrokontrolera.

Page 29: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

28

Kada radi kao tajmer, sadržaj tajmerskog registra se uvećava za jedan u svakom mašinskom ciklusu. Jedan mašinski ciklus traje 12 perioda radnog takta mikrokontrolera (Ako je radni takt 12MHz, registar se uvećava svake mikrosekunde).

Timer 2 Tajmer 2 je 16-o bitni Tajmer/Brojač koji može podjednako da radi i kao tajmer i kao brojač. Ovo se odreñuje selekcijom bita C/2T u registru specijalne namene T2CON. Tajmer/Brojač registar dat je na sl.3.2.1. Tajmer 2 se razlikuje od prethodna dva tajmera jer ovaj tajmer ima 4 registra. TH2 i TL2 su vezana serijski i formiraju 16-bitni brojački registar. Druga dva, RCAP2H i RCAP2L takoñe su vezana serijski, i njihova glavna uloga zahvat ’’capture’’ sadržaja brojačkog registra. Glavna prednost ove organizacije ogleda se u jednostavnoj zameni mesta podataka jednostavno instrukcijom i ne zahteva dodatne programske akrobacije. Takoñe i ovaj tajmer ima nekoliko različitih modova rada. Tajmer 2 se kontroliše registrom T2CON i u tabeli ispod objašnjen je svaki njegov bit. T2CON - Tajmer/Brojač kontrolni registar

Simbol Funkcija

TF2

Indikator stanja prekoračenja Tajmera 2 i on se automatski aktivira kada brojač detektuje prekoračenje. Da bi registar mogao da detektuje naredno prekoračenje, ovaj bit se mora izbrisati softverski. Ako su aktivirani bitovi RCLK=1 ili TCLK=1, prekoračenje nema efekta na TF2

EXF2 Ovaj bit se automatski aktivira kada se desi transfer iz brojača u bafer ili obrnuto. Ako je aktiviran, on generiše prekid, ukoliko nije postavlja se bit DCEN u T2MOD-u. EXF2 se briše softverski.

RCLK Prihvatni okidni impuls. Kada je na jedinici koristi impulse prekoračenja tajmera 2, a kad je na nuli impulse prekoračenja tajmera 1.

TCLK Prenosni okidni impuls. Takoñe kada ja na jedinici serijski port koristi impulse prekoračenja tajmera 2 a kada je na nuli impulse prekoračenja tajmera 1.

EXEN2 Spoljašno aktiviranje tajmera 2. Kada je EXEN2=1 vrši se reloadovanje tajmera 2 koje može biti i izazvano opadajućom ivicom na spoljnem ulazu T2EX. Kada je EXEN2=0 tajmer 2 ignoriše dogañaje na T2EX.

TR2 Kontrola start-1/stop-0 za tajmer 2. Logička jedinica startuje rad tajmera.

C/ 2T Selekcija tajmera ili brojača. C/ 2T =0 interni brojač (osc/12), C/ 2T =1 eksterni brojač dogañaja (okidanje zadnjom ivicom).

CP/ 2RL

Selekcija stanja Capture/Reload. CP/2RL =1 javlja se captures stanje pri negativnom prenosu T2EX ako je EXEN2=1. Kada je CP/2RL =0 javlja se auo-reload stanje, bez obzira na prekoračenje tajmera2 ili negativnom prenosu na T2EX kada EXEN2=1. Kada je bilo koji RCLK=1 ili TCLK=1, ovi bitovi su onemogućeni i tajmer 2 je prinuñen da auto-reload-uje prekoračenje na Tajmeru 2.

Page 30: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

29

Tajmer 2 ima tri operativna moda: capture, auto-reload i generator brzine bauda koji su selektovani bitovima u T2CON registru a prikazani su u tabeli. Operativni modovi tajmera 2

RCLK+TCLK CP/ 2RL TR2 Mod

0 0 1 16 bitni autoreload 0 1 1 16 bitni hvatanje 1 X 1 Baud Rate generator X X 0 (isključen)

Tajmer 2 kao izvor taktovanja može da koristi sistemski clock, sistemski clock podeljen sa 12 i opadajuću ivicu na spoljnem ulazu (T2 pin).

U tkz. capture modu (modu 0) negativna ivica na spoljnjem ulaznom pinu T2EX izaziva prepisivanje trenutne vrednosti tajmera 2 (TH2 i TL2) u registre RCAP2H i RCAP2L. Ovaj mod je jako koristan kod aplikacija u kojima je potrebno meriti vremenske intervale do pojave nekog dogañaja. 16-bitni registri (TH2+TL2) drže broj od koga počinje da se broji. Postavljanjem bita TR2 na jedinici u registru TCON startuje se tajmer; svaki dolazeći impuls povećava vrednost za jedan. Kada se oba registra napune, impulsi prouzokuju prekoračenje (decimalna vrednost 65536), tada se resetuju i počinju da broje od nule. U modu auto-reload(Up or Down Counter) - (mod 1) tajmer 2 se može isprogramirati da radi kao up/down brojač ukoliko je konfugurisan u auto-reload režimu. Ovo mogućnost je prozvana DCEN(Down Counter Enable) a ovaj bit se nalazi u specijalnom registru T2MOD. Kada je aktiviran bit DCEN, tajmer 2 broji gore ili dole zavisno od vrednosti T2EX pina. Kada tajmer odbroji, postavlja se odgovarajući marker, tajmer se reload-uje tako što se u njegove registre prepisuje vrednost iz registara RCAP2H i RCAP2L i automatski restartuje.

T2MOD – Tajmer 2 mode kontrolni registar

Simbol Funkcija T2OE Tajmer 2 bit dozvole izlaza DCEN Kad je postavljen, ovaj bit potvrñuje podešavanje tajmera2 kao

brojača na unapred/unazad.

U modu 2, tajmer dva odreñuje brzinu serijskog prenosa podataka preko UART-a, jer on odreñuje stopu prenosa (baud rate). Naime, tajmer 2 u ovom modu radi isto kao i u modu auto-reload, stim što po odbrojavanju se ne postavlja fleg niti se generiše zahtev za prekid, već taj dogañaj služi kao takt za seriski prenos (i za slanje i za prijem nezavisno). U ovom modu opadajuća ivica na spoljnjem ulazu T2EX nema nikakvog uticaja na serijski prenos, već taj pin može biti iskorišćen kao izvor zahteva za dodatni spoljni prekid. Blok dijagrami modova rada tajmera 2 su prikazani na sledećim slikama:

Page 31: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

30

Sl. Tajmer 2 u Capture modu

Sl. Tajmer 2 Auto Reload Mode (DCEN=0)

Sl. Tajmer 2 Auto Reload Mode (DCEN=1) T2EX = 0/1 countin down/up

Page 32: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

31

Sl. Tajmer 2 kao Baud Rates generator

3.2.1.11 Režimi rada uštede energije

AT89S8253 podržava dva režima rada smanjenja potrošnje: Prazan hod i Gašenje. Ovi režimi rada su raspoloživi potpuno u PCON registru. PCON - Registar kontrole snage

Simbol Funkcija SMOD1 Dvostruki baud rejt bit. Udvostručavanje baud rejta za UART

u režimu rada 1, 2 ili 3. SMOD0 Okvir odabrane greške. Kada je SMOD0=0, onda je

SCON.7=SM0. Kada je SMOD0=1, SCON.7 je FE. Upozorenje da će FE biti postavljeno posle okvira greške bez obzira za položaj u SMOD0.

PWMEN Omogućiti širinsku impulsnu modulaciju. Kada PWMEN=1, tajmer 0 i tajmer 1 su komfigurisani kao 8 bitni PWM brojači sa 8 bitnim auto-reload predeliteljem. PWM izlaz je na T1 (P3.5)

POF Zastava isključenja. POF je potavljen na "1" za vreme paljenja. To može biti set ili reset ispod softverske kontrole i nije naklonjen RST ili BOD-u

GF1, GF0 Generisanje rezultujuće zastave

PD Bit gašenja. Postavljanjem ovog bita aktivira se operacija gašenja.

IDL Bit režima rada praznog hoda. Postavljanjem ovog bita aktivira se operacija režima rada praznog hoda.

Page 33: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

32

3.2.1.12 Baud Rates – Brzina bauda Baud rate u režimu 0 je predstavljen sledećom jednakošću.

Baud rate u režimu 2 zavisi od vrednosti bita SMOD. Ako je SMOD=0 (vrednost prilikom resetovanja), baud rate je 1/64 frekvencije oscilovanja, što je prikazano sledećom jednačinom.

Korišćenje tajmera 1 za generisanje brzine boda Kada je tajmer 1 generator brzine bauda, brzine bauda u režimu 1 i 3 su rešene prekoračenjem brzine Tajmera 1 i vrednost SMOD se izračunava po sledećoj jednakosti.

Prekidi Tajmera 1 trebalo bi biti onemogućeni u ovoj aplikaciji. Sam Tajmer ne može biti konfigurisan za svaki tajmer ili brojač u bilo kom od ova tri režima rada.U mnogim tipičnim aplikacijama, on je konfigurisan za tajmer operaciju u auto-reload načinu rada (viša polovina bajta TMOD= 0010B).U ovom slučaju , brzina bauda je data kao:

Korišćenje Tajmera 2 za generisanje brzine bauda

Kod AT89S8253, postavljanjem TCLK i/ili RCLK u T2CON selektuje Tajmer 2 kao generator brzine boda (slika 3.2.1). Pod ovim uslovima, brzina bauda za prijem i slanje može biti simultano različita. Selektovanjem RCLK i/ili TCLK dovodi Tajmer 2 u njegov režim generatora brzine bauda , što je prikazano na sl.3.2.6. Režim generatora brzine bauda je sličan auto-reload režimu rada. U ovom slučaju, brzine bauda u režimima 1 i 3 su rešene od strane Tajmera 2 prema sledećoj jednakosti

Tajmer 2 može biti konfigurisan za tajmer ili brojač operacije. U dosta primera, on je

konfigurisan za tajmer operaciju (C/T2=0). Normalno, tajmer povećava vrednost pri svakom mašinskom ciklusu, ali operacija tajmera je različita za Tajmer 2 kada se koristi kao generator brzine boda. Kao generator brzine boda, Tajmer 2 povećava vrednost svakog vremenskog stanja.U ovom slučaju jednakost je data kao:

Page 34: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

33

3.2.1.13 Registar kontrole memorije

EECON registar sadrži kontrolne bitove za 2K bajta EEPROM memorije. Takoñe sadrži kontrolne bitove za dvostruki indikator podataka. EECON – Kontrolni registar EEPROM podataka

Simbol Funkcija EELD Bit dozvole učitavanja EEPROM memorija za podatke. Upotrebljen kao alat

za mod upisa stranice. MOVX instrukcija upisana u EEPROM za podatke neće otpočeti ciklus programiranja ako je ovaj bit postavljen, tačnije to će upravo učitati podatak u bafer za podatke kod EEPROM memorije za podatke.Pre poslednjeg MOVX, brisanjem ovog bita i EEPROM program će sve bajtove predhodno učitane na istu stranicu kod adrese date pomoću poslednje MOVX instrukcije.

EEMWE Bit dozvole upisa u EEPROM memorija za podatke. Ovoj bit mora biti postavljen na 1 pre upisa inicijalizacijonog bajta u EEPROM sa MOVX instrukcijom. Korisnik softvera trba da postavi ovaj bit na 0 pre završetka upisa u EEPROM.

EEMEN Unutrašnja dozvola pristupa EEPROM-u. Kada je EEMEN = 1, MOVX instrukcija sa DPTR će pristupiti EEPROM-u na čipu umesto spoljašnjoj memoriji za podatke ako je upotrebljena adresa manja od 2K. Kada je EEMEN = 0 ili upotrebljena adresa je 2K, MOVX sa DPTR-om pristupa spoljašnjoj memoriji za podatke.

DPS Biranje registra pokazivača podataka. DPS = 0 izabrana je prva banka registra pokazivača podataka, DP0, a DPS = 1 izabrana je druga banka, DP1.

RDY/BSY RDY/BSY (spremna/zauzeta) zastava za EEPROM memoriju za podatke. Ovaj bit se samo može čitati i on se briše uz pomoć hardvera u toku ciklusa programiranja na čipu EEPROM-a. On je postavljen pomoću hardvera nakon završetka programiranja. Važno je da RDY/BSY će biti obrisani davno pre prestanka MOVX instrukcije koju ima inicijalizacioni ciklus programiranja.

WRTINH WRTINH (zabrana upisa) je bit koji se samo može čitati i koji se briše hardverski kada je VCC previše nizak za ciklus programiranja kod EEPROM-a koji će biti obavljen. Kada je ovaj bit obrisan, ciklusa programiranja će biti neuspešan ili novi ciklus programiranja neće početi.

Page 35: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

34

3.2.1.14 IN-sistem programiranje (ISP) specifikacija Atmelov AT89S8253 nudi 12K bajta in-sistem programabilne fleš kodne memorije i 2K bajta EEPROM memorije za podatke.

Sl. Konektori ISP programiranja komponente

Upozorenje: SCK frekfencija trebalo bi biti manja od [XTAL frekfencije] /8

3.2.1.15 UART UART na AT89S8253 radi na istovetni način kao UART na AT89C8253. U dopuni njegovog uobičajenog režima rada, UART može prikazati detektovane okvire grešaka po otkrivanju nedostajanja stop bita i automatske adrese prepoznavanja. UART takoñe potpuno podržava multiprocesorsku komunikaciju kao rad standardnog 80C51 UART-a. Kada se upotrebljava za uramljivanje detektovane greške, UART posmatra nedostatak stop bita u komunikaciji. Izgubljeni bit će postaviti FE bit u SCON registru. FE bit deli SCON.7 bit sa SM0 i funkcija za SCON.7 je odreñena po PCON.6 (SMOD0). Ako je SMOD0 postavljen tada SCON.7 funkcioniše kao FE. SCON.7 funkcioniše kao SM0 kada je SMOD0 obrisan. Kod upotrebe kao FE, SCON.7 može jedino biti obrisan softverski.

Page 36: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

35

SCON - Registar kontrole serijskog porta

Simbol Funkcija FE Bit okvira greške. Ovaj bit je postavljen pomoću prijemnika kada je nevažeći

stop bit detektovan. FE bit nije obrisan posle važećeg okvira ali bi trebalo biti obrisan softverski. SMOD0 bit mora biti postavljen da omogući korišćenje FE bita. FE će biti postavljen bez obzira na status SMOD-a.

SM0 Serijski port mod bit 0, (SMOD mora = 0 do pristupa bita SM0)

Simbol Funkcija SM1 Serijski port mod bit 1

SM0 SM1 Mod Opis Baud rejt 0 0 0 Pomerački registar Fosc/12 0 1 1 8 bitni UART promenjiv 1 0 2 9 bitni UART Fosc/64 ili Fosc/32 1 1 3 9 bitni UART promenjiv

SM2 Omogućavanje osobine Automatskog adresnog prepoznavanja u modu 2 i 3. Ako SM2 = 1 tada RI neće biti postavljen sem ako prijem 9-tog bita podataka (RB8) je 1, označava adresu, a prijemni bajt je Data ili Broadkest adresa. U modu 1, ako SM2 = 1 tada RI neće biti aktivan sem ako je validan stop bit bio primljen, a prijemni bajt je Data ili Broadkest adresa. U modu 0, SM2 treba biti 0.

REN Dozvola serijskog prijema. Postavljanjem pomoću softvera omogućuje se prijem. Softverskim brisanjem onemogućuje se prijem.

TB8 9 bitni podatak koji će biti poslan u modu 2 i 3. Postavljanje ili brisanje pomoću softvera po želji.

RB8 U modu 2 i 3, 9 bitni podatak koji je bio primljen. U modu 1, ako SM2 = 0, RB8 je stop bit koji je bio primljen. U modu 0, RB8 nije upotrebljen.

TI Zastava predajnog prekida. Postavlja se pomoću hardvera na kraju 8-og bita u modu 0 ili na početku kod stop bita u drugim modovima u bilo kom serijskom prenosu. Mora biti obrisan softverski.

RI Zastava prijemnog prekida. Postavlja se pomoću hardvera na kraju 8-og bita u modu 0 ili na polovini puta vremena stop bita u drugim modovima u bilo kom serijskom prijemu (sem pogledati SM2). Mora biti obrisan softverski.

Napomena: SMOD je smešten u PCON.7 Fosc = frekfencija

Page 37: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

36

3.2.2 AT89ISP kablovski interfejs

3.2.2.1 Uvod Ova uvodna nota opisuje Atmelov AT89ISP kablovski interfejs. Ovaj in-sistem kabli za programiranje komunicira serijski sa Atmelovom AT89S / AT89LP mikrokontrolerima i reprogramiranje njih unutar strujnog kola bez pomeranja. Zbog površinskog montiranja komponente, eliminisanje ovog postupka veoma smanjuje verovatnoću izazivanja oštećenja kod nameštanja / skidanja kod jako osetljivih nožica i dopušta promene projekta i korigovanja program / parametara u kolu.

3.2.2.2 AT89ISP softver AT89ISP softver je osnovno sredstvo za in-sistem programiranje (ISP) kod Atmelovih AT89S / AT89LP komponenti. To obezbeñuje neposredni interfejs za in-sistem programiranje koji može biti pokrenut od strane personalnog računara (PC-a). Softver se pokreće pod Windows® 9x/ME/2000/XP, WindowsNT® operativnim sistemima. Softver ima opsežna podešavanja osobina koja dopuštaju korisniku posmatranje programa i brisanje podataka iz Atmelovih AT89S / AT89LP komponenti. Detaljni Adobe® Acrobat® dokument propračuje opisane osobine / funkcije softvera.

Nakon startovanja softvera Atmel AT89ISP potrebno je izvršiti odreñena podešavanja. Klikom na Options otvara se padajući meni sa sledećim opcijama:

• Select Port – vrši se čekiranje porta računara za koji je povezan hardver, • Select Devices... – izbor upotrebljenog mikrokontrolera (sl. 3.2.2.2.1),

• Initialize Target – uspostavljanje veze.

Zatim se vrši učitavanje HEX fajla željenog programa. Na kraju treba kliknuti na Instructions / Auto Program, čime se vrši flešovanje programa u mikrokontroler.

Page 38: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

37

Sl. 3.2.2.2.1 Softver Atmel AT89ISP

3.2.2.3 AT89ISP kabli

Za upotrebu AT89ISP softvera, korisnik mora imati AT89ISP kabli. Ovaj kabli mora biti nabavljen direktno od Atmela ili ovlašćenih Atmelovih predstavnika. ISP kabl pinovi moraju biti povezani ka AT89S / AT89LP komponentama na način kao na slici 4-1na sledećoj strani. 25 pinski muški konektor uključiti u paralelni port personalnog računara (PC-a) korisnika. 10 pinski ženski IDC konektor uključiti u 10 pinski mučki konektor na odredišnoj ploči korisnika. Polarizacija 10 pinova priključaka muškog konektora preporučena je da bi se izbeglo pogrešmo povezivanje. Pinaut prikazan dole na slici prikazuje cilj 10 pinskog muškog konektora priključenog na korisničku ploču u svojstvu pogleda odozgo. Upozorenje da je pin SS (P1.4) potreban za sve AT89LP (jedno ciklična jezgra) proizvode, ali ne i za AT89S proizvode.

Sl. Pinaut 10 pinskog muškog konektor AT89ISP kabla

Upozorenje : NC = ne povezan Iskorišćeni pinovi su naznačeni bojom

Page 39: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

38

3.2.2.4 Dimenzije konektora

Sl. Dimenzije 10 pinskog muškog konektora

3.2.2.5 Povezivanje Pravilan način povezivanja ženskog konektorskog kraja sa AT89ISP kablom prema 10 pinskom priključnom mučkom konektoru treba ispraviti priključak "strelicu" prema pinu 1. Na kraju kučišta kabla, postignuti pouzdan priključak "strelica" zauzima vidljiv sledeću stranu male PC ploče (nedaleko od nje). Pinaut Atmelovog AT89ISP kabla

PIN IME KOMENTAR 1 SCK serijski takt 3 MISO Master ulaz - Slave izlaz 4 Vcc napon napajanja mete 5 RST MCU reset mete 8 Slave Selekt

9 MOSI Master izlaz - Slave ulaz 2, 10 GND zajednička masa 6, 7 NC ne povezano

Page 40: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

39

Sl. AT89ISP model povezivanja ploče

3.2.2.6 Naponski nivoi

AT89ISP kabli zahteva regulisano DC snabdevanje iz korisničke ciljne ploče. Kabli bi trebalo upotrebljavati korektno izmeñu specificiranih operativnih naponskih granica. Aktuelni operativni Vcc naponski opseg za AT89S kabli je od 2.7 do 5V.

3.2.3 LCD displej

Sl. 3.2.3.1 Izgled LCD displeja

Ove komponente su specijalizovane za rad sa mikrokontrolerom što znači da ne mogu da se aktiviraju klasičnim IC kolima. Služe za ispisivanje različitih poruka na minijaturnom LCD ekranu. Ovde je opisan model koji se zbog niske cene i velikih mogućnosti najčešće koristi u praksi. Projektovan je oko kontrolera HD44780 (Hitachi) i može da ispisuje poruke u dva reda sa po 16 karaktera. Prikazuje sva slova abecede, grčka slova, znake interpunkcije, matematičke simbole itd. Pored toga, moguće je prikazati i oznake koje korisnik sam isprojektuje. U korisne funkcije spada i automatsko pomeranje poruke preko ekrana (šiftovanje u levo i u desno), pojavljivanje kursora, pozadinsko osvetljenje i sl. Ima 14 (16 ako je ugrañeno pozadinsko osvetljenje) izvoda i njihova specifikacija je priložena u sledećoj tabeli.

Page 41: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

40

Sl. 3.2.3.2 Pinovi LCD displeja

LCD displej se sastoji iz dva reda sa 16 polja u kojima se ispisuju karakteri dok se svako od ovih polja sastoji od matrice 5x8 ili 5x11 piksela. Kontrast na ekranu zavisi od napona napajanja i od toga da li se poruke ispisuju u jednom ili u dva reda. Zbog toga se na izvod označen sa Vee priključuje promenjivi napon 0 – Vdd (obično se za ovo koristi trimer potenciometar). Kod nekih verzija displeja, ispod LCD ekrana je ugrañeno pozadinsko osvetljenje (plave ili zelene LE diode). Ako se koristi u toku rada, redno sa jednim od izvoda treba povezati otpornik za ograničenje struje (kao kod svake LE diode). U zavisnosti od toga koliko se linija koriste za povezivanje sa mikrokontrolerom, razlikuje se 8-bitni i 4 –bitni način rada LCD displeja (odgovarajući mod se odreñuje na početku rada u procesu koji se zove inicijalizacija). U prvom slučaju, podaci se prenose preko izvoda D0-D7, a u drugom slučaju, zbog uštede dragocenih I/O pinova mikrokontrolera, za komunikaciju se koriste samo viši 4 bita (D4-D7) dok se ostali mogu ostaviti nepovezani. U tom slučaju, svaki podatak se LCD-u šalje u dva koraka: prvo se šalju viša 4 bita (ono što bi se inače slalo linijama D4-D7) a zatim se šelju niži 4 bita. Pošto nakon inicijalizacije LCD displeja znak za trik on će pravilno spojiti i protumačiti svaki podatak koji primi. Pored ovoga, zahvaljujući činjenici da se podaci retko čitaju iz LCD-a (podaci uglavnom idu iz mikrokontrolera prema LCD-u), često je moguće uštedeti još jedan I/O pin. Jednostavno tako što se pin R/W poveže na masu. Ovakva ušteda ima svoju cenu nemogućnost čitanja busy flega. Da bi se rešio ovaj problem dovoljno je posle svakog karaktera ili komande ostaviti dovoljno vremena da LCD sigurno obavi svoj deo posla. Pošto izvršenje najsporije komande traje oko 1.64ms, zadrška od oko 2ms je sasvim dovoljna.

Page 42: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

41

Sl. 3.2.3.3 Povezivanje displeja

Unutar displeja se nalaze tri memorijska bloka: DDRAM Display Data RAM CGRAM Character Generator RAM CGROM Character Generator ROM U DDRAM memoriju se smeštaju karakteri koji treba da budu prikazani na displeju. Veličina ove memorije je dovoljna za smeštanje 80 znakova a jedan deo ovih lokacija ima direktne veze sa poljima na ekranu. Sve funkcioniše prilično jednostavno, dovoljno je konfigurisati displej tako da automatski uvećava adrese (pomeranje udesno) i zatim postaviti početnu adresu za poruku koja treba da se ispiše (npr. 00 hex). Nakon toga svi karakteri koji se pošalju linijama D0 – D7 pojaviće se ispisani u vidu poruke kako smo i navikli – s leva u desno (u ovom slučaju, ispisivanje počinje od prvog polja prve linije na ekranu pošto je adresa 00 hex). Ako se pošalje više od 16 karaktera, oni će i dalje biti memorisani ali neće biti vidljivi. Da bi se prikazali, treba koristiti komandu za pomeranje (shift). Fiktivno, sve

Page 43: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

42

izgleda kao da se LCD pomera levo – desno preko memorijskih lokacija sa karakterima. U stvarnosti, tako se dobija efekat poruke koja prelazi preko ekrana (s leva udesno ili obrnuto). Ako se omogući prikazivanje kursora, on će se pojaviti na mestu koje je trenutno adresirano. Drugim rečima, karakteri se pojavljuju na mestu kursora dok se on automatski pomera na sledeće adresirano polje. Pošto je ovo memorija RAM tipa, podaci u nju mogu da se upisuju i da se očitavaju ali sadržaj se nepovratno gubi nestankom napona napajanja. U CGROM memoriju je fabrički upisana mapa sa izgledom svih karaktera koje displej može da prikaže (svakom karakteru odgovara po jedna memorijska lokacija), kao što je prikazano u narednoj tabeli-

Sl. 3.2.3.4 CGROM memorija Adrese memorijskih lokacija CGROM-a se poklapaju sa standardnim ASCII vrednostima karaktera. To znači, ako u programu koji mikrokontroler izvršava napišemo da pošalje neki znak na port, na portu će se pojaviti binarna vrednost za taj znak (što predstavlja ASCII ekvivalent tog znaka). Kada se binarni broj učita u LCD displej, prikazaće se simbol koji se nalazi na toj adresi u CGROM-u. Ovo važi za sva slova abecede (velika i mala) ali ne i za brojeve! Aka se pažljivo pogleda organizacija CGROM-a videće se da su adrese svih cifara pomerene za 48 u odnosu na vrednost tih cifara (adresa cifre 0 je 48, cifre 1 je 49, cifre 2 je 50 itd.). Zbog toga, da bi se pravilno prikazale cifre, svakoj se pre slanja na LCD displej mora dodati decimalni broj 48.

Page 44: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

43

Pored toga što prikazuje sve standardne karaktere, LCD displej može da prikaže i oznake koje korisnik sam definiše. To omogućava ispisivanje ćirili čnih fontova kao i raznih drugih simbola koji staju u okvir veličine 5 x 8 piksela. Sve je to omogućeno malom RAM memorijom (CGRAM) veličine 64 bajta. Veličina registara u ovoj memoriji je standardna (8bita) ali se koristi samo nižih 5. Logička jedinica u svakom registru predstavlja zatamljen piksel, dok osam lokacija uzetih zajedno predstavljaju jedan znak. Primer na narednoj slici to najbolje ilustruje.

Sl. 3.2.3.5 Primer upotrebe CGRAM memorije Definisanje simbola se obično izvodi na početku programa – jednostavnim upisom nula i jedinica u registre CGRAM-a tako da formiraju željeni oblik. Kada ih treba prikazati, dovoljno je navesti njihovu adresu (obratiti pažnju na prvu kolonu u CGROM mapi karaktera: to nisu adrese ROM memorije već adrese simbola o kojima je ovde reč!). Svi podaci koji se prenose na LCD displej putem izvoda D0-D7 biće tumačeni kao komande ili kao podaci u zavisnosti od logičkog stanja na pinu RS:

RS = 1 Bitovi D0-D7 su adrese karaktera koji treba da se prikažu na ekranu. Ugrañeni procesor adresira ugrañenu mapu karaktera i prikazuje odgovarajući znak. Mesto pojavljivanja je odreñeno DDRAM adresom (ova adresa se prethodno definiše ili se automatski uvećava adresa prethodno unetog karaktera).

RS = 0 Bitovi D0-D7 su komande koje odreñuju način rada displeja.

Page 45: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

44

Odmah nakon dovoñenja napona napajanja, LCD displej se automatski resetuje. Ovaj proces traje oko 15ms. Nakon toga, displej je spreman za rad i nalazi se u fabrički podešenom načinu rada. To znači:

1. Displej je obrisan 2. Način rada

DL = 1 Komunikacija se izvodi 8- bitnom vezom N = 0 Poruke se ispisuju u jednom redu F = 0 Koriste se fontovi formata 5x8 tačaka

3. Uključeno/Isključeno D = 0 Displej je isključen U = 0 Ne vidi se linija kursora B = 0 Iskljkučeno je treptanje (blinkanje) kursora

4. Unos karaktera ID = 1 Adresa na ekranu se automatski uvećavaju za 1 S = 0 Isključeno pomeranje (shift)

Automatski reset se uglavnom obavlja bez problema. Uglavnom ali ne uvek. Ako iz bilo kog razloga napon napajanja ne dostigne punu vrednost u roku od 10ms, displej će početi da se ponaša potpuno nepredvidivo. Ako napojna jedinica ureñaja ne može da ispuni ovaj uslov, ili ako je potrebno obezbediti potpuno sigurno rad, obavezno se primenjuje postupak inicijalizacije tokom koga se (pored ostalog) obavlja pononi reset koji displej uvodi u normalan rad. Algoritam po kome se obavlja inicijalizacija zavisi od toga da li je veza sa mikrokontrolerom ostvarena pomoću 4 ili pomoću 8 linija. I u jednom i u drugom slučaju, posle toga preostaje samo da se zadaju osnovne komande i ispiše poruka.

Uloga Broj pina Naziv Logičko stanje

Opis

Masa 1 Vss - 0V Napajanje 2 Vdd - +5V Kontrast 3 Vee - 0 – Vdd

0 D0 – D7 se tumače kao komande 4 RS

1 D0 – D7 se tumače kao podaci 0 Upis podataka (iz kontrolera u LCD)

5 R/W 1 Čitanje podataka (iz LCD-a u kontroler) 0 Onemogućen pristup LCD displeju 1 Normalan rad K

ontr

ola

rada

6 E Iz 1 u 0 Podaci/komande se prenose u LCD

7 D0 0/1 Bit 0 LSB 8 D1 0/1 Bit 1 9 D2 0/1 Bit 2 10 D3 0/1 Bit 3 11 D4 0/1 Bit 4 12 D5 0/1 Bit 5 13 D6 0/1 Bit 6 P

odac

i / k

oma

nde

14 D7 0/1 Bit 7 MSB

Sl. 3.2.3.6 Uloga izvoda na kućištu

Page 46: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

45

3.2.4 Buzer

Tehničke karakteristike buzera su priložene na sledećoj slici:

3.2.5 Mikro prekida č

Tehničke karakteristike mikro prekidača su priložene na sledećoj slici:

Page 47: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

46

4. Softver

4.1 Algoritam

Page 48: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

47

4.2 Opis softvera Po startovanju sistem ulazi u hardverski reset i iz reseta izlazi kada se napon napajanja na mikrokontroleru stabilizuje. Zatim počinje sa izvršavanjem programa.

Blok inicijalizacija

Prvo se izvršava blok inicijalizacija u kome se vrši podešavanje osnovnih parametara potrebnih u izvršavanju softvera. Za naš softver bitna su podešavanja tajmera 0, tajmera 1, definisanje promenjivih, podešavanje interapta i njihovih prioriteta, postavljanje bitova vezanih za rad LCD displeja. Tajmeri 1 i 0 su podešeni za rad u 16-to bitnom modu brojanja. Dozvoljeni su interapti tajmera i dozvoljen je EXT0 spoljni interapt.

Blok pozdravna poruka

Zatim se u programu izvršava blok pozdravna poruka, kojim se simulira rad Morzeovog telegrafa slanjem na buzer reči ” CAO ”, kodirane Morzeovom azbukom ( tačka se simulira impulsom trajanja 120 ms, a crta se simulira impulsom 360 ms) i na displeju je takoñe ispisana ova poruka.

4.2.1 Glavni program

Glavni program se sastoji iz jedne beskonačne While petlje u kojoj se ispituju odreñeni parametri. Iz ove petlje se iskače samo radi izvršenja neke od dozvoljene 4 interapt rutine ( interapt rutine tajmera 0 i 1, interapt rutina za pritiska tastera i nterapt rutina za otpuštanje tastera ).

Interapt rutina tajmera 0 i 1

U tajmerskim interapt rutinama briše se fleg postavljen prekoračenjem tajmera, resetuje se tajmer i konstanta ”i” se uvećava za jedan.

Interapt rutina za pritisak tastera

U ovu rutinu program ulazi kada doñe do pritiska tastera (prekidač preñe u prvi položaj), koji je povezan na INT0 ulaz mikrokontrolera. Po ulasku u rutinu zabranjuju se svi prekidi, uključuje se displej i buzer, zatim se zaustavlja tajmer 1 koji se zatim resetuje. Potom se vrši otklanjanje treptaja tastera upotrebom vremenskog kašnjenja od 30 ms. Konstanta ”i” se postavlja na vrednost nule, gase se žuta i zelena dioda. Zatim se proverava vrednost baffera_1 da li je jednaka 0x28 ( kodna reč za Wait ), i ako jeste, u baffer_1 se upisuje jedinica da bi se nastavio rad. Zatim se pokreće tajmer 0, dozvoljavaju se svi prekidi, zabranjuje se prekid pritiska tastera i odobrava prekid otpuštanja tastera.

Interapt rutina za otpuštanje tastera

U ovu rutinu program ulazi kada doñe do otpuštanja tastera (prekidač preñe u drugi položaj), koji je povezan na EXT1 ulaz mikrokontrolera. Po ulasku u rutinu zabranjuju se svi prekidi, isključuje se buzer, zatim se zaustavlja tajmer 0 koji se zatim resetuje. Potom se vrši otklanjanje treptaja tastera upotrebom vremenskog kašnjenja od 30ms. Zatim se pomera vrednost Buffera_1 za jedno mesto ulevo, utvrñuje se uporeñivanjem da li je konstante ”i” veća od 2 da li je bila otkucana crta ili tačka ( ako je ”i” veće od 2 onda je crta, a ako je manja onda je tačka) i zatim se na mestu najnižeg bita u bafferu_1 upisuje ”1” ili ”0” ( za crtu upisuje se ”1”, a za tačku ”0”) .Zatim se pokreće tajmer 1, dozvoljavaju se svi prekidi, zabranjuje se prekid otpuštanja tastera i odobrava prekid pritiskom tastera.

Page 49: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

48

While petlja ( while(1) )

Program u While petlji ispituje konstantu ”i” koju tajmeri uvećavaju u svojim interapt rutinama ( “i“ se uvećava nakon isteka vremena od 70.1 ms). Kada je i = 9 ispituje se da li je otkucan poziv na komunikaciju Morzeovom azbukom, ako jeste promenom vrednosti u registru baffer_2 zabranjuje se predhodno ispitivanje u sledećim prolascima kroz while petlju. Postavljaju se sledeće vrednosti i = 0 i baffer_1 = 0x01 čime su obezbeñeni uslovi za kucanje novog karaktera. Kucanjem startnog signala uključuje se kursor na displeju, i omogućuje se slanje narednog karaktera. Kada je i = 10 prvo se ispituje da li je otkucan startni signal da bi se postavljanjem odgovarajuće vrednosti u registar baffer_2 omogućilo ispitivanje otkucanih karaktera, tj. da li postoji Morzeov kôd za otkucanu povorku crta i tačaka. „i“ se postavlja na nulu. Kada „i“ ponovo dostigne vrednost 10 i ako je prethodno bio otkucan startni signal ulazi se u proceduru za pronalaženje karaktera i njegovo ispisivanje na LCD displeju. Kada je i = 31, proverava se da li je zelena LED dioda uključena ( zelena dioda je upaljena nakon kucanja znaka za kraj slanja), ako nije pomeramo kursor za jedno mesto u desno. Kucanjem znaka za kraj slanja, pored toga što se pali zelena LED dioda, isključuje se kursor. Zato se ispituje stanje zelene LED diode, da nakon kucanja signala za kraj slanja ne bi došlo do ponovnog pojavljivanja kursora onog trenutka kada se, pri kucanju poruke, pravi razmak. Kada je i = 72, ako nije upaljena zelena dioda i ako nije u registru baffer_0 vrednost 0xFF, prelazi se u novi red i upisuje u registar baffer_0 vrednost 0xFF, čime se omogućuje da kursor samo jednom preñe u drugi red pri kucanju jedne poruke. Kada je i = 100, i ako je zelena dioda uključena na buzer se šalje simulacija poruke o uspešnom prijemu. Kada je i = 255, i ako je zelena dioda uključena, zaustavi se tajmer 1, obriše se displej, isključi se kursor, ugasi se zelena dioda i tada je potrebno ponovo otkucati startni signal za sledeću poruku. A ako nije uključena zelena LED dioda i ako je vrednost u registru baffer_2 jednaka 0x02, što znači da je neki od karaktera otkucan, briše se displej, uključuje se žuta LED dioda i šalje se signal greške na buzer. Takoñe, kursor se postavlja na početak, i time se simulira zahtev za ponovno kucanje poruke, odnosno treba otkucati željenu poruku i signal za kraj slanja da bi ona bila razumljiva onome ko je prima. U oba slučaja, odnosno i kada jeste uključena zelena LED dioda i kada nije, u registar baffer_0 se upisuje vrednost 0x00, i konstanta “i” se postavlja na nulu da bi se omogućila željena putanja kroz naredni prolazak u while petlji. To znači da se konstanta „i“ ponovo uvećava od nule da bi se pri odreñenim vrednostima iste izvršavali neki od programa u if petljama, a što se tiče vrednosti registra baffer_0 da bi bilo omogućeno kursoru da preñe u drugi red displeja u narednoj poruci. Proceduru za pronalaženje karaktera i njegovo ispisivanje na LCD displeju

Kada se uñe u ovu proceduru uporeñuje se vrednost registra baffer_1 sa vrednošću kojom je predstavljen odreñeni karakter iz Morzeove azbuke. Način predstavljanja, odnosno vrednost Morzeovog kôda u registru baffer_1 prikazana je u tabeli, a za dobijanje te vrednosti zadužena je interapt rutina za otpuštanje tastera. Kada se pronañe otkucani karakter, on se ispisuje na displeju, registar baffer_1 se postavlja na vrednost 0x01 čime je spreman za kucanje novog karaktera i vrednost konstante „i“ se postavlja na nulu. Ako se ne pronañe ni jedan od karaktera, na buzeru se simulira signal greške uz blinkanje žute LED dide. Kada se otkuca signal za kraj slanja, uključuje se zelena LED dioda i u registre baffer_1 i baffer_2 se upisuje 0x01, a “i“ postavlja na nulu. Kada se otkuca signal za pauzu, zamrzava se tekst na displeju, u registar baffer_1 upisuje vrednost 0x01 i konstanta „i“ postavlja na nulu.

Page 50: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

49

KARAKTER MORZEOV KÔD BINARNA VREDNOST HEKSADEC. VRE DNOST

A . - 0 0 0 0 0 1 0 1 0 5

B - . . . 0 0 0 1 1 0 0 0 1 8

C - . - . 0 0 0 1 1 0 1 0 1 A

D - . . 0 0 0 0 1 1 0 0 0 C

E . 0 0 0 0 0 0 1 0 0 2

F . . - . 0 0 0 1 0 0 1 0 1 2

G - - . 0 0 0 0 1 1 1 0 0 E

H . . . . 0 0 0 1 0 0 0 0 1 0

I . . 0 0 0 0 0 1 0 0 0 4

J . - - - 0 0 0 1 0 1 1 1 1 7

K - . - 0 0 0 0 1 1 0 1 0 D

L . - . . 0 0 0 1 0 1 0 0 1 4

M - - 0 0 0 0 0 1 1 1 0 7

N - . 0 0 0 0 0 1 1 0 0 6

O - - - 0 0 0 0 1 1 1 1 0 F

P . - - . 0 0 0 1 0 1 1 0 1 6

Q - - . - 0 0 0 1 1 1 0 1 1 D

R . - . 0 0 0 0 1 0 1 0 0 A

S . . . 0 0 0 0 1 0 0 0 0 8

T - 0 0 0 0 0 0 1 1 0 3

U . . - 0 0 0 0 1 0 0 1 0 9

V . . . - 0 0 0 1 0 0 0 1 11

W . - - 0 0 0 0 1 0 1 1 0 B

X - . . - 0 0 0 1 1 0 0 1 1 9

Y - . - - 0 0 0 1 1 0 1 1 1 B

Z - - . . 0 0 0 1 1 1 0 0 1 C

0 - - - - - 0 0 1 1 1 1 1 1 3 F

1 . - - - - 0 0 1 0 1 1 1 1 2 F

2 . . - - - 0 0 1 0 0 1 1 1 2 7

3 . . . - - 0 0 1 0 0 0 1 1 2 3

4 . . . . - 0 0 1 0 0 0 0 1 2 1

5 . . . . . 0 0 1 0 0 0 0 0 2 0

6 - . . . . 0 0 1 1 0 0 0 0 3 0

7 - - . . . 0 0 1 1 1 0 0 0 3 8

8 - - - . . 0 0 1 1 1 1 0 0 3 C

9 - - - - . 0 0 1 1 1 1 1 0 3 E

. . - . - . - 0 1 0 1 0 1 0 1 5 5

, - - . . - - 0 1 1 1 0 0 1 1 7 3

? . . - - . . 0 1 0 0 1 1 0 0 4 C

Sl. 4 Vrednosti registra baffer_1 koje predstavljaju odreñeni karakter Morzeove azbuke

Page 51: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

50

5. Realizacija hardvera

Na sledećim slikama su prikazane električna šema glavnog sistema i raster pločice, kao i šema štampane ploče glavnog sistema, odnosno, PCB-a koje su izrañene u programskom paketu DXP korišćenjem programa Altium designer 6 Evaluation version [5].

Sl. 5.1 Električna šema sistema

Sl. 5.2 Električna šema raster pločice

Page 52: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

51

Sl. 5.3 Layout gornje strane PCB-a

Sl. 5.4 Layout donje strane PCB-a

Page 53: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

52

6. Realizacija softvera

Softver za ovaj projekat je napisan programskim jezikom C51 u programu mikroC 8051 [4] , gde je izvršeno i testiranje.

6.1 MikroC 8051 U daljem tekstu ćemo vas upoznati sa programom mikroC 8051, njegovim radnim okruženjem i osnovnim operacijama koje su potrebne da bi ste u njemu mogli da napišete program na programskom jeziku C51 i kako bi taj isti program testirali. Na početku rada treba prvo kreirati novi projekat, to ćemo vam ilustrovati kroz nekoliko osnovnih koraka:

Najlakši način da kreirate projekat je pomoću čarobnjaka za kreiranje novog projekta, u padajućem meniju Project > NewProject ili pomoću pritiska na ikonu New Project na Project toolbar. Kliknuti ovde za početak kreiranja novog projekta

Page 54: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 53 -

Klikom na New Project otvara se čarobnjak za kreiranje novog projekta i sada u nekoliko koraka treba podesiti osnovne parametre projekta. Izgled prozora čarobnjaka dat je na sledećoj slici.

Klikom na Next u prozoru čarobnjaka otvara se novi prozor u kome treba izabrati željeni mikrokontroler sa kojim se radi u projektu, u našem slučaju je to AT89S8253, sledeća slika.

Page 55: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 54 -

Klikom na Next u prozoru čarobnjaka otvara se novi prozor u kome treba izabrati željenu frekfenciju kloka na kojem će raditi mikrokontroler, u našem slučaju je to 11.0592MHz, sledeća slika.

Klikom na Next u prozoru čarobnjaka otvara se novi prozor u kome treba izabrati željenu količinu memorije koju će zauzeti program, sledeća slika.

Page 56: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 55 -

Klikom na Next u prozoru čarobnjaka otvara se novi prozor u kome treba izabrati željenu lokaciju gde će biti smešten projekat, kao i zadati ime projektu, sledeća slika.

Klikom na Next u prozoru čarobnjaka otvara se novi prozor u kome treba izabrati željene fajlove koje treba dodati u projekat, naredna slika.

Page 57: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 56 -

Zatim se otvara poslednji prozor u čarobnjaku i klikom na Next izvršeno je kreiranje novog projekta. Sada se na ekranu vidi potpuno okruženje programa sa svim potrebnim prozorima i alatima i može se krenuti sa pisanjem koda programa , naredna slika

Code Editor - podešavanje osobina sintaksne površine, slaganje kôda, kôd pomoćnik, asistent parametara, auto korekcija za greške u sintaksi i zakonski šabloni (automatski završetak). Code Explorer - (uz prečicu tragača tastature i prečice tragača brze pomoći) omogućuje laganu navigaciju i pregled koda. Project Manager - omogućuje višestruki projekt menadzment. Project Settings - omogućuje osnovna projektna podešavanja. Library Manager - omogućuje jednostavno manipulisanje bibliotekama upotrebljenim u projektu. Message Window - prikazuje sve poruke dobijene u toku kompajliranja i linkovanja.

Page 58: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 57 -

Provera sintaksne ispravnosti kôda programa se vrši klikom u padajućem meniju Project na opciju Build. Klikom na Build provera se sintaksna ispravnost kôda

Simulacija kôda programa se vrši klikom u padajućem meniju Run na opcij Start Debugger. Klikom na Start Debugger pokreće se simulacija kôda

Page 59: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 58 -

6.2 Kôd // inicijalizacija promenljivih int i = 0; unsigned short baffer_0 = 0x00; unsigned short baffer_1 = 0x01; unsigned short baffer_2 = 0x00; // definisanje portova za LCD sbit LCD_RS at P3.B6; sbit LCD_EN at P3.B7; sbit LCD_D7 at P0.B7; sbit LCD_D6 at P0.B6; sbit LCD_D5 at P0.B5; sbit LCD_D4 at P0.B4; // interapt rutina za pritisak tastera void Pritisak_tastera ( ) org 0x03 { EA = 0; // zabrana svih prekida P3.B5 = 0; // ukljuci displej P2.B1 = 0; // ukljuci buzzer TR1 = 0; // zaustavi tajmer_1 TH1 = 0x00; // reset viseg bajta tajmera_1 TL1 = 0x00; // reset nizeg bajta tajmera_1 Delay_ms ( 30 ); // otklanjanje treperenja tastera i = 0; // reset, spreman za nova brojanja vremena kojim se // detektuje crta ili tacka // (crta > 2 x 71,1 ms) P2.B2 = 1; // iskljuci zutu diodu P2.B3 = 1; // iskljuci zelenu diodu if ( baffer_1 = = 0x28 ) // omogucava nastavak rada ako je { // doslo do zamrzavanja teksta na displeju (pauze) baffer_1 = 0x01; // kucanjem Wait-a ( .-... ) } TR0 = 1; // startuj tajmer_0 EA = 1; // dozvola svih prekida EX0 = 0; // zabrana tekuceg prekida EX1 = 1; // dozvola prekida koji nastaje otpustanjem tastera } // interapt rutina za otpustanje tastera void Otpustanje_tastera ( ) org 0x13 ilevel 1 { EA = 0; // zabrana svih prekida P2.B1 = 1; // iskljuci buzzer TR0 = 0; // zaustavi tajmer_0

Page 60: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 59 -

TH0 = 0x00; // reset viseg bajta tajmera_0 TL0 = 0x00; // reset nizeg bajta tajmera_0 Delay_ms ( 30 ); // otklanjanje treperenja tastera if ( baffer_1.B6 = = 1 ) // pomeranje bitova registra baffer_1 { // u levo za jednu poziciju baffer_1.B7 = 1; // i upis nule ili jedinice } // na mestu najnizeg bita else // u zavisnosti od toga da li je { // registrovana tacka ili crta, respektivno baffer_1.B7 = 0; } if ( baffer_1.B5 = = 1 ) { baffer_1.B6 = 1; } else { baffer_1.B6 = 0; } if ( baffer_1.B4 = = 1 ) { baffer_1.B5 = 1; } else { baffer_1.B5 = 0; } if ( baffer_1.B3 = = 1 ) { baffer_1.B4 = 1; } else { baffer_1.B4 = 0; } if ( baffer_1.B2 = = 1 ) { baffer_1.B3 = 1; } else { baffer_1.B3 = 0; } if ( baffer_1.B1 = = 1 )

Page 61: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 60 -

{ baffer_1.B2 = 1; } else { baffer_1.B2 = 0; } if ( baffer_1.B0 = = 1 ) { baffer_1.B1 = 1; } else { baffer_1.B1 = 0; } if ( i < 2 ) // detektovanje crte ili tacke { baffer_1.B0 = 0; } else { baffer_1.B0 = 1; } i = 0; // reset, spreman za nova brojanja vremena kojim se // 1.za i = 10 ako se prepozna slovo // dolazi do njegovog ispisivanja // 2.za i = 30+10 dolazi do pomeranja kursora u desno // 3.za i = 40+40 dolazi do postavljanja kursora // u drugi red displeja TR1 = 1; // startuj tajmer_1 EA = 1; // dozvola svih prekida EX1 = 0; // zabrana tekuceg prekida EX0 = 1; // dozvola prekida koji nastaje pritiskom tastera } // rutina za prekoracenje tajmera_0, vreme od 71,1 ms // ukljucen dok je pritisnut taster void tajmer_0 ( ) org 0x0B ilevel 2 { TR0 = 0; // zaustavi tajmer_0 TF0 = 0; // prebrisi fleg da bi registrovao ponovni overflow i + + ; // uvecaj konstantu "i" TH0 = 0x00; // resetovanje viseg bajta tajmera_0 TL0 = 0x00; // resetovanje nizeg bajta tajmera_0 TR0 = 1; // startuj timer_0 }

Page 62: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 61 -

// rutina za prekoracenje tajmera_1, vreme od 71,1 ms // ukljucen kada se desi otpustanje tastera void tajmer_1 ( ) org 0x1B ilevel 3 { TR1 = 0; // zaustavi tajmer_1 TF1 = 0; // prebrisi fleg da bi registrovao ponovni overflow i + + ; // uvecaj konstantu i TH1 = 0x00; // resetovanje viseg bajta tajmera_1 TL1 = 0x00; // resetovanje nizeg bajta tajmera_1 TR1 = 1; // startuj timer_1 } void main ( ) { EX0 = 1; // dozvola eksternog prekida, pritisak tastera ET0 = 1; // dozvola prekida tajmera_0 ET1 = 1; // dozvola prekida tajmera_1 P3.B5 = 0; // ukljuci displej Lcd_Init ( ); // inicijalizacija LCD-a Lcd_Cmd ( LCD_CLEAR ); // obrisi displej Lcd_Cmd ( LCD_CURSOR_OFF ); // iskljuci kursor // inicalizacija tajmera_1 // tajmer_ u modu 1 (16-bitni tajmer) TMOD.T1_GATE = 0; // ukljuci tajmer kada se bit TR1 setuje TMOD.T1_CT = 0; // interni tajmer_1 TMOD.T1_M1 = 0; // M1_M0 = 01 => 16-bitni tajmer/brojac mod TMOD.T1_M0 = 1; // inicalizacija tajmera_0 // tajmer_0 u modu 1 (16-bitni tajmer) TMOD.T0_GATE = 0; // ukljuci tajmer kada se bit TR1 setuje TMOD.T0_CT = 0; // interni tajmer_0 TMOD.T0_M1 = 0; // M1_M0 = 01 => 16-bitni tajmer/brojac mod TMOD.T0_M0 = 1; // PPOZDRAVNA PORUKA - SIMULACIJA RADA MORZEOVOG TELEGRAFA // // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke

Page 63: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 62 -

// slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 360 ); // kasnjenje, trajanje 3 tacke Lcd_Out ( 1, 7, "C" ); // slanje slova "C" // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 360 ); // kasnjenje, trajanje 3 tacke Lcd_Out ( 1, 8, "A" ); // slanje slova "A" // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 360 ); // kasnjenje, trajanje 3 tacke Lcd_Out ( 1, 9, "O" ); // slanje slova "O"

Page 64: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 63 -

Delay_ms ( 5000 ); // zadrzavanje poruke na displeju 5s Lcd_Cmd ( LCD_CLEAR ); // obrisi displej EA = 1; // dozvola svih prekida while (1) { if ( baffer_2 = = 0x00 ) // slanje poziva ( -.- ) { // i simulacija odgovora if ( baffer_1 = = 0x0D ) // OMOGUCEN JE PRENOS // { TR1 = 0; // zaustavi tajmer_1 EA = 0; // onemoguci prekide Delay_ms ( 360 ); // sacekaj // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke baffer_2 = 0x01; // komunikacija se uspostavlja samo jednom !!! baffer_1 = 0x01; i = 0; EA = 1; TR1 = 1; // SPREMAN ZA RAD ! // } } if ( i = = 9 ) { if ( baffer_1 = = 0x35 ) // kada se otkuca Starting signal ( -.-.- ) ukljuci { // kursor i omoguci slanje narednih karaktera Lcd_Cmd ( LCD_UNDERLINE_ON ); Lcd_Cmd ( LCD_FIRST_ROW ); baffer_1 = 0x01; baffer_2 = 0x02; i = 0; } }

Page 65: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 64 -

if ( i = = 10 ) // posle 10 x 71.1ms (0.7s) i ako je otkucan { // Starting signal, tj. baffer_2 = 0x01 if ( baffer_2 = = 0x02 ) // ulazi se u proceduru pronalazenja { // otkucanog karaktera i njegovo slanje na LCD if ( baffer_1 = = 0x45 ) { P2.B3 = 0; // End of work ( ...-.- ) baffer_1 = 0x01; // UKJUCUJE SE ZELENA DIODA baffer_2 = 0x01; // IGNORISU SE NAREDNI PRITISCI TASTERA i = 0; } if ( baffer_1 = = 0x05 ) { Lcd_Out_Cp ( "A" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x18 ) { Lcd_Out_Cp ( "B" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x1A ) { Lcd_Out_Cp ( "C" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0C ) { Lcd_Out_Cp ( "D" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x02 ) { Lcd_Out_Cp ( "E" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x12 ) { Lcd_Out_Cp ( "F" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0E ) { Lcd_Out_Cp ( "G" );

Page 66: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 65 -

baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x10 ) { Lcd_Out_Cp ( "H" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x04 ) { Lcd_Out_Cp ( "I" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x17 ) { Lcd_Out_Cp ( "J" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0D ) { Lcd_Out_Cp ( "K" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x14 ) { Lcd_Out_Cp ( "L" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x07 ) { Lcd_Out_Cp ( "M" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x06 ) { Lcd_Out_Cp ( "N" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0F ) { Lcd_Out_Cp ( "O" ); baffer_1 = 0x01; i = 0;

Page 67: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 66 -

} if ( baffer_1 = = 0x16 ) { Lcd_Out_Cp ( "P" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x1D ) { Lcd_Out_Cp ( "Q" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0A ) { Lcd_Out_Cp ( "R" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x08 ) { Lcd_Out_Cp ( "S" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x03 ) { Lcd_Out_Cp ( "T" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x09 ) { Lcd_Out_Cp ( "U" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x11 ) { Lcd_Out_Cp ( "V" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x0B ) { Lcd_Out_Cp ( "W" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x19 )

Page 68: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 67 -

{ Lcd_Out_Cp ( "X" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x1B ) { Lcd_Out_Cp ( "Y" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x1C ) { Lcd_Out_Cp ( "Z" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x3F ) { Lcd_Out_Cp ( "0" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x2F ) { Lcd_Out_Cp ( "1" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x27 ) { Lcd_Out_Cp ( "2" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x23 ) { Lcd_Out_Cp ( "3" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x21 ) { Lcd_Out_Cp ( "4" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x20 ) { Lcd_Out_Cp ( "5" );

Page 69: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 68 -

baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x30 ) { Lcd_Out_Cp ( "6" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x38 ) { Lcd_Out_Cp ( "7" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x3C ) { Lcd_Out_Cp ( "8" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x3E ) { Lcd_Out_Cp ( "9" ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x73 ) { Lcd_Out_Cp ( "," ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x55 ) { Lcd_Out_Cp ( "." ); baffer_1 = 0x01; i = 0; } if ( baffer_1 = = 0x4C ) { Lcd_Out_Cp ( "?" ); baffer_1 = 0x01; i = 0; // kucanjem Wait-a ( .-... ) dolazi do } // zamrzavanja otkucanog teksta if ( baffer_1 = = 0x28 ) // sve dok se ponovo ne pritisne taster { // pri cemu se odmah ulazi u proceduru i = 0; // za slanje narednog karaktera } // omogucuje samo jedan ulazak u petlju za i + +; // prepoznavanje karaktera

Page 70: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 69 -

} } if ( i = = 11 ) // ako se ne pronañe otkucani karakter { // blinka zuta dioda i salju se 8 tacaka if ( baffer_1 = = 0x01 ) // ( ........ ) na buzzer kao signal { // GRESKE } else { TR1 = 0; // zaustavi tajmer_1 // SLANJE SIGNALA GRESKE NA BUZZER // // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu

Page 71: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 70 -

Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer P2.B2 = 0; // ukljuci zutu diodu Delay_ms(120); // simulacija tacke P2.B1 = 1; // iskljuci buzzer P2.B2 = 1; // iskljuci zutu diodu Delay_ms(120); // kasnjenje, trajanje tacke baffer_1 = 0x01; // spremi baffer_1 za ponovno kucanje karaktera i = 0; // izlazak iz petlje TR1 = 1; // startuj tajmer_1 } } if ( i = = 31 ) // po otkucanom karakteru i isteku vremena od { // 30 x 71.1ms + 711ms = 2.85s if ( P2.B3 = = 0 ) // pravi se razmak na displeju za kucanje { // novog niza karaktera } else // zelena dioda svetli => zavrseno slanje !!! { Lcd_Cmd ( LCD_MOVE_CURSOR_RIGHT ); i + +; } } if ( i = = 72 ) // po otkucanom karakteru i isteku vremena od { // 2 x 2.85s if ( P2.B3 = = 0 ) // kursor prelazi u drugi red displeja { }

Page 72: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 71 -

else { if ( baffer_0 = = 0xFF ) { // samo jednom u toku slanja jedne poruke } // kursor je postavljen na prvom mestu else // u drugom redu displeja !!! { // BAFFER_0 = 0xFF // Lcd_Cmd ( LCD_SECOND_ROW ); i + +; baffer_0 = 0xFF; } } } if ( i = = 100 ) // ako je otkucano End of work ( ...-.- ) { // nakon isteka vremena od 7s if ( P2.B3 = = 0 ) // salje se na buzzer { // Understood ( ...-. ) TR1 = 0; // zaustavi tajmer_1 // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje crte na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 360 ); // simulacija crte, trajanje 3 tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke

Page 73: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 72 -

baffer_2 = 0x02; i + +; // izañi iz petlje TR1 = 1; // startuj tajmer_1 } } if ( i = = 255 ) // po isteku 18s od otpustanja tastera !!! { if ( P2.B3 = = 0 ) // ako je otkucano End of work ( ...-.- ) !!! { // SLANJE JE ZAVRSENO ! ! ! // TR1 = 0; // zaustavi tajmer_1 Lcd_Cmd ( LCD_CLEAR ); // obrisi displej i iskljuci kursor Lcd_Cmd ( LCD_CURSOR_OFF ); P3.B5 = 1; // iskljuci displej P2.B3 = 1; // iskljuci zelenu diodu baffer_0 = 0x00; // omoguci u narednom kucanju i = 0; // prelazak kursora u drugi red } // postavi "i" na 0 else { if ( baffer_2 = = 0x02 ) // samo ako je otkucan neki karakter !!!! { // ako nije otkucano End of work ( ...-.- ) !!! TR1 = 0; // zaustavi tajmer_1 P2.B3 = 1; // iskljuci zelenu diodu P2.B2 = 0; // ukljuci zutu diodu // SIMULACIJA ZAHTEVA ZA PONOVNIM SLANJEM - posalji signal greske // i postavi kursor na pocetak // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke

Page 74: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 73 -

P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // slanje tacke na buzzer // P2.B1 = 0; // ukljuci buzzer Delay_ms ( 120 ); // simulacija tacke P2.B1 = 1; // iskljuci buzzer Delay_ms ( 120 ); // kasnjenje, trajanje tacke // postavi "i" na 0 i omoguci u narednom kucanju i = 0; // prelazak kursora u drugi red baffer_0 = 0x00; // obrisi displej i postavi kursor na pocetak Lcd_Cmd ( LCD_CLEAR ); Lcd_Cmd ( LCD_UNDERLINE_ON ); Lcd_Cmd ( LCD_FIRST_ROW ); } } } } }

Page 75: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 74 -

7. Labaratorijska vežba Po uključivanju, pošto se na displeju ispiše poruka „CAO“ i preko buzera čuje zvučni kôd iste poruke (-.-. .- ---), ureñaj je spreman za rad. Savet: Tačku treba kucati tako što se kratko pritisne taster, praktično ne postoji minimalno vreme kojim se detektuje tačka. Za kucanje crte taster treba zadržati malo duže, da bi se prešla vremenska granica izmeñu trajanja tačke i crte, odnosno vreme od 140 ms. Po otpuštanju prilično zadržanog tastera, reda nekoliko sekundi, ureñaj će takoñe prepoznati crtu. Tako da, kao što nema minimalnog vremena kojim je definisana tačka, tako nema ni maksimalnog vremena kojim bi bila definisana crta, iz razloga da bi ureñaj bio primenljiv za učenje kucanja Morzeove azbuke.

1. Prvo se treba otkucati poziva na komunikaciju (-.-), i kao rezultat ispravno otkucane crte, tačke i crte na buzeru će se čuti isti kôd. Time se simulira veza izmeñu dva ureñaja, kao da postoji virtuelna stanica koja prima poruku koju kucamo. Za bilo koji drugi karakter koji bi bio otkucan pre uspostavljanja veze, ureñaj će prijaviti grešku: na buzeru se čuje signal greške (........), 8 tačaka i žuta LED dioda blinka.

2. Zatim treba otkucati startni signal (-.-.-) da bi se uključilo pozadinsko svetlo disleja i pojavio kursor. Tek sada se može krenuti s’ kucanjem poruke, jer će ureñaj i za postojeći Morzeov karakter koji bude otkucan pre startnog signala prijaviti grešku. Savet: Probajte sa kucanjem samo jedne tačke ili samo jedne crte jer će te kao rezultat na displeju imati ispisano slovo „E“ ili slovo „T“, respektivno, i uverićete se u ispravnost vašeg kucanja tačke ili crte.

3. Posle probe, i pošto protekne vreme od 18 s, uključiće se žuta LED dioda i na buzeru će se čuti signal greške (........), 8 tačaka, takoñe, izbrisaće se displej. Onda probajte da otkucate „ ELEKTRONSKI “ u prvom redu displeja.. Budite spremni, da posle otkucanog karaktera, odnosno slova „E“ u ovom slučaju, po njegovom pojavljivanju na displeju, nastavite sa kucanjem slova „L“, jer će se kursor pomeriti udesno za jedno mesto ako protekne vreme od 4 s. Morzeov kôd za ELEKTRONSKI je:

„ ( . . - . . - . - - . - . - - - - . . . . - . - . . ) “ 4. Sada sačekajte neko vreme, odnosno 8 s da bi se napravio razmak i da bi

kursor prešao u drugi red. Zatim nastavite sa kucanjem FAKULTET. Morzeov kôd je sledeći:

„ ( . . - . . - - . - . . - . - . . - . - ) ” 5. Po otkucanoj celoj poruci ELEKTRONSKI FAKULTET, otkucajte signal

za krj slanja ( . . . - . - ), nakon čega će se uključit zelena LED dioda. Posle vremena od 10 s na buzeru će se čuti signal Understood ( . . . - . ), odnosno poruka je primljena u virtuelnoj stanici. Nakon nekog vremena, preciznije 18 s, isključiće se displej i zelena LED dioda. Za narednu poruku će ponovo biti potrebno kucanje startnog signala.

6. Ako se otkuca karakter koji nije kôdovan, čuće se signal greške na buzeru ( . . . . . . . . ), 8 tačaka, i žuta dioda će blinkati.

7. Kada se otkuca signal pause, Wait ( . - . . . ), eventualni tekst na displeju će se zamrznuti i stajaće tako sve dok se ne nastavi sa kucanjem.

Page 76: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 75 -

8. Zaklju čak

Ovaj projekat je urañen kako bi se omogućio sadašnjim i budućim studentima Elektronskog Fakulteta mali uvid u to kako se praktično realizuju raznorazni ureñaji uz pomoć mikrokontrolera, u našem slučaju Morzeov telegraf. U vidu pokazne laboratorijske vežbe, omogućeno je i učenje Morzeove azbuke. Uz simulaciju komunikacije izmeñu dva ureñaja, poštovanjem osnovnih pravila telegrafisanja, rad je izuzetno zabavan.

Page 77: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 76 -

9. Literatura

[1] AT89S8253.pdf, www.atmel.com [2] Procesori, programski jezici i hardversko-softverske karakteristike embedded sistema – Mile Stojčev es.elfak.ni.ac.yu/es/Materijal/Pog.2-Procesori-HLL-HW-SW-kod-ES.pdf [3] Arhitektura i programiranje 8051 mikrokontrolera – Milan Verle Izdavač Mikroelektronika 2007. www.mikroe.com/sr/books/8051book [4] Arhitekture i programiranje mikroračunarskih sistema zasnovanih na familiji procesora 80x86 I izdanje – M. K. Stojčev, B. D. Petrović Elektronski fakultet Edicija: Osnovni udžbenici 1999. [5] MikroC 8051, www.mikroe.com/en/compilers/mikroc/8051 [6] Altium Designer 6, Evaluation version, www.altium.com

Page 78: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 77 -

10. Dodatak

Izgled Morzeovog telegrafa

Izgled glavne pločice

Page 79: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 78 -

Vojislav Stoiljković

Ime: Vojislav Prezime: Stoiljković Datum i mesto roñenja: 09.11.1982. Knjaževac Bračno stanje: Neoženjen Adresa stanovanja: Nemanjina 3/12, Sokobanja Obrazovanje: ETŠ ‚‚Mija Stanimirović‘‘ – Niš Godina upisa na Elektronski fakultet:

2001.

Smer: Elektronika Poznavanje jezika: Engleski Poznavanje softvera: HDL, Protel, mikroC, MSoffice Interesovanja: Planinarenje, Istorija

Dosadašnji projekti: 1. Merenje vremena punjenja kondenzatora pomoću µcAT89S2051

Page 80: SEMINARSKI RAD MORZEOV TELEGRAFes.elfak.ni.ac.rs/Papers/NSavkovic-VStoiljkovic - Morzeov...2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti

- 79 -

Nebojša Savković

Ime: Nebojša Prezime: Savković Datum i mesto roñenja: 23.06.1982. Kruševac Bračno stanje: Neoženjen Adresa stanovanja: Vinogradarska 89 37230 Aleksandrovac - Župski Obrazovanje: ETŠ ‚‚Mija Stanimirović‘‘ – Niš Godina upisa na Elektronski fakultet:

2001.

Smer: Elektronika Poznavanje jezika: Engleski Poznavanje softvera: HDL, Protel, mikroC, MSoffice Interesovanja: Fotografija, Motocikli Dosadašnji projekti: 1. Merenje vremena punjenja kondenzatora pomoću

µcAT89S2051 2. Digitalni termometar realizovan sa µc P16F887