157
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA RAČUNARA I USART MODULA MIKROKONTROLERA PIC16F877A Studenti: Dejan Lazić 10520 Ivan Novaković 10305 Mentor: prof. dr Mile K. Stojčev

SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

Embed Size (px)

Citation preview

Page 1: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku

SERIJSKA KOMUNIKACIJA

RAČUNARA I USART MODULA MIKROKONTROLERA PIC16F877A

Studenti: Dejan Lazić 10520 Ivan Novaković 10305

Mentor: prof. dr Mile K. Stojčev

Page 2: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 2 -

Sadržaj UVOD 3 I PRENOS PODATAKA 4 Načini komunikacije

Serijski i paralelni prenos Asinhroni i sinhroni režim rada

II SERIJSKI PORT 10 III USART 21 Intel 8251A

Značaj USART-a kod komunikacije računara i modema IV MIKROKONTROLER PIC16F877A 26

Osnovne karakteristike mikrokontrolera Arhitektura mikrokontrolera Oscilator Reset Watchdog tajmer Prekidi Tajmeri Portovi Organizacija memorije A/D konvertor Periferijske jedinice

V MIKROC – SOFTVER ZA PIC MIKROKONTROLERE 51 Instalacija Kreiranje kôda UART terminal ASCII standard

VI PROGRAMIRANJE MIKROKONTROLERA PIC16F877A 62 ALLPIC Softver IC-Prog

VII PROJEKTNI ZADATAK 69 Električna šema

Listing kôda u mikroC-u Listing asemblerskog kôda

Listing heksadecimalnog kôda VIII LABORATORIJSKA VEŽBA 97 IX ZAKLJUČAK 114 X LITERATURA 115

XI PRILOZI 116 mikroC IC-PROG Allpic LM78XX PIC16F877A MAX232 Connectors XII BIOGRAFIJE AUTORA 155

Page 3: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 3 -

Uvod

Ideja ovog rada je da se predstavi USART mikrokontrolera PIC16F877A i da se ostvari serijska komunikacija sa (serijskim) portom PC računara.

U prvom poglavlju rada date su osnove vezane za prenos podataka (serijski i paralelni, asinhroni i sinhroni), a u drugom poglavlju detaljno je obrađen serijski port računara. Treće poglavlje se bavi U(S)ART čipovima.

Mikrokontroler PIC16F877A je predstavljen u četvrtom poglavlju rada. Način pisanja kôda u C-u za Microchip-ove mikrokontrolere i kompilacija/kompajliranje predstavljeni su u petom poglavlju. Sedmo poglavlje rada se bavi sâmim činom programiranja mikrokontrolera PIC16F877A pomoću programatora.

U osmom i devetom poglavlju predstavljen je projekat i definisana laboratorijska vežba za samo-stalan rad studenata, gde će moći da se upoznaju sa mogućnostima USART-a.

Na kraju, u poglavlju PRILOZI, dati su originalni opisi proizvođača za komponente, hardver i softver koji su korišćeni za realizaciju ovog seminarskog rada.

U Nišu, 5. novembra 2007. godine

Page 4: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 4 -

[I] PRENOS PODATAKA Fundamentalni aspekt svakog sistema za prenos podataka odnosi se na tehniku koja se koristi

za slanje podataka između dve tačke (predajnika/prijemnika). Prenos podataka između predajnika i prijemnika ostvaruje se preko prenosnog medijuma.

Prenosne medijume možemo svrstati u dve osnovne grupe: a) trasirane (guided) i b) netrasirane (unguided).

U oba slučaja komunikacija se ostvaruje zahvaljujući prostiranju elektromagnetnih talasa

kroz medijum. Kod trasiranog prenosa prostiranje talasa (adekvatniji termin u ovom slučaju je električ-ni signal) se usmerava duž fizičkih puteva kakvi su upredeni kablovi, koaksijalni kablovi, optička vlak-na, itd. Kod netrasiranog prenosa prostiranje elektromagnetnih talasa se vrši kroz prostor (vazduh, va-kuum, tečnost).

Prenosni put između dve tačke naziva se veza (link), a deo veze koji je namenjen prenosu podata-ka jednostavno nazivamo kanal. Termin direktna veza (direct link) odnosi se na prenosni put između dva uređaja duž koga se prostiranje signala između predajnika i prijemnika ostvaruje bez posrednika. U ovom slučaju kao posrednici na prenosnom putu ne smatraju se uređaji tipa pojačavač ili repetitor, čija je osnovna uloga da povećaju snagu (amplitudu) signala duž prenosnog puta, tj. da kompenziraju slabljenje signala kroz prenosni medijum.

Na Sl. 1.1 prikazane su dve konfiguracije koje se najčešće koriste kod trasiranog prenosa. Kod usmerenog prenosa tipa tačka-ka-tački (point-to-point) prikazan na Sl.1.1a) ostvarena je direktna veza između predajnika i prijemnika, a kod višetačkaste (multipoint) konfiguracije, medijum za prenos je deljiv između većeg broja uređaja (Sl.1.1b)).

Sl.1.1. Tipovi kod usmerenog prenosa

Page 5: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 5 -

I.1. Načini komunikacije Razlikujemo tri načina prenosa podataka (vidi Sl.1.2):

a) simpleks (simplex) – signali se prenose (predaju) samo u jednom smeru; jedna stanica/terminal je predajnik, a druga prijemnik;

b) polu-dupleks (half-duplex) – obe stanice mogu vršiti predaju/prijem po istom kanalu, ali ne istovremeno (kada je jedna predajnik, druga je prijemnik, i obratno);

c) potpuni dupleks (full-duplex) – obe stanice mogu istovremeno da obavljaju predaju koristeći po-sebne kanale (po jedan za svaki smer prenosa).

Sl.1.2. Načini prenosa signala: a) simpleks; b) polu-dupleks; c) potpuni-dupleks

Napomena: Tx - predajnik (transmitter); Rx - prijemnik (receiver)

I.2. Serijski i paralelni prenos

Podaci se kroz medijum (žicu, vod, magistralu itd.) prenose ili serijski ili paralelno. Odlika serij-skog prenosa je jednostavnost realizacije – bitovi se prenose preko jedinstvene linije, jedan po jedan. Kod paralelnog prenosa n bitova (n = 8, 16, 32, 64) podatka prenosi se istovremeno (ovakav prenos se tipično ostvaruje kod sistemske magistrale mikroprocesora, IEEE-488 GPIB magistrale itd.)

Na Slikama 1.3 i 1.4 prikazani su serijski i paralelni prenos, respektivno. Paralelni prenos poda-taka je brži od serijskog, ali je skuplji (zahteva veći broj veza). Serijski prenos je daleko pouzdaniji – greška ili prekid u prenosu mogu jednostavno da se detektuju. Daleko značajnija prednost serijskog prenosa je u tomu što su vremenom razvijeni brojni i kvalitetni protokoli (pravila za razmenu podataka). Kod paralelnog prenosa, zbog različitih formata paralelnih podataka, to nije slučaj.

Page 6: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 6 -

Uopšte, paralelni prenos podataka se daleko više koristi kada se prenosi podatak na kraćim ras-tojanjima: interno, unutar mikroprocesorskog sistema (npr. komunikacija između mikroprocesora i memorije) i eksterno, do nekoliko metara, u okviru računarskog okruženja (npr. komunikacija između računara i štampača preko paralelnog porta).

Kada su u pitanju rastojanja veća od reda nekoliko metara, serijski prenos podataka je jedini izbor. Serijski prenos može da se ostvari preko jednog provodnika (žice). U praksi su, međutim, potrebne naj-manje dve linije (provodnika, žice) za serijsku komunikaciju: jedna za podatke i druga, tzv. masa – da bi se zatvorilo strujno kolo između dva sistema koji serijski komuniciraju.

Veliki broj potrebnih veza (jedna žica po bitu n-bitnog podatka) ograničava primenu paralelnog prenosa na kratka rastojanja. Na primer, u merno-informacionoj tehnici projektovana je paralelna magistrala IEEE-488 GPIB, preko koje komuniciraju sistemi/uređaji udaljeni maksimalno 20 m. Uređaji svih renomiranih proizvođača merno-informacione opreme (digitalni osciloskopi, digitalni izvori napajanja, logički analizatori, analizatori spektra itd.) poseduju IEEE-488 GPIB magistralu.

Komunikacija u okviru mikroprocesorskog sistema ostvaruje se preko sistemske magistrale u paralelnoj formi. Da bi se ostvarila sprega sistema koji sa jedne strane obavljaju paralelni, a sa druge strane serijski prenos podataka, neophodno je izvršiti paralelno-serijsku konverziju. Za tu svrhu se najčešće koriste pomerački registri. U aplikacijama se često koriste oba tipa konverzije, i paralelno-serijska i serijsko-paralelna, kako bi se ostvario prenos n-tobitnih paralelnih podataka od predajni-ka ka prijemniku preko serijske linije.

Sl. 1.3. Ilustracija serijskog prenosa

Mikroprocesorski sistemi memorišu i procesiraju podatke u formi bitova koji su uređeni kao reči fiksnog obima. Memoriju računara čini niz lokacija pri čemu svaka ima svoju jedin-stvenu adresu. Računarski sistemi mogu manipulisati sa rečima obima 8-, 16-, 32-, 64- bita, itd. U okviru velikog broja gradivnih blokova računarskog sistema podaci se prenose u paralelnoj formi, što znači da je svakom bitu u okviru reči dodeljen po jedan prenosni put. Primer paralelnog prenosa podataka uobičajeno se sreće kod hardverskih interfejsa za pobudu štampača ili kod interfejs ploča za spregu sa diskom.

Kod paralelnih interfejsa, kakva je recimo sprega računara sa štampačem, potrebno je uvesti neki oblik signalizacije koji će na određeni način, sa jedne strane, ukazati kada su podaci na izlazu računarskog sistema raspoloživi/validni, a sa druge strane, kada je (da li je) štampač spreman da prihvati novi podatak. Glavni razlog uvođenja signalizacije predstavlja velika razlika u brzini rada ure-đaja koji se međusobno povezuju. Konkretnije, računar može da generiše nove podatke na svakih 0.5 ns, dok štampač može da štampa podatke brzinom reda 100 znakova u minuti (postoje i štampači koji mogu štampati do 50000 znakova u minuti). Da bi se na jedan regularan način ostvarila korekt-

Page 7: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 7 -

Sl. 1.4. Ilustracija paralelnog prenosa (n=8) na razmena podataka između uređaja koriste se posebni signali poznati kao handshake signali. Procedura kojom se reguliše način razmene podataka i tajming naziva se handshake procedura.

Na Sl. 1.5 prikazana je handshake procedura koja se uobičajeno koristi kod paralelnog interfejsa. U trenutku kada se upravljački signal DAV (Data Available) menja sa nisko-na-visoko računar signalizira štampaču da je podatak, prisutan na magistrali, dostupan. Sa druge strane, kada štampač prihvati novi podatak on postavlja signal DAC (Data Accepted) na visoko.

Sl. 1.5. (a) Paralelni prenos; (b) handshaking (rukovanje)

Page 8: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 8 -

Paralelni način prenosa podataka pogodan je kod onih aplikacija kada su uređaji bliski jedan drugom. Kada signale (podatke) treba prenositi na veća rastojanja paralelni prenos postaje nepraktičan iz sledećih razloga: Kabliranje je složenije, prenos postaje nepouzdaniji zbog različitih kašnjenja signala duž vodova, a greške u prenosu se teže otkrivaju u slučaju kada dođe do nekog kratkog spoja ili prekida linija (žica u kablu).

Alternativni pristup kod prenosa podataka je onaj koji se zasniva na serijskom prenosu. Kod ovog načina prenosa postoji samo jedna linija po kojoj se prenose bitovi podataka. I pored toga što je serijski prenos sporiji od paralelnog prenosa, kabliranje je jednostavnije, a greške u prenosu se lakše otkrivaju. Svaki bit serijskog niza podataka trajanja je određenog vremenskog perioda koji se naziva sig-nalni elemenat. Signali se predstavljaju pozitivnom vrednošću za logičku jedinicu, a nultom vred-nošću za logičku nulu.

I.4. Asinhroni i sinhroni režim rada

Bilo koji komunikacioni sistem za prenos podataka čine, u najrudimentiranijem obliku, predajnik, prijemnik i neki oblik komunikacionog kanala. Predajnik generiše niz podataka pri čemu je tajming svakog bita pod kontrolom taktnih impulsa.

Asinhroni prenos

Za sistem kod koga predajnik može u bilo kojem trenutku da generiše bitove kažemo da koristi asinhroni prenos. Ključne karakteristike asinhronog prenosa su te da predajnik ne predaje prijemniku bilo kakvu informaciju o lokalnom taktnom impulsu ili tajming bit. Zadatak prijem-nika je da interpretira dolazeće signale i da korektno interpretira svaki dolazeći bit. U suštini asin-hroni prijemnik ne regeneriše takt na osnovu dolazećeg signala. Naime, predajnik i prijemnik ko-riste posebne taktne impulse čije su frekvencije veoma bliske jedna drugoj. Sa ciljem da se odredi korektni početak rada prijema koristi se metod rada poznat kao start-stop (Sl. 1.6).

Sl.1.6. Start-stop operacija

Kada se podaci ne predaju, linija se nalazi u pasivnom (idle) stanju. Podatku prethodi start-bit ko-ji je trajanje jednog bitskog intervala i suprotnog je polariteta u odnosu na pasivno stanje. Nakon toga slede nekoliko bitova podataka (obično je osam). Na kraju se pridružuje stop-bit koji je istog polariteta kao i pasivno stanje. (Trajanje pasivnog stanja može biti proizvoljno). Stop bit se uvodi sa ciljem da se jasno razgraniči zadnji bit prenetog znaka. Kada detektuje prednju ivicu start-bita, prijemnik akti-vira generisanje prijemnog takta. Prva pojava taktnog impulsa je tako podešena da se javi na sredini, ili oko sredine, prvog bita podataka i koristi se za strobovanje bita u registar ili leč (latch). Sa na-rednim taktnim impulsima, za ostale bitove podataka, proces se ponavlja. U suštini, ako je taktna frek-

Page 9: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 9 -

vencija prijemnika i predajnika identična, strobovanje će se uvek javljati (dešavati) na sredini trajanja bitskog intervala. Zbog različitih frekvencija predajnika i prijemnika ipak dolazi do "klizanja" ta-ko da, ako se broj bitova povećava, koincidencija taktnih impulsa i princip strobovanja poda-taka na sredini bitskog intervala se narušava. Imajući ovo u vidu, a iz razloga pouzdane detek-cije, obim (trajanje) asinhronog signala ograničen je na 12 bitova (misli se na prenos jedinstvenog karaktera (znaka ili simbola), zato što se sinhronizacija kod ovog prenosa ostvaruje na nivou jednog znaka).

Sinhroni prenos

Daleko efikasniji način za održavanje sinhronizacije kod komunikacione veze je onaj koji se zasniva na sinhronom prenosu (synchronous transmission). Podaci koji se sinhrono predaju dolaze do prijemnika kao kontinualni niz u regularnim vremenski definisanim bitskim intervali-ma. Predajnik i prijemnik mora da rade sinhrono, a to se ostvaruje korišćenjem sinhronizacionih sig-nala na nivou takta. Predajnik generiše taktni signal koji mora biti prenet do prijemnika bilo pre-ko posebnog kanala ili direktno regenerisan od strane prijemnika iz dolazećeg signala. Zbog toga, u predajnoj poruci mora biti emitovana i informacija o sinhronizaciji. Princip regenerisanja takta kod ovog načina prenosa prikazan je na Sl.1.7.

Slika 1.7. Sinhroni prijemnik

Uobičajeno se podaci predaju kao okviri, tj. ramovi (frame) fiksnog obima (vidi Sl.1.8.), pri čemu svaku informaciju na početku i kraju prate specijalni bit oblici nazvani preambule (preamble). Svrha preambule je da ostvari sinhronizaciju predajnog i prijemnog oscilatora pre početka prije-ma informacionih bitova.

Sl.1.8. Izgled okvira (rama) podatka kod sinhronog prenosa

Brzina signaliziranja

Brzina prenosa podataka (data rate ili transmission rate) se definiše kao broj prenetih bitova u toku određenog vremenskog perioda podeljen sa tim vremenom, a meri se u bitovima u sekundi (bps). Naravno, veoma je važno da se pravi razlika između termina brzina prenosa koja se meri u bps i brzina signaliziranja (signalling rate) koja se meri u baud-ima. Brzina signaliziranja se odnosi na brzinu prenosa jednog signalnog elementa.

Page 10: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 10 -

[II] SERIJSKI PORT

Serijski port, koji se takođe naziva i komunikacijski (communication - COM) port, je bidirek-cioni. Bidirekciona komunikacija omogućuje uređaju i da prima i da šalje podatke.U zavisnosti od toga da li serijski uređaji koriste različite pinove za prijem i slanje ili samo jedan, moguće je razlikovati dva tipa komunikacije: full-duplex (informacije se mogu istovremeno prenositi u oba smera) i half-duplex (dok se informacije prenose u jednom smeru, prenos iz drugog smera je zabranjen).

Serijski port se zasniva na UART kontrolerskom čipu, koji predstavlja ključnu komponentu serijske komunikacije. Ovaj čip, s jedne strane prihvata bajtove podataka od mikroprocesorskog sistema, transformiše ih u bitski niz i šalje bit-po-bit. S druge strane, prihvata niz bita koji stižu od nekog spoljnjeg uređaja, pakuje ih u bajtove i predaje ih mikroprocesorskom sistemu. Većina ovih či-pova ima ugrađene FIFO bafere za prijem podataka radi ubrzanja rada, što je ranije napomenuto.

Postoje dva glavna oblika serijskog prenosa: sinhroni i asinhoni. Sinhoni prenos podrazume-va da predajnik i prijemnik dele zajednički takt, ili da predajnik obezbedi poseban signal kojim će obaveštavati prijemnik kada dolazi sledeći podatak. Kod asinhronog prenosa ne postoji poseban signal već se sinhronizacija vrši pomoću posebnih bitova koji se umeću.

Sl.2.1. Principijelna blok-šema serijskog porta

Serijski port PC računara koristi se za serijski prenos podataka (bit po bit) i samim tim je sporiji od paralelnog porta. Uređaji koji koriste serijsku komunikaciju koriste dve vrste kablova i to: DCE (Data Communications Equipment) i DTE (Data Terminal Equipment). DCE koriste modemi, ploteri i sl. dok se DTE koristi za vezu između PC računara. Električne osobine serijskog porta su definisane EIA (Electronics Industry Association) RS232C standardom, čiji su parametri:

• Logička nula "SPACE" nalazi se u opsegu napona +3V do +25V • Logička jedinica "MARK" je u opsegu -3V do - 25V • Oblast između -3 do + 3 V nije definisana • Napon na kolu ne sme da pređe 25V u odnosu na masu (GND) • Struja kola ne sme preći 500 mA.

Page 11: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 11 -

Pored RS232C standarda postoje i novije verzije EIA-232D i EIA-232E, koje su objavljene 1987. i 1991. godine i to je prikazano u Tabeli 2.1.

PARAMETAR EIA 232 RS 423-A RS 422-A RS 485način rada nebalansiran nebalansirani diferencijalni diferencijalni broj drajvera i prijemnika 1 drajver

1 prijemnik1 drajver

10 prijemnik1 drajver

10 prijemnik 32 drajvera

32 prijemnikamaksimalna dužina kabla [m] 15 1200 1200 1200 maksimalna brzina prenosa podataka [bps]

20 K

100 K

10 M

10 M

maksimalni napon na zajedničkim krajevima [V]

+ 25

+ 6

6 do –0.25

12 do –7

Drajverski izlazni signal

izlaz drajvera [V]-min

neopterećen

5

3,6

2

3,6

izlaz drajvera [V]-max

Opterećen

15

6

5

3,6

opterećenje drajvera [Ω] 3 K – 7 K 450 (min) 100 (min) 60 (min) ''slew rate'' drajvera [V/µs] 30 (max) spoljna kontrola n.d. n.d. izlazna struja kratkog spoja granična vrednost struje (mA)

500 na Vcc

150 na GND

150 na GND

150 na GND 200 na –7 ili 12 V

izlazna otpornost drajvera [Ω]

uključeno napajanje

n.d.

n.d.

n.d.

12 K

stanje visoke impedanse [Ω]

isključeno napajanje

30 K

60 K

60 K

12 K

ulazna impedansa prijemnika [Ω] 3 – 7 K 4 K(min) 4 K (min) 12 K (min) osetljivost prijemnika [V] 3 V 0,2 0,2 0,2 opseg ulaznog napona prijemnika [V]

15

12

7

-7 do 12V

Tabela 2.1. Električne karakteristike EIA standarda

Sl.2.1a) Raspored pinova na konektoru DSUB-25

Page 12: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 12 -

Inače, serijski port koristi dve vrste konektora: DSUB-25 (25-pinski) i DSUB-9 (9-pinski). Oblik konektora i raspored pinova na njima kao i glavni signali na pojedinim pinovima dati su na Slikama 2.1a) i 2.1b) i Tabeli 2.2, dok je opis svakog signala da u Tabeli 2.3.

Sl.2.1b) Raspored pinova na konektoru DSUB-9

DSUB-25

DSUB-9 Signal Opis signala

pin 2 pin 3 TD Transmit Data pin 3 pin 2 RD Receive Data pin 4 pin 7 RTS Request To Send pin 5 pin 8 CTS Clear To Send pin 6 pin 6 DSR Data Set Ready pin 7 pin 5 SG Signal Ground pin 8 pin 1 CD Carrier Detect

pin 20 pin 4 DTR Data Terminal Ready pin 22 pin 9 RI Ring Indicator

Tabela 2.2. Signali na konektorima DSUB-25 (relevantni) i DSUB-9

Signal Opis signala Značenje signala TD Transmit Data Serijski izlaz podataka (TXD) RD Receive Data Serijski ulaz podataka (RXD)

RTS Request ToSend Indicira da je modem spreman za razmenu podataka CTS Clear To Send Kada modem detektuje signal "Carrier" od modema sa

druge strane linije, onda ona postaje aktivna DSR Data Set Ready DCE signalizira da je spreman za rad SG Signal Ground Masa CD Carrier Detect DCE javlja da je veza uspostavljena

DTR Data Terminal Ready Indicira DCE uređaju da je DTE spreman RI Ring Indicator Signalizira detekciju signala "zvona" na telefonskoj liniji

Tabela 2.3. Značenje pojedinih signala

Page 13: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 13 -

Oblik signala kod RS232 standarda dat je na donjoj slici.

Slika 2.2. Oblik signala kod RS232 standarda

Situacija kada nema slanja podatka, tj. linija je slobodna, označena je MARK naponom. Prenos počinje kada linija pređe u SPACE stanje, što predstavlja START bit. Iza start bita dolaze bitovi podataka i to tako da je jedinica predstavljena negativnim naponom, a nula pozitivnim. Ovo je najčešće u suprotnosti sa ustaljenom logikom da je +5 V logička jedinica, a 0 V logička nula. Problem rešava prijemno kolo (npr. MAX232, ST232, ICL232, MAX3232, ST3232, ICL3232 itd.) konvertujući napo-ne tako da su prilagođeni naponima interfejsa koji se koristi. Posle bita podatka dolazi bit parnosti koji se koristi za detekciju jednostruke greške u prenosu. Iza bita parnosti signal se postavlja u MARK stanje što označava početak STOP bita. Prema RS232 standardu broj stop bitova može biti: 1, 1.5 ili 2. Nakon završetka STOP bitova, linija je spremna za slanje novog karaktera. PC računari koriste kao DATA bite najčešće 7 ili 8 bita. Između slanja dva karaktera linija se nalazi u MARK stanju, a u toku prenosa više puta prelazi iz MARK u SPACE stanje u zavisnosti od broja jedinica i nula. To znači da se linija može nalaziti u SPACE stanju najviše u slučaju kada karakter sadrži sve nule. Ova osobina prenosa upotrebljena je za uvođenje specijalnog znaka nazvanog BREAK (prekid). Ovaj se signal ko-risti kako bi se dala prijemniku signalizacija da je došlo do problema u slanju podataka.

Serijski prenos počinje tako da predajna strana šalje prijemnoj strani signal RTS - zahtev za slanjem, dok prijemnik ako je spreman za prijem odgovara signalom CTS - spreman za prijem. Predajnik zatim šalje podatke prijemniku. Nakon prijema podataka, prijemnik proverava da li su podaci primljeni bez greške i za to vreme javlja predajniku da je zauzet. Ako su podaci primljeni bez greške, prijemnik šalje predajniku signal potvrde ACK (Acknowledgment - ASCII 6), a u slučaju ako se pojavila neka greška, šalje signal negativne potvrde NAK (ASCII 21). Zavisno od upotrebljenog protokola, odgovor predajnika na dobijeni NAK signal može biti ponovno slanje podataka.

Protokol za prenos može se izvesti na dva načina i to: hardverski i softverski. Za realizaciju hardverskog protokola neophodno je da postoje linije: RTS, CTS i linija za prenos bitova poruke. Softverska realizacija koristi umesto linija RTS i CTS, ASCII znakove XON i XOFF (nazivaju su i DC1 i DC3), zbog čega je umesto tri dovoljna samo jedna linija. Kada se primenjuje ovaj protokol prijemnici i na predaji i prijemu proveravaju svaki prispeli znak radi utvrđivanja da li je to XON, XOFF ili podatak. Strana koja ne može da primi karakter kao indikator tog stanja drugoj strani šalje XOFF znak.

Prilikom serijskog prenosa podataka moguća je pojava sledećih vrsta grešaka:

• Greška uokvirenja ili greška rama podatka (framing error). Do ove greške dolazi u slučaju kada prijemnik očekuje STOP bit ali se on ne pojavljuje.

• Greška prekoračenja (overrun error). Nastaje kada se pojavljuje novi znak u prijemniku a prethodni nije upotpunosti primljen.

• Greška parnosti (parity error). Nastaje kada bit parnosti ne odgovara stanju bitova u bitovima podatka.

Page 14: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 14 -

Standardno za vezu dva PC računara koristi se takozvani Null Modem kabl, čiji je raspored pinova prikazan na Sl.2.3.

Sl.2.3. Izgled null-modem kabla

Sa slike se vidi da su i na prijemnoj i predajnoj strani spojeni signali DTR, DSR i CD kao i RTS i CTS, dok su signali TD i RD ukršteni. Za testiranje serijskog porta i izradu programa koristi se kabl sa zatvorenom petljom (Loop Back) prikazan na Sl.2.4.

Sl.2.4. Kabl sa zatvorenom petljom za testiranje

Serijska komunikacija se kod PC računara izvodi upotrebom Intelovog UART kola 8250 kod XT ili 16450 kod AT računara. Oba su kola slična, s tim što kolo 16450 ima neke naprednije karakteristike. Kolo 8250 sadrži 10, dok kolo16450 ima 12 programabilnih jednobajtnih registara. Svaki port (COM1 i COM2) ima po jedno UART kolo koja se vezuju na linije prekida IRQ3 i IRQ4. Standardno se koriste dva porta, a moguće je i više sa adresama i IRQ prema Tabeli 4. Bazne adrese COM portova nalaze se u BIOS-u na adresama datim u Tabeli 2.5, dok je u Tabeli 2.6 data grupa registara koju koristi serijski port računara.

Page 15: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 15 -

Naziv Adresa IRQ COM 1 3F8 4 COM 2 2F8 3 COM 3 3E8 4 COM 4 2E8 3

Tabela 2.4. Adrese COM portova

Startna adresa Opis 0000:0400 Početna adresa COM1 0000:0402 Početna adresa COM2 0000:0404 Početna adresa COM3 0000:0406 Početna adresa COM4

Tabela 2.5. Bazne adrese COM portova u BIOS-u

Bazna adresa

DLAB Čitanje/Pisanje Skraćeni naziv

Naziv registra

=0 Pisanje THR Transmitter Holding Buffer

=0 Čitanje RDR Receiver Buffer

+ 0

=1 Čitanje/Pisanje DLL Divisor Latch Niži Bajt

=0 Čitanje/Pisanje IER Interrupt Enable Register +1

=1 Čitanje/Pisanje DLH Divisor Latch Viši Bajt

- Čitanje IIR Interrupt Identification Register +2

- Pisanje FCR FIFO Control Register

+3 - Čitanje/Pisanje LCR Line Control Register

+4 - Čitanje/Pisanje MCR Modem Control Register

+5 - Čitanje LSR Line Status Register

+6 - Čitanje MSR Modem Status Register

+7 - Čitanje/Pisanje - Scratch Register

Tabela 2.6. Grupa registara koju koristi serijski port

Transmitter Holding (THR) i Receiver Buffer (RDR) registar su registri podatka. Prvom se pristupa prilikom slanja karaktera na port, a drugom u trenutku čitanja karaktera sa porta. Kako se ove dve operacije međusobno isključuju to je nemoguće da dođe do kolizije. Registar THR sadrži bajt koji treba poslati na liniju. Podatak se može upisati kada peti bit Line Status Register-a naznači da je on

Page 16: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 16 -

prazan. RDR registar sadrži poslednji primljeni bajt sa linije. Sadržaj ovog registra se može pročitati kada je nulti bit Line Status Register-a označen da je primljen. Na ofsetu 0 nalazi se i registar Divisor Latch Niži Bajt u slučaju kada je DLAB=1. Ovaj registar kao i sledeći Divisor Latch Viši Bajt koriste se samo u procesu inicijalizacije UART-a. Proces inicijalizacije se označava setovanjem sedmog bita u Line Control Register-u (DLAB), tako da ni u ovom slučaju ne može doći do dvostrukog tumačenja. Za različite brzine prenosa izražene brojem bita u sekudni (bps) moramo znati trajanje signala koji reprezentuje jedan bit. Ta se konstanta ne definiše direktno već preko pomoćne vrednosti koja se dobije iz sledećih formula:

Divisor Latch = (Clock)/(16 x bps) ili Divisor Latch = (1843200/(16 x bps) ili DivisorLatch = (115200)/(bps),

gde Clock predstavlja frekvenciju internog takta UART-a koja iznosi 1.8432 MHhz, a bps je željena brzina prenosa. Divisor Latch je broj kojim se deli takt UART kola da se dobije dužina trajanja jednog bita pri željenoj brzini prenosa. Taj se broj raspoređuje na niži (DLL) i viši (DLH) bajt što je prikazano u Tabeli 2.7.

Brzina (bps)

Delilac DLH DLL

50 2304 09h 00h

300 384 01h 80h

600 192 00h C0h

2400 48 00h 30h

4800 24 00h 18h

9600 12 00h 0Ch

19200 6 00h 06h

38400 3 00h 03h

57600 2 00h 02h

115200 1 00h 01h

Tabela 2.7.Prikaz brzine prenosa, delioca i odgovarajućih stanja višeg (DLH) i nižeg bita (DLL)

Struktura Registra Dozvole Prekida (Interrupt Enable Register, IER) data je u Tabeli 2.8. Ovim registrom se određuje na koji će tip prekida UART kolo reagovati. Može se dozvoliti pojava i više tipova prekida. Prekid se generiše kada se ispuni neki od uslova iz date tabele. Tada se postavlja odgovarajući bit iz prve kolone kao indikator pojave prekida. Nakon obrade prekida postavljeni bit se resetuje i UART je spreman da prihvati sledeći prekid.

Struktura Registra Identifikacije Prekida (Interrupt Identification Register, IIR) prikazana je u Tabeli 2.9.

Page 17: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 17 -

Bit Opis 7 Ne koristi se 6 Ne koristi se 5 Omogućava Low Power Mode (16750) 4 Omogućava Sleep Mode (16750) 3 Omogućava Modem Status Interrupt 2 Omogućava Receiver Line Status Interrupt 1 Omogućava Transmitter Holding Registar

Interrupt kada je prazan 0 Omogućava Received Data Interrupt

Tabela 2.8. Struktura Registra dozvole prekida (IER)

Bit Opis

Bit 6 Bit 7

0 0 Ne koristi se FIFO

0 1 FIFO je omogućen, ali ne može da se koristi

7:6

1 1 FIFO je omogućen

5 64 Bajtni FIFO je omogućen(samo za 16750)

4 Rezervisan

0 Rezervisan za 8250 i 16450 3

1 16550 Time-out Interrupt je u toku

Bit 2 Bit 1

0 0 Modem Status Interrupt

0 1 THR interrupt registar kada je prazan

1 0 Podatak je primljen

2:1

1 1 Primljeni Line Status Interrupt

0 0 Prekid je u toku

1 Ne postoje prekidi

Tabela 2.9. Registar Identifikacije prekida (IIR)

Na osnovu ovog registra komunikacioni programi određuju tip prekida koji se pojavio. FIFO kontrolni registar (FIFO Control Register, FCR) ima strukturu prikazanu u Tabeli 2.10.

Page 18: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 18 -

Bit Opis

Bit 6 Bit 7 Nivo interapta

0 0 1 Bajt

0 1 2 Bajta

1 0 8 Bajta

7:6

1 1 16 Bajta

5 64 Bajtni FIFO je omogućen (samo za 16750)

4 Rezervisan

3 Izbor DMA moda

2 Briše FIFO slanja

1 Briše FIFO prijema

0 Omogućava FIFO metod

Tabela 2.10. Struktura FIFO kontrolnog registra (FCR)

FIFO je registar u koji se može samo upisivati. Koristi se za kontrolu FIFO bafera koji postoji na UART-ima 16550 i više. Postavljanjem bita 0 omogućuje predajni i prijemni FIFO, a njegovim resetovanjem se zabranjuje. Bitovi 1 i 2 kontrolišu brisanje prijemnog i predajnog FIFO bafera. Setovanjem ovih bitova na 1 će se samo obrisati sadržaj FIFO bafera i neće se uticati na pomerački registar. Ova dva bita se sami resetuju i zato ne moramo da setujemo bitove na nulu po završetku procesa. Bit 3 omogućava DMA selektovanje DMA moda, koji se može naći na UART-ima 16550 i više. Bitovi 6 i 7 se koriste da se postavi nivo okidanja na primajući FIFO. Na primer, ako je bit 7 postavljen na 1 i bit 6 na 0 – onda je nivo okidanja setovan na osam bajtova. Kada je primljeno 8 bajtova podataka u primajućem FIFO, onda je Received Data Interrupt postavljen u IIR registru. Kontrolni Registrar Veze (Line Control Register, LCR) omogućava postavljanje nekih od para-metara veze kao i režim rada registara THR, RDR, DLL i DLH. Režim rada navedenih registara određuje njegov sedmi bit DLAB (Divisor Latch Access Byte). Struktura ovog registra prikazana je u Tabeli 2.11.

DTR linija signalizira modemu da je računar spreman da od njega primi karakter, dok linija RTS signalizira modemu da je računar spreman da mu pošalje podatak. Korisnički izlaz#1 normalno nije spojen ali se na nekim karticama koristi za prebacivanje između 1.8432 Mhz kristala i 4 Mhz kristala koje se koristi za MIDI. Korisnički izlaz#2 se koristi za spajanje eksternih kola koja kontrolišu UART-CPU prekidne (interrupt) procese.

U Tabeli 2.12 data je struktura Registra Kontrole Modema (Modem Control Registar, MCR), dok je struktura Statusnog Registra Veze (Line Status Register, LSR) prikazana u Tabeli 2.13. Statusni Registar Veze prevashodno ima namenu da pruža izveštaj o stanju na komunikacionoj liniji.

Konačno, struktura registra Registra Statusa Modema (Modem Status Register, MSR) data je u Tabeli 14. Status modema zavisi pre svega od toga da li je neka linija aktivna ili nije, i da li se status pojedine linije promenio od poslednjeg čitanja ovog registra.

Page 19: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 19 -

Bit Opis

1 DLAB bit 7

0 Omogućen pristup THR, RDR i IER registru

6 0 - Zabranjen Break signal, 1 – Omogućen

Bit 5 Bit 4 Bit 3 Izbor parnosti

X X 0 Bez parnosti

0 0 1 Neparan (Odd) parnost

0 1 1 Paran (Even) parnost

1 0 1 MARK

5:3

1 1 1 SPACE

Dužina stop bita

0 Jedan stop bit

2

1 Dva stop bita ako je dužina podatka 6, 7 ili 8 bita, odnosno 1.5

stop bit za podatak dužine 5 bita

Bit 1 Bit 0 Dužina podatka u bitima

0 0 5 bita

0 1 6 bita

1 0 7 bita

1:0

1 1 8 bita

Tabela 2.11. Kontrolni registar veze (LCR)

Bit Opis 7 Ne koristi se 6 Ne koristi se 5 Autoflow kontrola omogućena (samo za 16750) 4 Bit povratne sprege 3 Korisnički izlaz #1 2 Korisnički izlaz #2 1 RTS linija aktivna 0 DTR linija aktivna

Tabela 2.12. Registar Kontrole Modema (MCR)

Page 20: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 20 -

Bit Opis 7 Greška u prijemnom FIFO 6 Prazan Data Holding Registar 5 Prazan THR registar i može se slati sledeći znak 4 Detektovan signal prekida (Break) 3 Greška rama, uokvirenja (Framing error) 2 Greška parnosti (Parity error) 1 Greška prekoračenja(Overrun error) 0 Podatak je primljen i bajt se nalazi u RDR

Tabela 2.13. Statusni registar veze (LSR)

Bit Opis 7 Aktivira Data Carrie Detect (DCD) 6 Aktivira Ring Indicator (RI) 5 Aktivira Data Set Ready (DSR) 4 Aktivira Clear To Send (CTS) 3 Promena u Data Carrier Detect (DCD) 2 Promena u Ring Indicator (RI) 1 Promena u Data Set Ready (DSR) 0 Promena u Clear To Send (CTS)

Tabela 2.14. Registar statusa modema (MSR)

Page 21: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 21 -

[III] UNIVERZALNI SINHRONI I ASNINHRONI PRIJEMNIK/PREDAJNIK (USART)

Univerzalni Asinhroni Prijemnik/Predajnik (Universal Asynchronous Receiver/Transmitter) ili skraćeno UART, predstavlja čip koji služi za asinhronu serijsku komunikaciju unutar nekog mikro-procesorskog sistema.

Prvi uređaji nalik na UART bili su rotacioni mehanički komutatori koji su slali 5-bitne baudot kodove ka mehaničkim teleprinterima.

Gordon Bel je dizajnirao prvi UART za PDP seriju računara, a 1971. godine Western Digital je napravio WD1402A, prvi nezavisni UART čip.

Ranih 80-h godina XX veka, National Semiconductor je razvio UART čip 8250. Tokom 90-h godina razvijeni su i UART sa baferima na samom čipu, što je uvećalo brzine prenosa podataka – bez gubitka podataka i bez konstantnog nadzora od strane mikroprocesora.

Zavisno od proizvođača, UART čipovi dobili su različite nazive. Tako na primer, Motorola je svoju seriju UART čipova nazvala “Serijski komunikacioni interfejs” (Serial Communications Interface, ili kraće SCI), Intel je UART čip 8251 nazvao “Programabilni komunikacioni interfejs” (Programmable Communication Interface, ili PCI), dok je kompanija MOS Technology svoj čip 6551 nazvala “Asinhroni komunikacioni interfejsni adapter” (Asynchronous Communications Interface Adapter ili ACIA). UART, naime, predstavlja interfejs između mikroprocesora i I/O periferijskog uređaja. Kada se podaci prenose od mikroprocesora ka periferiji, interfejs prihvata podatke od procesora u paralelnom formatu i konvertuje ih u serijski niz. Periferija prihvata podatke od pomenutog interfejsa serijski, tj. “bit po bit”. U slučaju kada periferija šalje podatke ka mikroprocesoru, odigrava se obrnut proces – interfejs prihvata podatke serijski, a šalje ih prema mikroprocesoru u paralelnom formatu.

Pored opisanih, UART mora da obavi i dodatne operacije – brisanje prethodno poslatog bita ili podatka, kao i pridruživanje dodatnih bitova (start-bit, stop-bitovi i bit parnosti) karakteru koji se šalje. U slučaju da karakter sadrži manje od 8 bitova (5, 6 ili 7), na svaku “praznu” poziciju se dopisije ili logička 0 ili logička 1, zavisno od proizvođača. Dodatne mogućnosti podrazumevaju da UART mora da prepoznaje greške koje mogu nastati prilikom prijema podataka: grešku prekoračenja (Overrun Error), grešku u ramu podatka (Framing Error) i grešku parnosti (Framing Error). Prvobitni UART čipovi radili su u asinhronom režimu. U slučaju kada poseduje mogućnost rada u sinhronom režimu, ovakav čip se naziva i USART (Universal Synchronous & Asynchronous Receiver/Transmitter). Da ne bi bilo zabune, u literaturi se ravnopravno koriste termini UART i USART, zato što svi savremeni UART čipovi imaju mogućnost rada u sinhronom režimu. Unutar UART sistema su integrisane sledeće komponente:

• takt generator, • delitelji frekvencije, • ulazni pomerački registar, • izlazni pomerački registar, • kontrolna logika čitanja i upisa, • kontrolna logika slanja i prijema, • bafer prijemnika (opciono), • bafer predajnika (opciono), • FIFO (opciono).

Page 22: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 22 -

U daljem tekstu biće ukratko opisani Intelov čip 8251A, serijski port računara, a na samom kraju biće opisan istorijat vezan za komunikaciju UART-a računara i standarnog modema, kao i problemi i ograničenja u komunikaciji. III.1. Intel 8251A

Čip 8251A je u potpunosti prilagođen mikroprocesorskom sistemu 8080. Programiranje ovog čipa ostvaruje se sistemskim softverom, što važi i za druge I/O komponente pomenutog sistema. Čip 8251A može da podrži praktično bilo koji serijski način prijema/slanja podataka, uključujući i IBM-ovu BI-SYNC tehniku. Ovaj čip može da funkcioniše i u sinhronom i u asinhronom režimu.

Sl.3.1. Funkcionalni blok-dijagram UART integrisanog kola Intel 8251A

Page 23: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 23 -

Intel 8251A mora da izvrši dodatne operacije – brisanje prethodno poslatog bita ili podatka, kao i pridruživanje dodatnih bitova (start-bit, stop-bitovi i bit parnosti) karakteru koji se šalje, što je ilustrovano na Sl.3.2. Kao i svaki UART, 8251A ima mogućnost detekcije grešaka u prenosu podataka.

Sl.3.2. Izgled bloka podatka koji prima/šalje čip Intel 8251A u asinhronom modu III.2. Značaj UART-a kod komunikacije računara i modema

Stvarna brzina na kojoj modem može da prima i prenosi podatke zavisi od posebnih prepreka

koje treba da se savladaju kao što su:

• konfiguracija računara, a posebno njegov serijski priključak • tehničko stanje telefonske linije • vrsta modema koji je priključen na drugom kraju veze.

Prvo od mnogobrojnih uskih grla u toku podataka je UART, koji upravlja vezom između

serijskog priključka i sistema magistrale PC računara. Sistemi magistrale PCI rade u blokovima od po 32 bita, dok serijski kablovi prenose bitove u jedinstvenoj datoteci. UART treba da preuzme ceo saobraćaj koji mu dolazi punom brzinom i da ga "progura" kroz serijski priključak bez zastoja. UART čipovi starije generacije kao INS 8250-B i INS 16450 ne mogu da drže korak sa brzinama prenosa za koje su sposobni savremeni modemi. Samo noviji UART čip 16550 garantuje komunikaciju na brzini od 28,8 Kbita u sekundi bez gubitaka podataka.

Page 24: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 24 -

Sl.2.4. Ilustracija prenosa podataka preko telefonske linije

Sledeća prepreka koja treba da se savlada je sama telefonska linija. Pogrešno je mišljenje da je telefon potpuno digitalan, jer – ostalo je još uvek mnogo analognih elemenata. Čak ni sve centrale nisu digitalne. Linije u kući su tipično još uvek analogne i osetljive na sve probleme koji su pridruže-ni takvom medijumu. Glavni problem je ograničeni propusni opseg, odnosno količina informacija koja može da se propusti kroz liniju. Drugi problem je šum.

Razvijeni su različiti standardi da bi se prevazišao problem linijskog šuma. Jedan modem šalje signale drugom sa kojim hoće da se poveže, da bi video kako taj modem želi da komunicira i da bi procenio stanje linije. Dva modema onda šalju poruke u oba smera, sporazumevajući se o načinu radau, kroz proces koji se naziva procedura rukovanja.

Brzina kojom će modem komunicirati je stvarno ograničena najsporijom komponentom u lancu. Ako je telefonska veza loša ili puna linijskog šuma, brzina će opadati dok pouzdana veza može da se održava. Modem koji je u stanju da radi brzinom od 33,6 Kbita u sekundi će morati da smanji brzinu na 14,4 Kbita u sekundi ako komunicira sa modemom brzine 14,4 Kbita u sekundi. Vrhunac procedure rukovanja je sporazumni standard koji uključuje zajedničku brzinu, format za korekciju greške i stepen kompresije.

Modem deli podatke u pakete, pri čemu svakom paketu dodaje bitove kako bi označio gde paket počinje i gde se završava. On takođe dodaje bitove za parnost ili kontrolni zbir da bi utvrdio da li su podaci primljeni u paketu oni isti koji su poslati i da li je formula za dekompresiju podataka korektno primenjena. Ako je paket neispravno primljen, prijemni modem će morati da traži od predajnog mode-ma da ga ponovo pošalje. Takođe treba da se potvrdi da je primljena količina podataka koja je predata, pa se veza ne raskida pre nego što kroz nju prođe poslednji podatak.

Celokupna procedura rukovanja se kontroliše iz samog modema. Veza može da se napusti više puta pre nego što se konačno uspostavi, a procedura može da potraje i 30 sekundi na analognim lini-jama. Treba zapaziti čest nesporazum u vezi objavljenih brzina poruka (npr. "povezano na 115200") koji korisnici mogu da vide kada uspostave komutiranu vezu. To je brzina DTE (Data Terminal Equipment – oprema terminala podataka), odnosno brzina veze između PC računara i modema, a ne brzina kojom komuniciraju modemi. Ova poslednja, poznata kao brzina DCE (Data Communication Equipment – oprema za komunikaciju podataka) je dogovorena u proceduri rukovanja.

Firma National Semiconductor je pravila UART čipove koji su upravljali radom serijskih prik- ljučaka PC računara još od pojave prvog IBM-ovog PC računara.

Originalna serijska sprega PC računara je koristila UART čip INS8250-B. On je mogao da prima i predaje podatke brzinama do 56 Kbita u sekundi i, u vreme brzina magistrala od 4,77 MHz i serijskih štampača, to je bilo sasvim zadovoljavajuće. Kada se pojavio IBM-AT, bio je potreban novi

Page 25: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 25 -

UART, zbog povećanja brzine magistrale i činjenice da je ona sada bila širine od 16 bita. Novi UART se zvao INS 16450, a ciklusi čitanja i zapisa centralne procesorske jedinice (CPU) bili su preko pet puta kraći od onih kod njegovog 8-bitnog prethodnika.

U mašini sa AT/IS magistralom, svim prenosima podataka upravlja centralna procesorska jedinica i svaki bajt mora da prođe kroz njene registre pre nego što ode u memoriju ili na disk. To znači da pristupno vreme mora da bude dovoljno kratko da bi se izbegle greške zbog prekoračenja brzine prilikom čitanja i kašnjenje u prenosu na većim brzinama. U stvari, kada je izašao IBM PC/AT, performansa INS16450 je bila odgovarajuća, jer je brzina kojom su podaci bili rutinski prenošeni preko serijskog priključka bila značajno manja nego što je to moguće sa savremenim modemima.

Da bi se razumela ograničenja INS 16450, treba shvatiti kako serijski priključak prekida mikroprocesor (CPU) koja treba da završi zadatak na kome trenutno radi, ili da opsluži prekid višeg prioriteta, pre nego što opsluži UART. Ovo kašnjenje je vreme kašnjenja magistrale pridruženo opsluživanju UART-ovog zahteva za prekidom. Ako mikroprocesor ne može da opsluži UART pre nego što se primi sledeći bajt podataka (od strane UART-a sa serijskog priključka), podatak će biti izgubljen, sa ponovnom predajom kao posledicom i neizbežnim uticajem na propusnu moć. Ovaj uslov je poznat kao greška usled prekoračenja brzine. Na malim brzinama, AT sistem je dovoljno brz da pročita svaki bajt sa prijemnika UART-a pre nego što se primi sledeći bajt. Što je veća brzina bitova na serijskom priključku, veći je i napor sistema da prenese svaki bajt sa UART-a pre nego što se primi sledeći bajt. Veće brzine bitova imaju za posledicu da centralna procesorska jedinica provodi više vremena opslužujući UART, što rad celog sistema čini neefikasnim.

Da bi se izašlo na kraj sa ovim problemom u firmi National Semiconductor je razvijen UART NS16550A. Taj čip prevazilazi opisani problem uvođenjem FIFO bafera (First In First Out - prvi unutra, prvi napolje) u prijemnik i predajnik, što dramatično poboljšava performansu u pogledu prenosnih brzina modema koje su 9,6 Kbita u sekundi i veće.

Veličina prijemnog FIFO bafera osigurava da je do 16 bajtova spremno da se prenese kada mikroprocesor (CPU) opsluži prekid UART-ovog prijemnika. Prijemnik može da zahteva prenos kada je u FIFO „prevaziđen“ prag za jedan, četiri, osam ili 16 bajtova podataka. To dozvoljava softve-ru da menja prag FIFO bafera prema trenutnom zadatku i osigurava da centralna procesorska jedinica ne gubi stalno vreme kada treba da se prenese samo nekoliko primljenih bajtova podataka.

Predajni FIFO osigurava da do 16 bajtova bude preneseno kada centralna procesorska jedinica (mikroprocesor) opsluži prekid UART-a za predaju. To smanjuje vreme koje mikroprocesor gubi na promeni konteksta. Međutim, kako nema „kažnjavanja“ za vremensko kašnjenje u opsluživanju asinhronog predajnika, kašnjenje mikroprocesora nema značaja prilikom predaje, mada ukupna pro-pusna moć može da se smanji zbog toga.

Page 26: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 26 -

[IV] MIKROKONTROLER PIC16F877A

Većina današnjih mikrokontrolera je bazirano na Harvard arhitekturi, koja jasno definiše četiri

osnovne komponente potrebne za embedded sistem. To uključuje CPU jezgro, memoriju za program (ROM, EPROM ili Flash memorija), memoriju za podatke (RAM), jedan ili više tajmera (podesive i watchdog tajmere), kao i I/O linije za komunikaciju sa eksternim periferijama i dopunskim resursima – sve to treba da bude smešteno u jednom integrisanom kolu. Mikrokontroler se u osnovi razlikuje od opštenamenskog mikroprocesorskog čipa po tome što ga je izuzetno lako pretovoriti u radni kompjuter, sa minimumom eksternih čipova za podršku. Ideja je da se mikrokontroler isprogramira, postavi u ure-đaj za kontrolu, poveže na napajanje i stavi u funkciju.

Tradicionalni mikroprocesor je rasterećen obaveze da komunicira direktno sa periferijom. On, naime, zahteva da sve to odrade drugi čipovi. Mikrokontroler PIC16F877A firme Microchip predstavlja integraciju mikroprocesora (CPU), memorije i periferija, pa zato ne zahteva složeni eksterni hardver da bi se realizovao mikroračunar-ski sistem. Ovaj mikrokontroler je izrađen u CMOS tehnologiji sa ugrađenom FLASH i EEPROM me-morijom za memorisanje programa i podataka. PIC16F877A ima tipičnu RISC arhtekturu. Ova ar-hitektura, kao što je poznato, karakteriše se manjim skupom instrukcija koje se brže izvšavaju od in-strukcija kod CISC arhitekture. U daljem tekstu detaljnije će biti opisani gradivni delovi mikrokontrolera PIC16F877A. Pri tome, posebnu pažnju ćemo posvetiti A/D konvertoru i USART-u koji su integrisani unutar mikro-kontrolera.

Sl.4.1. Raspored pinova kod mikrokontrolera PIC16F877 u kućištu DIP40

Page 27: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 27 -

IV.1. Osnovne karakteristike mikrokontrolera

• RISC mikroprocesor visokih performansi • 35 instrukcija obima jedne reči • Radna frekvencija do 20 MHz • Trajanje taktnog intervala 200 ns, pri frekvenciji 20 MHz • Opkôd obima 14 bita • Harverski magacin sa osam nivoa • Tri načina adresiranja (direktno,indirektno i relativno) • Programska flash memorija kapaciteta 8 k X 14-bitnih reči • Memorije za podatke tipa RAM kapaciteta 368 X 8 bita • Memorije za podatke EEPROM tipa kapaciteta 256 X 8 bita • Prekidi (do 14 izvora prekida) • U/I portovi: A, B, C, D, E • Tri tajmera:

- Timer0 (TMR0): 8-bitni tajmer/brojač_događaja - Timer1 (TMR1): 16-bitni tajmer/brojač_događaja - Timer2 (TMR2): 8-bitni tajmer/brojač_događaja

• 10-bitni 8-kanalni analogno-digitalni (A/D) konvertor • Serijska komunikacija: MSSP, USART • Paralelna komunikacija: PSP • Power-on Reset - reset pri uključenju napajanja (POR) • Power-up timer - unošenje kašnjenja nakon uključenja napajanja (PWRT) • Oscillator Start-up Timer - unošenje kašnjenja nakon stabilizovanja radne frekvencije

oscilatora (OST) • Sleep mode - režim rada sa malim utroškom energije • Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora • Radni napon od 2V do 5.5V • Mala potrošnja energije:

<0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz 20µA pri naponu od 3V i radnom taktu od 32kHz <1µA u standby režimu rada.

IV.2. Arhitektura mikrokontrolera

Kao što je istaknuto, mikrokontroler PIC16F877A poseduje tipičnu RISC arhitekturu, koja je

prikazana na Sl.4.2. Arhitektura poseduje odvojene magistrale za podatke i programski kôd. Obim podataka je 8-bitni, dok je programski kôd 14-bitni. Moguće je protočno izvršenje (pipelining). Sve instrukcije su istog obima (osim instrukcija grananja) i izvšavaju se za četiri taktna intervala. Dakle, ukoliko se koristi oscilator od 20 MHz, ciklus instrukcije traje 200 ns. Na Sl.4.2 prikazani su gradivni blokovi mikrokontrolera PIC16F877A:

• Flash programska memorija – 8 kiloreči obima 14 bita • RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register)

Page 28: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 28 -

• Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Višekanalni A/D konvertor, USART (univerzalni sinhroni i asinhroni primo-predajnik),

tajmere, portove itd.

Sl.4.2. Arhitektura mikrokontrolera PIC16F877A

Page 29: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 29 -

IV.3. Oscilator

Kod mikrokontrolera PIC16F877A postoje četiri konfiguracije oscilatora: • RC Resistor/Capacitor • XT Crystal / Resonator • LP Low Power Crystal • HS High Speed Crystal / Resonator. Najjednostavnija varijanta je RC oscilator, a to je ilustrovano na Sl.4.3 . Ovakav pristup je ispravan

u aplikacijama u kojima se ne zahteva precizna procena vremenskih intervala. Ovde ćemo naglasiti ka-ko je moguće koristiti i interni RC oscilator, koji je integrisan u mikrokontroleru.

Sl.4.3. Povezivanje eksternog RC oscilatora

Frekvencija oscilovanja zavisi ne samo od vrednosti Rext i Cext, već i od napona napajanja kao i radne temperature. Vrednost otpornika Rext treba da bude u opsegu od 3 KΩ do 100K KΩ. Izvan ovog opsega rad oscilatora nije stabilan i osetljiv je na spoljašne uticaje. Kondenzator Cext se može čak i izostaviti. Međutim, zbog stabilnosti preporučuje se vrednost oko 20pF. Na pinu OSC2/CLKOUT generiše se taktni impuls čija je perioda četiri puta veća od periode rada oscilatora.

Kod vremenski kritičnih aplikacija treba ugrađivati kvarcni oscilator ili keramički rezonator. Vr-ednosti kondenzatora C1 i C2 (Sl.4.4), treba da budu identične.

Sl.4.4. Povezivanje eksternog kvarca (LP, XT, HS)

Page 30: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 30 -

Mikrokontroleru PIC16F877A može da se dovede i spoljašnji takt, što je prikazano na Sl.4.5.

Sl.4.5. Dovođenje spoljašnjeg takta

U Tabeli 4.1 dat je izbor vrednosti kondenzatora za različite vrednosti frekvencije kristalnog kvarca, dok je u Tabeli 4.2 predložen izbor vrednosti kondenzatora pri različitim vrednostima frekven-cije rezonatora.

Na kraju ćemo istaći kako mikrokontroler PIC16F877A može da radi i na frekvenciji 32 kHz, ka-da ima izuzetno malu potrošnju.

Tabela 4.1. Izbor vrednosti kondenzatora za kvarcni kristal

Page 31: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 31 -

Tabela 4.2. Izbor vrednosti kondenzatora za rezonator

Odnos između takta i instrukcijskog ciklusa Takt koji se dovodi na pin OSC1 oscilatora u mikrokontroleru deli se na četiri vremenski nepre-

klapajuća taktna signala nazvana Q1, Q2, Q3 i Q4. Skup ovih signala čine jedan instrukcijski cik-lus . U zavisnosti od trenutka generisanja u okviru ciklusa instrukcija, taktni signali Q1-Q4 se koriste za sledeće namene:

Q1 - pribavljanje instrukcije iz programske memorije Q2 - dekodiranje naredbe iz prethodnog instrukcijskog ciklusa Q3 - izvršenje naredbe iz prethodna dva instrukcijska ciklusa Q4 - prenos opkôda naredbe pozvane u Q1 u instrukcijski registar.

IV.4. Reset

Uloga Reseta je da sve registre mikrokontrolera dovede u početno stanje. Ako se mikrokontro-ler “blokira” , ili smo ga tek uključili, neophodno je da se resetuje. Kako bi se sprečilo slučajno dovo-đenje logičke ’0’ na MCLR, potrebno je da se ovaj pin preko otpornika (npr. vrednosti 10KΩ) po-veže na pin napajanja Vdd (Sl.4.6).

Postoji nekoliko tipova reseta kod mikrokontrolera PIC16F877A i to su: • Power-on reset (POR) • MCLR Reset pri normalnom režimu radu • MCLR Reset prilikom SLEEP režima rada

Page 32: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 32 -

• WDT Reset pri normalnom radu • WDT Wake-up (“buđenje” iz SLEEP režima rada) • Brown-out Reset (BOR).

Sl.4.6. Povezivanje MCLR pina na napajanje

Power-on reset (POR) impuls se generiše u samom kolu kada se detektuje porast napona napaja-

nja (oko 1.2-1.7 V). Da bi se POR iskoristio, dovoljno je da MCLR pin priključimo na Vdd direktno ili preko otpornika (Sl.4.6). Ukoliko je porast napona napajanja spor, neophodno je na MCLR postaviti spoljnje kolo za reset. Prikaz kola za POR reset je dat na Sl.4.7.

Sl.4.7. Spoljašnje kolo za POR

Sl.4.8. Kolo za BROWN-OUT RESET (prva varijanta)

Page 33: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 33 -

Interno POR kolo neće generisati Reset signal kad napon napajanja padne ispod minimuma. Za situacije kada je moguća pojava BROWN-OUT-a (privremeni pad napona ispod minimalne vrednosti), neophodno je da se priključi spoljašnje Brown-out reset kolo, koje je prikazano na Sl.4.8.

Sl.4.9. Kolo za BROWN-OUT RESET (druga varijanta)

Power-up Timer (PWRT) generiše impuls fiksne širine (nominalno 72 ms) od pojave impulsa

POR-a. Za to vreme će mikrokontroler biti u Reset stanju. Za ovaj vremenski period obezbeđuje se da napon napajanja dostigne nominalnu vrednost. Tajmeru PWRT dozvoljava se rad setovanjem PWRTE bita koji pripada konfiguracionoj reči u fazi programiranja čipa. PWRT se taktuje inter-nim RC oscilatorom.

Oscilator Start-up Timer (OST) obezbeđuje kasnjenje od 1024 taktnih intervala nakon isteka kva-zistabilne periode PWRT-a (vidi Tabelu 4.3). Ovo obezbeđuje da kristalni oscilator ili rezonator star-tuju stabilnom frekvencijom. OST se aktivira samo kod XT, LP i HS režima rada i to pri: POR i “buđenju” iz SLEEP režima rada.

Mikrokontroler PIC16F877A ima implementiran dvobitni statusni registar nazvan PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-on-Reset, a resetuje se kada se aktivira neki drugi Reset. Drugi bit (BOR) kada je setovan ukazuje da je aktivno Brown-out stanje (nedozvoljena naponska stanja u napajanju mikrokontrolera), zbog kojeg takođe može da se aktivira Reset.

Power-up Konfiguracija oscilatora

PWRT omogućen PWRT onemogućen

“Buđenje” iz SLEEP režima rada

XT, HS, LP 72 ms + 1024 Tosc

1024 Tosc 1024 Tosc

RC 72 ms - -

Tabela 4.3. Kašnjenja OST-a

Stanja na kojima se postavljaju interni registri CPU-a nakon Reseta zavisi od vrste Reseta i reži-ma rada u kojima se nalazi mikroprocesor (Sleep i normalni).

Stanje nekih registara ostaje nedifinisano, neki zadržavaju svoje stanje, a ostali se postavljaju u unapred definisana stanja (vidi Tabele 4.4 i 4.5).

Page 34: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 34 -

Program Counter STATUS register Power-on reset (POR) 000h 0001 1XXX MCLR reset pri normalnom radu

000h

000U UUUU

MCLR reset prilikom SLEEP režima rada

000h

0001 0UUU

WDT Reset pri normalnom radu

000h

0000 1UUU

WDT Wake-up (buđenje iz SLEEP režima rada)

PC+1

UUU0 0UUU

Interrupt 004h UUU1 0UUU

Tabela 4.4. Postavljanje registara nakon reseta

Registar

Power-on reset

MCLR reset pri: - normalnom režimu - SLEEP mod WDT reset pri normalnom režimu

Buđenje iz SLEEP režima - interrupt - WDT time out

00h INDF ---- ---- ---- ---- ---- ---- 01h TMR0 XXXX XXXX UUUU UUUU UUUU UUUU 02h PCL 0000 0000 0000 0000 PC+1 03h STATUS 0001 1XXX 000Q QUUU UUUQ QUUU 04h FSR XXXX XXXX UUUU UUUU UUUU UUUU 05h PORTA ---X XXXX ---U UUUU ---U UUUU 06h PORTB XXXX XXXX UUUU UUUU UUUU UUUU 08h EEDATA XXXX XXXX UUUU UUUU UUUU UUUU 09h EEADR XXXX XXXX UUUU UUUU UUUU UUUU 0Ah PCLATH ---0 0000 ---0 0000 ---U UUUU 0Bh INTCON 0000 000X 0000 000U UUUU UUUU 80h INDF ---- ---- ---- ---- ---- ---- 81h OPTION 1111 1111 1111 1111 UUUU UUUU 82h PCL 0000 0000 0000 0000 PC+1 83h STATUS 0001 1XXX 000Q QUUU UUUU UUUU 84h FSR XXXX XXXX UUUU UUUU UUUU UUUU 85h TRISA ---1 1111 ---1 1111 ---U UUUU 86h TRISB 1111 1111 1111 1111 UUUU UUUU 88h EECON1 ---0 X000 ---0 Q000 ---0 UUUU 89h EECON2 ---- ---- ---- ---- ---- ---- 8Ah PCLATH ---0 0000 ---0 0000 ---U UUUU 8Bh INTCON 0000 000X 0000 000U UUUU UUUU

Tabela 4.5. Postavljanje registara nakon reseta

Page 35: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 35 -

Legenda: X (nepoznato stanje) U (nepromenjeno stanje) Q (stanje zavisi od uslova)- – (ne postoji fizički, čita se kao logička ‘0’).

IV.5. Watchdog timer

Watchdog timer (WDT) se taktuje nezavisanim RC oscilatorom koji radi čak i kad je zaustavljen

rad glavnog oscilatora, u SLEEP režimu rada. Prekoračenje intervala brojanja WDT-a, prilikom nor-malnog rada, izaziva RESET mikrokontrolera. Ako je mikrokontroler bio u SLEEP režimu rada, pre-koračenje tajmera će probuditi mikrokontroler i program će nastaviti sa normalnim radom. Isključi-vanje WDT-a se vrši resetovanjem WDTE bita u konfiguracionoj reči.

Nominalno vreme WDT-a je 18 ms bez uptrebe preskalera. Ovo vreme može da varira od kola do kola, zbog temperature i slično. Ukoliko je potrebno duže vreme moze se WDT-u pridružiti preskaler sa faktorom deljenja do 1:128, tako da se vreme može produžiti do 2.3s. Instrukcije CLRWDT i SLEEP resetuju WDT.

IV.6. Prekidi (Interrupts)

Mikrokontroler PIC16F877A podržava tehniku rada sa prekidima (interrupts) i može da opsluži ukupno 14 izvora prekida, što internih, što eksternih. Napomenućemo kako svaki prekid ne poseduje sopstveni vektor-broj.

Onog trenutka kada se prihvati zahtev za prekid, sledi izvršenje prekidnog programa počev od adrese 0x0004. Tada se programskim putem testira stanje markera, koji se postavljaju kada se aktivira odgovarajući prekid (interrupt flags polling). Kada se ustanovi koji je od uređaja zah-tevao prekid, prelazi se na izvršenje odgovarajuće rutine za obradu tog prekida. Povratna adresa pre-kinutog programana čuva se automatski u hardverskom magacinu. Povratak iz prekidnog programa se vrši instrukcijom RETFIE. Upravljački registar INTCON se koristi za maskiranje prekida.

Značenje pojedinih markera ćemo sada navesti:

• T0IF (INTCON:2) setuje se na prekoračenje TMR0 • INTF (INTCON:1) setuje se u slučaju da nastupi spoljni prekid na pinu RBO/INT • RBIF (INTCON:0) setuje se kada se dogodi promena stanja na nekom od pinova RB4-RB7 • PSPIF (PIR1:7) PSP marker bit koji se koristi u operaciji čitanja i upisa na PORTD, kada je on

konfigurisan kao PSP • ADIF (PIR1:6) marker koji se koristi za vreme analogno-digitalne konverzije • RCIF (PIR1:5) marker koji označava da je prijemni bafer koji koristi USART blok, pun • TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi USART prazan • SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta • CCP1IF (PIR1:2) marker koji koristi CCP1 blok • TMR2IF (PIR1:1) marker koji setuje TMR2 kada dođe do prekoračenja • TMR1IF (PIR1:0) marker koji setuje TMR2 kada dođe do prekoračenja • EEIF (PIR2:4) marker koji se setuje kada se završi upis u interni EEPROM • BCLIF (PIR2:3) marker koji koristi SSP blok kada je konfigurisan da radi u I2C master režimu • CCP2IF (PIR2:0) marker koji koristi CCP2 blok.

Page 36: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 36 -

Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za dozvolu rada prekida generisanih od strane periferija (PEIE), ovom registru pripadaju i markeri prekida (interrupt flags) i bitovi koji dozvoljavaju prekid koji izaziva Tajmer0 (TMR0), spoljašnji prekid na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna prekida, postoji još 11 periferij-skih prekida. Bi-tovi za njihovu dozvolu nalaze se u registrima PIE1 i PIE2, a odgovarajući flegovi – u registrima PIR1 i PIR2.Ovi se flegovi setuju čim se ispuni uslov prekida bez obzira na stanje njiho-vog bita dozvole, a po izvršenju servisne rutine potrebno ih je sostverski resetovati.

IV.7. Tajmeri U arhitekturi mikrokontrolera PIC16F877A su ugrađena tri tajmera (TMR0, TMR1 i TMR2) i njihov zadatak je da mere vreme i broje eksterne događaje. Svaki od pomenutih tajmera poseduje od-ređene specifičnosti. TMR0 (Tajmer0) poseduje čitava familija PICmicro kontrolera. To je, zapravo, običan 8-bitni brojač koji generiše prekid pri prelasku sa stanja 0xFF na stanje 0x00 (overflow). Izvor takta za TMR0 može da bude bilo interni sistemski sat (frekvencije Fosc/4) ili bilo kakav spoljni generator takta spojen na pin RA4/T0CKI. Naravno, može da se podesi da se TMR0 inkrementira na rastuću ili opa-dajuću ivicu spoljašnjeg signala. U kombinaciji sa modulom Tajmera0 može da se koristi za prog-ramabilni preskaler (delilac frekvencije) sa odnosima deljenja od 1:2 do 1:256. Ako deljenje nije pot-rebno, preskaler se dodeljuje watchdog tajmeru. Kada je preskaler u upotrebi, maksimalna frek-vencija eksternog izvora iznosi 50MHz. Na Sl. 4.10 prikazan je blok-dijagram TMR0/WDT preskalera.

Sl.4.10. Blok-dijagram TMR0/WDT preskalera

TMR1 je 16-bitni tajmer i može da radi kao brojač ili može da se koristi za merenje vremena. Blok-šema ovog tajmera data je na Sl. 4.11. TMR1 može da ima tri izvora takta: sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji kristal. Brojač eksternih događaja može se sinhronizovati sa internim oscilatorom, a postoji i asinhroni način rada koji omogućava da se brojač inkrementi-

Page 37: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 37 -

ra i u SLEEP režimu rada. Preskaliranje je moguće sa vrednostima deljenja 1:1, 1:2, 1:4 i 1:8.

Sl. 4.11. Blok-dijagram tajmera TMR1

TMR2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Može da bude tajmer

ili brojač opšte namene. Međutim, potreban je CCP modulu prilikom generisanja PWM signala i modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator. Zajedno sa TMR2 ko-risti se registar PR2 (Period Register). Kada se vrednost brojača izjednači sa vrednošću upisanom u registar PR2, generiše se odgovarajući prekid. Struktura TMR2 prikazana je na Sl. 4.12.

Sl. 4.12. Blok-dijagram tajmera TMR2

Page 38: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 38 -

IV.8. Portovi PIC16F877A poseduje pet portova (PORTA, PORTB, PORTC, PORTD i PORTE) i oni pred-tavljaju vezu njegove interne strukture sa spoljašnjim svetom. Svaki od njih može da se konfiguriše kao ulazni ili kao izlazni. Pomenuti portovi su različitog obima:

• 8-pinski (PORTB, PORTC, PORTD) • 6-pinski (PORTA) • 3-pinski (PORTE).

Svakom pinu bilo kojeg porta, u zavisnosti od režima rada, mogu da se dodele fiksne ili promen-

ljive funkcije. Konfiguracija smera prenosa ostvaruje se upisom na odgovarajuću bit-poziciju u pripa-dajućem TRIS registru (0 - pin je izlazni, 1 – pin je ulazni).

Svakom portu je dodeljen registar podataka (PORTX), preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara iniciraće upis u latch tog porta, a njegovo čitanje rezultiraće čita-njem logičkih stanja direktno sa pinova. Sve instrukcije upisivanja su tipa read-modify-write . To znači da se pri upisu u port najpre očitaju stanja pinova, zatim izvrši modifikacija, a potom korigovana vrednost upiše u latch porta. Ne postoji velika razlika u konstrukciji pomenutih pet portova. Jedino se PortB od ostalih razlikuje zbog posebne opcije koju nude četiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na ovim pinovima, generisaće prekid mikrokontrolera.

PortA

PortA je 6-bitni (RA5-RA0) bidirekcioni port (podaci mogu da se šalju u oba smera). Sadržaj re-gistra TRISA određuje smer (ulazni ili izlazni) pinova na portu. Blok-dijagrami za pin RA4 je prikazan na Sl.4.13, a za ostale pinove na Sl.4.14.

4.13. Blok-dijagram pina RA4

Page 39: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 39 -

Sada ćemo kroz nekoliko primera ilustrovati postavljanje smerova na portu: • TRISA = 0b000000 (PORTA je izlazni) • TRISA = 0b111111 (PORTA je ulazni) • TRISA = 0b101000 (RA5 i RA3 pinovi su ulazni, a RA4, RA2, RA1 i RA0 su izlazni) • TRISA = 0b111000 (RA5-RA3 su ulazni, a RA2-RA0 su izlazni) itd.

4.13. Blok-dijagram pinova RA5, RA3-RA0 PortA ima mogućnost analogno-digitalne konverzije i prvenstveno se koristi u te svrhe. A/D kon-

vertor, koji je integrisan u mikrokontroleru, je 10-bitni sa 8 ulaznih kanala, jer se u ove svrhe koriste i svi pinovi PortaE (i pinovi PortaA izuzev RA4).

Pin RA4 je sa otvorenim drejnom i može da se iskoristi za ulazni takt za tajmer TMR0.

Page 40: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 40 -

Tabela 4.6. Funkcije PortaA i registri

U Tabeli 4.6 dati su prikaz funkcija pojedinačnih pinova PortaA i registri koji se koriste za konfigurisanje porta.

Port B

Port B je 8-bitni bidirekcioni port. Svakom pinu porta korespondira odgovarajući bit u regis-

tru TRISB, kojim se definiše smer. Svi pinovi unutar PortB poseduju pull-up otpornike. Ovi otpor-nici mogu da se uključe jednim kontrolnim bitom. To se postiže postavljanjem RBPU' bita na ‘0’. Pull-up otpornici se automatski isključuju kada se pin konfiguriše kao izlazni. Otpornici su isklju-čeni i kod Power-on reseta.

Četiri pina na PORTB (RB7-RB4) imaju mogućnost generisanja prekida. Samo pinovi koji su definisani kao ulazni mogu da prouzrokuju prekid.

Kombinacija prekida na promenu stanja PortaB i pull-up otpornik mogu se iskoristiti kao jednostavan interfejs za tastaturu.

Na Slikama 4.14 i 4.15 prikazana je struktura PORTB.

4.14. Blok-dijagram pinova RB3-RB0

Page 41: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 41 -

4.15. Blok-dijagram pinova RB7-RB4

U Tabeli 4.7 dati su prikaz funkcija pojedinačnih pinova PortaB i registri koji se koriste za konfigurisanje porta.

Page 42: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 42 -

Tabela 4.7. Funkcije PortaB i registri

Port C

Port C je 8-bitni bidirekcioni port. Posebnost ovog porta se ogleda u tome što poseduje ugrađen USART modul, koji služi za serijsku komunikaciju (npr. sa racunarom ili drugim mikrokontro-lerom). Modulu se pristupa preko pinova RC7 i RC6. Pinove treba softverski konfigurisati da budu u funkciji USART modula.

Na Slikama 4.16 i 4.17 prikazana je struktura PortaC, dok je funkcionalna tabela registara koji se koriste za konfigurisanje samog porta data u Tabeli 4.8.

4.16. Blok-dijagram pinova RC7-RC5, RC2-RC0

Page 43: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 43 -

4.17. Blok-dijagram pinova RC7-RC5, RC2-RC0

Tabela 4.8. Funkcije PortaC i registri

Page 44: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 44 -

Portovi D i E Port D je 8-bitni bidirekcioni port. Ovaj port može da se konfiguriše kao 8-bitni paralelni mikro-

procesorski port (parallel slave port-PSP) i to podešavanjem konfiguracionog bita PSPMOTE (TRISC<4>). U ovom režimu rada ulazni bafer je TTL tipa.

Port E je bidirekcioni veličine 3 bita. Ima mogućnost A/D konverzije.Ulazni bafer je tipa Schmitt Trigger. Pinovi mogu da se konfigurišu kao digitalni ili analogni, kao i u slučaju PortaA, o čemu je već bilo reči.

IV.9. Organizacija memorije

Memorije mikrokontrolera čine tri odvojene celine: • Programska memorija • Memorija podataka • EEPROM memorija podataka.

Inače, u mikrokontroleru postoji i stack (magacin), koji radi na principu cikličnog bafera, što zna-

či da se u njega mogu staviti osam različitih adresa, dok se sa upisom devete adrese – briše prva i tako redom. Programski se ne može utvrditi da li je došlo do prepunjeja stack-a.

Programska memorije

PIC16F877A poseduje 13-bitni programski brojač (PC) koji je u mogućnosti da adresira memo-rijski prostor od 8K programskih reči od 14 bita. Reset vektor je 0x0000 i od njega počinje izvršavanje programa. Prekidni (interrupt) vektor je 0x0004. Mapa programske memorije i magacin prikazani su na Sl.4.18.

Organizacija memorije podataka

Memorija za podatke je podeljena u više banki (banks), a sastoji se od registara opšte namene (General Purpose Registers) i registara specijalne funkcije (Special Function Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0 koji služe za izbor željene banke podataka po principu prikazanom na Sl. 4.19.

Svaka banka može da sadrži do 128 registara (0x7F). Niže lokacije u banci zauzimaju specijalni registri, a ostatak prostora popunjavaju registri opšte namene implementirani kao statički RAM. Neki specijalni registri koji se često koriste mapirani su u sve banke da bi se omogućio brzi pristup i reduk-cija kôda. Mapa registara mikrokontrolera PIC16F877 prikazana je na Sl. 4.20. Nekoliko specijalnih registara su registri jezgra, uskopovezani sa funkcionisanjem mikroprocesora kontrolera. Ostali registri su vezani za periferne module i služe za njihovo upravljanje i kontrolu statusa. Programski brojač (PC) određuje adresu naredne instrukcije u programskom flash-u. U pitanju je 13-bitni registar. Simboličko ime nižeg bajta je PCL. To je registar u koji se može i upisivati i iščitavati. Viših pet bita programskog brojača smešteni su u izolovani registar PCH kojem se pristupa samo pre-ko latch-a PCLATH, mapiranom u internom RAM-u na adresi 0x0A.

Page 45: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 45 -

Sl.4.18 Mapa programske memorije i stack

Sl.4.19. Izbor željene banke preko bitova RP0 i RP1

STATUS registar je veoma bitan i zato je predviđeno da se može adresirati iz bilo koje banke. On pokazuje status aritmetičko-logičke jedinice, reset status mikrokontrolera i sadrzi bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit (Z), koji se postavlja kad je rezultat aritmetičke operacije jednak nuli i bit prenosa/pozajmice Carry (C).

Registar OPTION_REG se koristi za konfiguraciju preskalera za TMR0 ili Watchdog, za upravljanje TMR0, selekciju ivice okidanja eksternog prekida, i za omogućavanje Pull-up otpornika na PortaB. Kada je reč o registrima jezgra, ne treba zaboraviti par FSR (File Select Register) i INDF (Indi-rect File), koji služe za indirektno adresiranje memorije podataka. Bilo koja instrukcija koja se obra-ća INDF registru predstavlja indirektan pristup onoj lokaciji internog RAM-a čija je adresa trenutno u registru FSR.

Page 46: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 46 -

Sl. 4.20. Mapa registara mikrokontrolera PIC16F877

Page 47: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 47 -

Interni EEPROM za podatke

Ukoliko je potrebno sačuvati neke podatke i nakon ukidanja napajanja mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. Ova memorija je obima 256 bajtova.

IV.10. A/D konvertor

Svi signali u prirodi su kontinualni, a veoma teško je upravljati nekim procesom bez digitalizacije analognih veličina. Kao što je napomenuto, PORTA i PORTE imaju mogućnost A/D konverzije što podrazumeva da se mogu konfigurisati kao analogni ili digitalni.

Da bi se iskoristio 10-bitni A/D konveror integrisan u mikrokontroleru, neophodno je podesiti re- gistre ADCON0 i ADCON1. U Tabelama 4.9 i 4.10 dati su prikazi pomenutih registara.

Inače, registar ADCON0 služi za podešavanje A/D konverzije (frekvencije odabiranja konverto-ra, kanal koji se koristi za konverziju, početak konverzije i uključivanje modula za konverziju).

Registrom ADCON1 određuje se uloga pojedinih pinova (analogni ili digitalni). Modul za A/D konverziju se bazira na sa sukcesivnoj aproksimaciji.

Tabela 4.9. Registar za podešavanje A/D konverzije

Page 48: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 48 -

Tabela 4.10. Registar za podešavanje tipa kanala (analogno-digitalni)

Blok-dijagram A/D konvertora mikrokontrolera PIC16F877A prikazan je na Sl. 4.21.

Algoritam A/D konverzije

1. Konfiguracija A/D konvertora (preko ADCON0 i ADCON1) 2. Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE) 3. Čekanje da prođe zahtevano akviziciono vreme 4. Početak procesa A/D konverzije

Page 49: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 49 -

5. Završetak procesa A/D konverzije 6. Čitanje rezultata A/D konverzije iz registra ADRES 7. Za sledeću konverziju, skočiti na korak 1 ili korak 2.

Sl.4.21. Blok-dijagram A/D konverrota

4.10. Periferijske jedinice

Mikrokontroler PIC16F877 poseduje nekoliko korisnih periferijskih modula. S obzirom da mikro-

kontroler treba da razmenjuje podatke sa ostalim komoponentama (registrima, memorijama, drugim mikrokontrolerima itd.) u tu svrhu je opremljen sa tri hardverska komunikaciona modula.

Page 50: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 50 -

Prvi od njih je SSP modul (Synchronous Serial Port), koji služi za komunikaciju sa serijskim EEPROM-ima, pomeračkim registrima, displej-drajverima itd. Ovaj modul može da radi u jednom od dva režima:

• Serial Peripheral Interface (SPI) • Inter-Integrated Circuit (I2C).

Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous Receiver

Transmiter). On uglavnom služi za povezivanje sa personalnim računarom, mada to nije jedina njegova mogućnost primene.

USART može da se konfiguriše u neki od sledećih režima rada:

• Asinhroni rad (full duplex) • Sinhroni master rad (half duplex) • Sinhroni slave rad (half duplex).

Osim serijskih, postoji i jedan paralelni komunikacioni modul. U pitanju je modul PSP (Pa-

rallel Slave Port). Njegov zadatak je da PIC16F877 direktno poveže na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni mikroprocesor tada, preko linija Read (RD) i Write (WR) može da čita i upisuje u registar PortD kao u svaki drugi 8-bitni latch.

Page 51: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 51 -

[V] MIKROC – SOFTVER ZA PIC MIKROKONTROLERE mikroC prestavlja moćan softverski alat, koji je razvila beogradska Mikroelektronika, i namenjen

je pisanju kôda za Microchip-ove PIC mikrokontrolere. Koristeći mikroC, programeru je omogućen jednostavan način da kontroliše proces programiranja i napravi kvalitetan firmware. Osnovne karakteristike programa mikroC su sledeće:

• Pisanje C kôda korišćenjem kvalitetnog editora, što se ogleda automatskom kontrolom i upozorenjima vezanim za sintaksu kôda, korišćenih parametara, kao i automatskoj korekciji pojedinih grešaka

• Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code explorer • Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka toka progra-

ma preko ugrađeg debagera (debugger) • Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje značajno

ubrzavaju pisanje programa • Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike kôda i slično.

Moramo da napomenemo kako mikroC odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su načinjena su u cilju da se olakša programiranje, dok su druge rezultat hardverskih ograni-čenja PIC mikrokontrolera. Pomenućemo neke specifičnosti:

• Rekurzivne funkcije (function recursion) su podržane sa izvesnim ograničenjima, koja su

posledica nešto složenijeg pristupa magacinu (stack) i ograničenja vezana za memoriju • Pokazivači (pointers) promenljivih i pokazivači konstanti nisu kompatibilni, tj. nije moguća

međusobna dodela ili upoređivanje • mikroC tretira označavanje const kao “true constans” (kod C++), što omogućava koriš-

ćenje const objekta na mestima gde ANSIC očekuje constant izraz .Ukoliko se teži ka pre-nosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti

• mikroC dozvoljava C++ stil jednolinijskih komentara, koristeći dve kose crte (//). Komentar može da počne bilo gde i traje do sledeće nove linije programskog kôda

• Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u mikroC, uz individualna odstupanja.

Napominjemo da mikroC podržava gotovo sve PIC mikrokontrolere serija 12, 16 i 18. Izuzetak

su mikrokontroleri koji imaju staro hardversko jezgro kao na primer PIC12C508, PIC12F508, PIC12C509, PIC12F509 itd. Inače, ograničena verzija (do 2KB programa) može da s preuzme sa sajta Mikroelektronike (www.mikroe.com). U sličaju ako se želi potpuna verzija (neograničen kapacitet programa), mora da se plati licenca od 250$.

V.1. Instalacija Ovde ćemo preko Slika 5.1-5.5 ilustrovati proces instaliranja mikroC-a. Inače, instalacija traje 30

sekundi. Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije ostvaruje klikom na ikonicu:

Page 52: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 52 -

Sl.5.1. Početak procesa instalacije se ostvaruje klikom na izvršni fajl mikroC_..._.exe

Sl.5.2. Sada treba kliknuti na komandno dugme NEXT

Page 53: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 53 -

Sl.5.3. Prihvatanje uslova licenciranja i zatim treba kliknuti na komandno dugme NEXT

Sl.5.4. Izbor programatora (PicFlash), gotovih primera i zatim klik na komandno dugme NEXT

Page 54: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 54 -

Sl.5.5. Izbor foldera za smeštanje programa i klik na komandno dugme NEXT

V.2. Kreiranje kôda

U narednim redovima biće ilustrovan postupak kreiranja kôda u mikroC-u (Slike 5.6-5.13).

Sl.5.6. Izgled editora po startovanju programa mikroC

Page 55: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 55 -

Sl.5.7. Kreiranje novog projekta preko opcije Project → New Project

Sl.5.8. Podešavanje parametara novog projekta (naziv, tip mikrokontrolera, takt, parametri kontrolera)

Page 56: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 56 -

Sl.5.9. U editor treba uneti program (kôd) mikrokontrolera

Sl.5.10. U editor je unet za primer Soft_UART program

Page 57: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 57 -

Sl.5.11. Sada treba izvršiti prevođenje (compile) programa preko opcije Project → Build

Sl.5.12. Izgled prozora posle kompilacije sa izveštajem (Messages)

Page 58: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 58 -

Sl.5.13. Kao produkti prevođenja (kompilacije/kompajliranja) generiše se nekoliko fajlova: asemblerski kôd (ASM), heksadecimalni kôd (HEX), izveštaji itd.

V.3. UART terminal

Na Sl.5.14 ilustrovano je startovanje internog (softverskog) terminala za UART komunikaciju.

Sl.5.14. Pokretanje internog terminala mikroC-a preko Tools → USART Terminal

Page 59: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 59 -

Na Sl.5.15. je prikazan izgled prozora UART terminala. Kao što se vidi, moguće je podesiti veli-ki broj parametara. Navešćemo najvažnije:

• Serijski port (u padajućem meniju treba izabrati željeni serijski port, a kod standardnih raču-nara to su COM1 i COM2)

• Brzina prenosa (za frekvenciju kvarca od 4MHz treba izabrati 2400 bauda, za 8MHz bira se 9600 bauda itd.)

• Broj stop bitova (1, 1.5 i 2) • Izbor parnosti (bez, parna, neparna itd.) • Broj bitova koji čine karakter (5, 6, 7 ili 8) • Uključivanje/isključivanje handshaking signala (RTS i DTR) • Izbor formata podatka koji se šalje (ASCII, heksadecimalni - HEX ili dekadni - DEC) • Način slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.

Čim se podese parametri, terminal se startuje klikom na komandno dugme Connect. Odmah za-

tim, terminal je spreman da prihvati komande (vidi Sl.5.16). Kada se završi komunikacija, treba kliknu-ti na komandno dugme Disconnect.

Sl.5.15. Izgled prozora kod UART komunikacionog terminala

Page 60: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 60 -

Sl.5.16. Izgled prozora kod UART komunikacionog terminala kada je ovaj spreman za slanje/prijem

V.4. ASCII standard

ASCII standard je striktno definisan sedmobitni kôd, što znači da koristi sedam binarnih cifara (opseg je od 0 do 127 u dekadnom sistemu) za predstavljanje znakovnih informacija. U vreme kada je ovaj standard uveden, mnogi računari su koristili osmobitne grupe (bajtove) kao najmanju jedinicu za predstavljanje informacija. Osmi bit je bio najčešće korišćen kao bit parnosti za proveru grešaka u pre-nosu ili druge funkcije specifične za dati uređaj. Mašine koje nisu koristile parnost obično su postavlja-le osmi bit na nulu, mada je bilo i nekih sistema koje su postavljali osmi bit na jedinicu. U Tabeli 5.1 prikazan je skup ASCII karaktera.

ASCII je kao standard prvi put objavila Američka asocijacija za standarde (American Standards Association, ASA) 1963. godine, koja se kasnije preimenovala u ANSI. Postoji više varijante ASCII-a, ali trenutno je najrasprostranjeniji ANSI X3.4-1986, takođe standardizovan kao ECMA-6, ISO/IEC 646:1991 International Reference Version, ITU-T Recommendation T.50 (09/92), i RFC 20. Neki raču-narski stručnjaci smatraju kako jeASCII najuspešniji softverskim standard ikada usvojen.

Page 61: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 61 -

Tabela 5.1.Tabela ASCII kôdova

Prvih trideset i dva kôda u tabeli ASCII kodova (od 0 do 31 u dekadnom sistemu) su rezervisani su za tzv. kontrolne znakove. Ovi kôdovi, praktično, ne sadrže nikakve informacije o karakteru, nego upravljaju izlaznim uređajima (npr. štampačima, skenerima itd.) Tako, na primer, kôd koji ima vred-nost 10 predstavlja komandu line feed, koja nalaže štampaču da pomeri papir "na gore" za jedan red, dok kod sa vrednošću 27 simulira pritisak na taster "escape", lociran u gornjem levom uglu tastature.

Kôd 32 se koristi za razmak (blanko) između dve reči, za kojeg je na tastaturi najčešće predviđen dugački horizontalni taster. Kôdovi od 33 do 126 se nazivaju štampajući (printable) karakteri, koji predstavljaju slova, cifre, znakove interpunkcije, i još nekoliko raznih simbola.

Page 62: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 62 -

[VI] PROGRAMIRANJE MIKROKONTROLERA PIC16F877A Da bi se heksadecimalni kôd dobijen iz kompilatora/kompajlera (compiler) upisao u mikrokon-troler, neophodno je posedovati programator. Programator čine dve celine: bootstrap loader (hardver-ski deo) i softver (za programiranje firmware-a).

Uloga bootstrap loader-a je da transformiše naponske nivoe porta (DB9, DB25 ili USB) na nivoe standardne logike, dok je uloga softvera da upiše heksadecimalni kôd u programsku (najčešće: EPROM ili flash) memoriju mikrokontrolera. Za potrebe ovog rada korišćeni su bootstrap loader ALLPIC i softver IC-Prog.

VI.1. ALLPIC Električna šema bootstrap loader-a, čiji je autor Danijel Dabić, prikazana je na Sl. 6.1, a izgled

pločice i gotov uređaj – na Slikama 5.2 i 5.3, respektivno. U ovom poglavlju nećemo opisivati loader ALLPIC, s obzirom da se kompletan članak nalazi u poglavlju PRILOZI.

Sl.6.1. Električna šema ALLPIC bootstrap loader-a

Sl.6.2. Izgled štampane pločice ALLPIC-a

Sl.6.3. Izgled ALLPIC-a

Page 63: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

63

VI.2. Softver IC-Prog

Za programiranje mikrokontrolera PIC16F877A može da se koristi softver IC-Prog. Inače, ovaj softver je kompatibilan sa mnogim bootstrap loader-ima, kao što su JDM Programmer, TAFE Programmer, TAIT Programmer, Conquest Programmer, ProPIC 2 Programmer itd. ICProg poseduje mogućnost čitanja, upisa i verifikacije (Read, Write, Verify) sadržaja mikrokontrolera. Narav-no, softver dozvoljava mogućnost podešavanja parametara (WDT, PWRT, BODEN, LVP, CPD, CO, Debugger), kao i izbor oscilatora (RC, LP, XT, HS).

Program IC-Prog se ne instalira na računaru, već se pokreće direktno – tačnije, klikom na fajl ICPROG.EXE (Sl. 6.4).

Sl. 6.4. Pokretanje softvera IC-Prog

Ako programer ima računar sa verzijom Windows-a «višom» od Windows-a 98, odmah po star-tovanju progra-ma IC-Prog na ekranu će se pojaviti prozor sa upozorenjem, koji je prikazan na Sl. 6.5. Razlog je što su kod svih Windows-a sa platformom NT zaštićeni portovi. Zbog toga je neophodno da se instalira odgovarajući drajver.

Sl. 6.5. Upozorenje prilikom pokretanja programa Korak 1. Instaliranje drajvera

Ulaskom u podmeni Misc, koji se nalazi u meniju Options, ostvaruje se instaliranje/uključivanje drajvera icprog.sys (Settings → Options → Misc: √ Enable 2000/NT/XP), što je ilustrovano na Sl. 6.6. Na taj način omogućava se pristup serijskom portu računara. Isto tako, neophodno je da se prioritet programiranja postavi ili na High ili na Realtime, a nikako na Normal. Ovo potonje je veoma bitno. Naime, program po startovanju automatski podesi normalan prioritet i ukoliko se ne promeni na High ili Realtime, računar ne može da pristupi PIC mikrokontrolerima preko serijskog porta.

Page 64: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

64

Sl. 6.6. Uključivanje drajvera i prioriteta

Sl. 6.7. Podešavanje parametara programa

Page 65: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

65

Korak 2. Podešavanje hardverskih parametara

Nakon što je instaliran/uključen drajver, program će se restartovati i ponudiće opciju podešavanja hardverskih parametara, koji treba da budu postavljeni kao na Sl. 6.7. IC-Prog ima sličnu konfigura-ciju kao JDM Programmer, signali su bez inverzije – dok se komunikacija obavlja preko, na primer, serijskog porta COM2. Ako računar ima samo jedan serijski port, podrazumeva se da je to COM1. Korak 3. Izbor mikrokontrolera i učlitavanje kôda u bafer programa

Najpre treba izabrati mikrokontroler PIC16F877A (obeleženi padajući meni u gornjem desnom uglu osnovnog prozora programa), a potom učitati heksadecimalni kôd klikom na opciju Open File iz menija File - što je ilustrovano na Slikama 6.8, 6.9 i 6.10. (Napomena: Heksadecimalni kôd se dobija kompilacijom programa koji je napisan na nekom višem programskom jeziku (C, Pascal, Basic itd.) ili na asembleru. Viši programski jezici za mikrokontrolere imaju izvesne specifičnosti u odnosu na stan-dardne programske jezike, ali ovde te specifičnosti neće biti razmatrane.)

Sl. 6.8. Upisivanje/učitavanje kôda u bafer programa

Page 66: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

66

Sl. 6.9. Upisivanje/učitavanje fajla projekat.hex koji sadrži kôd Korak 4. Programiranje mikrokontrolera

Ulaskom u meni Command i startovanjem opcije Program All (Sl. 6.10). Zapravo, proces pro-gramiranja podrazumeva da se sadržaj bafera programa (Sl. 6.9) upiše u flash memoriju našeg mikro-kontrolera.

Naravno program će postaviti pitanje, tj. mogućnost da se izabere da li da otpočne proces progra-miranja ili da se od njega odustane (Sl. 6.11). Ukoliko se izabere programiranje, program će obrisati prethodni sadržaj flash memorije mikrokontrolera i u nju “prepisati” sadržaj bafera programa, čiji se je-dan deo vidi na Sl. 6.10.

Napredak proces programiranja, a potom i verifikacije programiranja je ilustrovan na Sl. 6.12. Ukoliko je proces uspešno okončan, na ekranu će se pojaviti prozor kao na Sl. 6.13 – u suprotnom, izgled prozora će biti kao na Sl. 6.14.

Page 67: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

67

Sl. 6.10. Startovanje programiranja mikrokontrolera PIC16F877A

Sl. 6.11. Mogućnost da se prekine proces programiranja

Sl. 6.12. Proces programiranja, a zatim i verifikacije

Page 68: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

Sl. 6.13. Poruka nakon uspešnog programiranja

Sl. 6.14. Poruka nakon neuspešnog programiranja

Page 69: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 69 -

[VII] PROJEKTNI ZADATAK (PIC16F877A«-»PC) Osnovna ideja ovog rada je da se predstavi komunikacija između mikrokontrolera PIC16F877A i personalnog računara (PC). Komunikacija se ostvaruje između USART modula – jedan je integrisan u serijskom portu računara, dok je drugi sastavni deo mikrokontrolera. Praćenje toka komunikacije vrši se preko UART terminala, koji čini integralni deo softvera mikroC. Inače, da bi mikrokontroler mogao da komunicira sa računarom, na štampanoj pločici je realizo-vano njegovo okruženje, kojeg čine sledeći sastavni delovi:

• Napajanje od 5V preko linearnog regulatora napona LM7805. • Kvarc od 4MHz, za generator takta (oscilator). Na ovaj način može ostvaruje se komunikacija

na brzini od 2400 bauda. Ukoliko se izabere kvarc od 8MHz, brzina komunikacije između mikrokontrolera i računara je 9600 bauda.

• Mikrokontroler PIC16F877A. • Kolo za prilagođenje MAX232 ostvaruje se prilagođenje: logički naponski nivo «-» RS232C.

Naime, mikrokontroler operiše sa logičkim, dok serijski port operiše sa RS232C nivoima. • Dve LED (žuta i crvena) koje su povezane na pinove mikrokontrolera, a na kojima se generi-

še povorka impulsa, zavisno od komande zadate iz UART terminala. • Dva tastera koja su povezana na pinove mikrokontrolera i preko kojih se upućuje komanda ka

računaru. • Potenciometar. Ukoliko se mikrokontroleru uputi odgovarajuća komanda, PIC16F877A treba

da izmeri napon na pinu na kojem je vezan potenciometar, da ga obradi i pošalje ka računaru u digitalnoj formi.

Električna šema mikrokontrolera i njegovog interfejsa prikatana je na Sl.7.1, dok je odgovarajuća štampana pločica prikazana na Sl.7.2. Ostavljena je mogućnost proširenja za kasnija kola (izdvojeni su sva četiri pina PortaD, napajanje i masa – konektor J2 (Conn6), kao i taster SW3. Inače, pločica je povezana preko DB9F konektora i standardnog serijskog pin-to-pin DB9 kabla na port računara. Komande:

1. Paljenje crvene LED (D1) 2. Paljenje žute LED (D2) 3. Paljenje obe LED 4. Gašenje obe LED 5. Naizmenično paljenje žute i crvene LED u ukupnom trajanju od 2s 6. Generisanje sekvence_1 na D1 (prati se osciloskopom) 7. Generisanje sekvence_2 na D1 (prati se osciloskopom) 8. Generisanje sekvence_3 na D1 (prati se osciloskopom) 9. Generisanje sekvence_4 na D2 (prati se osciloskopom) 10. Generisanje sekvence_5 na D2 (prati se osciloskopom) 11. Generisanje sekvence_6 na D2 (prati se osciloskopom) 12. Merenje napona na potenciometru (P1) 13. Pritisak tastera SW2.

Page 70: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 70 -

MCLR1

PA02

PA13

PA24

PA35

PA46

PA57

RD8

WR9

PC217

PD2 21PD3 22PC4 23PC5 24PC6 25PC7 26PD4 27PD5 28PD6 29PD7 30CS10

VDD11

VSS12

OSC113

OSC214

PC015

PC116

PC318

PD019

PD120

VSS 31VDD 32PB0 33PB1 34PB2 35PB3 36PB4 37PB5 38PB6 39PB7 40U2

PIC16F877A

C527pF

C627pF

Y1 4MHz

Gnd Gnd

Gnd

Gnd

X1 X2

X1X2

TXRX

Vin1

Gnd

2

Vout 3

U1LM7805

C1

100uF

C2

1000uF

C3

100nF

GndGnd Gnd Gnd

12

J1

CON2

Gnd

F1

FUSE R110K

SW1

Gnd

MCLR

MCLR

C1+1 Vcc 16

V+2 Gnd 15

C1-3 T1out 14

C2+4 R1in 13

C2-5 R1out 12

V-6 T1in 11

T2out7 T2in 10

R2in8 R2out 9

U3

MAX232

RTS

VDD

VDD

VDD

Gnd

VDD

Gnd

RX

RTS

RXD

C4

100nF

Gnd

Gnd

SW2

SW3

R2

10K

R3

10K

Gnd

VDD

AD1

LED1LED2

R4

4K7

R5

4K7

Gnd

LED2LED1

P1

10K

VDDAD1

162738495

J2

DB9

Gnd

TXD

RXDRTSD

C8 100nF

C9100nF

C11100nF

C10100nF

C7100nF

CTSD

D1

LED

D2

LED

CTS

TXD

CTSDRTSD

TX

CTS

PDOPD1 PD2

PD3

1 2 3 4 5 6

CON6

PD0

PD1

PD2

PD3

VD

D

Gnd

7-15V

Sl.7.1. Električna šema kola za USART komunikaciju PIC16F877A-PC

Sl.7.2. Izgled štampane pločice za kolo sa Sl.7.1

Page 71: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 71 -

Designator Part Type Footprint

1 R1 10K, Carbon Film Resistor, 0.25W, 5% AXIAL0.4 2 R2 10K, Carbon Film Resistor, 0.25W, 5% AXIAL0.4 3 R3 10K, Carbon Film Resistor, 0.25W, 5% AXIAL0.4 4 R4 4K7, Carbon Film Resistor, 0.25W, 5% AXIAL0.4 5 R5 4K7, Carbon Film Resistor, 0.25W, 5% AXIAL0.4 6 P1 10K, Carbon Trimmer Potent., Vertical POT-3 7 C1 100uF, CapXon Electrol. Capacitor 16V RB.2/.4 8 C2 1000uF, SME Electrol. Capacitor 10V RB.2/.4 9 C3 100nF, Polyester Block Capacitor, 5% RAD0.2 10 C4 220nF, Polyester Block Capacitor, 5% RAD0.2 11 C5 27pF, Multilayer Ceramic Capacitor, 5% RAD0.1 12 C6 27pF, Multilayer Ceramic Capacitor, 5% RAD0.1 13 C7 100nF, Polyester Block Capacitor, 5% RAD0.2 14 C8 100nF, Polyester Block Capacitor, 5% RAD0.2 15 C9 100nF, Polyester Block Capacitor, 5% RAD0.2 16 C10 100nF, Polyester Block Capacitor, 5% RAD0.2 17 C11 100nF, Polyester Block Capacitor, 5% RAD0.2 18 Y1 Quartz HC-49U, 4MHz, 20ppm, 20pF XTAL1 19 F1 Fuse, Fast, 1A, PCB RB.2/.4 20 D1 L-53LRD, Red Diffused LED D0.1 21 D2 L-53LYD, Yellow diffused LED D0.1 22 U1 LM7805, Linear voltage regulator, 5V TO-126 23 U2 PIC16F877A, Microcontroller DIP40 24 U3 MAX232, Driver/Receiver for EIA/TIA-232E DIP16 25 DC YDJ-1134, Power Jack POWER3 26 DB9 DB9F PCB, DB9 Connector DB9RA/F 27 SW1 Tact switch TS-062 SW-4 28 SW2 Tact switch TS-062 SW-4 29 SW3 Tact switch TS-062 SW-4 30 LC16/M16 Low_cost/Professional Socket DIP-16 DIP16 31 LC40/M40 Low_cost/Professional Socket DIP-40 DIP40 32 J2 Pin_Header/F 1x6 PH6/F

Tabela 7.1. Spisak komponenata za kolo sa Sl.7.1

Legenda: Carbon Film Resistor Ugljenoslojni otpornik Carbon Trimmer Potentiometer Ugljenoslojni potenciometar Electrolytic Capacitor Elektrolitski kondenzator Polyester Block Capacitor Poliesterski blok kondenzator Multilayer Ceramic Capacitor Keramički kondenzator “through hole” Quartz Kristal kvarca Fast Fuse Brzi osigurač Red Diffused LED Crvena difuzna LED dioda Yellow diffused LED Žuta difuzna LED dioda Linear voltage regulator Linearni regulator napona Microcontroller Mikrokontroler

Page 72: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 72 -

Driver/Receiver Drajver/prijemnik Power Jack Konektor (džek) za napajanje Tact switch Taster Low_cost/Professional Socket Jeftino/profesionalno podnožje Pin_Header/F Pin-letvica (ženska)

Za gotovo sve komponente navedene u Tabeli 7.1 dati su opisi u poglavlju PRILOZI. Kako za otpornike i kondezatore nije priložen opis, jer se radi o komponentama lako dostupnim na tržištu, ovde ćemo u nekoliko redova dati njihov opis. Korišćeni su standradni keramički kondenzatori (nazivni napon 50V) i standardni poliesterski kondenzatori (nazivni napon 63V). Za obe grupe kondenzatora je poželjno da budu sa tolerancijom od bar 5% (Y5V) ili boljom. Nije poželjno da imaju toleranciju 10% (X7R).

Što se tiče otpornika, na pločicu su postavljeni standardni ugljenoslojni otpornici snage 0,25W i tolerancije 5%. Ugljenoslojni otpornici mogu da se zamene metaloslojnim (Metal Film Resistor), me-đutim – to nema neki značaj.

Na pločici se nalaze standardni elektrolitski kondenzatori dva različita proizvođača CapXon i SME. Umesto ovih kondenzatora mogu da se postave kondenzatori i nekog drugog proizvođača (npr. Fujicon, Jamicon itd.)

Listing kôda u mikroC-u za PIC16F877A

unsigned short i, napon; // KOMENTARI: int k; void main() TRISA = 0b111001; // Definisanje i inicijalizacija PORTA = 0b000110; // pinova PORTA. ADCON0 = 0; // Postavljanje parametara A/D konvertora. ADCON1 = 15; USART _Init(2400); // Inicijalizacija USART modula // (8 bita, 2400 bauda). do if (USART_Data_Ready()) // Ako je podatak primljen, treba ga i = USART _Read(); // procitati i vratiti ka racunaru. USART _Write(i); if (i==0x31) // Iskljucivanje/gasenje obe LED. PORTA = 0b000000; if (i==0x32) // Ukljucivanje/Paljenje samo crvene LED. PORTA = 0b000100;

Page 73: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 73 -

if (i==0x33) // Paljenje samo zute LED. PORTA = 0b000010; if (i==0x34) // Paljenje obe LED. PORTA = 0b000110; if (i==0x35) // Naizmenicno paljenje crvene k=5; // i zute LED. Ciklus traje 2s. i=0x00; // Brisanje promenljive i. while (k > 0) PORTA = 0b000100; delay_ms(200); PORTA = 0b000010; delay_ms(200); k--; PORTA = 0b000000; if (i==0x36) // Zadavanje sekvence_1 na crvenoj LED. k=6; i=0x00; while (k > 0) PORTA = 0b000100; delay_ms(200); PORTA = 0b000000; delay_ms(100); PORTA = 0b000100; delay_ms(200); k--; PORTA = 0b000000; if (i==0x37) // Zadavanje sekvence_2 na crvenoj LED. k=8; i=0x00; while (k > 0) PORTA = 0b000100; delay_ms(100); PORTA = 0b000000; delay_ms(300); PORTA = 0b000100; delay_ms(100);

Page 74: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 74 -

k--; PORTA = 0b000000; if (i==0x61) // Zadavanje sekvence_3 na crvenoj LED. k=20; i=0x00; while (k > 0) PORTA = 0b000100; delay_ms(50); PORTA = 0b000000; delay_ms(50); k--; if (i==0x38) // Zadavanje sekvence_4 na zutoj LED. k=5; i=0x00; while (k > 0) PORTA = 0b000010; delay_ms(400); PORTA = 0b000000; delay_ms(200); PORTA = 0b000010; delay_ms(400); k--; PORTA = 0b000000; if (i==0x39) // Zadavanje sekvence_5 na zutoj LED. k=4; i=0x00; while (k > 0) PORTA = 0b000010; delay_ms(150); PORTA = 0b000000; delay_ms(200); PORTA = 0b000010; delay_ms(150); k--; PORTA = 0b000000;

Page 75: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 75 -

if (i==0x62) // Zadavanje sekvence_6 na zutoj LED. k=10; while (k > 0) PORTA = 0b000010; delay_ms(100); PORTA = 0b000000; delay_ms(100); k--; if (PORTA.F4 == 0) // Slanje komande sa ploce pritiskom USART_Write(0x63); // na taster SW2. delay_ms(500); i=0x00; if (i==0x30) // Osmobitna A/D konverzija. napon = ADC_Read(0) >> 2; USART_Write(napon); i=0x00; while (1); //~!

Napomena: Tokom pisanja programskog kôda u mikroC-u, korišćen su isključivo if i while pet-lje kako bi program bio što jasniji studentima. Inače, korišćen je i Soft_UART pot-program koji je sastavni deo mikroC-a.

Listing asemblerskog kôda za PIC16F877A ; ADDRESS OPCODE ASM ; ---------------------------------------------- $0000 $286D GOTO _main $0004 $ _Delay_22us: ;delays.c,10 :: void Delay_22us() ;delays.c,11 :: Delay_us(22); $0004 $3007 MOVLW 7 $0005 $1303 BCF STATUS, RP1 $0006 $1283 BCF STATUS, RP0 $0007 $00FA MOVWF STACK_10 $0008 $0BFA DECFSZ STACK_10, F $0009 $2808 GOTO $-1 ;delays.c,12 ::

Page 76: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 76 -

$000A $0008 RETURN $000B $ _Usart_Data_Ready: $000B $3000 MOVLW 0 $000C $1303 BCF STATUS, RP1 $000D $1283 BCF STATUS, RP0 $000E $1A8C BTFSC PIR1, 5 $000F $3001 MOVLW 1 $0010 $00F1 MOVWF STACK_1 $0011 $0871 MOVF STACK_1, 0 $0012 $00F0 MOVWF STACK_0 $0013 $0008 RETURN $0014 $ _Usart_Read: $0014 $1303 BCF STATUS, RP1 $0015 $1283 BCF STATUS, RP0 $0016 $081A MOVF RCREG, 0 $0017 $00A4 MOVWF Usart_Read_tmp_L0 $0018 $1C98 BTFSS RCSTA, 1 $0019 $281C GOTO L_Usart_Read_2 $001A $1218 BCF RCSTA, 4 $001B $1618 BSF RCSTA, 4 $001C $ L_Usart_Read_2: $001C $0824 MOVF Usart_Read_tmp_L0, 0 $001D $00F0 MOVWF STACK_0 $001E $0008 RETURN $001F $ _Usart_Write: $001F $ L_Usart_Write_3: $001F $3000 MOVLW 0 $0020 $1303 BCF STATUS, RP1 $0021 $1683 BSF STATUS, RP0 $0022 $1898 BTFSC TXSTA, 1 $0023 $3001 MOVLW 1 $0024 $00F1 MOVWF STACK_1 $0025 $0871 MOVF STACK_1, 0 $0026 $3A00 XORLW 0 $0027 $1D03 BTFSS STATUS, Z $0028 $282B GOTO L_Usart_Write_4 $0029 $0000 NOP $002A $281F GOTO L_Usart_Write_3 $002B $ L_Usart_Write_4: $002B $1283 BCF STATUS, RP0 $002C $0824 MOVF FARG_Usart_Write+0, 0 $002D $0099 MOVWF TXREG $002E $0008 RETURN $002F $ _Adc_Read: $002F $1303 BCF STATUS, RP1 $0030 $1283 BCF STATUS, RP0 $0031 $019F CLRF ADCON0, 1 $0032 $30C0 MOVLW 192 $0033 $049F IORWF ADCON0, 1 $0034 $1683 BSF STATUS, RP0 $0035 $171F BSF ADCON1, 6 $0036 $179F BSF ADCON1, 7 $0037 $1283 BCF STATUS, RP0 $0038 $0824 MOVF FARG_Adc_Read+0, 0 $0039 $00F0 MOVWF STACK_0 $003A $0DF0 RLF STACK_0, 1 $003B $1070 BCF STACK_0, 0 $003C $0DF0 RLF STACK_0, 1 $003D $1070 BCF STACK_0, 0

Page 77: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 77 -

$003E $0DF0 RLF STACK_0, 1 $003F $1070 BCF STACK_0, 0 $0040 $0870 MOVF STACK_0, 0 $0041 $049F IORWF ADCON0, 1 $0042 $141F BSF ADCON0, 0 $0043 $2004 CALL _Delay_22us $0044 $151F BSF ADCON0, 2 $0045 $ L_Adc_Read_0: $0045 $1D1F BTFSS ADCON0, 2 $0046 $2849 GOTO L_Adc_Read_1 $0047 $0000 NOP $0048 $2845 GOTO L_Adc_Read_0 $0049 $ L_Adc_Read_1: $0049 $101F BCF ADCON0, 0 $004A $3008 MOVLW 8 $004B $00F2 MOVWF STACK_2 $004C $081E MOVF ADRESH, 0 $004D $00F0 MOVWF STACK_0 $004E $01F1 CLRF STACK_0+1 $004F $0872 MOVF STACK_2, 0 $0050 $ L_Adc_Read_2: $0050 $1903 BTFSC STATUS, Z $0051 $2857 GOTO L_Adc_Read_3 $0052 $0DF0 RLF STACK_0, 1 $0053 $0DF1 RLF STACK_0+1, 1 $0054 $1070 BCF STACK_0, 0 $0055 $3FFF ADDLW 255 $0056 $2850 GOTO L_Adc_Read_2 $0057 $ L_Adc_Read_3: $0057 $1683 BSF STATUS, RP0 $0058 $081E MOVF ADRESL, 0 $0059 $04F0 IORWF STACK_0, 1 $005A $3000 MOVLW 0 $005B $04F1 IORWF STACK_0+1, 1 $005C $0008 RETURN $005D $ _Usart_Init: $005D $1303 BCF STATUS, RP1 $005E $1683 BSF STATUS, RP0 $005F $1698 BSF TXSTA, 5 $0060 $3090 MOVLW 144 $0061 $1283 BCF STATUS, RP0 $0062 $0098 MOVWF RCSTA $0063 $1683 BSF STATUS, RP0 $0064 $1787 BSF TRISC, 7 $0065 $1307 BCF TRISC, 6 $0066 $ L_Usart_Init_0: $0066 $1283 BCF STATUS, RP0 $0067 $1E8C BTFSS PIR1, 5 $0068 $286C GOTO L_Usart_Init_1 $0069 $081A MOVF RCREG, 0 $006A $00A8 MOVWF Usart_Init_tmp_L0 $006B $2866 GOTO L_Usart_Init_0 $006C $ L_Usart_Init_1: $006C $0008 RETURN $006D $ _main: ;UART.c,4 : : void main() ;UART.c,5 : : TRISA = 0b111001; // Definisanje i inicijalizacija

Page 78: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 78 -

$006D $3039 MOVLW 57 $006E $1303 BCF STATUS, RP1 $006F $1683 BSF STATUS, RP0 $0070 $0085 MOVWF TRISA ;UART.c,6 : :PORTA = 0b111110; // pinova PORTA. $0071 $303E MOVLW 62 $0072 $1283 BCF STATUS, RP0 $0073 $0085 MOVWF PORTA ;UART.c,7 :: CMCON = 7; $0074 $3007 MOVLW 7 $0075 $1683 BSF STATUS, RP0 $0076 $009C MOVWF CMCON ;UART.c,8 : :ADCON0 = 0; // Parametri A/D konvertora. $0077 $1283 BCF STATUS, RP0 $0078 $019F CLRF ADCON0, 1 ;UART.c,9 :: ADCON1 = 15; $0079 $300F MOVLW 15 $007A $1683 BSF STATUS, RP0 $007B $009F MOVWF ADCON1 ;UART.c,11 : :USART_init(2400);// Inicijalizacija USART modula. $007C $3067 MOVLW 103 $007D $0099 MOVWF SPBRG $007E $1518 BSF TXSTA, BRGH $007F $205D CALL _Usart_Init ;UART.c,13 :: while (1) $0080 $ L_main_0: ;UART.c,14 : :if (USART_Data_Ready()) // Ukoliko se primi podatak sa $0080 $200B CALL _Usart_Data_Ready $0081 $0870 MOVF STACK_0, 0 $0082 $1903 BTFSC STATUS, Z $0083 $2887 GOTO L_main_2 ;UART.c,15 : :i = USART_Read(); // racunara, treba ga procitati. $0084 $2014 CALL _Usart_Read $0085 $0870 MOVF STACK_0, 0 $0086 $00A0 MOVWF _i ;UART.c,16 :: $0087 $ L_main_2: ;UART.c,18 : :if (i==0x31) // Gasenje obe LED. $0087 $0820 MOVF _i, 0 $0088 $3A31 XORLW 49 $0089 $1D03 BTFSS STATUS, Z $008A $2890 GOTO L_main_3 ;UART.c,19 :: PORTA = 0b000000; $008B $0185 CLRF PORTA, 1 ;UART.c,20 :: USART_Write(i); $008C $0820 MOVF _i, 0 $008D $00A4 MOVWF FARG_Usart_Write+0 $008E $201F CALL _Usart_Write ;UART.c,21 :: i=0x00; $008F $01A0 CLRF _i, 1 ;UART.c,22 :: $0090 $ L_main_3: ;UART.c,23 :

Page 79: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 79 -

:if (i==0x32) // Paljenje samo crvene LED. $0090 $0820 MOVF _i, 0 $0091 $3A32 XORLW 50 $0092 $1D03 BTFSS STATUS, Z $0093 $289A GOTO L_main_4 ;UART.c,24 :: PORTA = 0b000100; $0094 $3004 MOVLW 4 $0095 $0085 MOVWF PORTA ;UART.c,25 :: USART_Write(i); $0096 $0820 MOVF _i, 0 $0097 $00A4 MOVWF FARG_Usart_Write+0 $0098 $201F CALL _Usart_Write ;UART.c,26 :: i=0x00; $0099 $01A0 CLRF _i, 1 ;UART.c,27 :: // Paljenje samo zute LED. $009A $ L_main_4: ;UART.c,28 :: if (i==0x33) $009A $0820 MOVF _i, 0 $009B $3A33 XORLW 51 $009C $1D03 BTFSS STATUS, Z $009D $28A4 GOTO L_main_5 ;UART.c,29 :: PORTA = 0b000010; $009E $3002 MOVLW 2 $009F $0085 MOVWF PORTA ;UART.c,30 :: USART_Write(i); $00A0 $0820 MOVF _i, 0 $00A1 $00A4 MOVWF FARG_Usart_Write+0 $00A2 $201F CALL _Usart_Write ;UART.c,31 :: i=0x00; $00A3 $01A0 CLRF _i, 1 ;UART.c,32 :: $00A4 $ L_main_5: ;UART.c,33 : :if (i==0x34) // Paljenje obe LED. $00A4 $0820 MOVF _i, 0 $00A5 $3A34 XORLW 52 $00A6 $1D03 BTFSS STATUS, Z $00A7 $28AE GOTO L_main_6 ;UART.c,34 :: PORTA = 0b000110; $00A8 $3006 MOVLW 6 $00A9 $0085 MOVWF PORTA ;UART.c,35 :: USART_Write(i); $00AA $0820 MOVF _i, 0 $00AB $00A4 MOVWF FARG_Usart_Write+0 $00AC $201F CALL _Usart_Write ;UART.c,36 :: i=0x00; $00AD $01A0 CLRF _i, 1 ;UART.c,37 :: $00AE $ L_main_6: ;UART.c,38 : :if (i==0x35) // Naizmenicno paljenje crvene $00AE $0820 MOVF _i, 0 $00AF $3A35 XORLW 53 $00B0 $1D03 BTFSS STATUS, Z $00B1 $290B GOTO L_main_7 ;UART.c,39 : : USART_Write(i); // i zute LED. Ciklus traje 2s. $00B2 $0820 MOVF _i, 0 $00B3 $00A4 MOVWF FARG_Usart_Write+0

Page 80: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 80 -

$00B4 $201F CALL _Usart_Write ;UART.c,40 :: i=0x00; $00B5 $01A0 CLRF _i, 1 ;UART.c,41 :: k=5; $00B6 $3005 MOVLW 5 $00B7 $00A1 MOVWF _k $00B8 $3000 MOVLW 0 $00B9 $00A2 MOVWF _k+1 ;UART.c,42 :: while (k > 0) $00BA $ L_main_8: $00BA $3080 MOVLW 128 $00BB $00F0 MOVWF STACK_0 $00BC $3080 MOVLW 128 $00BD $0622 XORWF _k+1, 0 $00BE $0270 SUBWF STACK_0, 0 $00BF $1D03 BTFSS STATUS, Z $00C0 $28C3 GOTO L_main_30 $00C1 $0821 MOVF _k, 0 $00C2 $3C00 SUBLW 0 $00C3 $ L_main_30: $00C3 $1803 BTFSC STATUS, C $00C4 $290B GOTO L_main_9 ;UART.c,43 :: PORTA = 0b000100; $00C5 $3004 MOVLW 4 $00C6 $0085 MOVWF PORTA ;UART.c,44 :: delay_ms(200); $00C7 $3002 MOVLW 2 $00C8 $00FC MOVWF STACK_12 $00C9 $30FF MOVLW 255 $00CA $00FB MOVWF STACK_11 $00CB $30FF MOVLW 255 $00CC $00FA MOVWF STACK_10 $00CD $0BFC DECFSZ STACK_12, F $00CE $28D0 GOTO $+2 $00CF $28D7 GOTO $+8 $00D0 $0BFB DECFSZ STACK_11, F $00D1 $28D3 GOTO $+2 $00D2 $28D6 GOTO $+4 $00D3 $0BFA DECFSZ STACK_10, F $00D4 $28D3 GOTO $-1 $00D5 $28D0 GOTO $-5 $00D6 $28CD GOTO $-9 $00D7 $3006 MOVLW 6 $00D8 $00FB MOVWF STACK_11 $00D9 $30FF MOVLW 255 $00DA $00FA MOVWF STACK_10 $00DB $0BFB DECFSZ STACK_11, F $00DC $28DE GOTO $+2 $00DD $28E1 GOTO $+4 $00DE $0BFA DECFSZ STACK_10, F $00DF $28DE GOTO $-1 $00E0 $28DB GOTO $-5 $00E1 $300A MOVLW 10 $00E2 $00FA MOVWF STACK_10 $00E3 $0BFA DECFSZ STACK_10, F $00E4 $28E3 GOTO $-1 ;UART.c,45 :: PORTA = 0b000010; $00E5 $3002 MOVLW 2 $00E6 $0085 MOVWF PORTA

Page 81: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 81 -

;UART.c,46 :: delay_ms(200); $00E7 $3002 MOVLW 2 $00E8 $00FC MOVWF STACK_12 $00E9 $30FF MOVLW 255 $00EA $00FB MOVWF STACK_11 $00EB $30FF MOVLW 255 $00EC $00FA MOVWF STACK_10 $00ED $0BFC DECFSZ STACK_12, F $00EE $28F0 GOTO $+2 $00EF $28F7 GOTO $+8 $00F0 $0BFB DECFSZ STACK_11, F $00F1 $28F3 GOTO $+2 $00F2 $28F6 GOTO $+4 $00F3 $0BFA DECFSZ STACK_10, F $00F4 $28F3 GOTO $-1 $00F5 $28F0 GOTO $-5 $00F6 $28ED GOTO $-9 $00F7 $3006 MOVLW 6 $00F8 $00FB MOVWF STACK_11 $00F9 $30FF MOVLW 255 $00FA $00FA MOVWF STACK_10 $00FB $0BFB DECFSZ STACK_11, F $00FC $28FE GOTO $+2 $00FD $2901 GOTO $+4 $00FE $0BFA DECFSZ STACK_10, F $00FF $28FE GOTO $-1 $0100 $28FB GOTO $-5 $0101 $300A MOVLW 10 $0102 $00FA MOVWF STACK_10 $0103 $0BFA DECFSZ STACK_10, F $0104 $2903 GOTO $-1 ;UART.c,47 :: k--; $0105 $3001 MOVLW 1 $0106 $02A1 SUBWF _k, 1 $0107 $1C03 BTFSS STATUS, C $0108 $03A2 DECF _k+1, 1 ;UART.c,48 :: PORTA = 0b000000; $0109 $0185 CLRF PORTA, 1 ;UART.c,49 :: $010A $28BA GOTO L_main_8 $010B $ L_main_9: ;UART.c,50 :: $010B $ L_main_7: ;UART.c,51 : :if (i==0x36) // Zadavanje sekvence_1 na crvenoj LED. $010B $0820 MOVF _i, 0 $010C $3A36 XORLW 54 $010D $1D03 BTFSS STATUS, Z $010E $2978 GOTO L_main_10 ;UART.c,52 :: USART_Write(i); $010F $0820 MOVF _i, 0 $0110 $00A4 MOVWF FARG_Usart_Write+0 $0111 $201F CALL _Usart_Write ;UART.c,53 :: i=0x00; $0112 $01A0 CLRF _i, 1 ;UART.c,54 :: k=5; $0113 $3005 MOVLW 5 $0114 $00A1 MOVWF _k $0115 $3000 MOVLW 0

Page 82: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 82 -

$0116 $00A2 MOVWF _k+1 ;UART.c,55 :: while (k > 0) $0117 $ L_main_11: $0117 $3080 MOVLW 128 $0118 $00F0 MOVWF STACK_0 $0119 $3080 MOVLW 128 $011A $0622 XORWF _k+1, 0 $011B $0270 SUBWF STACK_0, 0 $011C $1D03 BTFSS STATUS, Z $011D $2920 GOTO L_main_31 $011E $0821 MOVF _k, 0 $011F $3C00 SUBLW 0 $0120 $ L_main_31: $0120 $1803 BTFSC STATUS, C $0121 $2978 GOTO L_main_12 ;UART.c,56 :: PORTA = 0b000100; $0122 $3004 MOVLW 4 $0123 $0085 MOVWF PORTA ;UART.c,57 :: delay_ms(200); $0124 $3002 MOVLW 2 $0125 $00FC MOVWF STACK_12 $0126 $30FF MOVLW 255 $0127 $00FB MOVWF STACK_11 $0128 $30FF MOVLW 255 $0129 $00FA MOVWF STACK_10 $012A $0BFC DECFSZ STACK_12, F $012B $292D GOTO $+2 $012C $2934 GOTO $+8 $012D $0BFB DECFSZ STACK_11, F $012E $2930 GOTO $+2 $012F $2933 GOTO $+4 $0130 $0BFA DECFSZ STACK_10, F $0131 $2930 GOTO $-1 $0132 $292D GOTO $-5 $0133 $292A GOTO $-9 $0134 $3006 MOVLW 6 $0135 $00FB MOVWF STACK_11 $0136 $30FF MOVLW 255 $0137 $00FA MOVWF STACK_10 $0138 $0BFB DECFSZ STACK_11, F $0139 $293B GOTO $+2 $013A $293E GOTO $+4 $013B $0BFA DECFSZ STACK_10, F $013C $293B GOTO $-1 $013D $2938 GOTO $-5 $013E $300A MOVLW 10 $013F $00FA MOVWF STACK_10 $0140 $0BFA DECFSZ STACK_10, F $0141 $2940 GOTO $-1 ;UART.c,58 :: PORTA = 0b000000; $0142 $0185 CLRF PORTA, 1 ;UART.c,59 :: delay_ms(100); $0143 $3082 MOVLW 130 $0144 $00FB MOVWF STACK_11 $0145 $30FF MOVLW 255 $0146 $00FA MOVWF STACK_10 $0147 $0BFB DECFSZ STACK_11, F $0148 $294A GOTO $+2 $0149 $294D GOTO $+4

Page 83: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 83 -

$014A $0BFA DECFSZ STACK_10, F $014B $294A GOTO $-1 $014C $2947 GOTO $-5 $014D $3087 MOVLW 135 $014E $00FA MOVWF STACK_10 $014F $0BFA DECFSZ STACK_10, F $0150 $294F GOTO $-1 $0151 $0000 NOP ;UART.c,60 :: PORTA = 0b000100; $0152 $3004 MOVLW 4 $0153 $0085 MOVWF PORTA ;UART.c,61 :: delay_ms(200); $0154 $3002 MOVLW 2 $0155 $00FC MOVWF STACK_12 $0156 $30FF MOVLW 255 $0157 $00FB MOVWF STACK_11 $0158 $30FF MOVLW 255 $0159 $00FA MOVWF STACK_10 $015A $0BFC DECFSZ STACK_12, F $015B $295D GOTO $+2 $015C $2964 GOTO $+8 $015D $0BFB DECFSZ STACK_11, F $015E $2960 GOTO $+2 $015F $2963 GOTO $+4 $0160 $0BFA DECFSZ STACK_10, F $0161 $2960 GOTO $-1 $0162 $295D GOTO $-5 $0163 $295A GOTO $-9 $0164 $3006 MOVLW 6 $0165 $00FB MOVWF STACK_11 $0166 $30FF MOVLW 255 $0167 $00FA MOVWF STACK_10 $0168 $0BFB DECFSZ STACK_11, F $0169 $296B GOTO $+2 $016A $296E GOTO $+4 $016B $0BFA DECFSZ STACK_10, F $016C $296B GOTO $-1 $016D $2968 GOTO $-5 $016E $300A MOVLW 10 $016F $00FA MOVWF STACK_10 $0170 $0BFA DECFSZ STACK_10, F $0171 $2970 GOTO $-1 ;UART.c,62 :: k--; $0172 $3001 MOVLW 1 $0173 $02A1 SUBWF _k, 1 $0174 $1C03 BTFSS STATUS, C $0175 $03A2 DECF _k+1, 1 ;UART.c,63 :: PORTA = 0b000000; $0176 $0185 CLRF PORTA, 1 ;UART.c,64 :: $0177 $2917 GOTO L_main_11 $0178 $ L_main_12: ;UART.c,65 :: $0178 $ L_main_10: ;UART.c,66 : :if (i==0x37) // Zadavanje sekvence_2 na crvenoj LED. $0178 $0820 MOVF _i, 0 $0179 $3A37 XORLW 55 $017A $1D03 BTFSS STATUS, Z

Page 84: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 84 -

$017B $29D7 GOTO L_main_13 ;UART.c,67 :: USART_Write(i); $017C $0820 MOVF _i, 0 $017D $00A4 MOVWF FARG_Usart_Write+0 $017E $201F CALL _Usart_Write ;UART.c,68 :: i=0x00; $017F $01A0 CLRF _i, 1 ;UART.c,69 :: k=4; $0180 $3004 MOVLW 4 $0181 $00A1 MOVWF _k $0182 $3000 MOVLW 0 $0183 $00A2 MOVWF _k+1 ;UART.c,70 :: while (k > 0) $0184 $ L_main_14: $0184 $3080 MOVLW 128 $0185 $00F0 MOVWF STACK_0 $0186 $3080 MOVLW 128 $0187 $0622 XORWF _k+1, 0 $0188 $0270 SUBWF STACK_0, 0 $0189 $1D03 BTFSS STATUS, Z $018A $298D GOTO L_main_32 $018B $0821 MOVF _k, 0 $018C $3C00 SUBLW 0 $018D $ L_main_32: $018D $1803 BTFSC STATUS, C $018E $29D7 GOTO L_main_15 ;UART.c,71 :: PORTA = 0b000100; $018F $3004 MOVLW 4 $0190 $0085 MOVWF PORTA ;UART.c,72 :: delay_ms(100); $0191 $3082 MOVLW 130 $0192 $00FB MOVWF STACK_11 $0193 $30FF MOVLW 255 $0194 $00FA MOVWF STACK_10 $0195 $0BFB DECFSZ STACK_11, F $0196 $2998 GOTO $+2 $0197 $299B GOTO $+4 $0198 $0BFA DECFSZ STACK_10, F $0199 $2998 GOTO $-1 $019A $2995 GOTO $-5 $019B $3087 MOVLW 135 $019C $00FA MOVWF STACK_10 $019D $0BFA DECFSZ STACK_10, F $019E $299D GOTO $-1 $019F $0000 NOP ;UART.c,73 :: PORTA = 0b000000; $01A0 $0185 CLRF PORTA, 1 ;UART.c,74 :: delay_ms(300); $01A1 $3002 MOVLW 2 $01A2 $00FC MOVWF STACK_12 $01A3 $30FF MOVLW 255 $01A4 $00FB MOVWF STACK_11 $01A5 $30FF MOVLW 255 $01A6 $00FA MOVWF STACK_10 $01A7 $0BFC DECFSZ STACK_12, F $01A8 $29AA GOTO $+2 $01A9 $29B1 GOTO $+8 $01AA $0BFB DECFSZ STACK_11, F $01AB $29AD GOTO $+2

Page 85: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 85 -

$01AC $29B0 GOTO $+4 $01AD $0BFA DECFSZ STACK_10, F $01AE $29AD GOTO $-1 $01AF $29AA GOTO $-5 $01B0 $29A7 GOTO $-9 $01B1 $3087 MOVLW 135 $01B2 $00FB MOVWF STACK_11 $01B3 $30FF MOVLW 255 $01B4 $00FA MOVWF STACK_10 $01B5 $0BFB DECFSZ STACK_11, F $01B6 $29B8 GOTO $+2 $01B7 $29BB GOTO $+4 $01B8 $0BFA DECFSZ STACK_10, F $01B9 $29B8 GOTO $-1 $01BA $29B5 GOTO $-5 $01BB $3093 MOVLW 147 $01BC $00FA MOVWF STACK_10 $01BD $0BFA DECFSZ STACK_10, F $01BE $29BD GOTO $-1 $01BF $0000 NOP ;UART.c,75 :: PORTA = 0b000100; $01C0 $3004 MOVLW 4 $01C1 $0085 MOVWF PORTA ;UART.c,76 :: delay_ms(100); $01C2 $3082 MOVLW 130 $01C3 $00FB MOVWF STACK_11 $01C4 $30FF MOVLW 255 $01C5 $00FA MOVWF STACK_10 $01C6 $0BFB DECFSZ STACK_11, F $01C7 $29C9 GOTO $+2 $01C8 $29CC GOTO $+4 $01C9 $0BFA DECFSZ STACK_10, F $01CA $29C9 GOTO $-1 $01CB $29C6 GOTO $-5 $01CC $3087 MOVLW 135 $01CD $00FA MOVWF STACK_10 $01CE $0BFA DECFSZ STACK_10, F $01CF $29CE GOTO $-1 $01D0 $0000 NOP ;UART.c,77 :: k--; $01D1 $3001 MOVLW 1 $01D2 $02A1 SUBWF _k, 1 $01D3 $1C03 BTFSS STATUS, C $01D4 $03A2 DECF _k+1, 1 ;UART.c,78 :: PORTA = 0b000000; $01D5 $0185 CLRF PORTA, 1 ;UART.c,79 :: $01D6 $2984 GOTO L_main_14 $01D7 $ L_main_15: ;UART.c,80 :: $01D7 $ L_main_13: ;UART.c,81 : :if (i==0x61) // Zadavanje sekvence_3 na crvenoj LED. $01D7 $0820 MOVF _i, 0 $01D8 $3A61 XORLW 97 $01D9 $1D03 BTFSS STATUS, Z $01DA $2A14 GOTO L_main_16 ;UART.c,82 :: USART_Write(i); $01DB $0820 MOVF _i, 0

Page 86: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 86 -

$01DC $00A4 MOVWF FARG_Usart_Write+0 $01DD $201F CALL _Usart_Write ;UART.c,83 :: i=0x00; $01DE $01A0 CLRF _i, 1 ;UART.c,84 :: k=20; $01DF $3014 MOVLW 20 $01E0 $00A1 MOVWF _k $01E1 $3000 MOVLW 0 $01E2 $00A2 MOVWF _k+1 ;UART.c,85 :: while (k > 0) $01E3 $ L_main_17: $01E3 $3080 MOVLW 128 $01E4 $00F0 MOVWF STACK_0 $01E5 $3080 MOVLW 128 $01E6 $0622 XORWF _k+1, 0 $01E7 $0270 SUBWF STACK_0, 0 $01E8 $1D03 BTFSS STATUS, Z $01E9 $29EC GOTO L_main_33 $01EA $0821 MOVF _k, 0 $01EB $3C00 SUBLW 0 $01EC $ L_main_33: $01EC $1803 BTFSC STATUS, C $01ED $2A14 GOTO L_main_18 ;UART.c,86 :: PORTA = 0b000100; $01EE $3004 MOVLW 4 $01EF $0085 MOVWF PORTA ;UART.c,87 :: delay_ms(50); $01F0 $3041 MOVLW 65 $01F1 $00FB MOVWF STACK_11 $01F2 $30FF MOVLW 255 $01F3 $00FA MOVWF STACK_10 $01F4 $0BFB DECFSZ STACK_11, F $01F5 $29F7 GOTO $+2 $01F6 $29FA GOTO $+4 $01F7 $0BFA DECFSZ STACK_10, F $01F8 $29F7 GOTO $-1 $01F9 $29F4 GOTO $-5 $01FA $30C3 MOVLW 195 $01FB $00FA MOVWF STACK_10 $01FC $0BFA DECFSZ STACK_10, F $01FD $29FC GOTO $-1 $01FE $0000 NOP ;UART.c,88 :: PORTA = 0b000000; $01FF $0185 CLRF PORTA, 1 ;UART.c,89 :: delay_ms(50); $0200 $3041 MOVLW 65 $0201 $00FB MOVWF STACK_11 $0202 $30FF MOVLW 255 $0203 $00FA MOVWF STACK_10 $0204 $0BFB DECFSZ STACK_11, F $0205 $2A07 GOTO $+2 $0206 $2A0A GOTO $+4 $0207 $0BFA DECFSZ STACK_10, F $0208 $2A07 GOTO $-1 $0209 $2A04 GOTO $-5 $020A $30C3 MOVLW 195 $020B $00FA MOVWF STACK_10 $020C $0BFA DECFSZ STACK_10, F $020D $2A0C GOTO $-1

Page 87: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 87 -

$020E $0000 NOP ;UART.c,90 :: k--; $020F $3001 MOVLW 1 $0210 $02A1 SUBWF _k, 1 $0211 $1C03 BTFSS STATUS, C $0212 $03A2 DECF _k+1, 1 ;UART.c,92 :: $0213 $29E3 GOTO L_main_17 $0214 $ L_main_18: ;UART.c,93 :: $0214 $ L_main_16: ;UART.c,95 : :if (i==0x38) // Zadavanje sekvence_4 na zutoj LED. $0214 $0820 MOVF _i, 0 $0215 $3A38 XORLW 56 $0216 $1D03 BTFSS STATUS, Z $0217 $2A90 GOTO L_main_19 ;UART.c,96 :: USART_Write(i); $0218 $0820 MOVF _i, 0 $0219 $00A4 MOVWF FARG_Usart_Write+0 $021A $201F CALL _Usart_Write ;UART.c,97 :: i=0x00; $021B $01A0 CLRF _i, 1 ;UART.c,98 :: k=2; $021C $3002 MOVLW 2 $021D $00A1 MOVWF _k $021E $3000 MOVLW 0 $021F $00A2 MOVWF _k+1 ;UART.c,99 :: while (k > 0) $0220 $ L_main_20: $0220 $3080 MOVLW 128 $0221 $00F0 MOVWF STACK_0 $0222 $3080 MOVLW 128 $0223 $0622 XORWF _k+1, 0 $0224 $0270 SUBWF STACK_0, 0 $0225 $1D03 BTFSS STATUS, Z $0226 $2A29 GOTO L_main_34 $0227 $0821 MOVF _k, 0 $0228 $3C00 SUBLW 0 $0229 $ L_main_34: $0229 $1803 BTFSC STATUS, C $022A $2A90 GOTO L_main_21 ;UART.c,100 :: PORTA = 0b000010; $022B $3002 MOVLW 2 $022C $0085 MOVWF PORTA ;UART.c,101 :: delay_ms(400); $022D $3003 MOVLW 3 $022E $00FC MOVWF STACK_12 $022F $30FF MOVLW 255 $0230 $00FB MOVWF STACK_11 $0231 $30FF MOVLW 255 $0232 $00FA MOVWF STACK_10 $0233 $0BFC DECFSZ STACK_12, F $0234 $2A36 GOTO $+2 $0235 $2A3D GOTO $+8 $0236 $0BFB DECFSZ STACK_11, F $0237 $2A39 GOTO $+2 $0238 $2A3C GOTO $+4 $0239 $0BFA DECFSZ STACK_10, F

Page 88: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 88 -

$023A $2A39 GOTO $-1 $023B $2A36 GOTO $-5 $023C $2A33 GOTO $-9 $023D $300B MOVLW 11 $023E $00FB MOVWF STACK_11 $023F $30FF MOVLW 255 $0240 $00FA MOVWF STACK_10 $0241 $0BFB DECFSZ STACK_11, F $0242 $2A44 GOTO $+2 $0243 $2A47 GOTO $+4 $0244 $0BFA DECFSZ STACK_10, F $0245 $2A44 GOTO $-1 $0246 $2A41 GOTO $-5 $0247 $3018 MOVLW 24 $0248 $00FA MOVWF STACK_10 $0249 $0BFA DECFSZ STACK_10, F $024A $2A49 GOTO $-1 ;UART.c,102 :: PORTA = 0b000000; $024B $0185 CLRF PORTA, 1 ;UART.c,103 :: delay_ms(200); $024C $3002 MOVLW 2 $024D $00FC MOVWF STACK_12 $024E $30FF MOVLW 255 $024F $00FB MOVWF STACK_11 $0250 $30FF MOVLW 255 $0251 $00FA MOVWF STACK_10 $0252 $0BFC DECFSZ STACK_12, F $0253 $2A55 GOTO $+2 $0254 $2A5C GOTO $+8 $0255 $0BFB DECFSZ STACK_11, F $0256 $2A58 GOTO $+2 $0257 $2A5B GOTO $+4 $0258 $0BFA DECFSZ STACK_10, F $0259 $2A58 GOTO $-1 $025A $2A55 GOTO $-5 $025B $2A52 GOTO $-9 $025C $3006 MOVLW 6 $025D $00FB MOVWF STACK_11 $025E $30FF MOVLW 255 $025F $00FA MOVWF STACK_10 $0260 $0BFB DECFSZ STACK_11, F $0261 $2A63 GOTO $+2 $0262 $2A66 GOTO $+4 $0263 $0BFA DECFSZ STACK_10, F $0264 $2A63 GOTO $-1 $0265 $2A60 GOTO $-5 $0266 $300A MOVLW 10 $0267 $00FA MOVWF STACK_10 $0268 $0BFA DECFSZ STACK_10, F $0269 $2A68 GOTO $-1 ;UART.c,104 :: PORTA = 0b000010; $026A $3002 MOVLW 2 $026B $0085 MOVWF PORTA ;UART.c,105 :: delay_ms(400); $026C $3003 MOVLW 3 $026D $00FC MOVWF STACK_12 $026E $30FF MOVLW 255 $026F $00FB MOVWF STACK_11 $0270 $30FF MOVLW 255

Page 89: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 89 -

$0271 $00FA MOVWF STACK_10 $0272 $0BFC DECFSZ STACK_12, F $0273 $2A75 GOTO $+2 $0274 $2A7C GOTO $+8 $0275 $0BFB DECFSZ STACK_11, F $0276 $2A78 GOTO $+2 $0277 $2A7B GOTO $+4 $0278 $0BFA DECFSZ STACK_10, F $0279 $2A78 GOTO $-1 $027A $2A75 GOTO $-5 $027B $2A72 GOTO $-9 $027C $300B MOVLW 11 $027D $00FB MOVWF STACK_11 $027E $30FF MOVLW 255 $027F $00FA MOVWF STACK_10 $0280 $0BFB DECFSZ STACK_11, F $0281 $2A83 GOTO $+2 $0282 $2A86 GOTO $+4 $0283 $0BFA DECFSZ STACK_10, F $0284 $2A83 GOTO $-1 $0285 $2A80 GOTO $-5 $0286 $3018 MOVLW 24 $0287 $00FA MOVWF STACK_10 $0288 $0BFA DECFSZ STACK_10, F $0289 $2A88 GOTO $-1 ;UART.c,106 :: k--; $028A $3001 MOVLW 1 $028B $02A1 SUBWF _k, 1 $028C $1C03 BTFSS STATUS, C $028D $03A2 DECF _k+1, 1 ;UART.c,107 :: PORTA = 0b000000; $028E $0185 CLRF PORTA, 1 ;UART.c,108 :: $028F $2A20 GOTO L_main_20 $0290 $ L_main_21: ;UART.c,109 :: $0290 $ L_main_19: ;UART.c,111 : :if (i==0x39) // Zadavanje sekvence_5 na zutoj LED. $0290 $0820 MOVF _i, 0 $0291 $3A39 XORLW 57 $0292 $1D03 BTFSS STATUS, Z $0293 $2AEE GOTO L_main_22 ;UART.c,112 :: USART_Write(i); $0294 $0820 MOVF _i, 0 $0295 $00A4 MOVWF FARG_Usart_Write+0 $0296 $201F CALL _Usart_Write ;UART.c,113 :: i=0x00; $0297 $01A0 CLRF _i, 1 ;UART.c,114 :: k=4; $0298 $3004 MOVLW 4 $0299 $00A1 MOVWF _k $029A $3000 MOVLW 0 $029B $00A2 MOVWF _k+1 ;UART.c,115 :: while (k > 0) $029C $ L_main_23: $029C $3080 MOVLW 128 $029D $00F0 MOVWF STACK_0 $029E $3080 MOVLW 128

Page 90: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 90 -

$029F $0622 XORWF _k+1, 0 $02A0 $0270 SUBWF STACK_0, 0 $02A1 $1D03 BTFSS STATUS, Z $02A2 $2AA5 GOTO L_main_35 $02A3 $0821 MOVF _k, 0 $02A4 $3C00 SUBLW 0 $02A5 $ L_main_35: $02A5 $1803 BTFSC STATUS, C $02A6 $2AEE GOTO L_main_24 ;UART.c,116 :: PORTA = 0b000010; $02A7 $3002 MOVLW 2 $02A8 $0085 MOVWF PORTA ;UART.c,117 :: delay_ms(150); $02A9 $30C3 MOVLW 195 $02AA $00FB MOVWF STACK_11 $02AB $30FF MOVLW 255 $02AC $00FA MOVWF STACK_10 $02AD $0BFB DECFSZ STACK_11, F $02AE $2AB0 GOTO $+2 $02AF $2AB3 GOTO $+4 $02B0 $0BFA DECFSZ STACK_10, F $02B1 $2AB0 GOTO $-1 $02B2 $2AAD GOTO $-5 $02B3 $304B MOVLW 75 $02B4 $00FA MOVWF STACK_10 $02B5 $0BFA DECFSZ STACK_10, F $02B6 $2AB5 GOTO $-1 $02B7 $0000 NOP ;UART.c,118 :: PORTA = 0b000000; $02B8 $0185 CLRF PORTA, 1 ;UART.c,119 :: delay_ms(200); $02B9 $3002 MOVLW 2 $02BA $00FC MOVWF STACK_12 $02BB $30FF MOVLW 255 $02BC $00FB MOVWF STACK_11 $02BD $30FF MOVLW 255 $02BE $00FA MOVWF STACK_10 $02BF $0BFC DECFSZ STACK_12, F $02C0 $2AC2 GOTO $+2 $02C1 $2AC9 GOTO $+8 $02C2 $0BFB DECFSZ STACK_11, F $02C3 $2AC5 GOTO $+2 $02C4 $2AC8 GOTO $+4 $02C5 $0BFA DECFSZ STACK_10, F $02C6 $2AC5 GOTO $-1 $02C7 $2AC2 GOTO $-5 $02C8 $2ABF GOTO $-9 $02C9 $3006 MOVLW 6 $02CA $00FB MOVWF STACK_11 $02CB $30FF MOVLW 255 $02CC $00FA MOVWF STACK_10 $02CD $0BFB DECFSZ STACK_11, F $02CE $2AD0 GOTO $+2 $02CF $2AD3 GOTO $+4 $02D0 $0BFA DECFSZ STACK_10, F $02D1 $2AD0 GOTO $-1 $02D2 $2ACD GOTO $-5 $02D3 $300A MOVLW 10 $02D4 $00FA MOVWF STACK_10

Page 91: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 91 -

$02D5 $0BFA DECFSZ STACK_10, F $02D6 $2AD5 GOTO $-1 ;UART.c,120 :: PORTA = 0b000010; $02D7 $3002 MOVLW 2 $02D8 $0085 MOVWF PORTA ;UART.c,121 :: delay_ms(150); $02D9 $30C3 MOVLW 195 $02DA $00FB MOVWF STACK_11 $02DB $30FF MOVLW 255 $02DC $00FA MOVWF STACK_10 $02DD $0BFB DECFSZ STACK_11, F $02DE $2AE0 GOTO $+2 $02DF $2AE3 GOTO $+4 $02E0 $0BFA DECFSZ STACK_10, F $02E1 $2AE0 GOTO $-1 $02E2 $2ADD GOTO $-5 $02E3 $304B MOVLW 75 $02E4 $00FA MOVWF STACK_10 $02E5 $0BFA DECFSZ STACK_10, F $02E6 $2AE5 GOTO $-1 $02E7 $0000 NOP ;UART.c,122 :: k--; $02E8 $3001 MOVLW 1 $02E9 $02A1 SUBWF _k, 1 $02EA $1C03 BTFSS STATUS, C $02EB $03A2 DECF _k+1, 1 ;UART.c,123 :: PORTA = 0b000000; $02EC $0185 CLRF PORTA, 1 ;UART.c,124 :: $02ED $2A9C GOTO L_main_23 $02EE $ L_main_24: ;UART.c,125 :: $02EE $ L_main_22: ;UART.c,127 : :if (i==0x62) // Zadavanje sekvence_6 na zutoj LED. $02EE $0820 MOVF _i, 0 $02EF $3A62 XORLW 98 $02F0 $1D03 BTFSS STATUS, Z $02F1 $2B2B GOTO L_main_25 ;UART.c,128 :: USART_Write(i); $02F2 $0820 MOVF _i, 0 $02F3 $00A4 MOVWF FARG_Usart_Write+0 $02F4 $201F CALL _Usart_Write ;UART.c,129 :: i=0x00; $02F5 $01A0 CLRF _i, 1 ;UART.c,130 :: k=10; $02F6 $300A MOVLW 10 $02F7 $00A1 MOVWF _k $02F8 $3000 MOVLW 0 $02F9 $00A2 MOVWF _k+1 ;UART.c,131 :: while (k > 0) $02FA $ L_main_26: $02FA $3080 MOVLW 128 $02FB $00F0 MOVWF STACK_0 $02FC $3080 MOVLW 128 $02FD $0622 XORWF _k+1, 0 $02FE $0270 SUBWF STACK_0, 0 $02FF $1D03 BTFSS STATUS, Z $0300 $2B03 GOTO L_main_36

Page 92: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 92 -

$0301 $0821 MOVF _k, 0 $0302 $3C00 SUBLW 0 $0303 $ L_main_36: $0303 $1803 BTFSC STATUS, C $0304 $2B2B GOTO L_main_27 ;UART.c,132 :: PORTA = 0b000010; $0305 $3002 MOVLW 2 $0306 $0085 MOVWF PORTA ;UART.c,133 :: delay_ms(100); $0307 $3082 MOVLW 130 $0308 $00FB MOVWF STACK_11 $0309 $30FF MOVLW 255 $030A $00FA MOVWF STACK_10 $030B $0BFB DECFSZ STACK_11, F $030C $2B0E GOTO $+2 $030D $2B11 GOTO $+4 $030E $0BFA DECFSZ STACK_10, F $030F $2B0E GOTO $-1 $0310 $2B0B GOTO $-5 $0311 $3087 MOVLW 135 $0312 $00FA MOVWF STACK_10 $0313 $0BFA DECFSZ STACK_10, F $0314 $2B13 GOTO $-1 $0315 $0000 NOP ;UART.c,134 :: PORTA = 0b000000; $0316 $0185 CLRF PORTA, 1 ;UART.c,135 :: delay_ms(100); $0317 $3082 MOVLW 130 $0318 $00FB MOVWF STACK_11 $0319 $30FF MOVLW 255 $031A $00FA MOVWF STACK_10 $031B $0BFB DECFSZ STACK_11, F $031C $2B1E GOTO $+2 $031D $2B21 GOTO $+4 $031E $0BFA DECFSZ STACK_10, F $031F $2B1E GOTO $-1 $0320 $2B1B GOTO $-5 $0321 $3087 MOVLW 135 $0322 $00FA MOVWF STACK_10 $0323 $0BFA DECFSZ STACK_10, F $0324 $2B23 GOTO $-1 $0325 $0000 NOP ;UART.c,136 :: k--; $0326 $3001 MOVLW 1 $0327 $02A1 SUBWF _k, 1 $0328 $1C03 BTFSS STATUS, C $0329 $03A2 DECF _k+1, 1 ;UART.c,137 :: $032A $2AFA GOTO L_main_26 $032B $ L_main_27: ;UART.c,138 :: $032B $ L_main_25: ;UART.c,141 : :if (PORTA.F4 == 0) // Slanje komande sa ploce pritiskom $032B $3000 MOVLW 0 $032C $1A05 BTFSC PORTA, 4 $032D $3001 MOVLW 1 $032E $00F2 MOVWF STACK_2 $032F $0872 MOVF STACK_2, 0

Page 93: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 93 -

$0330 $3A00 XORLW 0 $0331 $1D03 BTFSS STATUS, Z $0332 $2B55 GOTO L_main_28 ;UART.c,142 : :USART_Write(0x63); // na taster SW1. $0333 $3063 MOVLW 99 $0334 $00A4 MOVWF FARG_Usart_Write+0 $0335 $201F CALL _Usart_Write ;UART.c,143 :: delay_ms(1000); $0336 $3006 MOVLW 6 $0337 $00FC MOVWF STACK_12 $0338 $30FF MOVLW 255 $0339 $00FB MOVWF STACK_11 $033A $30FF MOVLW 255 $033B $00FA MOVWF STACK_10 $033C $0BFC DECFSZ STACK_12, F $033D $2B3F GOTO $+2 $033E $2B46 GOTO $+8 $033F $0BFB DECFSZ STACK_11, F $0340 $2B42 GOTO $+2 $0341 $2B45 GOTO $+4 $0342 $0BFA DECFSZ STACK_10, F $0343 $2B42 GOTO $-1 $0344 $2B3F GOTO $-5 $0345 $2B3C GOTO $-9 $0346 $301A MOVLW 26 $0347 $00FB MOVWF STACK_11 $0348 $30FF MOVLW 255 $0349 $00FA MOVWF STACK_10 $034A $0BFB DECFSZ STACK_11, F $034B $2B4D GOTO $+2 $034C $2B50 GOTO $+4 $034D $0BFA DECFSZ STACK_10, F $034E $2B4D GOTO $-1 $034F $2B4A GOTO $-5 $0350 $3042 MOVLW 66 $0351 $00FA MOVWF STACK_10 $0352 $0BFA DECFSZ STACK_10, F $0353 $2B52 GOTO $-1 ;UART.c,144 :: i=0x00; $0354 $01A0 CLRF _i, 1 ;UART.c,145 :: $0355 $ L_main_28: ;UART.c,146 : :if (i==0x30) // Osmobitna A/D konverzija. $0355 $0820 MOVF _i, 0 $0356 $3A30 XORLW 48 $0357 $1D03 BTFSS STATUS, Z $0358 $2B6C GOTO L_main_29 ;UART.c,147 :: napon = ADC_Read(0) >> 2; $0359 $01A4 CLRF FARG_Adc_Read+0, 1 $035A $202F CALL _Adc_Read $035B $0870 MOVF STACK_0, 0 $035C $00F2 MOVWF STACK_2 $035D $0871 MOVF STACK_0+1, 0 $035E $00F3 MOVWF STACK_2+1 $035F $0CF3 RRF STACK_2+1, 1 $0360 $0CF2 RRF STACK_2, 1 $0361 $13F3 BCF STACK_2+1, 7

Page 94: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 94 -

$0362 $0CF3 RRF STACK_2+1, 1 $0363 $0CF2 RRF STACK_2, 1 $0364 $13F3 BCF STACK_2+1, 7 $0365 $0872 MOVF STACK_2, 0 $0366 $1283 BCF STATUS, RP0 $0367 $00A3 MOVWF _napon ;UART.c,148 :: USART_Write(napon); $0368 $0872 MOVF STACK_2, 0 $0369 $00A4 MOVWF FARG_Usart_Write+0 $036A $201F CALL _Usart_Write ;UART.c,149 :: i=0x00; $036B $01A0 CLRF _i, 1 ;UART.c,150 :: $036C $ L_main_29: ;UART.c,154 :: $036C $2880 GOTO L_main_0 ;UART.c,156 :: //~! $036D $2B6D GOTO $

Listing heksadecimalnog kôda

:100000006D28FF3FFF3FFF3F073003138312FA00C5 :10001000FA0B082808000030031383128C1A0130F1 :10002000F1007108F0000800031383121A08A400FD :10003000981C1C28181218162408F000080000301C :100040000313831698180130F1007108003A031D5C :100050002B2800001F28831224089900080003138E :1000600083129F01C0309F0483161F179F178312AE :100070002408F000F00D7010F00D7010F00D7010ED :1000800070089F041F1404201F151F1D492800001D :1000900045281F100830F2001E08F000F101720818 :1000A00003195728F00DF10D7010FF3F50288316EB :1000B0001E08F0040030F10408000313831698169C :1000C00090308312980083168717071383128C1EB3 :1000D0006C281A08A8006628080039300313831614 :1000E00085000630831285009F010F3083169F0024 :1000F0006730990018155D200B20700803198628B9 :1001000014207008A0007008A4001F202008313AB5 :10011000031D8B2885012008323A031D91280430E5 :1001200085002008333A031D9728023085002008F7 :10013000343A031D9D28063085002008353A031DFA :10014000F7280530A1000030A200A0018030F000A7 :10015000803022067002031DAF282108003C0318DE :10016000F728043085000230FC00FF30FB00FF3030 :10017000FA00FC0BBC28C328FB0BBF28C228FA0BD3 :10018000BF28BC28B9280630FB00FF30FA00FB0B63 :10019000CA28CD28FA0BCA28C7280A30FA00FA0B59 :1001A000CF28023085000230FC00FF30FB00FF301A :1001B000FA00FC0BDC28E328FB0BDF28E228FA0B13 :1001C000DF28DC28D9280630FB00FF30FA00FB0BC3 :1001D000EA28ED28FA0BEA28E7280A30FA00FA0B99 :1001E000EF280130A102031CA2038501A6282008E4 :1001F000363A031D61290630A1000030A200A0019B :100200008030F000803022067002031D0929210889 :10021000003C03186129043085000230FC00FF30E7 :10022000FB00FF30FA00FC0B16291D29FB0B1929D6

Page 95: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 95 -

:100230001C29FA0B1929162913290630FB00FF3057 :10024000FA00FB0B24292729FA0B242921290A303B :10025000FA00FA0B292985018230FB00FF30FA00F1 :10026000FB0B33293629FA0B332930298730FA0062 :10027000FA0B38290000043085000230FC00FF3002 :10028000FB00FF30FA00FC0B46294D29FB0B4929E6 :100290004C29FA0B4929462943290630FB00FF3037 :1002A000FA00FB0B54295729FA0B542951290A301B :1002B000FA00FA0B59290130A102031CA20385019F :1002C00000292008373A031DBD290830A10000305D :1002D000A200A0018030F000803022067002031DD1 :1002E00073292108003C0318BD29043085008230A1 :1002F000FB00FF30FA00FB0B7E298129FA0B7E29D7 :100300007B298730FA00FA0B83290000850102302F :10031000FC00FF30FB00FF30FA00FC0B902997290E :10032000FB0B93299629FA0B932990298D29873065 :10033000FB00FF30FA00FB0B9E29A129FA0B9E2936 :100340009B299330FA00FA0BA329000004308500A2 :100350008230FB00FF30FA00FB0BAF29B229FA0B09 :10036000AF29AC298730FA00FA0BB429000001301C :10037000A102031CA20385016A292008613A031D1A :10038000F7291430A1000030A200A0018030F00055 :10039000803022067002031DCF292108003C03187B :1003A000F729043085004130FB00FF30FA00FB0BD9 :1003B000DA29DD29FA0BDA29D729C330FA00FA0B3A :1003C000DF29000085014130FB00FF30FA00FB0B04 :1003D000EA29ED29FA0BEA29E729C330FA00FA0BDA :1003E000EF2900000130A102031CA203C629200846 :1003F000383A031D702A0530A1000030A200A00188 :100400008030F000803022067002031D092A210886 :10041000003C0318702A023085000330FC00FF30D6 :10042000FB00FF30FA00FC0B162A1D2AFB0B192AD1 :100430001C2AFA0B192A162A132A0B30FB00FF304C :10044000FA00FB0B242A272AFA0B242A212A183027 :10045000FA00FA0B292A85010230FC00FF30FB006C :10046000FF30FA00FC0B352A3C2AFB0B382A3B2ACA :10047000FA0B382A352A322A0630FB00FF30FA0000 :10048000FB0B432A462AFA0B432A402A0A30FA0079 :10049000FA0B482A023085000330FC00FF30FB00D5 :1004A000FF30FA00FC0B552A5C2AFB0B582A5B2A0A :1004B000FA0B582A552A522A0B30FB00FF30FA005B :1004C000FB0B632A662AFA0B632A602A1830FA00AB :1004D000FA0B682A0130A102031CA2038501002A3D :1004E0002008393A031DCC2A0430A1000030A200B4 :1004F000A0018030F000803022067002031D822AA5 :100500002108003C0318CB2A02308500C330FB00D1 :10051000FF30FA00FB0B8D2A902AFA0B8D2A8A2ACB :100520004B30FA00FA0B922A000085010230FC00E1 :10053000FF30FB00FF30FA00FC0B9F2AA62AFB0BC2 :10054000A22AA52AFA0BA22A9F2A9C2A0630FB007F :10055000FF30FA00FB0BAD2AB02AFA0BAD2AAA2A0B :100560000A30FA00FA0BB22A02308500C330FB00D1 :10057000FF30FA00FB0BBD2AC02AFA0BBD2ABA2AAB :100580004B30FA00FA0BC22A00000130A102031C12 :10059000A2038501792AA0012008623A031D072BD6 :1005A0000A30A1000030A200A0018030F0008030AD :1005B00022067002031DDE2A2108003C0318062BC8 :1005C000023085008230FB00FF30FA00FB0BE92A85 :1005D000EC2AFA0BE92AE62A8730FA00FA0BEE2A0F

Page 96: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 96 -

:1005E000000085018230FB00FF30FA00FB0BF92A86 :1005F000FC2AFA0BF92AF62A8730FA00FA0BFE2AAF :1006000000000130A102031CA203D52AA001003082 :10061000051A0130F2007208003A031D322B6330D4 :10062000A4001F200330FC00FF30FB00FF30FA0065 :10063000FC0B1B2B222BFB0B1E2B212BFA0B1E2B37 :100640001B2B182B8C30FB00FF30FA00FB0B292BE7 :100650002C2BFA0B292B262BA130FA00FA0B2E2B70 :100660000000A0012008303A031D492BA4012F20CF :100670007008F2007108F300F30CF20CF313F30CA2 :10068000F20CF31372088312A3007208A4001F2057 :10069000A0017C284A2BFF3FFF3FFF3FFF3FFF3F6A :02400E00F13F80 :00000001FF

Page 97: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 97 -

[VIII] LABORATORIJSKA VEŽBA Na Sl. 8.1 prikazan je raspored komponentata pločice na kojoj je realizovan interfejs za komuni-kaciju između mikrokontrolera i PC računara. Pošto je detaljan opis kola obrađen u prethodnom pog-lavlju rada, ovde ćemo se koncentrisati na izvođenje laboratorijske vežbe.

Sl.8.1. Raspored komponenata štampane pločice za kolo sa Sl.7.1

Opis

Pin PA1 - obeležen tamnosivom bojom, na ovaj pin je povezana LED D1 (oblast A) Pin PA2 - obeležen tamnocrvenom (bordo) bojom, na ovaj pin je povezana LED D2 (oblast A) Pin PA0 - obeležen tamnoplavom (teget) bojom, na ovaj pin je povezan klizač potenciometra,

dve tačke (oblast B); inače, ovaj pin je softverski definisan kao ulaz A/D konvertora mikrokontrolera

Napajanje - obeleženo ljubičastom bojom, dve tačke (VDD=5V) Masa - obeležena braon bojom, šest tačaka (GND).

Page 98: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 98 -

Tabela ASCII karaktera sa objašnjenjem

U poglavlju MIKROC već je bilo reči o ASCII standardnu. U Tabeli 8.1. nalaze se simboli pred-stavljeni u dekadnom sistemu (DEC). Međutim, vrlo lako se ostvaruje prelaz u drugi sistem podržan od strane UART terminala (heksadecimalni HEX ili binarni BIN). Sada ćemo to ilustrovati na primeru simbola «1».

Tabela 8.1. Tabela ASCII karaktera

Ukoliko je poznat heksadecimalni (HEX) kôd simbola (za simbol «1» je 0x31), lako se prelazi u binarni (BIN) kôd (prva tetrada je 3 = 0011, a druga 1 = 0001) – a iz binarnog kôda se prelazi u dekad-ni (DEC) na sledeći način:

Page 99: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 99 -

(0x31)HEX = (00110001)BIN = 0 ·27 + 0 ·26 + 1 ·25 + 1 ·24 + 0 ·23+ 0 ·22+ 0 ·21 + 0 ·20 = (49)DEC

Tabela 8.2 ilustruje jednostavan prelaz iz dekadnog (DEC) u binarni kod (BIN) za simbol «1». Posle toga se vrlo jednostavno prelazi iz binarnog u heksadecimalni (HEX) kôd.

Bitska pozicija Količnik Ostatak 7 49: 2 0 49 6 49: 2 0 49 5 49: 2 1 17 4 17: 2 1 1 3 1: 2 0 1 2 1: 2 0 1 1 1: 2 0 1 0 1: 2 1 0

Tabela 8.2. Prelazak iz dekadnog u binarni kôd

(49)DEC = (00110001)BIN = (0x31)HEX

A/D konverzija sa objašnjenjem Sada ćemo da opišemo određivanje napona izmerenog A/D konverorom. Naime, zbog konzistent-nosti podataka u vežbi (svi su osmobitni) sa internog 10-bitnog A/D konvertora ćemo očitavati osmo-bitnu digitalnu reč. Tačno je da na ovaj način pogoršana rezolucija A/D konverzije, ali se zato dobija podatak jednostavan za obradu.

Dakle, podatak koji se dobije u prozoru UART terminala treba transformisati u dekadni (ukoliko je izabran parametar HEX u prozoru terminala), a zatim primeniti formulu:

.512

)(8 VxxV DEC

A ⋅−

=

Ukoliko je, na primer, pročitana heksadecimalna vrednost (0x10)HEX, odnosno dekadna vrednost (16)DEC, to znači da je izmeren napon:

.3137,05255)16( VVV DEC

A =⋅=

Ukoliko se očitava ASCII karakter, pogledati u Tabelu 8.1 i naći odgovarajuću dekadnu vrednost.

Page 100: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 100 -

Zadatak

1) Povezati serijski port računara i kolo sa Sl. 7.1 preko pin-to-pin DB9 kabla. 2) Povezati konektor/džek J1 sa ploče na džek adaptera 220V~/12V–, a tek onda adapter

postaviti u mrežno napajanje. Veoma je bitno ispoštovati opisani redosled. Nikako ne treba prvo uključiti adapter u mrežu, a zatim džekove – jer u slučaju nepravilnog postavljanja konektora/džekova može da dođe do varničenja na njima (to se dešava kako početnicima, tako i ljudima sa iskustvom).

3) Neposredno po uključivanju adaptera u električnu mrežu, uključiće se obe LED. 4) Pokrenuti UART terminal iz programa mikroC na način prikazan u poglavlju MIKROC

(ili jednostavnim pritiskom <Ctrl> + <T> po startovanju programa). 5) Podesiti UART terminala (ilustrovano na Sl. 8.2):

o COM1 ili COM2 (zavisno na koji port je povezana pločica, odnosno kolo Sl. 7.1) o Brzina 2400 Bauda, 1 stop-bit (One Stop Bit), Space bit parnosti (Parity), osam bitova

čini karakter/podatak (Data bits), uključen RTS (On) o Podesićemo da se od strane mikrokontrolera primaju heksadecimalni (HEX) podaci; me-

đutim, terminal može da prikaže i prijem ASCII ili dekadnih (DEC) karaktera. Podeša-vanje ovog parametra izvršiti u dogovoru sa predmetnim asistentom.

Sl.8.2. Podešavanje parametara UART terminala

Page 101: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 101 -

Pošto su parametri UART terminala podešeni, treba klikom na komandno dugme Connect pokre-

nuti UART terminal. Svaka grupa treba šalje komande prema proceduri opisanoj u daljem tekstu. Po završetku vežbe, treba isključiti program klikom na komandno dugme Disconnect.

Sl.8.3. Ilustracija slanja komandi (šalje se ASCII, prima se HEX) Programski je predviđeno da primljenu ASCII komandu mikrokontroler izvrši, ali i da je ujedno vrati ka serijskom portu računara, odnosno ka UART terminalu. Ovo je poželjno iz razloga da se vidi da li je komunikacija između računara i mikrokontrolera u redu.

Dakle, kao što smo istakli u tački 5, može da se podesi da se iz programa šalju ASCII karakteri (komande, u našem slučaju) – a da se primaju heksadecimalni (HEX) karakteri (ilustrovano na Sl. 8.4). Isto tako, može da se izabere da se šalju ASCII karakteri i da se takođe ASCII karakteri (ovo je ilustro-vano na Sl. 8.4). Sve u svemu, o pristupu odlučuje predmetni asistent.

Program u mikroC-u je napisan tako da se posle svake poslate komande, ista ta komanda vraća ka UART terminalu. Kada se šalje komanda 0 (ASCII) za A/D konverziju, mikrokontroler će vratiti tu ko-mandu, a ujedno i očitanu vrednost napona na potenciometru.

Page 102: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 102 -

Sl.8.4. Ilustracija slanja komandi (šalje se ASCII, prima se ASCII) Grupa 1

6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-tisnuti <Enter> na tastaturi (isključivanje obe LED).

7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1).

8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 7 i snimiti sek-vencu.

Page 103: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 103 -

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 9 i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c).

(Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 2

6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri- tisnuti <Enter> na tastaturi (isključivanje obe LED).

7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1).

8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A, jer to je drugi simbol!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.)

Page 104: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 104 -

Grupa 3

6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-tisnuti <Enter> na tastaturi (isključivanje obe LED).

7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1).

8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 7 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne treba slati A) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 9 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b a (nikako ne treba slati B!) i snimiti sekvencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 4 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

Page 105: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 105 -

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 5

6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-tisnuti <Enter> na tastaturi (isključivanje obe LED).

7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1).

8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 7 i snimiti sek-vencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 9 i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c).

Page 106: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 106 -

(Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete dobiti validan podatak tokom A/D konverzije.)

Grupa 6 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 7 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

Page 107: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 107 -

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 7 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne treba slati A) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 9 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b a (nikako ne treba slati B!) i snimiti sekvencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 8 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati

Page 108: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 108 -

komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.)

Grupa 9

6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-tisnuti <Enter> na tastaturi (isključivanje obe LED).

7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1).

8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 7 i snimiti sek-vencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 9 i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.)

Page 109: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 109 -

Grupa 10 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 11 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

Page 110: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 110 -

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 7 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne treba slati A) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 9 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b a (nikako ne treba slati B!) i snimiti sekvencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 12 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A, jer to je drugi simbol) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c).

Page 111: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 111 -

(Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete dobiti validan podatak tokom A/D konverzije.)

Grupa 13 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 2s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 7 i snimiti sek-vencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu 9 i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 14 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2).

Page 112: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 112 -

9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED).

10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 15 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno trajanje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 7 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne treba slati A) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 9 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b a (nikako ne treba slati B!) i snimiti sekvencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati

Page 113: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 113 -

komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.) Grupa 16 6) U UART terminalu zadati komandu 1, a zatim kliknuti na komandno dugme Send ili pri-

tisnuti <Enter> na tastaturi (isključivanje obe LED). 7) Izbrisati prethodnu komandu sa <Backspace>, zadati komandu 2 i zatim kliknuti na

komandno dugme Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D1). 8) Izbrisati prethodnu komandu i zadati komandu 3, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje samo LED D2). 9) Izbrisati prethodnu komandu i zadati komandu 4, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (uključivanje obe LED). 10) Izbrisati prethodnu komandu i zadati komandu 5, a zatim kliknuti na komandno dugme

Send ili pritisnuti <Enter> na tastaturi (5 naizmeničnih uključivanja D1 i D2, ukupno traja-nje ciklusa je 1s).

11) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA1 i masu, poslati komandu 6 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu a (nikako ne slati A!) i snimiti sekvencu.

12) Izbrisati prethodnu komandu, postaviti sondu osciloskopa na pin PA2 i masu, poslati komandu 8 i snimiti sekvencu. Zatim, izbrisati prethodnu i poslati komandu b i snimiti sek-vencu.

13) Izbrisati prethodnu komandu, okrenuti obrtni potenciometar P1 u krajnje levi položaj i poslati komandu 0. Okrenuti obrtni potenciometar u krajnje desni položaj i ponovo poslati komandu 0. U oba slučaja zabeležiti dobijenu digitalnu informaciju u prozoru UART terminala.

14) Zadajte proizvoljno položaj klizača obrtnog potenciometra i pošaljite komandu 0 . Pri istom položaju izmeriti napon na pinu mikrokontrolera PA0 koristeći digimer. Uporedite rezultate.

15) Ponoviti postupak iz tačke 13) za još jedan proizvoljan položaj potenciometra. 16) Pritisnuti taster SW2. Na ekranu treba da se prikaže komanda 0x63 (c). (Napomena: Prilikom izvođenja tačaka 13-15) obe LED treba da budu isključene. Inače, nećete

dobiti validan podatak tokom A/D konverzije.)

Page 114: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 114 -

[IX] ZAKLJUČAK Rad koji je pred vama nastao je kao plod želje da se studentima demonstrira komunikacija izme-đu mikrokontrolera PIC16F877A i personalnog računara. Tu se zapravo radi o komunikaciji između dva USART-a. Jedan od njih je sastavni deo serijskog porta računara, dok je drugi integrisan u mikro-kontroleru. Inače, slanje i prijem komandi na računaru se prati preko (softverskog) UART terminala, koji je deo programa mikroC.

Prvo poglavlje rada se bavi uopšte komunikacijom, pri čemu su obrađene dve osnovne podele kod komuniciranja između uređaja ili sistema (serijska i paralelna, asinhrona i sinhrona).

U drugom poglavlju je detaljno obrađen serijski port računara (RS232C standard, blok-šema i struktura porta, signali koje serijski port koristi, registri, brzine prenosa itd.)

U trećem poglavlju smo se najpre bavili istorijatom U(S)ART komunikacije, zatim su navedene komponente USART čipa/modul, da bi na kraju prikazan USART čip Intel 8251 i istaknut zna-čaj USART-a kod modema računara.

U četvrtom poglavlju je detaljno obrađen mikrokontroler PIC16F877A (arhitektura, ugrađeni moduli, organizacija memorije, portovi, organizacija memorije, interfejs itd.)

Peto poglavlje predstavlja uvod u softverski alat mikroC. Opisan je postupak instalacije i način korišćenja programa u cilju kreiranja kôda. Dat je poseban osvrt na UART terminal, koji je in-tegrisan u ovaj program.

Šesto poglavlje se bavi samim programiranjem PIC mikrokontrolera. Dat je prikaz programa-tora koga čine bootstrap loader AllPIC i softver IC-Prog. Inače, kompletni opisi oba dati su u poglavlju PRILOZI.

U sedmom poglavlju rada je opisan projekat – komunikacija mikrokontrolera PIC16F877A. Tu je priložena električna šema (PIC16F877A sa eksternim interfejsom), izgled štampane ploče, listing kôda u mikroC-u, kao i komande (sa opisom funkcije) koje se koriste u UART terminalu.

Osmo poglavlje predstavlja laboratorijsku vežbu sa uputstvima za samostalan rad studenata.

Page 115: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 115 -

[X] LITERATURA

[1] PIC16F87X, DATASHEET, Microchip Tecnology Inc, 2001. [2] RAZVOJNI SISTEM ZA MIKROKONTROLER PIC16F877A, B.Dimitrijević, S.Aleksić, I.Antić,

seminarski rad, Elektronski fakultet, Niš, 2007. [3] ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA ZASNOVANIH NA

FAMILIJI PROCESORA 80x86, Mile K. Stojčev, Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš, 1999.

[4] UVOD U SERIJSKI PORT, http://milan.milanovic.org/skola [5] SERIJSKE KOMUNIKACIJE, vodič kroz PC tehnologiju, prevod sa engleskog prof. dr

R.Janković http://www.cet.co.yu/CETcitaliste/CitalisteTekstovi/249.pdf [6] USART (Universal Synchronous/Asynchronous Receiver/Transmitter) INTEL 8251, D.Micić,

M.Dragićević, seminarski rad, Elektronski fakultet, Niš, 2006. [7] mikroC Help , Mikroelektronika, http://mikroe.com [8] IC-Prog, Version 1.05, B.Gijzen, www.ic-prog.com, 2004.

Page 116: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 116 -

[XI] PRILOZI Introduction to mikroC

Help version: 2006/12/04

mikroC is a powerful, feature rich development tool for PICmicros. It is designed to provide the programmer with the easiest possible solution for developing applications for embedded systems, without compromising performance or control.

mikroC IDE

PIC and C fit together well: PIC is the most popular 8-bit chip in the world, used in a wide variety of applications, and C, prized for its efficiency, is the natural choice for developing embedded systems. mikroC provides a successful match featuring highly advanced IDE, ANSI compliant compiler, broad set of hardware libraries, comprehensive documentation, and plenty of ready-to-run examples.

Page 117: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 117 -

Features

mikroC allows you to quickly develop and deploy complex applications:

• Write your C source code using the built-in Code Editor (Code and Parameter Assistants, Syntax Highlighting, Auto Correct, Code Templates, and more…)

• Use the included mikroC libraries to dramatically speed up the development: data acquisition, memory, displays, conversions, communications… Practically all P12, P16, and P18 chips are supported.

• Monitor your program structure, variables, and functions in the Code Explorer. • Generate commented, human-readable assembly, and standard HEX compatible with all

programmers. • Inspect program flow and debug executable logic with the integrated Debugger. • Get detailed reports and graphs: RAM and ROM map, code statistics, assembly listing, calling

tree, and more… • We have provided plenty of examples for you to expand, develop, and use as building bricks in

your projects. Copy them entirely if you deem fit – that’s why we included them with the compiler.

Where to Start

• In case that you’re new to programming PIC microcontrollers, consider reading the PIC Specifics chapter. The topic may give you some useful pointers on PIC constraints, code portability, and good programming practices.

• If you are experienced in C programming, you will probably want to consult mikroC Specifics first. For language issues, you can always refer to the comprehensive Language Reference. The complete list of included libraries is available at mikroC Libraries.

• If you had little experience in C programming, don’t panic! We have provided plenty of exam-ples to get you going quickly. We suggest that you first consult Projects and Source Files, and then start browsing the examples that interest you the most.

Technical Support

The latest software can be downloaded at no cost via the Internet (you might want to bookmarkthe pa-ge so you could check for news, patches, and upgrades later on): http://www.mikroe.com/en/compilers/mikroc/pic/download.htm.

Should you encounter any problems, you are welcome to our support forum at www.mikroe.com/forum. Here, you may also find helpful information, hardware tips, and practical code snippets. Your com-ments and suggestions on future development of mikroC are always appreciated — feel free to drop a note or two on our Wishlist.

To ensure that all problems you encounter are sorted and corrected in an efficient manner, we suggest that you email us at [email protected]. Outline your specific problem and send us an attachment with relevant code. In this way, we can record and track down bugs more efficiently, which is in our mutual interest. We respond to every bug report and question in a timely manner, ever improving our technical support.

Page 118: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 118 -

mikroElektronika Associates License Statement and Limited Warranty

IMPORTANT - READ CAREFULLY

This license statement and limited warranty constitutes a legal agreement (“License Agreement”) between you (either as an individual or a single entity) and mikroElektronika (“mikroElektronika Associates”) for the software product (“Software”) identified above, including any software, media, and accompanying on-line or printed documentation.

BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE, YOU AGREE TO BE BOUND BY ALL OF THE TERMS AND CONDITIONS OF THE LICENSE AGREEMENT.

Upon your acceptance of the terms and conditions of the License Agreement, mikroElektronika Associates grants you the right to use the Software in the manner provided below.

This Software is owned by mikroElektronika Associates and is protected by copyright law and international copyright treaty. Therefore, you must treat this Software like any other copyrighted material (e.g., a book).

You may transfer the Software and documentation on a permanent basis provided you retain no copies and the recipient agrees to the terms of the License Agreement. Except as provided in the License Agreement, you may not transfer, rent, lease, lend, copy, modify, translate, sublicense, time-share or electronically transmit or receive the Software, media or documentation. You acknowledge that the Software in source code form remains a confidential trade secret of mikroElektronika Associates and therefore you agree not to modify the Software or attempt to reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.

If you have purchased an upgrade version of the Software, it constitutes a single product with the mikroElektronika Associates software that you upgraded. You may use the upgrade version of the Software only in accordance with the License Agreement.

LIMITED WARRANTY

Except with respect to the Redistributables, which are provided “as is”, without warranty of any kind, mikroElektronika Associates warrants that the Software, as updated and when properly used, will perform substantially in accordance with the accompanying documentation, and the Software media will be free from defects in materials and workmanship, for a period of ninety (90) days from the date of receipt. Any implied warranties on the Software are limited to ninety (90) days.

mikroElektronika Associates’ and its suppliers’ entire liability and your exclusive remedy shall be, at mikroElektronika Associates’ option, either (a) return of the price paid, or (b) repair or replacement of the Software that does not meet mikroElektronika Associates’ Limited Warranty and which is returned to mikroElektronika Associates with a copy of your receipt. DO NOT RETURN ANY PRODUCT UNTIL YOU HAVE CALLED MIKROELEKTRONIKA ASSOCIATES AND OBTAINED A RETURN AUTHO-RIZATION NUMBER. This Limited Warranty is void if failure of the Software has resulted from accident, abuse, or misapplication. Any replacement Software will be warranted for the remainder of the original warranty period or thirty (30) days, whichever is longer.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MIKROELEKTRONIKA ASSO-CIATES AND ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF

Page 119: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 119 -

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRIN-GEMENT, WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES.

LIMITATION OF LIABILITY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL MIKROELEKTRONIKA ASSOCIATES OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (IN-CLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE PRODUCT OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF MIKROELEK-TRONIKA ASSOCIATES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN ANY CASE, MIKROELEKTRONIKA ASSOCIATES’ ENTIRE LIABILITY UNDER ANY PROVISION OF THIS LICENSE AGREEMENT SHALL BE LIMITED TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE PRODUCT PROVIDED, HOWEVER, IF YOU HAVE ENTERED INTO A MIKROELEKTRONIKA ASSOCIATES SUPPORT SERVICES AGREEMENT, MIKROELEKTRONIKA ASSOCIATES’ ENTIRE LIABILITY REGARDING SUPPORT SERVICES SHALL BE GOVERNED BY THE TERMS OF THAT AGREEMENT.

HIGH RISK ACTIVITIES

The Software is not fault-tolerant and is not designed, manufactured or intended for use or resale as on-line control equipment in hazardous environments requiring fail-safe performance, such as in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, direct life support machines, or weapons systems, in which the failure of the Software could lead directly to death, personal injury, or severe physical or environmental damage (“High Risk Activities”). mikroElektronika Associates and its suppliers specifically disclaim any express or implied warranty of fitness for High Risk Activities.

GENERAL PROVISIONS

This statement may only be modified in writing signed by you and an authorised officer of mikro-Elektronika Associates. If any provision of this statement is found void or unenforceable, the remainder will remain valid and enforceable according to its terms. If any remedy provided is determined to have failed for its essential purpose, all limitations of liability and exclusions of damages set forth in the Limited Warranty shall remain in effect.

This statement gives you specific legal rights; you may have others, which vary, from country to country. mikroElektronika Associates reserves all rights not specifically granted in this statement.

mikroElektronika Voice: +381 11 30 66 377, +381 11 30 66 378 Fax: +381 11 30 66 379 Web: www.mikroelektronika.co.yu E-mail: [email protected]

How to Register

The latest version of mikroC is always available for download from our website. It is a fully functional software with all the libraries, examples, and comprehensive help included.

Page 120: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 120 -

The only limitation of the free version is that it cannot generate hex output over 2K of program words. Although it may sound restrictive, this margin allows you to develop practical, working applications without ever thinking of demo limit. If you intend to develop really complex projects in mikroC, then you should consider purchasing the license key.

Who Gets the License Key

Buyers of mikroC are entitled to the license key. After you have completed the payment procedure, you have an option of registering your mikroC. In this way you can generate hex output without any limitations.

How to Get License Key

After you have completed the payment procedure, start the program. Select Help › How to Register from the drop-down menu. Fill out the registration form (figure below), select your distributor, and click the Send button.

This will start your e-mail client with message ready for sending. Review the information you have entered, and add the comment if you deem it necessary. Please, do not modify the subject line.

Upon receiving and verifying your request, we will send the license key to the e-mail address you specified in the form.

After Receving the License Key

License key comes as a small autoextracting file – just start it anywhere on your computer in order to activate your copy of compiler and remove the demo limit. You do not need to restart your computer or install any additional components. Also, mikroC does not have to be running at the time of activation.

Page 121: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 121 -

Notes:

• The license key is valid until you format your hard disk. In case you need to format your hard disk, you should request a new activation key.

• Please keep the activation program in a safe place. Every time you upgrade the compiler you should start this program again in order to reactivate the license.

Introduction to IC-Prog IC-Prog is a Windows based software to control a development programmer for PIC microcontrollers. To operate this software, a basic knowledge about electronics and Windows is necessary.

In order for this software to operate you have to attach a programmer to your computer and set up the hardware & software appropriately. Please note, that because of differences in programmers, the software might not work on some combinations of programmer hardware and PC’s.

IC-Prog requires Windows 95, 98, NT, or 2000 and an internal or external math coprocessor to operate. All processors that are upwardly compatible with 486 DX and Pentiums should work.

Page 122: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 122 -

IC-Prog is copyrighted but free software. It is OK to copy and distribute this software as long as it is not modified in any way, being charged for, or used for illegal purposes.

IC-Prog has been designed as a universal programming application for all programmers. Please contact the author if you have a programmer that you would like to be supported by IC-Prog.

The author will not take any responsibility for direct or indirect damage caused by this software. If you use this software, you use it completely at your own risk.

Install programmer hardware Plug the programmer into a port (serial or parallel). Ensure that any switches on the programming device are configured to the manufacturers recommendations for the interface to be used.

Insert chip or Smartcard

PIC’s are sensitive to ESD (electrostatic discharge), make sure that you have discharged yourself and your environment before you take the chip away from its protective foam or packaging.

Make sure that all pins go straight into the programming socket before you carefully insert the chip. Chip pins are easily broken. If you are doing development work that calls for frequent reprogramming, it may be a good idea to use a carrier socket to take the wear and tear out of the PIC. Ensure that any switches on the programming device are configured to the manufacturers recommendations for the device to be programmed.

Configure IC-Prog

IC-Prog has been designed to work with a number of programming devices (see Verified Devices). The programming device and a number of settings may be selected using the Settings/Hardware menu option. Interface IC-Prog may drive the programming device using direct port access, or via the Windows API (Application Programming Interface).

Use of the API option is only supported for the serial port. Use the Windows API under Windows NT.

Use of the parallel port is currently not supported for NT and Windows 2000. Use of the parallel port under NT or Windows 2000 will probably give a "Permission" error.

Communication

The following signals may be inverted

• Data Out

• Data In

• Clock

• MCLR

• VCC

• VPP

Page 123: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 123 -

Process Priority

• Normal

• High

• Realtime

Process Priority enables IC-Prog to provide more accurate programming timing pulses. However, setting the Process Priority to High may make windows run slowly due to the CPU dedicating more processor time to IC-Prog instead of other processes.

Command Line Options

Start IC-Prog with the following command line:

IC-Prog <FileName> Option1 Option2 etc.

<FileName> First command has to be a filename (*.hex)

Options:

-p Program device

-v Verify device

-i Mainform invisible

-q Quit after last command

-fxxxx Fuse word = xxxxh

Example: IC-Prog test1.hex -p -v -i -f3EEA -q

test1.hex will be loaded, and then programmed. You will still get the message 'Do you want to program?'. Afterwards the device will be verified, you should get the message box 'Verified successfully'. When IC-Prog has finished it automatically exits.

PIC Information

The best source of information on the PIC is the Internet. On the Internet you will be able to find FAQ:s (Frequently Asked Questions), specifications, application notes, assemblers, simulators, programs, experiment boards and much more.

Some links are detailed below. Should these links be outdated try using one of the search engines that are available on the Internet.

Home of IC-Prog: IC-Prog Software Email : [email protected]

David Tait´s Pic Links: http://www.man.ac.uk/~mbhstdj/piclinks.html Microchip Technology:

http://www.microchip.com/ WinPhoenix: http://www.thoic.com/decrypt/

Page 124: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 124 -

Succesfully programmed devices:

JDM Programmer

- 24C01, 24C02, 24C04, 24C08, 24C16

- 24C32, 24C64/65

- 59C11

- 93C46

- PIC 16C84, 16F84

- PIC 12C508, 12C508A

- PIC 16F877 (Only code part, data part not 100%)

Tafe Programmer

- AT89C2051

Tait Serial Programmer

- 24C16, 24C32, 24C64/65

- PIC 16C84

Fun-Carc Programmer

- AT90S1200

- AT90S8515

Please send an email to [email protected] if you have programmed a device not on the list, or had an error with a device on the list.

Page 125: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 125 -

Page 126: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 126 -

Page 127: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 127 -

Page 128: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 128 -

Page 129: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 129 -

Page 130: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 130 -

Page 131: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 131 -

Page 132: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 132 -

Page 133: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 133 -

Page 134: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 134 -

Page 135: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 135 -

Page 136: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 136 -

Page 137: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 137 -

Page 138: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 138 -

Page 139: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 139 -

Page 140: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 140 -

Page 141: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 141 -

Page 142: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 142 -

Page 143: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 143 -

Page 144: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 144 -

Page 145: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 145 -

Page 146: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 146 -

Page 147: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 147 -

Page 148: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 148 -

Page 149: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 149 -

Page 150: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 150 -

Page 151: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 151 -

Page 152: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 152 -

Page 153: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 153 -

Page 154: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 154 -

Page 155: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 155 -

[XII] BIOGRAFIJE AUTORA

Dejan Lazić

1. Prezime: Lazić 2. Ime: Dejan 3. Datum rođenja: 30.03.1982. 4. Nacionalnost: Srbin 5. Bračno stanje: Neoženjen 6. Vozačka dozvola: C kategorija

7. Kontakt adrese

Adresa: selo Stanjevo, 37230 Aleksandrovac E-mail: [email protected] Telefon: 037759207 Mobilni telefon: 064 24 23 102

8. Obrazovanje

Institucija: Elektrotehnička škola Kruševac

Elektrotehničar energetike

Kompletna ili stepenovana diploma:

IV stepen

9. Sposobnosti

Menadžerske veštine:

Preduzimljivost, usredsređenost na razvoj, pregovaračke sposobnosti, samosvest, samopouzdanje,

realističnost o svojim sposobnostima, sposobnost prihvatanja nejasne komunikacije, motiv za uspehom.

Page 156: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 156 -

Sopstvene veštine:

Orjentisanost ka ostvarenju zadatih ciljeva, postavljanje prioriteta, preuzimanje problema na sebe i rešavanje istih, komunikativnost, kreativnost, inovacije, spremnost na saradnju i rad pod stresom. Poznavanje jezika: Engleski jezik – osrednje. Ruski jezik – osrednje.

Iskustvo sa kompjuterom:

Operativni sistemi: Windows NT, XP. Programski paketi: MS Office, Active HDL, Protel 2004 (DXP).

Ivan Novaković

1. Prezime: Novaković 2. Ime: Ivan 3. Datum rođenja: 13.10.1981. 4. Nacionalnost: Srbin 5. Bračno stanje: Neoženjen 6. Vozačka dozvola: B kategorija

7. Kontakt adrese

Adresa: Kneza Pavla 36, 37000 Krusevac E-mail: [email protected] Telefon: 037490860 Mobilni telefon: 064 21 71 329

Page 157: SERIJSKA KOMUNIKACIJA RAČUNARA I USART …es.elfak.ni.ac.rs/Papers/PIC16F877A-USART_konacan.pdf · UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Katedra za elektroniku SERIJSKA KOMUNIKACIJA

- 157 -

8. Obrazovanje

Institucija: Elektrotehnička škola Kruševac

Elektrotehničar automatike

Kompletna ili stepenovana diploma:

IV stepen

9. Sposobnosti

Menadžerske veštine:

Preduzimljivost, usredsređenost na razvoj, pregovaračke sposobnosti, samosvest, samopouzdanje, sposobnost prihvatanja nejasne komunikacije, motiv za uspehom. Sopstvene veštine:

Preuzimam inicijativu, orjentisan ka ostvarenju rezultata, definisanje prioritetnih ciljeva i njiho-vo ostvarenje, rešavanje problema različite težine, komunikativnost, kreativnost, uvek spreman na saradnju i rad pod manjim stresom, međukulturalna osetljivost. Poznavanje jezika: Engleski jezik – dobro.

Iskustvo sa kompjuterom:

Operativni sistemi: Windows 95, 98, 2000, NT, XP. Programski paketi: MS Office, Active HDL, OrCad 9.2.