svetlobna signalizacija svetlobno signalizacijo predstavlja rutina semluci ki jo klicemo iz urnika v operacijskem sistemu perioda semaforja je razdeljena na razlicno dolgih korakov vendar pa se ti koraki ponavljajo predvsem pri utripih tako da se priziga le razlicnih kombinacij luci v nasem primeru je bilo uporabljenih kombinacij vendar le zaradi tega ker ima ena kombinacija razlicna zvocna signala ki se mu rezim nastavlja znotraj rutine za svetlobno signalizacijo tukaj bi lahko tudi omenili da se zaradi narave operacijskega sistema rutina ki je vpisana v urnik izvede krat v sekundi najkrajsi korak oziroma najkrajsi utrip luci pa je sekunde in je zato koristno upostevati le vsak korak ostale pa izpustiti tako je trajanje ene enote doloceno na sekunde pravilnostana tabela delovanja semaforja korak or pze rd ze prd trajanje rd ze prd or pze pisk skok vendar pa sami biti pia niso razporejeni v tem vrstnem redu ampak takole port a or ze peze perd or ze peze perd pa pa pa pa pa pa pa pa port b rd rd pisk pb pb pb pb pb pb pb pb mogoce se ta razpored zdi nekoliko nelogicen vendar pa se pri kombinaciji rdecih luci stanje spremeni le trikrat in je zaradi tega potrebno bite maskirati le trikrat sedaj pa si lahko pogledamo samo delovanje semaforja bolj natancno kot smo ze zgoraj omenili je na zacetku funkcija ki uposteva le vsak korak izgleda pa takole semluci inc ura pol ldaa ura pol cmpa beq zacni rts zacni ldaa staa ura pol spremenljivka ura per predstavlja stevec ciklov zgornji del programa povecuje ta stevec in zakljuci rutino z rts razen takrat ko le ta doseze vrednost in ga resetira ter zacne izvajati program preklopov beq luc reset rts luc ldaa staa dpra ldaa dprb oraa staa dprb ldaa staa pisk izb rts luc ldaa staa dpra rts luc reset ldaa staa ura per rts podobno vlogo kot jo ima spremenljivka ura pol ima v tem delu ura per in predstavlja trenutni polozaj stanja in se povecuje sledi usmerjevalnik ki je izveden z odstevanjem v primeru da je rezultat odstevanja pomeni da je ura prisla v polozaj ko se mora stanje luci na semaforju spremeniti program skoci na del opravila kjer se nastavi kombinacija luci in zakljuci opravilo razlika se pojavi le v zadnjem skoku kjer se stevec resetira in bo naslednji preklop ze v novi periodi v primeru ko pa rezultat odstevanja ne da nikoli rezultata pa pomeni da se ni cas za naslednji preklop opravilo se prav tako zakljuci kombinacijo luci nastavimo tako da na naslov porta pia e a in b pdra ali pdrb postavimo ustrezne bite ce zelimo da luc ne sveti postavimo ustrezen bit na sicer pa na vrstni red bitov ustreza zgornji tabeli upostevati pa moramo da je vrstni red razporejen iz desne proti levi kadar uporabljamo port b moramo spremeniti le tiste bite kateri krmilijo luci pb in pb ostale pa moramo pustiti nespremenjene sicer motimo delovanje piskaca ki je prikljucen na pb tezava pa se pojavi ker je skok beq omejen le na strojnih ciklov to je reseno tako da je napisan le del usmerjevalnika do sedme kombinacije nato je napisanih teh sedem preklopov zatem pa sledi se drugi del usmerjevalnika ter ostali preklopi tako ni noben skok daljsi od strojnih ciklov nekateri preklopi imajo izvedeno se nastavljanje spremenljivke pisk izb ki pa doloci kaksen naj bo zvocni signal rdeca zelena zelena utripajoca ce zelimo spremeniti dolzino trajanja dolocene kombinacije luci pa le ustrezno spremenimo vrednost odstevanja v usmerjevalniku za podaljsanje casa zvecamo vrednost odstevanja za skrajsanje pa zmanjsamo enota je dolga sekunde zaradi te spremembe se podaljsa ali skrajsa trajanje celotne periode inicializacija pia e je dokaj enostavna saj je potrebno najprej tretji bit porta cra in crb nastaviti na tako da aktiviramo nastavljanje kateri bit na pia i bo vhodni in kateri bit bo izhodni vendar pa si velja zapomniti da moramo naslavljati le tretji bit ostale pa pustiti nespremenjene tako moramo ostale bite maskirati ko le te nastavimo v nasem primeru so vsi izhodni zopet vrnemo cra in crb na prvotno vrednost in pia je pripravljena za uporabo prav tako pa je potrebno inicializirati vse spremenljivke ko pa so inicializirane pa jih moramo nastaviti na zacetno stanje v nasem primeru so vse postavljene na