65
Sadržaj Projektni zaddatak…………………………………………………………….1 Razrada………………………………………………………………………..1 Uvod u mikrokontrolere ………………………………………………………3 Opis I analiza mikrokontrolera AT89S8253…………………………………..4 Softver………………………………………………………………………..21 Tipični aplikacioni programi…………………………………………………27 Hardver……………………………………………………………………….29 Napajanje……………………………………………………………………..36 Testiranje……………………………………………………………………...36 Zaključak……………………………………………………………………...37 Labaratorijske vežbe za studente……………………………………………..37 Listing asemblerskog koda generisanog na osnovu C koda…………………..56

Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Embed Size (px)

Citation preview

Page 1: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Sadržaj

Projektni zaddatak…………………………………………………………….1 Razrada………………………………………………………………………..1 Uvod u mikrokontrolere ………………………………………………………3 Opis I analiza mikrokontrolera AT89S8253…………………………………..4 Softver………………………………………………………………………..21 Tipični aplikacioni programi…………………………………………………27 Hardver……………………………………………………………………….29 Napajanje……………………………………………………………………..36 Testiranje……………………………………………………………………...36 Zaključak……………………………………………………………………...37 Labaratorijske vežbe za studente……………………………………………..37 Listing asemblerskog koda generisanog na osnovu C koda…………………..56

Page 2: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

1

Projektni zadatak Realizovati mikroračunar,baziran na mikrokontroleru AT89S8253 tako da se mikroračunar koristi kao kontroler rada tri ulična semafora,koja rade u režimu „zeleni talas“,semafori su raspoređeni kao na sl.1.Semafor čine tri semaforske table sa po tri sijalice namenjene za regulaciju saobraćaja vozila(SV1,SV2,SV3) i tri semaforske table sa po dve sijalice namenjene za regulaciju prolazaka pešaka preko ulice.

Sl.1.Raskrsnica sa semaforima

Razrada Korišćenjem tri semafora realizovan je slučaj ulice sa zelenim talasom.Kao početni primer uzet je primer gde se vozila kreću brzinom od 60km/h i gde je rastojanje između raskrsnica 500m.Što znači da vozilo koje u prvu raskrsnicu uđe na zeleno svetlo,ako održava brzinu od 60km/h,i na ostala dva semafora ce u trenutku prolaska vozila kroz rasksnicu biti zeleno svetlo. U takvoj situaciji imamo da prvi i treći semafor rade po istom programu rada. Time je omogućeno da računajući da je ista situacija i sa semaforima za pešake, imamo dva različita programa rada za semafore za automobile i isto dva različita programa rada semafora za pešake. Sistem znači možemo posmatrati kao dva nezavisna semafora, koji imaju signalizaciju za vozila i pešake. Ka semaforima ide 15 kontrolnih linija od

Page 3: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

2

mikrokontrolera, s tim što kontrolni signali za prvi i treći semafor su identični, što je naravno realizovano programski. Što se tiče semafora za pešake vodilo se računa o tome da pre uključivanja zelenog svetla za vozila mora da se upali crveno svetlo za pešake,iz razloga da bi ulica bila slobodna za vozila kad se upali zeleno tj. da bi pešaci kojima se u toku prelaska ulice upalilo crveno svetlo imali vremena da bezbedno pređu ulicu.Takođe pri prelasku sa zelenog na crveno svetlo za vozila,zeleno za pešake se ne pali istog trenutka kada se za vozila upali crveno svetlo,već prođe neko vreme da bi se rasksnica oslobodila za bezbedan prelazak pešaka. Pri normalnom radu semafora jedna tipična sekvenca stanja za jedan ciklus je sledeća: 1. upaljeno crveno za vozila i upaljeno zeleno za pešake 2. gasi se zeleno i pali crveno za pešake 3. pali se žuto dok još uvek svetli crveno na semaforu za vozila 4. gase se crveno i žuto, pali se zeleno 5. gasi se zeleno, žuto blinkne 2 puta i pali se crveno za vozila 6. gasi se crveno i pali zeleno za pešake Tabela 1. prikazuje vrednosti kontrolnih signala za sva moguća stanja

signal/ stanje S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15

ST1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 ST2 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 ST3 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 ST4 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 ST5 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 ST6 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1

Tabela 1.Vrednosti kontrolnih signala u stanjima ST1-ST6 Proizvoljno je odlučeno da se za izlaze koriste portovi 0 i 1 mikrokontrolera i to svih osam pinova porta 0 i sedam pinova porta 1.U tabeli 2prikazana je veza između signala S1-S15 i pinova portova 0 i 1.

signal S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 pin mikrokontr. P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6

Tabela 2.Veza između kontrolnih signala i pinova portova

Page 4: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

3

UVOD U MIKROKONTROLERE

Današnji život je, nezamisliv bez različitih vidova komunikacije, informisanja, kontrole i dr. Sve više procesi koji mogu da se kontrolišu elektronskim putem, se time i podvrgavaju. Počev od medicine gde se kod dijagnostike bolesti pacijenata sve češće koriste elektronski uređaji koji različite vidove energije koriste za pobuđivanje elektro senzora koji pobuđuju pokazivače za prikazivanje tih kontrolnih pregleda. Ne možemo da ne spomenemo automobilsku industriju gde se pocesi starta, upravljanja, kontrole i drugih procesa takođe sprovode elekronskim uređajima. Uzaludno je pričati o tome koliko je elektronika prodrla u oblast života kad je u pitanju televizija, radio, telefonija, informacione tehnologije, internet, satelitske komunikacije i dr. Podsetiću samo na upotrebu elektronskih uređaja u vojnoj, avionskoj, telekomunikacionoj i drugim oblastima industrije. U novije vreme sve češće se čovek kao aktivni subjekat u izvršenju mnogih procesa, zapostavlja a ostavlja mesto da sami elektronski uređaji upravljaju i kontrolišu neke procese. Kao primer toga u vojnoj avijaciji se sve cešće upotrebljavaju bespilotne letelice koje same kontrolišu, snimaju, izvršavaju zadatke tamo gde je to potrebno. Sve ovo o čemu smo govorili ne može se zamisliti bez sistema kao sto su memorijski prostori, procesori, mikrokontroleri, displeji, senzori i dr. Sa razvojem mikrokontrolera u prošlosti povećavao se broj procesa koji su mogli da se kontrolišu ovim putem. Mikrokontroleri su relativno spori ali sa aspekta iskorišćenja silicijuma po površini-veoma-efikasni procesori, uglavnom namenjeni za upravljačko-intenzivne aplikacije. Karakteriše ih mikroprogramska CISC bazirana arhitektura, što znači da je broj taktnih intervala za izvršenje različitih tipova instrukcija u velikoj meri promenljiv. Moć izračunavanja kao i broj memorijskih resursa je veoma ograničen, a obim reči staze-podataka relativno mali (obično 8 ili 16 bitova). Sa druge strane, kompleksnost skupa instrukcija pruža odgovarajući programski interfejs, uključujući instrukcije za množenje i deljenje kao i veći broj memorijsko adresnih načina rada. Kao rezultat se dobija veoma kompaktan kôd (programi su relativno mali).

S obzirom da su mikrokontroleri namenjeni za upravljačko-orijentisani aplikacioni domen, oni poseduju bogat skup instrukcija za manipulisanje podacima na nivou-bita, kao i periferijskim komponentama kakvi su tajmeri ili serijski U/I portovi. Veoma često jednostavni procesori koji su se ranije koristili kao CPU-ovi u računarskim sistemima (kakvi su, recimo procesori iz familije Intel 8051, Motorola 6502, 6811, i dr., koji su bili popularni kao CPU-ovi u kućnim računarima) danas se ponovo koriste u nešto izmenjenoj formi kao mikrokontroleri kod embedded sistema. Mikrokontrolere delimo na 4-, 8-, 16-, i 32-bitne. Ilustracije radi, 4-bitni mikrokontroleri uglavnom se koriste u automatima za igru, 8-bitni kao programatori u veš mašinama, 16-bitne srećemo u sistemima za upravljanje klimom u kolima, a 32-bitni se primenjuju da obave složene telekomunikacione funkcije u mobilnim bežičnim uredjajima.

Page 5: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

4

OPIS I ANALIZA MIKROKONTROLERA AT89S8253

- Kompatibilan je sa Microsoft-51 procesorom - 12KB fleš memorija - SPI serijski unos za učitavanje programa - 10 000 ciklusa upis/brisanje - 2KB EEPROM memorija - 100 000 ciklusa upis/brisanje (64-bajtna korisnička matrica) - Napon napajanja od 2.7V do 5.5 V - Frekvencija od 0 do 24 MHz - Memorijsko zaključavanje u 3 nivoa - 256 x 8-bitni unutrašnji RAM - 32 I/O linije za programiranje - Tri 16-bitna Tajmer/Brojač - 9 generatora prekida - Poboljšani UART serijski port sa centriranjem detekcije greške i automatskim prepoznavanjem adrese - Male snage napajanja - Uspostavljanje prekida u niskom režimu rada - Programabilni tajmeri - Dvostruki pokazivač podataka - Isključivanje pomoću znaka (Power-off Flag) - Fleksibilni ISP programator (byte i page modovi) - Page mode: 64 byte/page za kodnu memoriju, 32 byte/page za memoriju podataka - 4-nivo poboljšani kontrolor prekida - Programabilna x2 clock opcije - Unutrašnji Power-on Reset - 42-pin PDIP model kućišta za redukovanje EMS emisije - Zeleni (Pb/Holide-free) opcija kućišta

AT89S8253 je processor visokih performansi, male potrošnje snage. To je CMOS 8-bitni mikrokontroler sa 12 KB fleš memorijom i 2 KB EEPROM memorijom. Mikrokontroler je napravljena u Atmel korporaciji i kompatibilna je sa nadaleko poznatim i popularnim intelovom MCS-51 familijom mikrokontrolera (8052). Reprogramiranje memorije je moguće pomoću SPI serijskog ulaza ili pomoću konvencionalnog programatora memorija. Kombinovanjem različitih 8-bitnih CPU-a sa ugrađenom programibilnom fleš memorijom na monolitnom čipu. FLASH I EEPROM se mogu reprogramirati u sistemu preko SPI-porta.

Atmel AT89S8253 je fleksibilan procesor koji je zahvaljujući niskoj ceni našao veliku primenu kod mnogih kontrolnih aplikacija i programa.

AT89S8253 uključuje standardne osobine poput 12 KB fleš memorije, 2 KB EEPROM, 256 B RAM memorije, 32 I/O linije, programibilni clock/tajmer, dvostruki pokazivač, tri 16 bit-na clock/counter, 6 vektorske arhitekture prekida sa 2 nivoa,

Page 6: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

5

potpuni serijski ulaz, eksterni sopstveni oscilator i električno kolo sata. U stvari AT89S8253 (uz

pomoć statičke logike) se koristi za operacije niskih frekvencija, potpomognut sa 2 softverska moda. IDLE mod zaustavlja CPU dok dopuštajući RAM, clock/counter, serijski port i sistem prekida se koriste za nastavak funkcionisanja. Niski mod čuva RAM sadržaj ali i zamrzava oscilator isključujući sve ostale funkcije u kolu sve dok naiđe sledeći spoljašnji prekid ili hardverski reset. FLASH memorija se moze menjati pomoću serijskog SPI pristupa. Zadržavanje Reset opcije SPI omogućava da memorija bude upisana ili pročitana od stane bita koji su bili aktivni. Blok dijagram AT89S53 jezgra

Sl.2 Sruktura čipa mikrokontrolera AT89S53

Ovako sintetizovan mikrokontroler umnogome olakšava posao projektanta hardvera, smanjuje ukupno hardversko okruženje i broj spoljašnjih veza i na taj način povećava pouzdanost sistema. Na slici 3 prikazana je detaljnija arhitektura mikrokontrolera AT89S53. Ovde se vide komponente kao što su aritmetičko-logička jedinica (ALU) sa parom registara (TMP1, TMP2) za privremeno upisivanje podataka, akumulator (ACC) sa pomoćnim registrom B, statusni registar (PSW), registar naredbi sa dekoderom, programski brojač (PC) i registar za inkrementiranje (povećanje za 1) programskog brojaća (PC-incrementer).

Page 7: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

6

Sl.3 detaljna struktura mikrokontrolera AT89S53

Pomoćni registar B, koji se naziva multiplikativnim registrom, s1uži za

smeštanje drugog operanda za aritmetičke operacije množenja i deljenja Posle izvršene operacije množenja iii deljenja u njemu se nalazi viši bajt rezultata množenja ili ostatak deljenja, respektivno Zajedno sa ACC pomoćni registar B čini registarski par. Pokazivač steka (SP-Stack Pointer) s1uži za adresiranje vrha (najviše lokacije) stek memorije Ovaj registar se inkrementira prilikom upisivanja podataka u stek a dekrementira prilikom čitanja podataka iz ove memorije.

DPTR praktično sadrži dva registra: DPH(Data pointer High) i DPL(Data pointer Low). Njegov zadatak je da drži 16-bitnu adresu. Može biti iskorišćen kao 16-

Page 8: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

7

bitni registar i kao dva nezavisna 8-bitna registra. Obično se koristi za privremeno pamćenje podataka.

Mikrokontroler AT89S53 poseduje 4 prihvatna registra (LATCH-a) za čuvanje stanja izlaza na portovima P0, P1, P2 i P3 . Serial data bufer (SBUF) s1uži za upis podatka koji se ša1je i čitanje podatka koji se prima preko serijske veze. Registarski parovi (TH0,TL0), (TH1,TL1) i (TH2,TL2) su 16-bitni brojački registri za brojač 0,1 i 2 respektivno.

Registarski par (RCAP2H,RCAP2L) su capture registri za Timer 2 capture-mode. U ovom modu u odzivu transmisije AT89S52 T2EX pinu, TH2 i TL2 su kopirani u RCAP2H i RCAP2L. Timer 2 akođe ima 16-bitni auto-reload mode i RCAP2H i RCAP2L zadržavaju reload veličinu za ovaj mod.

Za kontrolu i upisivanje statusa prilikom prekda za tajmere, brojače i za serijski prenos podataka koriste se registri specijalne namene IP, IE, TMOD, TCON, T2CON, T2MOD, SCON i PCON.

Page 9: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

8

Opis pinova

Od 1 do 8 - Port 1: Ovaj port je 8-bitni dvosmerni ulazno-izlazni port sa neprekidnim unutrašnjim

napajanjem. Izlazne posebne memorijske lokacije PORT1 mogu pobuditi 4 TTL logicka kola. Kada je 1 s upisana na port 1 pinovi su na visokom nivou uz pomoć unutrašnjeg neprekidnog napajanja i mogu se koristiti kao ulazi. Početna ulazna struja je Iul=150µA zbog unutrašnjeg neprekidnog napajanja. Neki PORT 1 pinovi mogu imati i druge dodatne funkcije P.1.0 i P.1.1 mogu služiti kao 2 spoljašnja TIMER /COUNTER ulaza (P 1.0/T2) i 2. aktivni ulaz (P 1.1/T2 EX) CLOCK/COUNTER respektivno. Osim toga P 1.4, P 1.5, P 1.6, P 1.7 mogu služiti za pomoćne portove. DATA INPUT/OUTPUT i CLOCK INPUT/OUTPUT pinovi su prikazani u tabeli:

Pin porta Razne funkcije P1.0 T2 (spoljni brojački ulaz do tajmera/brojača 2), izlaz takta P1.1 T2EX (triger hvatanja/punjenja tajmera/brojača 2 i kontrola smera) P1.5 MOSI (koriste se za programiranje u sistemu) P1.6 MISO (koriste se za programiranje u sistemu) P1.7 SCK (koriste se za programiranje u sistemu)

Ovaj port prihvata adrese niskih nivoa u toku programiranja i verifikacije

FLASH memorije.

Page 10: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

9

9 - Reset: Visok logički nivo na ovom ulazu resetuje sve interne registre (registre dovodi

u stanje 00000000), sa sledećim izuzecima: - P0, P1, P2 i P3 (izlazni registri svih spoljnih portova) se dovode u stanje 11111111

- SBUF se ne menja - SP se dovodi u stanje 00000111 (07h) - Neki bitovi u registrima IP, IE i PCON fizički ne postoje, pa tako ne mogu ni

da se resetuju

od 10 do 17 - Port 3: Ovo je 8 bit-ni dvosmerni I/O dvosmerni port sa neprekidnim unutrašnjim

napajanjem. PORT 3 pomoćne memorije mogu pobuditi 6 TTL ulaza. Kada se upisuju podaci na PORT3 ovaj PORT dosta energije vuče od unutrašnjeg neprekidnog napajanja i tada se mogu koristiti ulazi. Kod ovih ulaza uz pomoć spoljašnjeg napajanja struja je tipično 150 µA zbog slabog unutrašnjeg napajanja. PORT 3 takođe prihvata takođe i pojedine kontrolne signale za programiranje FLASH memorije. PORT3 takođe predstavlja i servis specijalnih promenljivih osobina AT89S 8253 koji su prikazani u tabeli.

Ako se koristi kao univerzalni ulaz ili izlaz, po svemu je sličan portu 1, ali na svakoj nožici ima još po neku specijalnu funkciju:

Pin porta Razne funkcije P3.0 RXD (serijski ulaz za asinhronu komunikaciju (mod 1, 2 i 3) ili

serijski izlaz za sinhronu komunikaciju (mod 0)) P3.1 TXD (serijski izlaz za asinhronu komunikaciju (mod 1, 2 i 3) ili taktni

(clock) izlaz sa sinhronu komunikaciju (mod 0)) P3.2 INT0 (ulaz za prekid (interapt) 0) P3.3 INT1 (ulaz za prekid (interapt) 1) P3.4 T0 (spoljnji ulaz tajmera 0) P3.5 T1 (spoljnji ulaz tajmera 1) P3.6 WR (signal za upis u spoljnu memoriju) P3.7 RD (signal za čitanje iz spoljne memorije)

18 i 19 - X2 i X1: Izlaz i ulaz internog oscilatora. Ako se koristi kvarc-kristal za stabilizaciju

učestanosti oscilatora (to je najčešći slučaj), on se vezuje za ove dve nožice, s tim što na svaku nožicu (prema masi) treba dodati po jedan kondenzator od 20-40pF. Ovo je potrebno da bi se sprečilo oscilovanje na nekom višem harmoniku. Opseg uëestanosti je od 1 do 12 MHz, a izrađuju se i mikrokontroleri koji rade i na znatno višim frekvencijama.

20 – Masa

Page 11: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

10

Od 21 do 28 - Port 2 ili adrese od A8 do A15: Port 2 je 8 bit-ni dvosmerni I/O port sa unutrašnjim neprestanim napajanjem.

Izlazne pomoćne memorije PORT-a 2 mogu prihvatiti/napajati 6 TTL ulaza. Kada je 1 s na ulazu porta 2 on je na visokom nivou uz pomoć neprekidnog unutrašnjeg napajanja i mogu se koristiti kao ulazi. Kod ovih ulaza tipična ulazna stuja je 150 µA zbog slabog unutrašnjeg neprekidnog napajanja. PORT 2 emituje adrese visokih naredbi u toku donošenja podataka od spoljašnje memorije i u toku prihvatanja podataka iz spoljašnje memorije koje koriste 16-bitne adrese(MOVX i DPTR). U ovom slucaju PORT2 kada emituje 1s koristi jako unutrašnje napajanje .U toku prihvatanja podataka iz spoljašnje memorije tada PORT 2 korist 8bit-ne adrese (MOVX i RI). PORT2 takođe ima i specijalne funkcije registra. PORT 2 takođe prihvata adresne bitove visokog zahteva i neke kontrolne signale u toku programiranja i potvrde FLASH memorije.

Ako se koristi mikrokontroler sa internim ROM-om i nema spoljnjeg ROM-a ili RAM-a, mogu se koristiti sve linije ovog porta kao univerzalni ulazi ili izlazi. Ako se koristi spoljna memorija, onda su ovo visoki adresni izlazi, od A8 do Al 5. U tom slučaju, čak i ako se koriste samo neke adrese, preostale nožice ovog porta ne mogu da se koriste kao ulazi ili izlazi. NAPOMENA: Svi pinovi u PORT 1 i PORT 2 kao i pinovi PORT 3 (izuzev P32 INTO 1 P 3.3 INT 1 imaju sopstveno nepekidno napajanje koje je nedostupno u POWER-DOWN modu. Pinovi P 3. 2 (INTO) i P 3.3 (INT 1) su aktivni podjednako i u POWER –DOWN modu ( da bi mogli da potrazuju prekide za izlaz iz POWER-DOWN modu) uz stalno ukljuceno unutrasnje napajanje.

29 - PSEN: Program Store Enable (aktiviranje spoljašnjeg ROM-a): Omogućava čuvanje programa. PSEN čita strobe za programiranje spoljašnje

memorije. Kada AT89S8253 izgubi kod od izlazne memorije programa, PSEN je aktivan dvostruko u toku svakog ciklusa mašine izuzev 2PSEN u toku svakog prihvatanja podataka od spoljašnje memorije.

Normalno se ovaj izlaz spaja sa CS ili OE ulazom na spoljnom EPROM-u, jer ga mikrokontroler aktivira (dovodi na nizak nivo) svaki put kad čita bajt iz programske memorije (za kontrolu spoljašnjeg RAM-a se koriste druge nožice).

30 – ALE/PROG: Address Latch Enable (Upis u adresni registar): Omogućava blokiranje podataka. ALE/PROG je ustvari izlazni koji blokira

niske bajt adrese (u toku opadajuće ivice) u toku prihvatanja spoljašnje memorije. Ovaj pin je takođe ulazni impuls programa u (PROG) u toku programiranja FLASH-a. U normalnom radu ALE traje 1/6 frekvencije oscilovanja i može biti upotrebljen za spoljašnji counter i clock. Važno je međutim da je ALE impuls preskočen u toku svakog prihvatanja podataka iz spoljašnje memorije. ALE operacija može biti onemogućena postavljanjem bita 0 AUX R SFR na lokaciju 8EH.Sa umetanjem bita, ALE je aktivan samo u toku MOVX ili MOVC instrukcije. Postavljanjem ALE disable, bit nema efekta na mikrokontroler u spoljašnjem izvršnom modu.

Page 12: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

11

Da bi se sve funkcije spakovale u standardno kućište od samo 40 nožica,

pribegnuto je multipleksiranju nekih signala. Tako je port P0 dobio dve funkcije, izlazne adrese A0-A7 i ulaz/izlaz podataka D0-D7. Pre svakog očitavanja programa iz spoljne memorije ili prozivanja RAM-a mikrokontroler na P0 prosleđuje niži bajt adresnog registra i aktivira izlaz ALE. Spoljni registar na visok nivo ALE memoriše stanje P0, a izlazi ovog registra se koriste kao A0-A7. U drugom delu mašinskog ciklusa mikrokontrolera P0 se koristi kao magistrala podataka (Data Bus).

31 - EA: External Access (Spoljni pristup): Ako je ovaj ulaz nizak, mikrokontroler će sve instrukcije čitati iz spoljnog ROM-a.

od 32 do 39 - Port 0, Adrese A0-A7 ili magistrala podataka: Slično portu P2, i port P0 može da se koristi kao univerzalni ulaz i izlaz samo

ako se ne koristi spoljna memorija Ako se koristi, tada je P0 adresni izlaz za A0-A7 kad je ALE visok, a magistrala podataka (Data Bus) kada je ALE nizak.

40 - Napajanje +5V. Tajmeri/Brojači

Mikrokonroler AT89S53 sadrži tri tajmersko-brojačka registra. Prva dva zajednička su za sve modele iz familije 8051, dok je treći dodat modelima 8052. Označavaju se kao tajmeri 0,1 i 2. Sva tri registra se mogu konfigurisati da rade i kao tajmeri i kao brojači.

Tajmer 0 i Tajmer 1

Kao što je pokazano na slici ispod, T0 sadrži dva registra – TH0 i TL0, koji služe za pamćenje višeg i nižeg bajta 16-bitnih binarnih brojeva.

Page 13: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

12

Na primer, ako je T0 = 0, oba registra će imati vrednost 0. Ako T0 ima decimalnu vrednost (1000), TH0 viši bajt imaće vrednost 3, a TL0 (niži bajt) imaće decimalnu vrednost 232. To se vidi na slici ispod.

Formula za računanje vrednosti 16-bitnog registra je vrlo jednostavna:

THO * 256 + TL0 = T Za prethodni primer važi:

3 * 256 + 232 = 1000 Tehnički tajmeri su 16-bitni registri, pa prema tome njihova maksimalna

vrednost je 65,535. Ako se ovaj broj prekorači tajmer će se automatski resetovati i njegova vrednost će ponovo biti nula, tj. tajmer nastavlja da broji od nule. Ovo stanje se zove overflow ili prekoračenje.

Ova dva tajmera mogu da rade kao brojački registri, ili registri koji mere zadati vremenski interval. Oba tajmera mogu raditi u četiri radna rezima.

Kada radi kao brojač, sadržaj tajmerskog registra se uvećava za jedan na svaku silaznu ivicu odgovarajućeg ulaza mikrokontrolera (T0 za tajmer 0 i T1 za tajmer 1). Maksimalna frekvencija ulaznog signala koju brojač može da prati je 24 puta manja od radnog takta mikrokontrolera.

Page 14: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

13

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

Kontrola rada tajmera

Radom tajmera upravlja se pomoću registara TMOD (sl.4.) i TCON (sl.5.). Gornja četiri bita registra TMOD kontrolišu rad tajmera 1, a donja četiri rad tajmera 0. Bitovi TR1 i TR0 registra TCON određuju da li će odgovarajući tajmer/brojač biti aktivan ili ne. Npr. ako je brojač 0 neaktivan on se neće uvećavati kada na ulazu T0 nastupi prelaz sa visokog na nizak nivo. Ovo je ilustrovano na slikama 4,5 i 6. Način rada tajmera bira se kombinacijom bitova M1 i M0 registra TMOD.

Sl.4 registrar TMOD

Page 15: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

14

Sl.5. Registar TCON

Bitovi C/T registra TMOD (u viša ili niža četiri bita u zavisnosti od tajmera) definišu da li odgovarajući tajmer radi kao tajmer (C/T=0) ili kao brojač (C/T=1). Bitovi GATE svojim stanjem 0 omogućuju odgovarajućem tajmeru da radi uvek kada je odgovarajući TR bit jednak jedinici. Ako je GATE=1, rad tajmera uslovljen je i stanjem na ulazu INT1 odnosno INT0 u zavisnosti od tajmera. Odgovarajući INT ulaz tada mora biti jedinica da bi tajmer radio. Timer 2

Tajmer 2 je 16-bitni Tajmer/Brojač koji može podjednako da radi i kao tajmer i kao brojač. Ovo se određuje selekcijom bita 2T/CP u registru specijalne namene T2CON. Tajmer/Brojač registar dat je na sl. 12. Tajmer 2 se razlikuje od prethodna dva tajmera jer ovaj tajmer ima dva 8-bitna registra. TH2 i TL2 su vezana serijski i formiraju 16-bitni brojački registar. Druga dva, RCAP2H i RCAP2L takođe su vezana serijski, i njihova glavna uloga zahvat ’’capture’’ sadržaja brojačkog registra.

Page 16: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

15

Sl. 6. Tajmer/Brojač registar

Glavna prednost ove organizacije ogleda se u jednostavnoj zameni mesta

podataka jednostavno instrukcijom i ne zahteva dodatne programske akrobacije. Takođe i ovaj tajmer ima nekoliko različitih modova rada. Tajmer 2 se kontroliše registrom T2CON i u tabeli ispod objašnjen je svaki njegov bit.

Sl. 7. T2CON-Tajmer/Brojač kontrolni registar Simbol Funkcija

TF2

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

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

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

TCLK Prenosni okidni impuls. Takođe kada je na jedinici serijski port koristi impulse prekoračenja Tajmera 2 a kaka je na nuli impulse prekoračenja Tajmera 1.

EXEN2 Spoljašnje aktiviranje tajmera 2. Kada je EXEN2=1 vrši se reloadovanje Tajmera 2 koje može bit ili izazvano opadajućom ivicom na spoljnjem ulazu T2EX. Kada je EXEN2=0 Tajmer 2 ignoriše događaje na T2EX.

TR2 Kontrola start-1/stop-0 za Tajmer 2. Logočka jedinica staruje rad tajmera.

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

Page 17: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

16

2RL/CP

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

Tajmer 2 ima tri operativna moda: capture, auto-reload i generator brzine

bauda koji su selektovani bitovima u T2CON registru. RCLK+TCLK 2RL/CP TR2 MODE 0 0 1 16-bit Auto-reload 0 1 1 16-bit Capture 1 X 1 Baud Rate

Generator X X 0 (Off) Sl. 8. Operativni modovi tajmera 2

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

U tkz. capture modu (modu 0) negativna ivica na spoljnjem ulaznom pinu T2EX izaziva prepisivanje trenutne vrednosti tajmera 2 (TH2 i TL2) u registre RCAP2H i RCAP2L. Ovaj mod je jako koristan kod aplikacija u kojima je potrebno meriti vremenske intervale do pojave nekog događaja. 16-bitni registri (TH2+TL2) drže broj od koga počinje da se broji. Postavljanjem bita TR2 na jedinici u registru TCON startuje se tajmer, svaki dolazeći impuls povećava vrednost za jedan. Kada se oba registra napune, impulsi prouzokuju prekoračenje (decimalna vrednost 65536), tada se resetuju i počinju da broje od nule. Ovaj mod je opisan na slici 3.2.4.

U modu auto-reload (Up or Down Counter) - (mod 1) Tajmer 2 se može isprogramirati da radi kao up/down brojač ukoliko je konfugurisan u auto-reload režimu. Ovo mogućnost je prozvana DCEN (Down Counter Enable) a ovaj bit se nalazi u specijalnom registru T2MOD. Kada je aktiviran bit DCEN, Tajmer 2 broji gore ili dole zavisno od vrednosti T2EX pina. Kada tajmer odbroji, postavlja se odgovarajući marker, tajmer se reload-uje tako što se u njegove registre prepisuje vrednost iz registara RCAP2H i RCAP2L i automatski restartuje.

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

Page 18: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

17

Sl 9. Tajmer 2 u Capture modu

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

Page 19: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

18

Sl.11. Tajmer 2 Auto Reload Mode (DCEN=1) T2EX = 0/1 countin down/up Korišćenje Tajmera 2 za generisanje brzine bauda :

Kod AT89S53, postavljanjem TCLK i/ili RCLK u T2CON selektuje Tajmer 2 kao generator brzine boda (slika 5.3.2.1). Pod ovim uslovima, brzina bauda za prijem i slanje može biti simultano različita. Selektovanjem RCLK i/ili TCLK dovodi Tajmer 2 u njegov režim generatora brzine bauda , što je prikazano na slici ispod.

Režim generatora brzine bauda je sličan auto-reload režimu rada. U ovom slučaju, brzine bauda u režimima 1 i 3 su rešene od strane Tajmera 2 prema sledećoj jednakosti

Page 20: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

19

Sl. 12.

Tajmer 2 može biti konfigurisan za tajmer ili brojač operacije. U dosta primera, on je konfigurisan za tajmer operaciju ( 02T/CP = ). Normalno, tajmer povećava vrednost pri svakom mašinskom ciklusu, ali operacija tajmera je različita za Tajmer 2 kada se koristi kao generator brzine boda. Kao generator brzine bouda, Tajmer 2 povećava vrednost svakog vremenskog stanja. U ovom slučaju jednakost je data kao:

gde je (RCAP2H, RCAP2L) sadržaj registra RCAP2H i RCAP2L uzet kao 16-bitni ceo broj.

Korišćenje Tajmera 2 za programiranje izlaznog takta (clock-out):

50% taktovanih ciklusa može biti programirano na izlaz pina P1.0 na portu 1, kao što je pokazano na slici . Ovaj pin, pored toga što je obično I/O pin, ima dve alternativne funkcije. Može biti programiran za ulaz spoljnjeg takta za Tajmer/Brojač 2 ili za izlaz 50% taktovanih ciklusa od 61 Hz do 4MHz (za 16 MHz radnu frekvenciju).

Page 21: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

20

Sl.13. Tajmer 2 u clock-out modu Da bi konfigurisali Tajmer/Brojač 2 kao generator takta, bit 2T/C (T2CON.1)

mora biti obrisan i bit T2OE (T2MOD.1) mora biti postavljen. Bit TR2 (T2CON.2) startuje i stopira tajmer.

Frekvencija izlaznog takta zavisi od frekvencije oscilatora i reloadovane vrednosti capture registara (RCAP2H, RCAP2L) Tajmera 2, kao što se vidi iz sledeće jednačine.

U režimu izlaznog takta, brojači Tajmera 2 neće generisati prekid. Ovo ponašanje je slično kada se Tajmer 2 koristi kao generator bouda. Moguće je simultano koristiti Tajmer 2 kao generator brzine bauda i kao generator takta. Međutim, frekvencije generatora brzine bauda i generatora izlaznog takta ne mogu biti određene nezavisno jer oba generatora koriste RCAP2H i RCAP2L registre.

Page 22: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

21

Softver Za razvoj softvera korišćeno je razvojno okruzenje Keil koje predstavlja najpopularniji alat za rad sa mikrokontrolerima familije 8051. Program je pisan u cistom C jeziku. Softver za kontrolu rada semafora bazira se na merenju vremena i promeni stanja izlaza na portovima po isteku određenog vremena, shodno tabeli stanja. Kao osnovni vremenski kvant koristi se vremenski period od 1s. Za precizno generisanje vremenskog intervala koristimo hardverskog tajmera mikrokontrolera. Ovaj period se generiše korišćenjem interapta tajmera Timer0, koji se javlja na 10ms i koristimo pomoćni softverski brojač koji je inicijalno postavljen na 100 i dekrementira se svakim ulaskom u interapt rutinu. unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms unsigned char T01s_count=0; //brojac sekundi bit T01s_end; //bit koji pokazuje da je istekla 1s //Interapt rutina tajmera 0, koja se izvrsava svakih 10ms void timer0_ISR (void) interrupt 1 { TF0=0; //brisanje flega timera 0 TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 T01s--; //umanjujemo T01s } Timer0 se inicijalno, a nakon toga i pri svakom ulasku u interapt rutinu postavlja na 0xB800 heksadecimalno, odnosno 47104 decimalno. Pri korišćenoj frekvenciji kristala od 11.0592MHz, tajmer će se inkrementirati svakih 1/(11.0592MHz/6)=542,5nS. Da bi smo dobili period od 10mS, 10mS/542,5nS=18432. Znači pošto se radi o 16-bitnom tajmeru, znači da ima opseg brojanja od 0 do 65535, da bi se desio interapt u registar tajmera 0 potrebno je upisati vrednost 65536-18432=47104. Vrednost se postavlja svaki put kada se

Page 23: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

22

interapt dogodi. U viši 8-bitni registar 16-bitnog registra T0, TH0 upisujemo 0xB8, a u niži 8-bitni registar TL0 upisuje se 0x00. Kada promenjiva T01s postane jednaka 0, u glavnoj main petlji postavljamo fleg da je istekla jedna sekunda i T01s ponovo postavljamo na 100 da bi se postupak ponavljao if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1; //ako jeste postvljamo marker na 1 T01s=100; //ucitavamo novu vrednost za brojac } Naredna if petlja proverava i kada istekne sekunda uvećava softverski brojač T01s_count, i isto tako briše fleg T01s_end. Zatim kroz switch uslov ispitujemo u kojoj smo trenutno sekundi i shodno tome delujemo na kontrolne signale, tj. palimo ili gasimo svetla na semaforu. if(T01s_end){ //ako je istekla sekunda T01s_end=0; //brisemo marker T01s_count++; //uvecavamo brojac sekundi switch(T01s_count) //ispitujemo koja je trenutno sekunda { case 10: //10s, pale se na semaforima za pesake 1 i 3 P1_ZELENA=0; //zelena svetla P1_CRVENA=1; P3_ZELENA=0; P3_CRVENA=1; break; ... Kada dostignemo 60-tu sekundu, nakon akcije resetuje se brojač sekundi na nulu, čime se proces ponavlja sa periodom od 60s. Znači jedan ciklus prolaska semafora kroz gore navedena stanja traje 60s. case 60: //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno S1_ZUTA=1; S1_CRVENA=0; S3_ZUTA=1; S3_CRVENA=0; S2_ZUTA=1; S2_CRVENA=1; S2_ZELENA=0; T01s_count=0; //resetujemo brojac sekundi na nulu, da bi ponovili ciklus break;

Page 24: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

23

Da navedemo da na početku samog programa izvršena su podešavanja samog procesora: void main(void) { CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus WDTCON=0x00; //iskljucicanje Watchdog tajmera TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 ET0 = 1; //dozvola interapta tajmera 0 TR0 = 1; //startovanja tajmera 0 EA = 1; //globalna dozvoja interapta T01s=0; //inicijalizacija promenjive T01s_count=0; //inicijalizacija promenjive StartUp(); //inicijalno postavljanje izlaza Vidimo da se na kraju inicijalizacije vrši pozivanje funkcije StartUp() kojom se stanja na semaforu postavljaju u inicijalno stanje po uključivanju uređaja: //Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena, //semafor 3: upaljeno crveno, na pesackom - crvena void StartUp() { S1_CRVENA=0; P1_CRVENA=0; S2_ZELENA=0; P2_CRVENA=0; S3_CRVENA=0; P3_CRVENA=0; }

Page 25: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

24

Kompletan listing koda u C-u: #include <REG8253.H> //include file za 89S8253 //Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1 sbit S1_ZELENA=P0^0; sbit S1_ZUTA=P0^1; sbit S1_CRVENA=P0^2; sbit P1_ZELENA=P0^3; sbit P1_CRVENA=P0^4; sbit S2_ZELENA=P0^5; sbit S2_ZUTA=P0^6; sbit S2_CRVENA=P0^7; sbit P2_ZELENA=P1^0; sbit P2_CRVENA=P1^1; sbit S3_ZELENA=P1^2; sbit S3_ZUTA=P1^3; sbit S3_CRVENA=P1^4; sbit P3_ZELENA=P1^5; sbit P3_CRVENA=P1^6; unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms unsigned char T01s_count=0; //brojac sekundi bit T01s_end; //bit koji pokazuje da je istekla 1s void StartUp(); //deklaracija funkcije //Interapt rutina tajmera 0, koja se izvrsava svakih 10ms void timer0_ISR (void) interrupt 1 { TF0=0; //brisanje flega timera 0 TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 T01s--; //umanjujemo T01s } void main(void) { CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus WDTCON=0x00; //iskljucicanje Watchdog tajmera TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104

Page 26: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

25

ET0 = 1; //dozvola interapta tajmera 0 TR0 = 1; //startovanja tajmera 0 EA = 1; //globalna dozvoja interapta T01s=0; //inicijalizacija promenjive T01s_count=0; //inicijalizacija promenjive StartUp(); //inicijalno postavljanje izlaza while (1) { //neprekidna petlja if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1; //ako jeste postvljamo marker na 1 T01s=100; //ucitavamo novu vrednost za brojac } if(T01s_end){ //ako je istekla sekunda T01s_end=0; //brisemo marker T01s_count++; //uvecavamo brojac sekundi switch(T01s_count) //ispitujemo koja je trenutno sekunda { case 10: //10s, pale se na semaforima za pesake 1 i 3 P1_ZELENA=0; //zelena svetla P1_CRVENA=1; P3_ZELENA=0; P3_CRVENA=1; break; case 17: //17s, pali se na semaforu za pesake 2 crveno svetlo P2_ZELENA=1; P2_CRVENA=0; break; case 20: //20s, pali se na semaforima za pesake 1 i 3 crveno svetlo P1_ZELENA=1; P1_CRVENA=0; P3_ZELENA=1; P3_CRVENA=0; break; case 27: //27s, na semaforima 1 i 3 pali se i zuto, ocekuje se zeleno S1_ZUTA=0; //na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 puta S3_ZUTA=0; //blinkne kao obavestenje da ce da usledi promena na crveno S2_ZELENA=1; S2_ZUTA=0; break; case 28: //28s,zuto treperi

Page 27: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

26

S2_ZUTA=1; break; case 29: //29s,zuto treperi S2_ZUTA=0; break; case 30: //30s, na semaforima 1 i 3 pali se zeleno, na semaforu 2 crveno S1_CRVENA=1; S1_ZUTA=1; S1_ZELENA=0; S3_CRVENA=1; S3_ZUTA=1; S3_ZELENA=0; S2_CRVENA=0; S2_ZUTA=1; break; case 40: //40s, na semaforu za pesake 2 pali se zeleno P2_ZELENA=0; P2_CRVENA=1; break; case 50: //50s, na semaforu za pesake 2 pali se crveno P2_ZELENA=1; P2_CRVENA=0; break; //27s, na semaforima 2 pali se i zuto, ocekuje se zeleno case 57: //na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2 puta S1_ZELENA=1; //blinkne kao obavestenje da ce da usledi promena na crveno S1_ZUTA=0; S3_ZELENA=1; S3_ZUTA=0; S2_ZUTA=0; break; case 58: //58s,zuto treperi S1_ZUTA=1; S3_ZUTA=1; break; case 59: //59s,zuto treperi S1_ZUTA=0; S3_ZUTA=0; break; case 60: //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno

Page 28: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

27

S1_ZUTA=1; S1_CRVENA=0; S3_ZUTA=1; S3_CRVENA=0; S2_ZUTA=1; S2_CRVENA=1; S2_ZELENA=0; T01s_count=0; //resetujemo brojac sekundi na nulu, da bi ponovili ciklus break; default: break; } } } } //Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena, //semafor 3: upaljeno crveno, na pesackom - crvena void StartUp() { S1_CRVENA=0; P1_CRVENA=0; S2_ZELENA=0; P2_CRVENA=0; S3_CRVENA=0; P3_CRVENA=0; } Tipični aplikacioni programi

Za programiranje mikrokontrolera AT89S8253 koristili smo Univerzalni programmer UNP2 firme MEC. To je uređaj koji služi za programiranje ražličitih tipova čipova ,tako što već gotov heksadecimalni fajl koji smo dobili u keil-u (asembler) učitava u čip. Ovaj naš pogramator se može koristiti za za različite tipove čipova koji se mogu razlikovati po tipu kućiša ili broju pinova,zato i ima univerzalno podnožje za njih.Ima mogucnost brisanja i upisa odgovarajuceg sadržaja.

Page 29: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

28

Generalni opis UNP2 :

Mali, mocni i brzi univerzalni programator. DIL40 ZIF adapter ,uređaji u DIL paketu do 40 pina su podržani bez

adaptera. Konekcija sa PC paralelni port . Visoko brzinski IEEE 1284 izlazni port sa brzinom od 1Mb/s . Lak za korišcenje u DOC i Windows 95/98/Me/NT/200/XP Adapter za napajanje i softver su sastavni delovi paketa.

Uređaj podržava programiranje za:

EPROM:NMOS/CMOS,27xxx I 27cxxx serije, sa 8/16 širinom baze podataka, puna podrška za LV seriju(*1*2)

EEPROM:NMOS*CMOS, 28xxx,28Cxxx,27EExxx serije, sa 8/16 bita širinom baze, puna podrška za LV seriju(*1*2)

FLASH EPROM: 28Fxxx, 29Cxxx, 29Bxxx, 29LVxxx,29Wxxx, 49Fxxx serije sa 8/16 širinom baze podataka, puna podrška za LV seriju(*1*2)

SerijaE(E)PROM: 17Cxxx, 24Cxxx,25Cxxx,25Cxxx,59Cxxx,85Cxxx,93Cxxx serije , puna podrška za LV seriju(*1*2)

Konfiguracioni PROM: 17xxx serije i LV serije. NV RAM, PLD serija. Mikrokontroleri MCS51, 87Cxxx,89Cxxx,89Sxxx,89LVxxx serije od

Atmela,Atmel W and M,Intel,Philips,SST,paralelni i seriski(ISP) mod . Mikrokontroleri Scenixs: SX 18xxx, SX20xxx,SX28xxx serije.

Page 30: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

29

Hardver Za hardversku realizaciju semaforskog sistema iskorišćena je PCB koju je projektovao student J. Jovanovića. Njena Blok šema data je na slici 10. Šema prikazuje kako su povezani mikrokontroler AT89S8253, ispravljač napona od 220V AC 50Hz na 5V DC (trafo je smesten van PCB ploce), bafersko kolo 74LS244 kao pomoćno kolo za spregu sa računarom preko paralelnog porta, kolo max232 za spregu sa računarom preko RS232 porta. Gornja i donja strana štampane ploče (layout) prikazane su na slikama 14. i 15. respektivno, dok je šema rasporeda komponenata gornje strane ploče prikazana na slici 16.

Page 31: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

30

X

Slika 13. Blok šema elemenata smeštenih na PCB ploči

Page 32: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

31

.

Slika 14. Layout gornje strane PCB-a

Page 33: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

32

Slika 15. Layout donje strane PCB-a

Page 34: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

33

Slika 15. Prikaz rasporeda elemenata odštampan na gornjoj strani PCB-a

Rad semafora prikazuju LED koje su smestene odvojeno na raster ploči a napajaju se sa ploče na kojoj je smesten mikrokontroler. Na raster ploči nalaze se, takodje, i baferi preko kojih se diode sprežu sa mikrokontrolerom. Blok šema sistema na raster ploči prikazana je na slici 16.

Page 35: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

34

Slika 16. Blok šema sistema na raster ploči

Page 36: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

35

Spisak upotrebljenih komponenata dat je u tabeli 11. .

Komponente Br.komada

AT89S8253 1

QARTC 11.059MHz 1

GREC 1A-250V 1

Trafo 6V 500mA 1

LED žuta 3

LED crvena 6

LED zelena 7

elektrolitski kondenzator 470μF/16V 1

elektrolitski kondenzator 100μF/16V 1

elektrolitski kondenzator 2.2μ F/63V 1

Otpornik 330Ω 1/4W 12

Otpornik 100K 1/4W 1

blok kondenzator 100nF/25V 3

podnožja 40DIL 1

prekidač DIP4 1

raster ploča 2

priključni kabl za 220V 1

džamperi 1

mikroprekidač 5mm 1

74HC541N 2

LM 7805 1

Tabela 11. Spisak upotrebljenih komponenata

Page 37: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

36

Izgled realizovanog hardvera prikazan je na slici 17.

Slika 17. Izgled realizovanog hardvera

Napajanje

Napajanje mikrokontrolera je ostvareno klasičnom procedurom i komponentama kao i kod drugih kontrolera. Naizmenični napon napajanja iz mreze 220V se preko transformatora tansformiše na 9V pa zatim ispravlja preko greca i kondenzatora. Posle toga se signal vodi na stabilizator napona realizovan kao IC LM 7805 i takav signal se vodi na procesor i ostale digitalne periferne uredjaje i služi kao napajanje konstantnom vrednošću napona. Električna šema izvora napajanja je data na sledećoj slici:

Page 38: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

37

Kao što je već bilo reči, sva digitalna kola se napajaju preko izvora konstantnog napona +5V i pozitivan kraj ovog napona je doveden na 40-ti pin mokrokontrolera a masa je preko 20-og pina povezana na uzemljenje i zajedničku masu. Kada je reč o oscilatoru konstantne učestanosti ovde je on povezan preko pinova 18 i 19 i ima vrednost 11.059MHz.

Testiranje Testiranju sistema prethodilo je testiranje programa. Za tu svrhu korišćen je program Keil uVision 3. Nakon verifikacije ispravnosti napisanog programa iskorišćen je isti program Keil uVision za prevođenje C-koda u asemblerski, odnosno za kreiranje HEX fajla za programiranje kontrolera. Potom je uz pomoć programa MEC PG4UW Programmer generisani kôd prenešen u mikrokontroler. Rad sistema testiran je na realizovanom hardveru.Testiranjem je utvrđeno da je projektni zadatak uspešno realizovan.

Zaključak Semaforski sistem je analiziran i detaljno razrađen. Postavljeni su bili jasni softverski i hardverski ciljevi. Uz dalju analizu realizovani su hardver i softver. U toku rada uočene su manje rutinske greške koje su uspešno otklonjene. Nakon učitavanja programa u mikrokontroler izvršeno je testiranje celokupnog semaforskog sistema. Testiranje je prošlo uspešno tako da se može zaključiti da je uprkos manjim poteškoćama uspešno realizovan sistem. Moguća su dalja dorađivanja na ovu temu kao na primer kreiranje većeg semaforskog sistema od četiri, pet raskrsnica koje bi bile povezane. Ovaj veći semaforski sistem bi bio povezan tako što bi mikrokontroleri mogli da komuniciraju radi poboljšanja efikasnosti regulisanja saobraćaja. Tako bi npr. otkazivanjem rada jedog semaforskog sistema na raskrsnici mogao saobraćaj ka njoj da se redukuje.

Page 39: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

38

Laboratorijska vežba za studente Studenti bi trebalo da pročitaju prethodnu dokumentaciju radi pripreme za laboratorijsku vežbu. Njihov rad se svodi na testiranje semaforskog sistema i softversku modifikaciju rada semafora. Prvo treba da provere rad semafora učitavanjem originalnog programskog kôda u mikrokontroler. To se radi u nekoliko koraka:

1. Vadimo mikrokontroler iz podnožja na maketi. 2. Stavljamo mikrokontroler u programator vodeći računa da svaki pin dođe na

svoje mesto. 3. Pokrenuti program MEC PG4UW Programmer. Pojaviće grafički interfejs

prikazan na Slici 18.

Formatted: Bullets and Numbering

Page 40: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

39

Slika 18. Grafički interfejs programa MEC PG4UW Programmer.

4. Izvršiti izbor ATMEL-ovog AT89S8253 mikrokontrolera,kao sto je prikazanona sledećim slikama

Formatted: Bullets and Numbering

Page 41: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

40

5. Posle izbora komponenti sledi brisanje čipa

Page 42: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

41

7.Zatim sledi učitavanje heksadecimalnog zapisa i asemblera u mikrokontroler.

Page 43: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

42

8. Zatim sledi programiranje mikrokontrolera:

Page 44: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

43

Page 45: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

44

9. Izgled ekrana posle programiranja mikrokontrolera prikazan je gore na slici. Sada kada smo završili programiranje, vadimo čip iz programatora i stavljamo ga u podnožje na maketi.

Priključiti napajanje. Semafor bi trebao da počne sa radom. Ukoliko je potrebno, pritisnuti taster za reset.

PRIMER 1 Izmeniti postojeći program tako da vozilo koje se kreće konstantnom brzinom od 50km/h,prođe na zeleno svetlo kroz sva tri semafora.Uzeti da je rastojanje između semafora 400m. REŠENJE #include <REG8253.H> //include file za 89S8253 //Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1 sbit S1_ZELENA=P0^0; sbit S1_ZUTA=P0^1; sbit S1_CRVENA=P0^2; sbit P1_ZELENA=P0^3; sbit P1_CRVENA=P0^4; sbit S2_ZELENA=P0^5;

Formatted: Bullets and Numbering

Page 46: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

45

sbit S2_ZUTA=P0^6; sbit S2_CRVENA=P0^7; sbit P2_ZELENA=P1^0; sbit P2_CRVENA=P1^1; sbit S3_ZELENA=P1^2; sbit S3_ZUTA=P1^3; sbit S3_CRVENA=P1^4; sbit P3_ZELENA=P1^5; sbit P3_CRVENA=P1^6; unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms unsigned char T01s_count=0; //brojac sekundi bit T01s_end; //bit koji pokazuje da je istekla 1s void StartUp(); //deklaracija funkcije //Interapt rutina tajmera 0, koja se izvrsava svakih 10ms void timer0_ISR (void) interrupt 1 { TF0=0; //brisanje flega timera 0 TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 T01s--; //umanjujemo T01s } void main(void) { CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus WDTCON=0x00; //iskljucicanje Watchdog tajmera TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 ET0 = 1; //dozvola interapta tajmera 0 TR0 = 1; //startovanja tajmera 0 EA = 1; //globalna dozvoja interapta T01s=0; //inicijalizacija promenjive T01s_count=0; //inicijalizacija promenjive StartUp(); //inicijalno postavljanje izlaza while (1) { //neprekidna petlja if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1; //ako jeste postvljamo marker na 1

Page 47: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

46

T01s=100; //ucitavamo novu vrednost za brojac } if(T01s_end){ //ako je istekla sekunda T01s_end=0; //brisemo marker T01s_count++; //uvecavamo brojac sekundi switch(T01s_count) //ispitujemo koja je trenutno sekunda { case 10: //10s, pale se na semaforima za pesake 1 i 3 P1_ZELENA=0; //zelena svetla P1_CRVENA=1; P3_ZELENA=0; P3_CRVENA=1; break; case 17: //17s, pali se na semaforu za pesake 2 crveno svetlo P2_ZELENA=1; P2_CRVENA=0; break; case 20: //20s, pali se na semaforima za pesake 1 i 3 crveno svetlo P1_ZELENA=1; P1_CRVENA=0; P3_ZELENA=1; P3_CRVENA=0; break; case 26: //26s, na semaforima 1 i 3 pali se i zuto, ocekuje se zeleno S1_ZUTA=0; //na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 puta S3_ZUTA=0; //blinkne kao obavestenje da ce da usledi promena na crveno S2_ZELENA=1; S2_ZUTA=0; break; case 27: //27s,zuto treperi S2_ZUTA=1; break; case 28: //28s,zuto treperi S2_ZUTA=0; break; case 29: //29s, na semaforima 1 i 3 pali se zeleno, na semaforu 2 crveno S1_CRVENA=1; S1_ZUTA=1; S1_ZELENA=0;

Page 48: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

47

S3_CRVENA=1; S3_ZUTA=1; S3_ZELENA=0; S2_CRVENA=0; S2_ZUTA=1; break; case 40: //40s, na semaforu za pesake 2 pali se zeleno P2_ZELENA=0; P2_CRVENA=1; break; case 50: //50s, na semaforu za pesake 2 pali se crveno P2_ZELENA=1; P2_CRVENA=0; break; //55s, na semaforima 2 pali se i zuto, ocekuje se zeleno case 55: //na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2 puta S1_ZELENA=1; //blinkne kao obavestenje da ce da usledi promena na crveno S1_ZUTA=0; S3_ZELENA=1; S3_ZUTA=0; S2_ZUTA=0; break; case 56: //56s,zuto treperi S1_ZUTA=1; S3_ZUTA=1; break; case 57: //57s,zuto treperi S1_ZUTA=0; S3_ZUTA=0; break; case 58: //58s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno S1_ZUTA=1; S1_CRVENA=0; S3_ZUTA=1; S3_CRVENA=0; S2_ZUTA=1; S2_CRVENA=1; S2_ZELENA=0; T01s_count=0; //resetujemo brojac sekundi na nulu, da bi ponovili ciklus break;

Page 49: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

48

default: break; } } } } //Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena, //semafor 3: upaljeno crveno, na pesackom - crvena void StartUp() { S1_CRVENA=0; P1_CRVENA=0; S2_ZELENA=0; P2_CRVENA=0; S3_CRVENA=0; P3_CRVENA=0; } PRIMER 2 Izmeniti postojeći program tako da pri prelasku sa zelenog na crveno svetlo za vozače zuto svetlo trepne tri puta pre nego što se upali crveno svetlo. REŠENJE #include <REG8253.H> //include file za 89S8253 //Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1 sbit S1_ZELENA=P0^0; sbit S1_ZUTA=P0^1; sbit S1_CRVENA=P0^2; sbit P1_ZELENA=P0^3; sbit P1_CRVENA=P0^4; sbit S2_ZELENA=P0^5; sbit S2_ZUTA=P0^6; sbit S2_CRVENA=P0^7; sbit P2_ZELENA=P1^0; sbit P2_CRVENA=P1^1; sbit S3_ZELENA=P1^2; sbit S3_ZUTA=P1^3; sbit S3_CRVENA=P1^4;

Page 50: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

49

sbit P3_ZELENA=P1^5; sbit P3_CRVENA=P1^6; unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms unsigned char T01s_count=0; //brojac sekundi bit T01s_end; //bit koji pokazuje da je istekla 1s void StartUp(); //deklaracija funkcije //Interapt rutina tajmera 0, koja se izvrsava svakih 10ms void timer0_ISR (void) interrupt 1 { TF0=0; //brisanje flega timera 0 TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 T01s--; //umanjujemo T01s } void main(void) { CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus WDTCON=0x00; //iskljucicanje Watchdog tajmera TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 ET0 = 1; //dozvola interapta tajmera 0 TR0 = 1; //startovanja tajmera 0 EA = 1; //globalna dozvoja interapta T01s=0; //inicijalizacija promenjive T01s_count=0; //inicijalizacija promenjive StartUp(); //inicijalno postavljanje izlaza while (1) { //neprekidna petlja if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1; //ako jeste postvljamo marker na 1 T01s=100; //ucitavamo novu vrednost za brojac } if(T01s_end){ //ako je istekla sekunda T01s_end=0; //brisemo marker T01s_count++; //uvecavamo brojac sekundi switch(T01s_count) //ispitujemo koja je trenutno sekunda {

Page 51: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

50

case 10: //10s, pale se na semaforima za pesake 1 i 3 P1_ZELENA=0; //zelena svetla P1_CRVENA=1; P3_ZELENA=0; P3_CRVENA=1; break; case 17: //17s, pali se na semaforu za pesake 2 crveno svetlo P2_ZELENA=1; P2_CRVENA=0; break; case 20: //20s, pali se na semaforima za pesake 1 i 3 crveno svetlo P1_ZELENA=1; P1_CRVENA=0; P3_ZELENA=1; P3_CRVENA=0; break; case 25: S2_ZUTA=O; //25s,na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 puta S2_ZELENA=1; //blinkne kao obavestenje da ce da usledi promena na crveno break; case 26: S2_ZUTA=1; case 27: //27s, na semaforima 1 i 3 pali se i zuto, ocekuje se zeleno S1_ZUTA=0; S3_ZUTA=0; S2_ZUTA=0; break; case 28: //28s,zuto treperi S2_ZUTA=1; break; case 29: //29s,zuto treperi S2_ZUTA=0; break; case 30: //30s, na semaforima 1 i 3 pali se zeleno, na semaforu 2 crveno S1_CRVENA=1; S1_ZUTA=1; S1_ZELENA=0; S3_CRVENA=1; S3_ZUTA=1;

Page 52: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

51

S3_ZELENA=0; S2_CRVENA=0; S2_ZUTA=1; break; case 40: //40s, na semaforu za pesake 2 pali se zeleno P2_ZELENA=0; P2_CRVENA=1; break; case 50: //50s, na semaforu za pesake 2 pali se crveno P2_ZELENA=1; P2_CRVENA=0; break; case 55: S1_ZELENA=1; //55s,na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2 puta S1_ZUTA=0; //blinkne kao obavestenje da ce da usledi promena na crveno S3_ZELENA=1; S3_ZUTA=0; break; case 56: S1_ZUTA=1; S2_ZUTA=1; break; //27s, na semaforima 2 pali se i zuto, ocekuje se zeleno case 57: S1_ZUTA=0; S3_ZUTA=0; S2_ZUTA=0; break; case 58: //58s,zuto treperi S1_ZUTA=1; S3_ZUTA=1; break; case 59: //59s,zuto treperi S1_ZUTA=0; S3_ZUTA=0; break; case 60: //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno S1_ZUTA=1; S1_CRVENA=0; S3_ZUTA=1; S3_CRVENA=0;

Page 53: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

52

S2_ZUTA=1; S2_CRVENA=1; S2_ZELENA=0; T01s_count=0; //resetujemo brojac sekundi na nulu, da bi ponovili ciklus break; default: break; } } } } //Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena, //semafor 3: upaljeno crveno, na pesackom - crvena void StartUp() { S1_CRVENA=0; P1_CRVENA=0; S2_ZELENA=0; P2_CRVENA=0; S3_CRVENA=0; P3_CRVENA=0; } PRIMER 3 Izmeniti postojeći program tako da vreme koje je potrebno pešacima da bezbedno pređu ulicu bude 6s,tj. da se creveno za pešake upali 6s pre nego što se upali zeleno svetlo za vozila i da se zeleno za pešake upali 6s posle nego što se upali crveno za vozila. REŠENJE #include <REG8253.H> //include file za 89S8253 //Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1 sbit S1_ZELENA=P0^0; sbit S1_ZUTA=P0^1; sbit S1_CRVENA=P0^2; sbit P1_ZELENA=P0^3; sbit P1_CRVENA=P0^4; sbit S2_ZELENA=P0^5; sbit S2_ZUTA=P0^6; sbit S2_CRVENA=P0^7; sbit P2_ZELENA=P1^0;

Page 54: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

53

sbit P2_CRVENA=P1^1; sbit S3_ZELENA=P1^2; sbit S3_ZUTA=P1^3; sbit S3_CRVENA=P1^4; sbit P3_ZELENA=P1^5; sbit P3_CRVENA=P1^6; unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms unsigned char T01s_count=0; //brojac sekundi bit T01s_end; //bit koji pokazuje da je istekla 1s void StartUp(); //deklaracija funkcije //Interapt rutina tajmera 0, koja se izvrsava svakih 10ms void timer0_ISR (void) interrupt 1 { TF0=0; //brisanje flega timera 0 TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 T01s--; //umanjujemo T01s } void main(void) { CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus WDTCON=0x00; //iskljucicanje Watchdog tajmera TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca TH0=0xB8; //postavljanje vrednosti registra T0 TL0=0x00; // da bi generisali 10ms, upisuje se 65536-18432=47104 ET0 = 1; //dozvola interapta tajmera 0 TR0 = 1; //startovanja tajmera 0 EA = 1; //globalna dozvoja interapta T01s=0; //inicijalizacija promenjive T01s_count=0; //inicijalizacija promenjive StartUp(); //inicijalno postavljanje izlaza while (1) { //neprekidna petlja if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1; //ako jeste postvljamo marker na 1 T01s=100; //ucitavamo novu vrednost za brojac } if(T01s_end){ //ako je istekla sekunda

Page 55: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

54

T01s_end=0; //brisemo marker T01s_count++; //uvecavamo brojac sekundi switch(T01s_count) //ispitujemo koja je trenutno sekunda { case 6: //6s, pale se na semaforima za pesake 1 i 3 P1_ZELENA=0; //zelena svetla P1_CRVENA=1; P3_ZELENA=0; P3_CRVENA=1; break; case 17: //17s, pali se na semaforu za pesake 2 crveno svetlo P2_ZELENA=1; P2_CRVENA=0; break; case 24: //24s, pali se na semaforima za pesake 1 i 3 crveno svetlo P1_ZELENA=1; P1_CRVENA=0; P3_ZELENA=1; P3_CRVENA=0; break; case 27: //27s, na semaforima 1 i 3 pali se i zuto, ocekuje se zeleno S1_ZUTA=0; //na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 puta S3_ZUTA=0; //blinkne kao obavestenje da ce da usledi promena na crveno S2_ZELENA=1; S2_ZUTA=0; break; case 28: //28s,zuto treperi S2_ZUTA=1; break; case 29: //29s,zuto treperi S2_ZUTA=0; break; case 30: //30s, na semaforima 1 i 3 pali se zeleno, na semaforu 2 crveno S1_CRVENA=1; S1_ZUTA=1; S1_ZELENA=0; S3_CRVENA=1; S3_ZUTA=1; S3_ZELENA=0;

Page 56: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

55

S2_CRVENA=0; S2_ZUTA=1; break; case 36: //36s, na semaforu za pesake 2 pali se zeleno P2_ZELENA=0; P2_CRVENA=1; break; case 54: //54s, na semaforu za pesake 2 pali se crveno P2_ZELENA=1; P2_CRVENA=0; break; //27s, na semaforima 2 pali se i zuto, ocekuje se zeleno case 57: //na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2 puta S1_ZELENA=1; //blinkne kao obavestenje da ce da usledi promena na crveno S1_ZUTA=0; S3_ZELENA=1; S3_ZUTA=0; S2_ZUTA=0; break; case 58: //58s,zuto treperi S1_ZUTA=1; S3_ZUTA=1; break; case 59: //59s,zuto treperi S1_ZUTA=0; S3_ZUTA=0; break; case 60: //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno S1_ZUTA=1; S1_CRVENA=0; S3_ZUTA=1; S3_CRVENA=0; S2_ZUTA=1; S2_CRVENA=1; S2_ZELENA=0; T01s_count=0; //resetujemo brojac sekundi na nulu, da bi ponovili ciklus break; default: break; }

Page 57: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

56

} } } //Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena, //semafor 3: upaljeno crveno, na pesackom - crvena void StartUp() { S1_CRVENA=0; P1_CRVENA=0; S2_ZELENA=0; P2_CRVENA=0; S3_CRVENA=0; P3_CRVENA=0; } LISTING ASEMBLERSKOG KODA GENERISANOG NA OSNOVU C KODA: C51 COMPILER V8.08 SEMAFOR 09/04/2007 18:30:41 PAGE 4 ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION timer0_ISR (BEGIN) ; SOURCE LINE # 24 ; SOURCE LINE # 26 0000 C28D CLR TF0 ; SOURCE LINE # 27 0002 758CB8 MOV TH0,#0B8H ; SOURCE LINE # 28 0005 758A00 MOV TL0,#00H ; SOURCE LINE # 29 0008 1500 R DEC T01s ; SOURCE LINE # 31 000A 32 RETI ; FUNCTION timer0_ISR (END) ; FUNCTION main (BEGIN)

Page 58: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

57

; SOURCE LINE # 32 ; SOURCE LINE # 33 ; SOURCE LINE # 34 0000 758F01 MOV CLKREG,#01H ; SOURCE LINE # 35 0003 E4 CLR A 0004 F5A7 MOV WDTCON,A ; SOURCE LINE # 36 0006 758901 MOV TMOD,#01H ; SOURCE LINE # 37 0009 758CB8 MOV TH0,#0B8H ; SOURCE LINE # 38 000C F58A MOV TL0,A ; SOURCE LINE # 39 000E D2A9 SETB ET0 ; SOURCE LINE # 40 0010 D28C SETB TR0 ; SOURCE LINE # 41 0012 D2AF SETB EA ; SOURCE LINE # 42 0014 F500 R MOV T01s,A ; SOURCE LINE # 43 0016 F500 R MOV T01s_count,A ; SOURCE LINE # 44 0018 120000 R LCALL StartUp 001B ?C0002: ; SOURCE LINE # 45 ; SOURCE LINE # 46 001B E500 R MOV A,T01s 001D 7005 JNZ ?C0004 ; SOURCE LINE # 47 001F D200 R SETB T01s_end ; SOURCE LINE # 48 0021 750064 R MOV T01s,#064H ; SOURCE LINE # 49 0024 ?C0004: ; SOURCE LINE # 50 0024 3000F4 R JNB T01s_end,?C0002 ; SOURCE LINE # 51 0027 C200 R CLR T01s_end ; SOURCE LINE # 52 0029 0500 R INC T01s_count ; SOURCE LINE # 53 002B E500 R MOV A,T01s_count

Page 59: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

58

C51 COMPILER V8.08 SEMAFOR 09/04/2007 18:30:41 PAGE 5 002D 120000 E LCALL ?C?CCASE 0030 0000 R DW ?C0007 0032 0A DB 0AH 0033 0000 R DW ?C0008 0035 11 DB 011H 0036 0000 R DW ?C0009 0038 14 DB 014H 0039 0000 R DW ?C0010 003B 1B DB 01BH 003C 0000 R DW ?C0011 003E 1C DB 01CH 003F 0000 R DW ?C0012 0041 1D DB 01DH 0042 0000 R DW ?C0013 0044 1E DB 01EH 0045 0000 R DW ?C0014 0047 28 DB 028H 0048 0000 R DW ?C0015 004A 32 DB 032H 004B 0000 R DW ?C0016 004D 39 DB 039H 004E 0000 R DW ?C0017 0050 3A DB 03AH 0051 0000 R DW ?C0018 0053 3B DB 03BH 0054 0000 R DW ?C0019 0056 3C DB 03CH 0057 0000 DW 00H 0059 0000 R DW ?C0002 ; SOURCE LINE # 54 ; SOURCE LINE # 55 005B ?C0007: ; SOURCE LINE # 56 005B C283 CLR P1_ZELENA ; SOURCE LINE # 57 005D D284 SETB P1_CRVENA ; SOURCE LINE # 58 005F C295 CLR P3_ZELENA ; SOURCE LINE # 59 0061 D296 SETB P3_CRVENA ; SOURCE LINE # 60 0063 80B6 SJMP ?C0002 ; SOURCE LINE # 61

Page 60: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

59

0065 ?C0008: ; SOURCE LINE # 62 ; SOURCE LINE # 63 ; SOURCE LINE # 64 0065 8034 SJMP ?C0023 ; SOURCE LINE # 65 0067 ?C0009: ; SOURCE LINE # 66 0067 D283 SETB P1_ZELENA ; SOURCE LINE # 67 0069 C284 CLR P1_CRVENA ; SOURCE LINE # 68 006B D295 SETB P3_ZELENA ; SOURCE LINE # 69 006D C296 CLR P3_CRVENA ; SOURCE LINE # 70 006F 80AA SJMP ?C0002 ; SOURCE LINE # 71 0071 ?C0010:

Page 61: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

60

C51 COMPILER V8.08 SEMAFOR 09/04/2007 18:30:41 PAGE 6 ; SOURCE LINE # 72 0071 C281 CLR S1_ZUTA ; SOURCE LINE # 73 0073 C293 CLR S3_ZUTA ; SOURCE LINE # 75 0075 D285 SETB S2_ZELENA ; SOURCE LINE # 76 0077 C286 CLR S2_ZUTA ; SOURCE LINE # 77 0079 80A0 SJMP ?C0002 ; SOURCE LINE # 78 007B ?C0011: ; SOURCE LINE # 79 007B D286 SETB S2_ZUTA ; SOURCE LINE # 80 007D 809C SJMP ?C0002 ; SOURCE LINE # 81 007F ?C0012: ; SOURCE LINE # 82 007F C286 CLR S2_ZUTA ; SOURCE LINE # 83 0081 8098 SJMP ?C0002 ; SOURCE LINE # 84 0083 ?C0013: ; SOURCE LINE # 85 0083 D282 SETB S1_CRVENA ; SOURCE LINE # 86 0085 D281 SETB S1_ZUTA ; SOURCE LINE # 87 0087 C280 CLR S1_ZELENA ; SOURCE LINE # 88 0089 D294 SETB S3_CRVENA ; SOURCE LINE # 89 008B D293 SETB S3_ZUTA ; SOURCE LINE # 90 008D C292 CLR S3_ZELENA ; SOURCE LINE # 92 008F C287 CLR S2_CRVENA ; SOURCE LINE # 93 0091 D286 SETB S2_ZUTA ; SOURCE LINE # 95 0093 8086 SJMP ?C0002 ; SOURCE LINE # 96

Page 62: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

61

0095 ?C0014: ; SOURCE LINE # 97 0095 C290 CLR P2_ZELENA ; SOURCE LINE # 98 0097 D291 SETB P2_CRVENA ; SOURCE LINE # 99 0099 8080 SJMP ?C0002 ; SOURCE LINE # 100 009B ?C0015: ; SOURCE LINE # 101 009B ?C0023: 009B D290 SETB P2_ZELENA ; SOURCE LINE # 102 009D C291 CLR P2_CRVENA ; SOURCE LINE # 103 009F 020000 R LJMP ?C0002 ; SOURCE LINE # 104 00A2 ?C0016: ; SOURCE LINE # 105

Page 63: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

62

C51 COMPILER V8.08 SEMAFOR 09/04/2007 18:30:41 PAGE 7 00A2 D280 SETB S1_ZELENA ; SOURCE LINE # 106 00A4 C281 CLR S1_ZUTA ; SOURCE LINE # 107 00A6 D292 SETB S3_ZELENA ; SOURCE LINE # 108 00A8 C293 CLR S3_ZUTA ; SOURCE LINE # 109 00AA C286 CLR S2_ZUTA ; SOURCE LINE # 110 00AC 020000 R LJMP ?C0002 ; SOURCE LINE # 111 00AF ?C0017: ; SOURCE LINE # 112 00AF D281 SETB S1_ZUTA ; SOURCE LINE # 113 00B1 D293 SETB S3_ZUTA ; SOURCE LINE # 114 00B3 020000 R LJMP ?C0002 ; SOURCE LINE # 115 00B6 ?C0018: ; SOURCE LINE # 116 00B6 C281 CLR S1_ZUTA ; SOURCE LINE # 117 00B8 C293 CLR S3_ZUTA ; SOURCE LINE # 118 00BA 020000 R LJMP ?C0002 ; SOURCE LINE # 119 00BD ?C0019: ; SOURCE LINE # 120 00BD D281 SETB S1_ZUTA ; SOURCE LINE # 121 00BF C282 CLR S1_CRVENA ; SOURCE LINE # 122 00C1 D293 SETB S3_ZUTA ; SOURCE LINE # 123 00C3 C294 CLR S3_CRVENA ; SOURCE LINE # 124 00C5 D286 SETB S2_ZUTA ; SOURCE LINE # 125 00C7 D287 SETB S2_CRVENA ; SOURCE LINE # 126 00C9 C285 CLR S2_ZELENA

Page 64: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

63

; SOURCE LINE # 127 00CB E4 CLR A 00CC F500 R MOV T01s_count,A ; SOURCE LINE # 128 00CE 020000 R LJMP ?C0002 ; FUNCTION main (END) ; FUNCTION StartUp (BEGIN) ; SOURCE LINE # 135 ; SOURCE LINE # 136 ; SOURCE LINE # 137 0000 C282 CLR S1_CRVENA ; SOURCE LINE # 138 0002 C284 CLR P1_CRVENA ; SOURCE LINE # 139 0004 C285 CLR S2_ZELENA ; SOURCE LINE # 140 0006 C291 CLR P2_CRVENA ; SOURCE LINE # 141

Page 65: Projektni zadatak:Realizacija semafora na bazi ...es.elfak.ni.ac.rs/Papers/Semafor-zelenitalas.pdf · Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša

Projektni zadatak:Realizacija semafora na bazi mikrokontrolera AT89S8253 Nebojša Pavlović 10312

64

C51 COMPILER V8.08 SEMAFOR 09/04/2007 18:30:41 PAGE 8 0008 C294 CLR S3_CRVENA ; SOURCE LINE # 142 000A C296 CLR P3_CRVENA ; SOURCE LINE # 143 000C 22 RET ; FUNCTION StartUp (END) MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 233 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 2 ---- IDATA SIZE = ---- ---- BIT SIZE = 1 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)