mikroprocesorski sistemi seminarski rad

18
MIKROPROCESORSKI SISTEMI MIKROPROCESORSKI SISTEMI SEMINARSKI RAD SEMINARSKI RAD REALIZACIJA SEMAFORA NA BAZI REALIZACIJA SEMAFORA NA BAZI MIKROKONTROLERA AT89S8253 MIKROKONTROLERA AT89S8253 Student Student :Nebojša Pavlović 10312 :Nebojša Pavlović 10312

Upload: morgan

Post on 12-Jan-2016

84 views

Category:

Documents


8 download

DESCRIPTION

MIKROPROCESORSKI SISTEMI SEMINARSKI RAD. REALIZACIJA SEMAFORA NA BAZI MIKROKONTROLERA AT89S8253 Student :Nebojša Pavlović 10312. UVOD. 1.Projektni zadatak 2.Razrada 3.Analiza i opis mikrokontrolera AT89S8253 4.Softver 5.Hardver 6.Lab. vežbe za studente. Projektni zadatak. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

MIKROPROCESORSKI SISTEMIMIKROPROCESORSKI SISTEMI

SEMINARSKI RADSEMINARSKI RAD

REALIZACIJA SEMAFORA NA BAZI REALIZACIJA SEMAFORA NA BAZI MIKROKONTROLERA AT89S8253MIKROKONTROLERA AT89S8253

StudentStudent:Nebojša Pavlović 10312:Nebojša Pavlović 10312

Page 2: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

UVODUVOD

1.Projektni zadatak1.Projektni zadatak

2.Razrada2.Razrada

3.Analiza i opis mikrokontrolera AT89S82533.Analiza i opis mikrokontrolera AT89S8253

4.Softver4.Softver

5.Hardver5.Hardver

6.Lab. vežbe za studente6.Lab. vežbe za studente

Page 3: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

Projektni zadatakProjektni zadatak

Realizovati mikroračunar,baziran na mikrokontroleru AT89S8253 tako da Realizovati mikroračunar,baziran na mikrokontroleru AT89S8253 tako da se mikroračunar koristi kao kontroler rada tri ulična semafora,koja rade 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.u režimu „zeleni talas“,semafori su raspoređeni kao na sl.1.

Page 4: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

RazradaRazrada

Kao početni primer uzet je primer gde se vozila kreću brzinom od 60km/h i gde je Kao početni primer uzet je primer gde se vozila kreću brzinom od 60km/h i gde je rastojanje između semafora 500m.To znači da je vozilu potrebno 30s da pređe rastojanje između semafora 500m.To znači da je vozilu potrebno 30s da pređe rastojanje od jednog do drugog semafora.rastojanje od jednog do drugog semafora.

Semafor za pešake je realizovan tako što se vodilo racuna da se crveno svetlo za Semafor za pešake je realizovan tako što se vodilo racuna da se crveno svetlo za pešakepešake

ne pali istog trenutka kada i zeleno za vozila,već posle izvesnog vremena kako bi ne pali istog trenutka kada i zeleno za vozila,već posle izvesnog vremena kako bi pešaci mogli bezbedno da pređu ulicu.pešaci mogli bezbedno da pređu ulicu.

Ka semaforima ide 15 ontrolnih linija od mikrokontrolera,proizvoljno je odlučeno da se Ka semaforima ide 15 ontrolnih linija od mikrokontrolera,proizvoljno je odlučeno da se za izlaze koriste portovi 0 i 1,i to svih osam pinova porta 0 i sedam pinova porta 1.za izlaze koriste portovi 0 i 1,i to svih osam pinova porta 0 i sedam pinova porta 1.

Pri normalnom radu semafora jedna tipična sekvenca stanja za jedan ciklus je Pri normalnom radu semafora jedna tipična sekvenca stanja za jedan ciklus je sledeća:sledeća:

1. upaljeno crveno za vozila i upaljeno zeleno za pešake1. upaljeno crveno za vozila i upaljeno zeleno za pešake

2. gasi se zeleno i pali crveno za pešake2. gasi se zeleno i pali crveno za pešake

3. pali se žuto dok još uvek svetli crveno na semaforu za vozila3. pali se žuto dok još uvek svetli crveno na semaforu za vozila

4. gase se crveno i žuto, pali se zeleno4. gase se crveno i žuto, pali se zeleno

5. gasi se zeleno, žuto blinkne 2 puta i pali se crveno za vozila5. gasi se zeleno, žuto blinkne 2 puta i pali se crveno za vozila

6. gasi se crveno i pali zeleno za pešake6. gasi se crveno i pali zeleno za pešake

Page 5: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

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

Page 6: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

Analiza i opis mikrokontrolera AT89S8253Analiza i opis mikrokontrolera AT89S8253

Detaljna struktura mikrokontrolera AT89S53Detaljna struktura mikrokontrolera AT89S53::

Page 7: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

Analiza i opis mikrokontrolera AT89S8253Analiza i opis mikrokontrolera AT89S8253

Opis pinovaOpis pinova::

Page 8: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftver

Za razvoj softvera korišćeno je razvojno okruzenje Keil Za razvoj softvera korišćeno je razvojno okruzenje Keil koje predstavlja najpopularniji alat za rad sa koje predstavlja najpopularniji alat za rad sa mikrokontrolerima familije 8051. Program je pisan u mikrokontrolerima familije 8051. Program je pisan u cistom C jeziku.cistom C jeziku.Softver za kontrolu rada semafora bazira se na merenju Softver za kontrolu rada semafora bazira se na merenju vremena i promeni stanja izlaza na portovima po isteku vremena i promeni stanja izlaza na portovima po isteku određenog vremena, shodno tabeli stanja. Kao osnovni određenog vremena, shodno tabeli stanja. Kao osnovni vremenski kvant koristi se vremenski period od 1s. Za vremenski kvant koristi se vremenski period od 1s. Za precizno generisanje vremenskog intervala koristimo precizno generisanje vremenskog intervala koristimo hardverskhardverskii tajmer mikrokontrolera. Ovaj period se tajmer mikrokontrolera. Ovaj period se generiše korišćenjem interapta tajmera Timer0, koji se generiše korišćenjem interapta tajmera Timer0, koji se javlja na 10ms i koristimo pomoćni softverski brojač koji javlja na 10ms i koristimo pomoćni softverski brojač koji je inicijalno postavljen na 100 i dekrementira se svakim je inicijalno postavljen na 100 i dekrementira se svakim ulaskom u interapt rutinu. ulaskom u interapt rutinu.

Page 9: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverTimer0 se inicijalno, a nakon toga i pri svakom ulasku u interapt rutinu Timer0 se inicijalno, a nakon toga i pri svakom ulasku u interapt rutinu postavlja na 0xB800 heksadecimalno, odnosno 47104 decimalno. Pri postavlja na 0xB800 heksadecimalno, odnosno 47104 decimalno. Pri korišćenoj frekvenciji kristala od 11.0592MHz, tajmer će se inkrementirati 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, 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 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 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 0 potrebno je upisati vrednost 65536-18432=47104. Vrednost se postavlja svaki put kada se interapt dogodi. U viši 8-bitni registar 16-bitnog registra svaki put kada se 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.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 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 fleg da je istekla jedna sekunda i T01s ponovo postavljamo na 100 da bi se postupak ponavljaopostupak ponavljao

if(!T01s){if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0)//ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1;T01s_end=1; //ako jeste postvljamo marker na 1//ako jeste postvljamo marker na 1 T01s=100;T01s=100; //ucitavamo novu vrednost za brojac//ucitavamo novu vrednost za brojac } }

Page 10: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverNaredna if petlja proverava i kada istekne sekunda uvećava softverski brojač T01s_count, i isto tako briše 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 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.na kontrolne signale, tj. palimo ili gasimo svetla na semaforu.

if(T01s_end){if(T01s_end){ //ako je istekla sekunda//ako je istekla sekunda

T01s_end=0; T01s_end=0; //brisemo marker//brisemo markerT01s_count++;T01s_count++; //uvecavamo brojac sekundi//uvecavamo brojac sekundi

switch(T01s_count)switch(T01s_count) //ispitujemo koja je trenutno sekunda//ispitujemo koja je trenutno sekunda{{

case 10:case 10: //10s, pale se na semaforima za pesake 1 i 3//10s, pale se na semaforima za pesake 1 i 3P1_ZELENA=0;P1_ZELENA=0; //zelena svetla//zelena svetlaP1_CRVENA=1;P1_CRVENA=1;P3_ZELENA=0;P3_ZELENA=0;P3_CRVENA=1;P3_CRVENA=1;break;break;......

Kada dostignemo 60-tu sekundu, nakon akcije resetuje se brojač sekundi na nulu, čime se proces 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.ponavlja sa periodom od 60s. Znači jedan ciklus prolaska semafora kroz gore navedena stanja traje 60s.

case 60:case 60: //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zeleno //60s, na semaforima 1 i 3 pali se crveno, na semaforu 2 zelenoS1_ZUTA=1;S1_ZUTA=1;S1_CRVENA=0;S1_CRVENA=0;S3_ZUTA=1;S3_ZUTA=1;S3_CRVENA=0;S3_CRVENA=0;S2_ZUTA=1;S2_ZUTA=1;S2_CRVENA=1;S2_CRVENA=1;S2_ZELENA=0;S2_ZELENA=0;T01s_count=0;T01s_count=0; //resetujemo brojac sekundi na nulu,da bi ponovili //resetujemo brojac sekundi na nulu,da bi ponovili

ciklusciklusbreak;break;

Page 11: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverVidimo da se na kraju inicijalizacije vrši pozivanje funkcije StartUp() Vidimo da se na kraju inicijalizacije vrši pozivanje funkcije StartUp() kojom se stanja na semaforu postavljaju u inicijalno stanje po kojom se stanja na semaforu postavljaju u inicijalno stanje po uključivanju uređaja:uključivanju uređaja:

//Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena,//Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena, //semafor 2: upaljeno zeleno, na pesackom - crvena,//semafor 2: upaljeno zeleno, na pesackom - crvena,//semafor 3: upaljeno crveno, na pesackom - crvena//semafor 3: upaljeno crveno, na pesackom - crvenavoid StartUp()void StartUp(){{

S1_CRVENA=0;S1_CRVENA=0;P1_CRVENA=0;P1_CRVENA=0;S2_ZELENA=0;S2_ZELENA=0;P2_CRVENA=0;P2_CRVENA=0;S3_CRVENA=0;S3_CRVENA=0;P3_CRVENA=0;P3_CRVENA=0;

}}

Page 12: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftver

NNa početku samog programa izvršena su podešavanja samog procesora:a početku samog programa izvršena su podešavanja samog procesora:void main(void)void main(void){{

CLKREG=0x01; CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan //postavljamo procesr u rezim X2, 6 takta za jedan ciklusciklusWDTCON=0x00;WDTCON=0x00; //iskljucicanje Watchdog tajmera//iskljucicanje Watchdog tajmeraTMOD=0X01;TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca//Timer 0 je postavlja u rezim 16-bitnog brojacaTH0=0xB8;TH0=0xB8; //postavljanje vrednosti registra T0//postavljanje vrednosti registra T0TL0=0x00;TL0=0x00; //da bi generisali 10ms, upisuje se 65536-18432=47104//da bi generisali 10ms, upisuje se 65536-18432=47104ET0 = 1; ET0 = 1; //dozvola interapta tajmera 0 //dozvola interapta tajmera 0 TR0 = 1; TR0 = 1; //startovanja tajmera 0//startovanja tajmera 0EA = 1; EA = 1; //globalna dozvoja interapta//globalna dozvoja interaptaT01s=0; T01s=0; //inicijalizacija promenjive//inicijalizacija promenjiveT01s_count=0; T01s_count=0; //inicijalizacija promenjive //inicijalizacija promenjive StartUp();StartUp(); //inicijalno postavljanje izlaza//inicijalno postavljanje izlaza

Page 13: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverKompletan listing koda u C-u:Kompletan listing koda u C-u:

#include <REG8253.H>#include <REG8253.H> //include file za 89S8253 //include file za 89S8253//Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1//Dodeljivanje imena LED diodama na odgovarajucim pinovima porta 0 i 1sbit S1_ZELENA=P0^0; sbit S1_ZELENA=P0^0; sbit S1_ZUTA=P0^1; sbit S1_ZUTA=P0^1; sbit S1_CRVENA=P0^2; sbit S1_CRVENA=P0^2; sbit P1_ZELENA=P0^3; sbit P1_ZELENA=P0^3; sbit P1_CRVENA=P0^4; sbit P1_CRVENA=P0^4; sbit S2_ZELENA=P0^5; sbit S2_ZELENA=P0^5; sbit S2_ZUTA=P0^6; sbit S2_ZUTA=P0^6; sbit S2_CRVENA=P0^7; sbit S2_CRVENA=P0^7; sbit P2_ZELENA=P1^0; sbit P2_ZELENA=P1^0; sbit P2_CRVENA=P1^1; sbit P2_CRVENA=P1^1; sbit S3_ZELENA=P1^2; sbit S3_ZELENA=P1^2; sbit S3_ZUTA=P1^3; sbit S3_ZUTA=P1^3; sbit S3_CRVENA=P1^4; sbit S3_CRVENA=P1^4; sbit P3_ZELENA=P1^5; sbit P3_ZELENA=P1^5; sbit P3_CRVENA=P1^6; sbit P3_CRVENA=P1^6; unsigned char T01s=100;unsigned char T01s=100; //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10ms //pom. promenjiva koja nam sluzi da generisemo 1s, 100*10msunsigned char T01s_count=0;unsigned char T01s_count=0; //brojac sekundi //brojac sekundibit T01s_end; bit T01s_end; //bit koji pokazuje da je istekla 1s //bit koji pokazuje da je istekla 1svoid StartUp();void StartUp(); //deklaracija funkcije//deklaracija funkcije//Interapt rutina tajmera 0, koja se izvrsava svakih 10ms//Interapt rutina tajmera 0, koja se izvrsava svakih 10msvoid timer0_ISR (void) interrupt 1void timer0_ISR (void) interrupt 1{{

TF0=0;TF0=0; //brisanje flega timera 0 //brisanje flega timera 0TH0=0xB8;TH0=0xB8; //postavljanje vrednosti registra T0 //postavljanje vrednosti registra T0TL0=0x00;TL0=0x00; // // da bi generisali 10ms, upisuje se 65536-18432=47104da bi generisali 10ms, upisuje se 65536-18432=47104T01s--;T01s--; //umanjujemo T01s //umanjujemo T01s

}}void main(void)void main(void){{

CLKREG=0x01; CLKREG=0x01; //postavljamo procesr u rezim X2, 6 takta za jedan ciklus//postavljamo procesr u rezim X2, 6 takta za jedan ciklusWDTCON=0x00;WDTCON=0x00; //iskljucicanje Watchdog tajmera//iskljucicanje Watchdog tajmeraTMOD=0X01;TMOD=0X01; //Timer 0 je postavlja u rezim 16-bitnog brojaca //Timer 0 je postavlja u rezim 16-bitnog brojacaTH0=0xB8;TH0=0xB8; //postavljanje vrednosti registra T0//postavljanje vrednosti registra T0TL0=0x00;TL0=0x00; //// da bi generisali 10ms, upisuje se 65536-18432=47104da bi generisali 10ms, upisuje se 65536-18432=47104

Page 14: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverET0 = 1; ET0 = 1; //dozvola interapta tajmera 0 //dozvola interapta tajmera 0

TR0 = 1; TR0 = 1; //startovanja tajmera 0//startovanja tajmera 0EA = 1; EA = 1; //globalna dozvoja interapta//globalna dozvoja interaptaT01s=0; T01s=0; //inicijalizacija promenjive //inicijalizacija promenjiveT01s_count=0; T01s_count=0; //inicijalizacija promenjive //inicijalizacija promenjive StartUp();StartUp(); //inicijalno postavljanje izlaza//inicijalno postavljanje izlaza

while (1) { while (1) { //neprekidna petlja//neprekidna petlja if(!T01s){if(!T01s){ //ispitujemo da li je istekla 1s (da li je T01s==0)//ispitujemo da li je istekla 1s (da li je T01s==0) T01s_end=1;T01s_end=1; //ako jeste postvljamo marker na 1//ako jeste postvljamo marker na 1 T01s=100;T01s=100; //ucitavamo novu vrednost za brojac//ucitavamo novu vrednost za brojac } } if(T01s_end){if(T01s_end){ //ako je istekla sekunda//ako je istekla sekunda T01s_end=0; T01s_end=0; //brisemo marker//brisemo marker

T01s_count++;T01s_count++; //uvecavamo brojac sekundi//uvecavamo brojac sekundiswitch(T01s_count)switch(T01s_count) //ispitujemo koja je trenutno sekunda//ispitujemo koja je trenutno sekunda{{

case 10:case 10: //10s, pale se na semaforima za pesake 1 i 3//10s, pale se na semaforima za pesake 1 i 3P1_ZELENA=0;P1_ZELENA=0; //zelena svetla//zelena svetlaP1_CRVENA=1;P1_CRVENA=1;P3_ZELENA=0;P3_ZELENA=0;P3_CRVENA=1;P3_CRVENA=1;break;break;case 17:case 17: //17s, pali se na semaforu za pesake 2 crveno //17s, pali se na semaforu za pesake 2 crveno

svetlosvetloP2_ZELENA=1;P2_ZELENA=1;P2_CRVENA=0;P2_CRVENA=0;break;break;case 20:case 20: //20s, pali se na semaforima za pesake 1 i 3 crveno svetlo //20s, pali se na semaforima za pesake 1 i 3 crveno svetloP1_ZELENA=1;P1_ZELENA=1;P1_CRVENA=0;P1_CRVENA=0;P3_ZELENA=1;P3_ZELENA=1;P3_CRVENA=0;P3_CRVENA=0;break;break;case 27:case 27: //27s, na semaforima 1 i 3 pali se i zuto, ocekuje se zeleno//27s, na semaforima 1 i 3 pali se i zuto, ocekuje se zelenoS1_ZUTA=0;S1_ZUTA=0; //na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 puta //na semaforu 2 pali se zuto, koje u naredne 3 sekunde 2 putaS3_ZUTA=0;S3_ZUTA=0; //blinkne kao obavestenje da ce da usledi promena na crveno //blinkne kao obavestenje da ce da usledi promena na crvenoS2_ZELENA=1;S2_ZELENA=1;S2_ZUTA=0;S2_ZUTA=0;break;break;case 28:case 28: //28s,zuto treperi //28s,zuto treperi

Page 15: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftverS2_ZUTA=1;S2_ZUTA=1;

break;break;case 29:case 29: //29s,zuto treperi //29s,zuto treperiS2_ZUTA=0;S2_ZUTA=0;break;break;case 30:case 30: //30s, na semaforima 1 i 3 pali se zeleno, na semaforu //30s, na semaforima 1 i 3 pali se zeleno, na semaforu

2crveno2crvenoS1_CRVENA=1;S1_CRVENA=1;S1_ZUTA=1;S1_ZUTA=1;S1_ZELENA=0;S1_ZELENA=0;S3_CRVENA=1;S3_CRVENA=1;S3_ZUTA=1;S3_ZUTA=1;S3_ZELENA=0;S3_ZELENA=0;S2_CRVENA=0;S2_CRVENA=0;S2_ZUTA=1;S2_ZUTA=1;break;break;case 40:case 40: //40s, na semaforu za pesake 2 pali se zeleno//40s, na semaforu za pesake 2 pali se zelenoP2_ZELENA=0;P2_ZELENA=0;P2_CRVENA=1;P2_CRVENA=1;break;break;case 50:case 50: //50s, na semaforu za pesake 2 pali se//50s, na semaforu za pesake 2 pali se crvenocrvenoP2_ZELENA=1;P2_ZELENA=1;P2_CRVENA=0;P2_CRVENA=0;break;break; //27s, na semaforima 2 pali se i zuto, ocekuje //27s, na semaforima 2 pali se i zuto, ocekuje

se zelenose zelenocase 57:case 57: //na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2 //na semaforu 1 i 3 pali se zuto, koje u naredne 3 sekunde 2

putaputaS1_ZELENA=1;S1_ZELENA=1; //blinkne kao obavestenje da ce //blinkne kao obavestenje da ce

da usledi promena na crvenoda usledi promena na crvenoS1_ZUTA=0;S1_ZUTA=0;S3_ZELENA=1;S3_ZELENA=1;S3_ZUTA=0;S3_ZUTA=0;S2_ZUTA=0;S2_ZUTA=0;break;break;case 58:case 58: //58s,zuto treperi//58s,zuto treperiS1_ZUTA=1;S1_ZUTA=1;S3_ZUTA=1;S3_ZUTA=1;break;break;

Page 16: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

SoftverSoftvercase 59:case 59: //59s,zuto treperi//59s,zuto treperi

S1_ZUTA=0;S1_ZUTA=0;S3_ZUTA=0;S3_ZUTA=0;break;break;case 60:case 60: //60s, na semaforima 1 i 3 pali se crveno, na //60s, na semaforima 1 i 3 pali se crveno, na

semaforu 2 zelenosemaforu 2 zelenoS1_ZUTA=1;S1_ZUTA=1;S1_CRVENA=0;S1_CRVENA=0;S3_ZUTA=1;S3_ZUTA=1;S3_CRVENA=0;S3_CRVENA=0;S2_ZUTA=1;S2_ZUTA=1;S2_CRVENA=1;S2_CRVENA=1;S2_ZELENA=0;S2_ZELENA=0;T01s_count=0;T01s_count=0; //resetujemo brojac sekundi na //resetujemo brojac sekundi na

nulu, da bi ponovili ciklusnulu, da bi ponovili ciklusbreak;break;default:default:break; break;

}} }}

}}}}//Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena,//Inicijalno: Semafor 1: upaljeno crveno, na pesackom - crvena,//semafor 2: upaljeno zeleno, na pesackom - crvena,//semafor 2: upaljeno zeleno, na pesackom - crvena,//semafor 3: upaljeno crveno, na pesackom - crvena//semafor 3: upaljeno crveno, na pesackom - crvenavoid StartUp()void StartUp(){{

S1_CRVENA=0;S1_CRVENA=0;P1_CRVENA=0;P1_CRVENA=0;S2_ZELENA=0;S2_ZELENA=0;P2_CRVENA=0;P2_CRVENA=0;S3_CRVENA=0;S3_CRVENA=0;P3_CRVENA=0;P3_CRVENA=0;

}}

Page 17: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

HardverHardverRad semafora prikazuju LED koje su smestene odvojeno na raster ploči 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 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. 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.Blok šema sistema na raster ploči prikazana je na slici 16.

CRVENA

Page 18: MIKROPROCESORSKI SISTEMI SEMINARSKI RAD

Lab.vežbe za studenteLab.vežbe za studente

PRIMER 1PRIMER 1Izmeniti postojeći program tako da vozilo koje se kreće Izmeniti postojeći program tako da vozilo koje se kreće

konstantnom brzinom od 50km/h,prođe na zeleno svetlo konstantnom brzinom od 50km/h,prođe na zeleno svetlo kroz sva tri semafora.Uzeti da je rastojanje između kroz sva tri semafora.Uzeti da je rastojanje između semafora 400m.semafora 400m. PRIMER 2PRIMER 2

Izmeniti postojeći program tako da pri prelasku sa zelenog Izmeniti postojeći program tako da pri prelasku sa zelenog na crveno svetlo za vozače zuto svetlo trepne tri puta na crveno svetlo za vozače zuto svetlo trepne tri puta pre nego što se upali crveno svetlo.pre nego što se upali crveno svetlo.PRIMER 3PRIMER 3

Izmeniti postojeći program tako da vreme koje je potrebno Izmeniti postojeći program tako da vreme koje je potrebno pešacima da bezbedno pređu ulicu bude 6s,tj. da se pešacima da bezbedno pređu ulicu bude 6s,tj. da se creveno za pešake upali 6s pre nego što se upali zeleno 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 svetlo za vozila i da se zeleno za pešake upali 6s posle nego što se upali crveno za vozila.nego što se upali crveno za vozila.