Programiranje na asemblerskom jeziku za početnike sa primjerima programa. Kratke karakteristike uređaja

Zdravo!
Želim pokazati kako napisati program za kontrolu tehnološke opreme na PLC-u.
Najčešće sam se bavio PLC-ovima kompanije Schneider Electric. Quantum koji sam izabrao za ovaj zadatak je najmoćniji i najskuplji PLC ovog proizvođača. Može da kontroliše opremu sa hiljadama signala, za semafore pravi zivot Naravno, niko ga neće koristiti.

Nikada se nisam bavio automatizacijom semafora, pa sam sam smislio algoritam. evo ga:
1. Semafor za kontrolirani pješački prelaz. One. semafor za automobile, semafor za pješake i dugme za pješake, pritiskom na koje pješak obavještava da želi preći cestu.
2. Nakon što program počne, svijetli zeleno za automobile i crveno za pješake.
3. Nakon što pješak pritisne dugme, zeleno za automobile počinje da treperi, zatim žuto svetli, pa crveno. Nakon toga, za pješake se pali zeleno svjetlo određeno vrijeme počinje da treperi, crveno svetli za pešake, zatim žuto i crveno za automobile, pa zeleno.
4. Tokom određenog vremenskog perioda nakon što se pješački semafor upali zeleno, pritiskom na dugme od strane pješaka ne pokreće se algoritam tranzicije. U ovom slučaju, algoritam tranzicije se pokreće tek nakon što istekne navedeno vrijeme.
Programiranje PLC-a se izvodi u programskom okruženju Unity na jezicima standarda IEC 61131-3. Ovaj standard uključuje 5 jezika. Na primjer, izabrao sam jezik funkcijskog bloka - FBD.
Evo preglednika projekta u Unityju:

Konfigurisanje PLC-a:


PLC se sastoji od montažne ploče, napajanja (1), kontrolera (2), diskretnog ulaznog modula za 32 24V DC signala (4), diskretnog ulaznog modula za 32 24V DC signala (5). U stvarnom projektu može postojati desetine montažnih panela povezanih na jedan kontroler preko različitih mreža i stotine I/O modula.
U editoru varijabli kreiramo varijable potrebnih tipova:


Varijable vezane za kanale I/O modula imaju adresu koja pokazuje na koju korpu, modul i kanal je signal vezan.
Program se sastoji od sekcija koje se izvršavaju svaki ciklus skeniranja kontrolera po redu.
Pojednostavljeni ciklus skeniranja kontrolera izgleda ovako:
1. Čitanje ulaznih signala sa ulaznog modula u varijable s adresama.
2. Izvođenje sekcija.
3. Upisivanje vrijednosti iz varijabli sa adresama u izlazne signale izlaznih modula.
4. Idite na korak 1.
Kreirajte sekciju Sat sa generatorom impulsa sa periodom od 0,5 sekundi. Kada se ulazni signal promijeni od 0 do 1, TP blok proizvodi impuls zadanog trajanja na izlazu.


Ovdje i ispod, snimci ekrana sekcija su prikazani u načinu animacije, a ne u načinu uređivanja. Oni prikazuju vrijednosti varijabli u trenutnom trenutku kada su povezani na PLC sa učitanim programom (brojevi za numeričke varijable, boja zelena (1)-crvena (0) za Boolean).
Glavni odjeljak obrađuje glavnu logiku.
SR blok postavlja izlaz na 1 kada je S1=1 i resetuje izlaz na 0 kada je R=1.
Blok R_TRIG postavlja izlaz za 1 ciklus skeniranja na 1 kada ulaz prelazi sa 0 na 1 (detektor rastuće ivice).
F_TRIG blok postavlja izlaz za 1 ciklus skeniranja na 1 kada ulaz prelazi sa 1 na 0 (detektor padajućeg ruba).
Varijabla inButton vezana za kanal gumba zamijenjena je u sekciji sa inButtonForTest tako da se njena vrijednost može promijeniti na simulatoru kontrolera bez stvarnog hardvera.


Odjeljak Izlazi generiše izlazne signale za upravljanje semaforima.


Učitajte projekat u simulator kontrolera:


Vrijednost bilo koje varijable može se vidjeti u tabeli animacije:


Ali radi lakšeg otklanjanja grešaka, možete napraviti ekran operatera sa jednostavnom grafikom, čija je animacija vezana za varijable:

Pokušajmo preći cestu:

Nisam očekivao da će biti potrebno 30 blokova za kontrolu tako jednostavnog objekta kao što je semafor.
U sljedećem članku ću vam pokazati kako pisati ovaj program, koristeći sve jezike standarda IEC 61131-3 istovremeno.

UPD. Ispravljena greška u nazivu standarda.

(Oblici), (Panel).

Prije kreiranja aplikacije, trebali biste pregledati opis novih komponenti.

Vježbajte. Simulirajte rad semafora. Prilikom pokretanja projekta, semafor bi trebao biti prazan. Nakon pritiska na dugme Start, sijalice semafora počinju da se menjaju. Nakon pritiska na dugme Stop, semafor je ponovo prazan. Koristite tajmer kako biste osigurali da se svjetlo na semaforu mijenja u redovnim intervalima. U polje Brzina unesite interval tajmera.

Napredak projekta

1. Kreirajte novi projekat. Sačuvajte ga u zasebnom folderu, nazovite ga "Semafor".

2. Postavite na formu panel (TPanel) sa tri oblika (TShape), dva dugmeta (TButton), polje za tekst (TEdit), natpis (TLabel), tajmer (TTimer) u skladu sa primerom:

Trebalo bi izgledati ovako:

2. Radimo dizajn:

Postavite ove vrijednosti svojstava u Object Inspector:

Komponenta Nekretnina Značenje
Form1 Caption Semafor
Panel1 Caption *Prazno*
Shape1 Oblik stCircle
Shape2 Oblik stCircle
Shape3 Oblik stCircle
Label1 Caption Brzina
Uredi 1 Tekst *prazno*
Button1 Caption Počni
Button2 Caption Stani

3. Kreirajte događaj za Form1 u odjeljku OnCreate – kliknite na trotočku

Kreirajte događaj za Timer1 u odjeljku OnTimer – kliknite na trotočku

4. Postavite boje za oblike:

završni rad:

5. Dok se obrazac učitava, tajmer je onemogućen i oblici na ploči postaju nevidljivi.

Kreirajte rukovatelj za događaj FormCreate (dvaput kliknite na komponentu Form1) i zalijepite ovaj kod:

var k:integer; procedura TForm1.FormCreate(Pošiljalac: TObject); započeti Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; kraj;

6. Da biste prebacili sijalice na semaforu, upišite programski kod u obrađivač događaja Timer1Timer. Ovaj kod će se izvršavati u intervalu koji korisnik unese u polje Brzina. Na osnovu očitavanja tajmera određuje se broj sijalice koja treba da se upali u ovom trenutku.

Dvaput kliknite na komponentu Timer1 i zalijepite ovaj kod:

6. Napišite programski kod za dugme Start. Klikom na dugme iz polja Brzina očitava se interval za tajmer, resetuje se očitavanje tajmera i tajmer se uključuje.

Dvaput kliknite na komponentu Button1 i zalijepite kod:

procedura TForm1.Button1Click(Pošiljalac: TObject); započeti Timer1.Interval:=StrToInt(Edit1.text); k:=0; Timer1.Enabled:=true; kraj;

7. Napišite programski kod za dugme Stop. Nakon klika na dugme, tajmer bi se trebao isključiti i sijalice semafora će ponovo postati nevidljive.

Dvaput kliknite na komponentu Button2 i zalijepite kod:

procedura TForm1.Button2Click(Pošiljalac: TObject); započeti Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; kraj;

8. Pokrenite projekat. U polje Brzina unesite broj 1000 (1000 ms=1s). Semafori će se početi uključivati ​​u intervalima od jedne sekunde.

Artem Poznyak, učenik 10. razreda srednje škole br. 23, Ekibasbuz

Pošaljite svoj dobar rad u bazu znanja je jednostavno. Koristite obrazac ispod

Studenti, postdiplomci, mladi naučnici koji koriste bazu znanja u svom studiranju i radu biće vam veoma zahvalni.

Objavljeno na http:// www. allbest. ru/

FEDERALNA AGENCIJA ZA OBRAZOVANJE RF

Državna obrazovna ustanova srednjeg stručnog obrazovanja

Ufa fakultet za statistiku, informatiku i računarstvo

Pobjašnjenje

SEMAFOR BAZIRAN NA MIKROCONTROLERU

Abdrakhimov A.R.

Projekt menadžer

Michurin E.A.

UVOD

1. OPIS RELEVANTNOSTI ZADATAKA I OBIM PRIMJENE

1.1 Semafori

1.2 Vrste semafora

1.3 Dizajn semafora

2. ISTRAŽIVANJE, PROJEKTIRANJE I RAZVOJ KRUGOVA

2.1 Pregled karakteristika mikrokontrolera ATtiny25V

ZAKLJUČAK

SPISAK KORIŠTENE REFERENCE I PROPISA I TEHNIČKE DOKUMENTACIJE

APLIKACIJE

UVOD

Promocija tehnički nivo a efikasnost elektronske opreme zasnovane na najnovijim dostignućima u elektronici jedan je od najvažnijih zadataka u razvoju društva. Stvaranje mikroprocesora je vođeno napretkom u tehnologiji velikih integrisanih kola (LSI). Nakon pojave mikroprocesora razvija se i naširoko razvija specijalna multifunkcionalna oprema koja se koristi u rješavanju velikog broja problema moderne tehnologije. Mikroprocesori vam omogućavaju da kreirate na jednoj bazi tehnološkog kola kroz programiranje Razne vrste uređaja. Tako sam u svom radu odlučio da implementiram uređaj baziran na mikroprocesoru. Za mikrokontroler je odabran AVR (ATtiny25V).

U ovom predmetnom radu razvijen je uređaj na mikrokontroleru i napisan program. Ovaj uređaj je semafor baziran na mikrokontroleru.

Prilikom izrade ovog nastavnog rada postavljeni su sljedeći zadaci:

1) Razmislite, dizajnirajte i testirajte u praksi uređaj na bazi mikrokontrolera;

2) napisati i kompajlirati program za mikrokontroler

3) razmotriti programiranje mikrokontrolera.

1 . OPIS RELEVANTNOSTI ZADATKA I OBIM PRIMJENE

U ovom predmetnom radu, na bazi mikrokontrolera ATtiny25V, projektovan je i implementiran uređaj - semafor na bazi mikrokontrolera.

Brzi proces motorizacije svake godine pokriva sve veći broj zemalja, vozni park i broj ljudi uključenih u drumski saobraćaj se stalno povećava. Rast voznog parka i obima saobraćaja dovodi do povećanja intenziteta saobraćaja, što u uslovima gradova sa istorijski razvijenom građevinom dovodi do pojave transportnog problema. Posebno je akutan na čvorištima putne mreže. Ovdje se povećavaju kašnjenja u transportu, stvaraju se redovi i zagušenja, što uzrokuje smanjenje brzine komunikacije, neopravdanu prekomjernu potrošnju goriva i povećano habanje komponenti i sklopova vozila.

Promjenjivi obrasci saobraćaja, česta zaustavljanja i gomilanje automobila na raskrsnicama razlozi su povećanog zagađenja gradskog vazdušnog basena produktima nepotpunog sagorevanja goriva. Gradsko stanovništvo je stalno izloženo saobraćajnoj buci i izduvnim gasovima.

Istovremeno, raste broj saobraćajnih nesreća (RTA) u kojima su milioni ljudi širom svijeta poginuli i povrijeđeni, skupa oprema i teret su oštećeni i oštećeni. Preko 60% svih saobraćajnih nesreća dešava se u gradovima i drugim naseljenim mestima. Istovremeno, više od 30% svih saobraćajnih nesreća je koncentrisano na raskrsnicama koje zauzimaju mali deo teritorije grada.

Osiguravanje brzog i sigurnog saobraćaja u savremenim gradovima zahtijeva primjenu skupa arhitektonskih, planskih i organizacionih mjera. Arhitektonsko-planske aktivnosti obuhvataju izgradnju novih i rekonstrukciju postojećih ulica, izgradnju saobraćajnih raskrsnica na različitim nivoima, pješačkih tunela, obilaznih puteva oko gradova radi preusmjeravanja tranzitnih saobraćajnih tokova itd.

Organizacione mjere pomažu u racionalizaciji saobraćaja na već postojećoj (uspostavljenoj) uličnoj i putnoj mreži. Takve mjere uključuju uvođenje jednosmjernog saobraćaja, kružnih tokova na raskrsnicama, uređenje pješačkih prelaza i pješačkih zona, parkirališta, stajališta javnog prevoza itd.

Dok organizacija arhitektonsko-planskih događaja zahteva, pored značajnih kapitalnih ulaganja, i prilično veliki vremenski period, organizacioni događaji mogu dovesti do privremenog, ali relativno brzog efekta. u nekim slučajevima organizacione mjere djeluju kao jedino sredstvo za rješavanje transportnog problema.

Radi se o organizovanju saobraćaja u istorijski uspostavljenim naseljima starih gradova, koji su često spomenici arhitekture i ne mogu se rekonstruisati. Osim toga, razvoj putne mreže često je povezan sa eliminacijom zelenih površina, što nije uvijek preporučljivo.

Prilikom sprovođenja mjera za organizovanje saobraćaja, posebna uloga pripada implementaciji tehnička sredstva: putokazi i oznake na putu, semafori, putne barijere i uređaji za vođenje. Istovremeno, semaforska regulacija je jedno od glavnih sredstava za osiguranje bezbjednosti saobraćaja na raskrsnicama. Broj raskrsnica opremljenih semaforima u najvećim svjetskim gradovima visoki nivo motorizacija se kontinuirano povećava iu nekim slučajevima dostiže omjer: jedan semafor na 1,5-2 hiljade stanovnika grada.

Poslednjih godina intenzivno se radi u našoj zemlji i inostranstvu na stvaranju kompleksa automatizovani sistemi korištenjem upravljačkih računara, automatike, telemehanike, dispečerskih komunikacija i televizije za kontrolu prometa na velikom području ili čitavom gradu. Iskustvo rada ovakvih sistema uvjerljivo pokazuje njihovu efikasnost u rješavanju problema transporta.

1.1 Semafori

Značenje i alternacija signala.

Semafori su dizajnirani da naizmjenično omoguće prolazak učesnika u saobraćaju kroz određenu dionicu putne mreže, kao i da ukažu na opasne dionice puteva. U zavisnosti od uslova, semafori se koriste za kontrolu saobraćaja u određenim pravcima ili duž odvojenih traka u datom pravcu:

na mjestima gdje postoje suprotstavljeni saobraćajni tokovi, kao i saobraćajni i pješački tokovi (raskrsnice, pješački prelazi);

· u trakama u kojima se smjer kretanja može promijeniti u suprotan;

· na željezničkim prelazima, pokretnim mostovima, molovima, trajektima, prelazima;

· kada vozila specijalnih službi voze na puteve sa gustim saobraćajem;

· da kontroliše kretanje javnih vozila.

Redoslijed izmjene signala, njihova vrsta i značenje, usvojeni u Rusiji, u skladu su s međunarodnom konvencijom o putnim znakovima i signalima. Signali se smenjuju u sledećem redosledu: crveno - crveno sa žuto - zeleno - žuto - crveno...

U nedostatku dodatne dionice, crveni netrepćući signal zabranjuje kretanje cijelom širinom kolovoza. Preostale vrste crvenog signala imaju posebnu svrhu:

· zaobljena crna strelica na okrugloj crvenoj pozadini zabranjuje kretanje u smjeru koji pokazuje strelica;

· kosi crveni krst na crnoj kvadratnoj pozadini

· zabranjuje ulazak u saobraćajnu traku iznad koje se nalazi;

· crvena silueta osobe koja stoji zabranjuje kretanje pješaka;

· crveni trepćući signal ili dva crvena naizmjenično trepćuća signala zabranjuju vožnju do željezničkog prijelaza, pokretnog mosta, trajektnog pristaništa i drugih mjesta koja predstavljaju posebnu opasnost za saobraćaj.

· Žuti netrepćući signal obavezuje sve vozače da se zaustave ispred zaustavne linije, izuzev onih koji više nisu mogli da se zaustave uzimajući u obzir uslove bezbednosti saobraćaja. Žuti signal povezan sa crvenim signalom upozorava da će se zeleni signal odmah uključiti. Žuti trepćući signal ne zabranjuje saobraćaj i koristi se za označavanje raskrsnica koje vozači možda neće moći vidjeti na udaljenosti dovoljnoj da zaustavi vozilo.

· Zeleni netrepćući signal, u nedostatku ikakvih dodatnih ograničenja, kao i dodatni dio semafora, omogućava kretanje cijelom širinom kolovoza u svim smjerovima. Zeleni trepćući signal označava kraj ciklusa omogućavanja.

Vrste zelenog signala i njihova namjena su sljedeće:

· konturna crna strelica na zelenoj pozadini okruglog oblika, kao i zelena strelica na crnoj pozadini okruglog oblika - omogućavaju kretanje u pravcu strelice;

· zelena strelica, usmjerena prema dolje na crnoj kvadratnoj pozadini, omogućava kretanje trakom iznad koje se nalazi semafor;

· signal u obliku zelene siluete osobe koja hoda omogućava kretanje pješaka.

· Zelena strelica dodatnog semafora omogućava kretanje u smjeru označenom strelicom, bez obzira na signal glavnog semafora. Istovremeno, crveni signal glavnog semafora uskraćuje vozače koji se kreću u smjeru upaljene zelene strelice dodatne dionice s desne strane. Dionica koja je isključena zabranjuje kretanje u smjeru strelice ove dionice čak i kada je uključen zeleni signal glavnog semafora.

Dozvoljeni smjer kretanja vozila ovisi o kombinaciji uključenih signala gornjih i donjih redova posebnog semafora (ako se koristi). Kada je donji signal isključen, kretanje je zabranjeno u svim smjerovima.

1.2 Vrste semafora

Semafori se mogu klasifikovati prema funkcionalnoj namjeni (transportni, pješački); By dizajn(jedno-, dvo- ili trodelni, trodelni sa dodatnim sekcijama); prema ulozi koju obavljaju u procesu kontrole kretanja (glavni, rezervni i repetitori).

U Prilogu 1 prikazani su neki semafori koji se koriste u našoj zemlji za kontrolu saobraćaja. U skladu sa GOST 25695-83 "Smafori na putu. Opšti tehnički uslovi" podijeljeni su u dvije grupe: transportni i pješački. Semafori svake grupe, zauzvrat, podijeljeni su na vrste i verzije. Postoji sedam vrsta semafora i dvije vrste pješačkih. Svaki semafor ima svoj broj. Prva cifra broja označava grupu (1 - transportni semafor, 2 - pješački), druga cifra - tip semafora, treća cifra (ili broj) - vrstu njegovog dizajna.

Transportni semafori tipa 1 (isključujući signale dodatnih sekcija) i tipa 2 imaju tri okrugla signala prečnika 200 ili 300 mm, postavljena okomito. Izuzetno, za semafore tipa 1 dozvoljeno je horizontalno postavljanje signalizacije. Redoslijed rasporeda odozgo prema dolje (slijeva na desno): crvena, žuta, zelena.

Dodatne sekcije se koriste samo sa semaforima tipa 1 sa vertikalnom signalizacijom i imaju signal u obliku strelice na crnoj okrugloj pozadini.

Radi boljeg prepoznavanja od strane vozača dodatnog dijela (posebno u mraku), konture strelica se nanose na sočivo glavnog zelenog semafora, pokazujući smjerove kretanja dozvoljene ovim signalom. U istu svrhu, ako postoje dodatne sekcije, semafor je opremljen bijelim pravokutnim ekranom koji strši izvan dimenzija semafora. Položaj sekcija ovisi o smjeru strelice.

Za transportne semafore tipa 2, konture strelica koje pokazuju dozvoljeni (zabranjeni) smjer kretanja primjenjuju se na svim sočivima. Štaviše, za razliku od crvenog i žutog signala, zeleni signal ovog tipa semafora je zelena strelica na crnoj pozadini. Ispod ili iznad semafora nalaze se bijeli znakovi sa slikama strelica koje pokazuju u istom smjeru kao i obrisi strelica na sočivima.

Semafori tipa 1 služe za regulisanje svih pravaca saobraćaja na raskrsnici. Njihova upotreba je dozvoljena i ispred željezničkih prelaza, raskrsnica sa tramvajskim i trolejbuskim linijama, sužavanja kolovoza i dr. Semafori tipa 2 se koriste za regulisanje saobraćaja u određenim pravcima (označeni na sočivima strelicama) i to samo u slučajevima kada tok saobraćaja u ovim pravcima nema raskrsnice ili spajanja sa drugim transportnim ili pješačkim tokovima (regulacija bez sukoba). Ukoliko je kolovoz dovoljno širok i ima više od četiri trake na prilazu raskrsnici, preporučljivo je koristiti semafore ovog tipa za regulisanje saobraćaja duž traka.

Specifična upotreba semafora tipa 2, povezana sa beskonfliktnom regulacijom, ne dozvoljava njihovo zajedničko postavljanje sa semaforima tipa 1 na istom prilazu raskrsnici. Izuzetak je kada su saobraćajni tokovi odvojeni jedan od drugog uzdignutim ostrvima ili srednjim trakama. Dakle, na istom kolovozu, vozač treba da vidi semafore istog tipa.

Transportni semafori tipa 3 koriste se kao repetitori signala semafora tipa 1. Po svom izgledu podsećaju na semafore ovog tipa, ali za razliku od njih imaju manje gabarite i prečnike signala od 100 mm. Ako glavni semafor (tip 1) ima dodatni dio, tada je i semafor s repetitorom opremljen dodatnim dijelom prirodno smanjene veličine.

Semafori tipa 3 postavljaju se ispod glavnog semafora na visini od 1,5-2 m od kolovoza, ako je vidljivost glavne semaforske signalizacije otežana za vozača zaustavljenog na zaustavnoj liniji. Semafori ovog tipa mogu se koristiti i za kontrolu biciklističkog saobraćaja na raskrsnicama između ceste i biciklističke staze. U ovom slučaju iznad njih se postavlja bijela ploča sa slikom simbola bicikla.

Semafori tipa 4 koriste se za kontrolu ulaza u pojedinačne trake. Ova potreba se javlja, na primjer, kada se organizira kretanje unazad. Semafori ovog tipa postavljeni su iznad svake trake na njenom početku. Imaju horizontalni raspored signala: lijevo - u obliku kosog crvenog križa; desno - u obliku zelene strelice usmjerene prema dolje. Oba signala se izvode na crnoj pravokutnoj pozadini. Ukupne dimenzije svakog simbola su 450-500 mm.

Semafori tipa 4 mogu se koristiti sa semaforima tipa 1 ako nije organizovan usmjerni saobraćaj cijelom širinom kolovoza. U ovom slučaju, efekat semafora tipa 1 ne važi za reverzibilne trake. Zabranjeno je ulazak u traku koja je obostrano ograničena dvostrukom isprekidanom linijom (oznaka 1.9) kada je semafor tipa 4 koji se nalazi iznad ove trake isključen. U suprotnom se javlja mogućnost ulaska u nadolazeći saobraćaj (na primjer, kada pregore crvene signalne lampice jednog od semafora u traci).

Transportni semafor tip 5 ima četiri signala u bijeloj boji mjeseca okruglog oblika prečnika 100 mm. Takav semafor se koristi u slučaju beskonfliktnog regulisanja kretanja javnih vozila (tramvaji, autobusi, trolejbusi) koja se kreću posebno određenom trakom. Međutim, čak i u tim slučajevima često nema potrebe za postavljanjem semafora tipa 5: shema upravljanja prometom na raskrsnici osigurava neskladan prolazak vozila navedenih tipova uz opći tok, a semafori tipa 5 samo ponavljaju značenja signala semafora tipa 1 ili 2.

U nedostatku posebno određenih traka za javna vozila ili mogućnosti njihovog bezkonfliktnog prolaska, upotreba semafora tipa 5 postaje besmislena. Kontrolu saobraćaja obavljaju semafori tipa 1 ili 2.

Semafori tipa 6 imaju dva (ređe jedan) okrugla crvena signala prečnika 200 ili 300 mm, postavljena horizontalno i rade u naizmeničnom režimu treptanja. Kada se vozilima dozvoli kretanje, signali se gase. Semafori ovog tipa postavljaju se ispred železničkih prelaza, pokretnih mostova, privezišta železničkih prelaza, kao i na mestima ulaska vozila specijalnih službi na put.

Semafor tip 7 ima jedan žuti signal koji stalno treperi. Koristi se na neregulisanim raskrsnicama povećane opasnosti.

Semafori tipa 8 imaju dva vertikalno postavljena crvena i zelena kružna signala prečnika 200 i 300 mm. Koriste se kada je kolovoz privremeno sužen, kada je saobraćaj organizovan naizmjenično jednom trakom, a korištenje znakova prvenstva u ove svrhe otežano je zbog ograničene vidljivosti na ovoj dionici puta. Osim toga, semafori tipa 8 koriste se i za kontrolu saobraćaja niskog intenziteta u unutrašnjim prostorijama garaža, preduzeća i organizacija, gdje se po pravilu uvode ograničenja brzine. U navedenim slučajevima dozvoljena je i upotreba najčešćih semafora tipa 1, međutim semafori tipa 8, koji se od njih razlikuju po odsustvu žutog signala, ukazuju na specifičnosti saobraćajnih uslova.

Pješački semafori imaju dva okomito postavljena okrugla ili kvadratna signala sa prečnikom kruga ili kvadratnom stranom od 200 ili 300 mm. Gornji signal je crvena silueta pješaka koji stoji, donji signal je zelena silueta pješaka koji hoda. Obje siluete su izvedene na crnoj pozadini.

Prema GOST 23457-86, svi pješački prelazi na raskrsnici koju kontroliraju semafori opremljeni su pješačkim semaforima. Istovremeno, ako nije osiguran nekonfliktan prolaz pješaka, zeleni signal bi trebao raditi u trepćućem modu, upozoravajući pješake i vozače na mogućnost prolaska vozila kroz pješačke tokove.

Za sve vrste semafora, ako postoje dve opcije signala (200 ili 300 mm), semafori sa većom veličinom signala postavljaju se na glavnim ulicama i trgovima, na putevima čija je najveća dozvoljena brzina veća od 60 km/h, kao i pod nepovoljnim uslovima vidljivosti. Ovo osigurava bolju percepciju signala od strane učesnika u saobraćaju. Osim toga, povećana veličina signala naglašava prirodu puta na kojem se vozač nalazi. U istu svrhu, prije raskrsnica sa ovim putevima, na strani gdje su se nalazili semafori prečnika signala 200 mm, postavljen je semafor povećanog prečnika (300 mm) crvenog signala.

1.3 Dizajn semafora

Semafor se sastoji od zasebnih sekcija, od kojih je svaka dizajnirana za određeni signal. U zavisnosti od tipa semafora, sekcije mogu imati različite dizajnerske karakteristike (oblik i veličina signala, karakteristike simbola, izvora svetlosti, svetlosnog filtera itd.). Zajedničko za sve sekcije je prisustvo optičkog uređaja.

Semafor se sastoji od dijelova koji su međusobno povezani šupljim čaurama s navojem kroz koje se provlače žice. Sekcija se sastoji od kućišta sa poklopcem i štitnikom od sunca. U poklopac je montiran optički uređaj koji se sastoji od reflektora, filtera u boji, gumenog zaptivnog prstena i pokretnog stakla sa električnom lampom. Prilikom pomicanja stakla, žarulja žarulje se postavlja u fokus reflektora.

Trend razvoja savremenih dizajna semafora je unapređenje osnovnih elemenata svetlosno-optičkog sistema: izvora svetlosti, svetlosnog filtera, reflektora, kao i pouzdanosti dizajna u celini. Program za sklapanje mikrokontrolera semafora

Kao izvori svjetlosti koriste se žarulje sa žarnom niti opće i posebne namjene. Poznati su dizajni u kojima se plinsko svjetlosne cijevi ili emitirajuće diode koriste kao izvor svjetlosti. Glavni nedostatak žarulja sa žarnom niti opće namjene je velika dužina niti, koje je teško fokusirati, i niska otpornost sijalica na vibracije. Osim toga, imaju relativno kratak vijek trajanja (500-800 sati), zbog specifičnog načina rada. Produženje vijeka trajanja sijalica postiže se upotrebom specijalnih punila (kriptona), povećanjem složenosti tehnologije proizvodnje niti i povećanjem broja držača niti.

Neki dizajni semafora koriste niskonaponske halogene sijalice kao izvor svjetlosti. Uz povećanu specifičnu svjetlosnu snagu i kompaktnu nit unatoč svojoj maloj veličini, ove lampe dobro fokusiraju. Međutim, oni nisu u širokoj upotrebi zbog svoje relativno visoke cijene i potrebe za korištenjem pojačanih transformatora.

Semafori koriste svjetlosne filtere-difuzore i svjetlosne filtere-leće. Prvi osiguravaju potrebnu preraspodjelu svjetlosnog toka u prostoru. U te svrhe se na njihovoj unutrašnjosti formira šareni, prizmatični, rombični ili kapljičasti uzorak. Važna karakteristika je ugao raspršenja svjetlosti - najveći ugao unutar kojeg je intenzitet svjetlosti prepolovljen u odnosu na njegovu aksijalnu vrijednost.

Leće svjetlosnog filtera doprinose koncentraciji svjetlosnog toka. Njihova upotreba omogućava eliminaciju upotrebe reflektora i smanjenje veličine signala (semafori tipa 3 i 5). Semafori sa takvim filterima koriste se kada se vidljivost signala mora osigurati u prilično uskim granicama - na jednoj ili dvije trake.

Dizajn reflektora karakteriziraju dvije glavne unutrašnje površine: paraboloidna, koja osigurava koncentraciju svjetlosnog toka, i konusna (ili cilindrična), dizajnirana da poveća dubinu reflektora i time smanji izgaranje boje filtera. U dizajnu modernih semafora, žarišna ravnina reflektora je što bliže ravnini svjetlosne rupe, iza koje počinje balastna (neradna) konusna površina.

Najčešći antifantomski uređaj je vizir za sunce. Međutim, kada je sunce u niskoj poziciji (u smjeru istok-zapad, zapad-istok), svi semafori mogu upaliti istovremeno. Poznato je nekoliko metoda za uklanjanje fantomskog efekta i postale su široko rasprostranjene u regulatornoj praksi. U pravilu su povezani s nekim promjenama u dizajnu reflektora ili svjetlosnog filtera. Reflektor sa takozvanim antifantomskim križem sastoji se od međusobno okomitih segmentnih ploča s prorezima za smještaj halogene sijalice. Zraka svjetlosti koja pada iz vanjskog izvora na reflektor odbija se i apsorbira pocrnjela površina ploča. Istovremeno, ploče gotovo u potpunosti prenose zrake iz semafora. Drugo rješenje je ugradnja specijalnog antifantomskog sočiva sa pilastim profilom ispred filtera difuzora. Zraka sunca koja pogađa nagnutu površinu baca se na pocrnjelu horizontalnu stepenicu i upija. Poznate su i metode za otklanjanje fantomskog efekta postavljanjem pregrade saćaste strukture ispred unutrašnje površine svjetlosnog filtera, koja prenosi horizontalni svjetlosni tok optičkog uređaja semafora, ali odgađa sunčeve zrake ako imaju barem neznatno horizontalno odstupanje.

2 . ISTRAŽIVANJE, PROJEKTIRANJE I RAZVOJ KRUGOVA

Opći opis:

ATtiny25 - ekonomičan 8-bit. CMOS mikrokontroleri bazirani na naprednoj AVR RISC arhitekturi. Izvršavanjem većine instrukcija u jednom mašinskom ciklusu, ATtiny25 mikrokontroleri postižu protok od 1M. op. u sekundi radi na 1 MHz, što omogućava programeru da optimizuje potrošnju energije i performanse.

AVR jezgro kombinuje bogat skup instrukcija sa 32 registra opšte namene koji su direktno povezani sa aritmetičko-logičkom jedinicom (ALU). Ovo vam omogućava da pristupite dvama registrima odjednom kada izvršavate instrukciju i da je izvršite u jednom mašinskom ciklusu. Rezultirajuća arhitektura je efikasnija, pružajući više od 10 puta bolje performanse od tradicionalnih CISC mikrokontrolera.

ATtiny25 sadrži sledeće elemente: 2 kbajta programibilne fleš memorije u sistemu, 128 bajtova EEPROM-a, 128 bajtova statičke RAM memorije, 6 I/O linija opšte namene, 32 radna registra opšte namene, jedan 8-bitni. tajmer-brojač sa režimima poređenja, jedan 8-bitni. brzi tajmer-brojac, univerzalan serijski interfejs, interni i eksterni prekidi, 4-kanalni 10-bitni. ADC, programibilni watchdog timer sa internim oscilatorom i tri programa za uštedu energije koja se biraju softverom. U stanju mirovanja, CPU se zaustavlja dok statička RAM memorija, tajmer-brojač, ADC, analogni komparator i sistem prekida nastavljaju da rade. Režim isključenja napajanja čuva sadržaj registara i onemogućuje sve ugrađene funkcije do sljedećeg prekida ili hardverskog resetiranja. ADC režim smanjenja šuma zaustavlja CPU i sve I/O module osim ADC-a, čime se smanjuje digitalni šum tokom ADC konverzije.

Mikrokontroler je proizveden korištenjem tehnologije nepromjenjive memorije visoke gustoće. Ugrađena fleš memorija se može reprogramirati u sistemu preko SPI serijskog interfejsa korišćenjem jeftinog programatora ili putem programa u sektoru za pokretanje (samoprogramiranje).

ATtiny25 podržava čitav niz hardverskih i softverskih alata za otklanjanje grešaka, uključujući. C kompajleri, asembleri, softverski debuggeri/simulatori, emulatori u krugu i setovi za evaluaciju.

2.1 Opregled karakteristika mikrokontroleraATtiny25 V

8-bitni mikrokontroler sa 2KB programibilnom fleš memorijom u sistemu

Posebnosti:

Visoke performanse, ekonomičan 8-bit. AVR mikrokontroler

Napredna RISC arhitektura

Opsežan set od 120 instrukcija, od kojih se većina izvršava u jednom ciklusu

32 x 8 registara opšte namene opšte namene

Potpuno statičan rad

Nestalne memorije programa i podataka

2 KB programibilne flash programske memorije u sistemu (10K ciklusa pisanja/brisanja)

128 bajtova EEPROM-a koji se može programirati u sistemu (ATtiny25) (100 hiljada ciklusa pisanja/brisanja)

128 bajtova interne statičke RAM memorije (ATtiny25)

Programabilni Flash i EEPROM sigurnosni bitovi

Prepoznatljive karakteristike perifernih uređaja

8-bitni tajmer-brojac sa predskalerom i dva PWM kanala

8-bitni brzi tajmer-brojač sa odvojenim predskalerom 2 visokofrekventna PWM izlaza sa odvojenim registrima praga za poređenje

Programabilni generator pauze

Univerzalni serijski interfejs sa zasebnim detektorom stanja pokretanja

10-bitni ADC

4 neuravnotežena kanala

2 diferencijalna kanala sa programabilnim pojačanjem (1x, 20x)

Programabilni watchdog timer sa zasebnim ugrađenim oscilatorom

Ugrađen analogni komparator

Posebne funkcije mikrokontrolera

Ugrađeni debugWIRE sistem

Programiranje unutar sistema preko SPI porta

Eksterni i unutrašnji izvori prekida

Ekonomični načini rada: Idle, ADC Noise Reduction i Power-down

Poboljšano kolo za resetiranje po uključenju

Programabilno kolo za praćenje napona napajanja

Ugrađeni kalibrirani generator

I/O i šasija

Šest programabilnih I/O linija

8 pin PDIP i 8-pinsko kućište SOIC

Radni napon

1,8 - 5,5V za ATtiny25V

2,7 - 5,5 V za ATtiny25

Gradacije performansi

ATtiny25V: 0 - 4 MHz na 1,8 - 5,5 V, 0 - 10 MHz na 2,7 - 5,5 V

ATtiny25: 0 - 10 MHz na 2,7 - 5,5 V, 0 - 20 MHz na 4,5 - 5,5 V

Industrijski temperaturni raspon

Niska potrošnja struje

Aktivni način rada: 1 MHz, 1,8 V: 450 µA

Režim smanjene snage: 0,1 µA na 1,8 V

Blok dijagram mikrokontrolera dat je u Dodatku D.

Studija izvodljivosti

Naziv proizvoda

Otpornici

LED diode

ZAKLJUČAK

U ovom predmetnom radu razvijen je semafor baziran na AVR mikroprocesoru (ATtiny25V), napisan i kompajliran program za njega, a razmatrana su pitanja programiranja mikrokontrolera i primjene stečenog znanja u praksi. Prilikom izvođenja ovoga rad na kursu stečeno je dragocjeno razvojno iskustvo slični uređaji, stekli veštine u izradi programa na asemblerskom jeziku, a takođe su učvrstili znanja stečena u nastavi

SPISAK KORIŠTENE REFERENCE I PROPISA I TEHNIČKE DOKUMENTACIJE

1. GOST 2.105-95 ESKD. Opšti zahtjevi To tekstualni dokumenti. - Uđi. 1996-01-07 -M.: Izdavačka kuća standarda, 1996.- 36

2. GOST 21.1101-92 SPDS. “Osnovni zahtjevi za radnu dokumentaciju.”

3. GOST 2.004-88 ESKD „Opći zahtjevi za implementaciju projektantskih i tehnoloških dokumenata na računarskim štamparskim i grafičkim izlaznim uređajima“,

APLIKACIJE

Dodatak A

Dijagram uređaja

Program firmvera mikrokontrolera (kompilirana verzija)

Dodatak B

Listing programa programski kod za firmver mikrokontrolera

Ovaj program je proizvela

CodeWizardAVR V2.04.8b Evaluacija

Automatski generator programa

© Autorsko pravo 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

Datum: 18.11.2011

Tip čipa: ATtiny25

Frekvencija AVR jezgra: 8.000000 MHz

Model memorije: Tiny

Veličina eksterne RAM memorije: 0

Veličina steka podataka: 32

#include

#include

unsigned char light=0;

// Ovdje deklarirajte svoje globalne varijable

// Ovdje deklarirajte svoje lokalne varijable

// Inicijalizacija ulaznih/izlaznih portova

// Inicijalizacija porta B

// Func5=Ulaz Func4=Ulaz Func3=Ulaz Func2=Izlaz Func1=Izlaz Func0=Izlaz

// Stanje5=T Stanje4=T Stanje3=T Stanje2=0 Stanje1=0 Stanje0=0

// Inicijalizacija tajmera/brojača 0

// Izvor sata: Sistemski sat

// Vrijednost sata: Tajmer 0 Zaustavljen

// Način rada: Normalni vrh=FFh

// OC0A izlaz: isključen

// OC0B izlaz: isključen

// Inicijalizacija eksternog prekida

// Prekid bilo koje promjene na pinovima PCINT0-5: Uključeno

// Inicijalizacija analognog komparatora

// Analogni komparator: Off

//PORTB.0=1; //zeleno

//PORTB.1=1; //red

//PORTB.2=1; //žuta

ako (svetlo<5)svet++;

slučaj 1:PORTB.0=0; PORTB.1=1; PORTB.2=0;kašnjenje_ms(1000); break;

slučaj 2:PORTB.2=1; PORTB.0=0; PORTB.1=1;kašnjenje_ms(500); break;

slučaj 3:PORTB.1=0; PORTB.0=1; PORTB.2=0;kašnjenje_ms(1000); break;

slučaj 4: PORTB.1=0;PORTB.2=0; PORTB.0=0;kašnjenje_ms(100); break;

slučaj 5:PORTB.1=0; PORTB.0=1; PORTB.2=0;kašnjenje_ms(100); break;

Dodatak B

Dodjela pinova:

Objavljeno na Allbest.ru

...

Slični dokumenti

    Projektovanje sistema upravljanja saobraćajem na raskrsnici (sistem za upravljanje semaforima) baziranog na grupnom mikrokontroleru PIC 16F84. Princip rada uređaja, funkcionalni dijagram i opis njegovih elemenata. Algoritam i lista programa.

    kurs, dodan 24.12.2012

    Dizajn šeme indikacionog uređaja zasnovanog na 8-bitnom AVR mikrokontroleru tipa ATmega16, napajanog 10 V napajanjem i prikazom podataka na grafičkom LCD displeju. Razvoj softvera mikrokontrolera.

    kurs, dodan 19.12.2010

    Karakteristike ATTINY mikrokontrolera iz porodice AVR. Opis resursa mikrokontrolera ATTINY12: opis procesora, ulazno/izlaznih portova, perifernih uređaja, arhitekture jezgra. Razvoj uređaja sa svjetlosnim efektima na bazi mikrokontrolera.

    kurs, dodan 24.06.2013

    Opis integratora prvog reda. Pregled mikrokontrolera ATmega16. Dodatna definicija hardverskog skupa. Dijagram povezivanja mikrokontrolera. Formiranje taktnih impulsa. Resetirajte organizaciju. Algoritam rada i projektovanje modula uređaja.

    kurs, dodan 19.12.2010

    Dizajniranje šahovskog sata sa funkcijom alarma. Izrada i izgled štampane ploče na bazi mikrokontrolera pomoću programa Proteus, odabirom njene arhitekture. Razvoj kola i programskog koda. Testiranje prototipa na matičnoj ploči.

    disertacije, dodato 22.01.2016

    Postupak za opisivanje i razvoj strukturnog i funkcionalnog dijagrama mikroprocesorskog sistema baziranog na mikrokontroleru K1816BE31. Obrazloženje izbora elemenata, izrada šematskog dijagrama ovog sistema i programa za inicijalizaciju glavnih komponenti.

    kurs, dodan 16.12.2010

    Praktični primjeri i njihova softverska implementacija u asemblerskom jeziku za mikrokontroler iz porodice MCS-51 (MK51). Korištenje naredbi za prijenos podataka. Aritmetičke i logičke, bitske operacije u MCS-51. Interakcija mikrokontrolera sa objektom upravljanja.

    kurs, dodan 19.02.2011

    Blok dijagram mikrokontrolerskog sistema. Šeme povezivanja mikrokontrolera, digitalnih i analognih signala, linearnog displeja i tastature. Tekst glavnog programa na asemblerskom jeziku za MK51. Program za unos i obradu analognih informacija.

    kurs, dodan 19.12.2013

    Izrada strukturnih i strujnih dijagrama elektronskog tahometra. Proučavanje principa rada senzora magnetnog polja. Odabir mikrokontrolera. Dizajniranje upravljačkog programa za mikrokontroler. Adaptacija uređaja za industrijsku upotrebu.

    kurs, dodato 22.01.2015

    Dizajn generatora digitalnog analognog signala. Izrada strukturne, električne i funkcionalne šeme uređaja, blok dijagrama ispitivanja tastera i rada generatora. Razdjelno kolo sa izlazom napona na inverznoj otpornoj matrici.

Mnogi smatraju da je Assembler već zastario i da se nigdje ne koristi, ali to su uglavnom mladi ljudi koji se profesionalno ne bave programiranjem sistema. Razvoj softvera je, naravno, dobar, ali za razliku od programskih jezika visokog nivoa, Assembly će vas naučiti da duboko razumete rad računara, optimizujete rad sa hardverskim resursima, a takođe i programirate bilo koju opremu, razvijajući se na taj način u pravcu mašinskog učenja. . Da biste razumjeli ovaj drevni jezik, prvo biste trebali vježbati s jednostavnim programima koji najbolje objašnjavaju funkcionalnost Assemblera.

IDE za asembler

Prvo pitanje je: u kom razvojnom okruženju da programiram u Assembly? Odgovor je jasan - MASM32. Ovo je standardni program koji se koristi za ovaj jezik. Možete ga preuzeti na službenoj web stranici masm32.com u obliku arhive, koju ćete morati raspakirati, a zatim pokrenuti instalater install.exe. Kao alternativu, možete koristiti FASM, ali će kod za njega biti značajno drugačiji.

Prije početka rada, glavna stvar je da ne zaboravite dodati sljedeći red u PATH sistemsku varijablu:

C:\masm32\bin

"Hello world" program u asembleru

Smatra se da je ovo osnovni program u programiranju, koji početnici prvo pišu kada se upoznaju sa jezikom. Možda ovaj pristup nije sasvim ispravan, ali na ovaj ili onaj način omogućava vam da odmah vidite jasan rezultat:

386 .model stan, stdcall opcija casemap: nijedan uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib .data msg_title db "Naslov", 0 msg_message db "Hello world", 0 .code početak: pozvati MessageBox, 0, addr msg_message, addr msg_title, MB_OK pozvati kraj početak procesa, 0

Prvo pokrećemo uređivač qeditor.exe u folderu sa instaliranim MASM32 i upisujemo programski kod u njega. Zatim ga čuvamo kao datoteku sa ekstenzijom “.asm” i gradimo program koristeći stavku menija “Projekat” → “Izgradi sve”. Ako nema grešaka u kodu, program će se uspješno kompajlirati, a na izlazu će biti gotova exe datoteka koja će prikazati Windows prozor sa natpisom “Hello world”.

Dodavanje dva broja na asembleru

U ovom slučaju gledamo da li je zbir brojeva jednak nuli ili ne. Ako da, onda se na ekranu pojavljuje odgovarajuća poruka o tome, a ako nije, pojavljuje se još jedno obavještenje.

486 .model flat, stdcall opcija casemap: nijedna ne uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib uključuje /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code početak: mov eax, 123 mov ebx, -90 add eax, ebx test eax, zjsage in eax, zjsage chr$("Eax nije 0!"), chr$("Informacije"), 0 jmp lexit nula: pozovite MessageBox, 0, chr$("Eax je 0!"), chr$("Informacije"), 0 lexit: pozvati ExitProcess, 0 kraj početka

Ovdje koristimo takozvane tagove i posebne komande pomoću njih (jz, jmp, test). Pogledajmo izbliza:

  • test – koristi se za logičko poređenje varijabli (operanada) u obliku bajtova, riječi ili dvostrukih riječi. Za poređenje, naredba koristi logičko množenje i gleda bitove: ako su jednaki 1, bit će rezultat jednak 1, u suprotnom - 0. Ako smo dobili 0, zastavice se postavljaju zajedno sa ZF (nula flag) , što će biti jednako 1 Rezultati se dalje analiziraju na osnovu ZF.
  • jnz – ako ZF zastavica nigdje nije postavljena, vrši se prijelaz na ovu oznaku. Ova naredba se često koristi ako program ima operacije poređenja koje na neki način utiču na ZF rezultat. To uključuje test i cmp.
  • jz – ako je ZF zastavica još uvijek postavljena, oznaka se kreće.
  • jmp – bez obzira da li je ZF prisutan ili ne, oznaka se kreće.

Program za zbir brojeva u asembleru

Primitivan program koji pokazuje proces sabiranja dvije varijable:

486 .model flat, stdcall opcija casemap: nijedna ne uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib uključuje /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Naslov", 0 A DB 1h B DB 2h bafer db 128 dup(?) format db "%d .code početak: MOV AL, A ADD AL, B pozvati wsprintf, addr bafer, addr format, eax pozvati MessageBox, 0, addr bafer, addr msg_title, MB_OK pozvati ExitProcess, 0 kraj početak

U Assembly, da biste izračunali zbir, morat ćete izvršiti mnogo radnji, jer programski jezik radi direktno sa sistemskom memorijom. Ovdje uglavnom manipuliramo resursima, i samostalno ukazujemo koliko izdvojiti za varijablu, u kojem obliku da percipiramo brojeve i gdje ih staviti.

Dobivanje vrijednosti iz komandne linije u asemblerskom jeziku

Jedna od bitnih osnovnih radnji u programiranju je primanje podataka sa konzole za dalju obradu. U ovom slučaju, dobijamo ih iz komandne linije i prikazujemo ih u Windows prozoru:

486 .model flat, stdcall opcija casemap: nijedna ne uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib uključuje /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code početak: pozovite GetCommandLine ; rezultat će biti smješten u eax push 0 push chr$("Command Line") push eax ; tekst za izlaz je preuzet iz eax push 0 call MessageBox push 0 call ExitProcess end start

Možete koristiti i alternativni metod:

486 .model flat, stdcall opcija casemap: nijedna ne uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib uključuje /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code početak: pozovite GetCommandLine ; rezultat će biti smješten u eax pozvati GetCommandLine pozvati MessageBox, 0, eax, chr$("Command Line"), 0 pozvati ExitProcess, 0 push 0 pozvati ExitProcess kraj početak

Ovdje koristimo invoke, poseban makro koji pojednostavljuje programski kod. Tokom kompilacije, makro komande se konvertuju u instrukcije za asembler. Na ovaj ili onaj način, koristimo stek - primitivan način pohranjivanja podataka, ali u isto vrijeme vrlo zgodan. Po konvenciji stdcall, u svim WinAPI funkcijama, varijable se prosljeđuju kroz stog, samo obrnutim redoslijedom, i stavljaju u odgovarajući eax registar.

Petlje u asemblerskom jeziku

Slučaj upotrebe:

Podaci msg_title db "Title", 0 A DB 1h bafer db 128 dup(?) format db "%d",0 .code početak: mov AL, A .REPEAT inc AL .UNTIL AL==7 pozvati wsprintf, addr bafer, addr format, AL pozvati MessageBox, 0, addr bafer, addr msg_title, MB_OK pozvati ExitProcess, 0 kraj početak .data msg_title db "Naslov", 0 bafer db 128 dup(?) format db "%d",0 .code početak: mov eax, 1 mov edx, 1 .WHILE edx==1 inc eax .IF eax==7 .BREAK .ENDIF .ENDW pozvati wsprintf, addr buffer, addr format, eax pozvati MessageBox, 0, addr buffer, addr_OK pozovite ExitProcess, 0

Za kreiranje petlje koristite naredbu repeat. Zatim, koristeći inc, vrijednost varijable se povećava za 1, bez obzira da li je u RAM-u ili u samom procesoru. Da bi se petlja prekinula, koristi se direktiva “.BREAK”. Može ili zaustaviti ciklus ili nastaviti svoju akciju nakon "pauze". Također možete prekinuti izvršavanje programskog koda i provjeriti uslove ponavljanja i while koristeći “.CONTINUE” direktivu.

Zbir elemenata niza na asembleru

Ovdje sumiramo vrijednosti varijabli u nizu koristeći petlju "for":

486 .model flat, stdcall opcija casemap: nijedna ne uključuje /masm32/include/windows.inc uključuje /masm32/include/user32.inc uključuje /masm32/include/kernel32.inc includelib /masm32/lib/user32/lib includelib2 lib/kernel32.lib uključuje /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Naslov", 0 A DB 1h x dd 0,1,2,3,4,5,6,7, 8,9,10,11 n dd 12 bafer db 128 dup(?) format db "%d",0 .code početak: mov eax, 0 mov ecx, n mov ebx, 0 L: dodaj eax, x dodaj ebx, tip x dec ecx cmp ecx, 0 jne L pozvati wsprintf, addr bafer, addr format, eax pozvati MessageBox, 0, addr bafer, addr msg_title, MB_OK pozvati ExitProcess, 0 kraj početak

Naredba dec, poput inc, mijenja vrijednost operanda za jedan, samo u suprotnom smjeru, na -1. Ali cmp upoređuje varijable koristeći metodu oduzimanja: oduzima jednu vrijednost od druge i, ovisno o rezultatu, postavlja odgovarajuće oznake.

Komanda jne skače na oznaku na osnovu rezultata poređenja varijabli. Ako je negativan, dolazi do prijelaza, a ako operandi nisu jednaki jedan drugom, prijelaz se ne događa.

Asemblerski jezik je zanimljiv zbog svog predstavljanja varijabli, što vam omogućava da radite bilo šta s njima. Specijalista koji je razumio sve zamršenosti ovog programskog jezika ima zaista vrijedno znanje koje se može koristiti na mnogo načina. Jedan problem se može riješiti na razne načine, pa će put biti trnovit, ali ništa manje uzbudljiv.

Pregleda postova: 767

mob_info