Sadržaj:

AVR asemblerski vodič 9: 7 koraka
AVR asemblerski vodič 9: 7 koraka

Video: AVR asemblerski vodič 9: 7 koraka

Video: AVR asemblerski vodič 9: 7 koraka
Video: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Srpanj
Anonim
Vodič za sastavljač AVR -a 9
Vodič za sastavljač AVR -a 9

Dobro došli u Tutorial 9.

Danas ćemo pokazati kako upravljati i 7-segmentnim zaslonom i 4-znamenkastim zaslonom koristeći naš kod za montažni jezik ATmega328P i AVR. Tijekom toga ćemo morati skrenuti pažnju na to kako koristiti stog za smanjenje broja registara koje moramo povezati. Dodati ćemo nekoliko kondenzatora (niskopropusni filteri) kako bismo pokušali smanjiti buku na našoj tipkovnici. Napravit ćemo pojačalo napona od nekoliko tranzistora tako da naš prekidač prekida INT0 radi bolje za tipke s nižim naponom u donjem redu tipkovnice. I lupat ćemo glavom o zid pokušavajući nabaviti ispravne otpornike kako bi stvar radila ispravno.

Koristit ćemo našu tipkovnicu iz Tutorijala 7

Za izvođenje ovog vodiča, osim standardnih stvari, trebat će vam:

  1. Zaslon sa 7 segmenata

    www.sparkfun.com/products/8546

  2. 4-znamenkasti zaslon

    www.sparkfun.com/products/11407

  3. Tipkalo

    www.sparkfun.com/products/97

  4. Tehnički listovi za prikaz koji se mogu preuzeti s njihovih stranica povezanih gore.
  5. Keramički kondenzator od 68 pf, par 104 kondenzatora, hrpa otpornika, dva 2N3904 NPN tranzistora.

Evo veze do cijele zbirke mojih vodiča za AVR asembler:

Korak 1: Ožičenje zaslona sa 7 segmenata

Ožičenje zaslona sa 7 segmenata
Ožičenje zaslona sa 7 segmenata
Ožičenje zaslona sa 7 segmenata
Ožičenje zaslona sa 7 segmenata
Ožičenje zaslona sa 7 segmenata
Ožičenje zaslona sa 7 segmenata

Koristit ćemo isti kôd koji smo koristili u Vodiču 7 za tipkovnicu za upravljanje 7-segmentnim zaslonom. Zato ćete morati napraviti kopiju toga, a mi ćemo ga izmijeniti.

Mapirat ćemo segmente na pinove našeg mikrokontrolera na sljedeći način:

(dp, g, f, e, d, c, b, a) = (PD7, PD6, PB5, PB4, PB3, PB2, PB1, PB0)

gdje su slova segmenata prikazana na slici zajedno s ispisom koji odgovara zajedničkom 5V i svakom od LED segmenata uključujući decimalnu točku (dp) u donjem desnom kutu zaslona. Razlog tome je što cijeli broj možemo unijeti u jedan registar i izvesti taj registar na portove B i D kako bismo osvijetlili segmente. Kao što vidite, bitovi su numerirani redom od 0 do 7 pa će se preslikati u ispravne pinove bez postavljanja i brisanja pojedinačnih bitova.

Kao što vidite po kodu koji smo priložili u sljedećem koraku, premjestili smo rutinu prikaza na makro i oslobodili smo SDA i SCL pinove za buduću upotrebu u sljedećem vodiču.

Trebao bih dodati da morate staviti otpornik između zajedničke anode zaslona i 5V šine. Odabrao sam otpornik od 330 ohma kao i obično, ali ako želite, mogli biste izračunati minimalni otpor potreban da biste dobili maksimalnu svjetlinu s zaslona bez prženja. Evo kako to učiniti:

Prvo pogledajte tehnički list i primijetite da na prvoj stranici daje različita svojstva zaslona. Važne veličine su "prednja struja" (I_f = 20mA) i "prednapon" (V_f = 2,2 V). Oni vam govore da želite da pad napona na zaslonu bude ako je struja jednaka struji prema naprijed. Ovo je najveća struja koju će zaslon potrošiti bez prženja. Posljedično, to je i najveća svjetlina koju možete dobiti iz segmenata.

Pa upotrijebimo Ohmov zakon i pravilo Kirchoffove petlje kako bismo utvrdili koji bismo minimalni otpor trebali staviti u niz s zaslonom da bismo dobili maksimalnu svjetlinu. Kirchoffovo pravilo kaže da je zbroj promjena napona oko zatvorene petlje u krugu jednak nuli, a Ohmov zakon kaže da je pad napona na otporniku otpora R: V = I R gdje je I struja koja protiče kroz otpornik.

Dakle, s obzirom na izvorni napon V i obilaženje našeg kruga imamo:

V - V_f - I R = 0

što znači (V - V_f)/I = R. Dakle, otpor potreban za postizanje maksimalne svjetline (i vjerojatno prženje segmenata) bio bi:

R = (V - V_f)/I_f = (5.0V - 2.2V) /0.02A = 140 ohma

Dakle, ako želite, mogli biste bezbrižno koristiti 150 ohma. Međutim, mislim da mi 140 ohma postaje presvijetlo za moj ukus pa koristim 330 ohma (što je neka vrsta mog osobnog otpora Zlatokosi za LED diode)

Korak 2: Kôd montaže i video

Priložio sam kod montaže i video zapis koji prikazuje rad tipkovnice s zaslonom. Kao što vidite, jednostavno smo preslikali tipku za ponovno biranje u "r", tipku flash u "F", zvjezdicu u "A" i znak raspršivanja u "H". To se može preslikati u različite operacije poput povratka, unosa i što sve ne ako želite nastaviti koristiti tipkovnicu za upisivanje brojeva na LCD zaslonima ili četveroznamenkastim zaslonima. Ovaj put neću prolaziti kroz kod po liniju jer je vrlo sličan onome što smo već radili u prethodnim vodičima. Razlike su uglavnom samo više istih stvari koje već znamo raditi, poput prekida i tablica pretraživanja. Trebate samo proći kroz kôd i pogledati nove stvari koje smo dodali i stvari koje smo promijenili i odatle to shvatiti. Vratit ćemo se linijskoj analizi u sljedećem vodiču kada predstavimo nove aspekte kodiranja asemblerskog jezika na AVR mikrokontrolerima.

Pogledajmo sada 4-znamenkasti zaslon.

Korak 3: Ožičenje 4-znamenkasti zaslon

Ožičenje 4-znamenkasti zaslon
Ožičenje 4-znamenkasti zaslon
Ožičenje 4-znamenkasti zaslon
Ožičenje 4-znamenkasti zaslon

Prema podatkovnom listu, četveroznamenkasti zaslon ima prednju struju od 60 mA i prednji napon od 2,2 volta. Dakle, po istom izračunu kao i prije, mogao bih upotrijebiti otpornik od 47 ohma da sam htio. Umjesto toga koristit ću … hrm.. da vidim … kako bi bilo 330 ohma.

Način povezivanja četveroznamenkastog zaslona je da postoje 4 anode, po jedna za svaku od znamenki, a druge pinove kontroliraju koji segment dolazi u svakoj. Možete prikazati 4 znamenke istovremeno jer su multipleksirane. Drugim riječima, baš kao što smo to učinili za par kockica, jednostavno izmjenjujemo snagu kroz svaku anodu i ona će ih treptati jedna za drugom. To će učiniti tako brzo da naše oči neće vidjeti treptanje i izgledati će kao da su sve četiri znamenke uključene. Međutim, samo da bismo bili sigurni, način na koji ćemo ga kodirati je postaviti sve četiri znamenke, a zatim kružiti anode, a ne postavljati, pomicati, postavljati, pomicati itd. Na taj način možemo dobiti precizno vrijeme između osvjetljenja svake znamenke.

Za sada, testirajmo da li svi segmenti rade.

Otpornik od 330 ohma postavite između pozitivne vodilice vaše matične ploče i prve anode na zaslonu. Tehnički list nam govori da su pinovi označeni brojevima od 1 do 16 u smjeru suprotnom od kazaljke na satu, počevši od donjeg lijevog kuta (kada normalno gledate zaslon.. s decimalnim zarezima uz dno) i navodi da su anode pin broj 6, 8, 9 i 12.

Spojimo pin 6 na 5V, a zatim uzmemo negativni vod s vaše GND šine i zabodemo ga u sve ostale pinove i vidimo da svi segmenti svijetle na znamenci kojoj odgovara (što je zapravo druga znamenka od desno). Pobrinite se da svijetli svih 7 segmenata i decimalna točka.

Sada utaknite žicu GND u jedan od pinova kako biste osvijetlili jedan od segmenata, a ovaj put pomaknite otpornik na ostale 3 anode i vidite da isti segment svijetli u svakoj od drugih znamenki.

Nešto neobično?

Ispostavilo se da je ispis na podatkovnom listu pogrešan. To je zato što je to podatkovna tablica i ispis za 12-pinski, 4-znamenkasti zaslon. Tj. jedan bez dvotočke ili gornje decimalne točke. Zaslon koji sam dobio prilikom naručivanja je 16-pinski, 4-znamenkasti zaslon. Zapravo, na mom su segmentne anode na pinovima 1, 2, 6 i 8. Anoda debelog crijeva je pin 4 (katodni pin 12), a gornja dp anoda je pin 10 (katoda je pin 9)

Vježba 1: Upotrijebite otpornik i uzemljenu žicu kako biste odredili koji pin odgovara kojem segmentu i decimalnoj točki na zaslonu kako bismo dobili ispravne segmente koji će zasvijetliti kada ga kodiramo.

Način na koji želimo kodirati mapu segmenata je potpuno isti kao što smo učinili s jednoznamenkastim 7-segmentnim zaslonom iznad-ne moramo mijenjati ništa u kodu, jedino što mijenjamo je kako su žice spojene na ploči. Jednostavno priključite ispravnu iglu priključka na mikrokontroleru u odgovarajući pin na četveroznamenkastom zaslonu tako da, na primjer, PB0 i dalje ide na pin koji odgovara segmentu a, PB1 ide u segment B itd.

Jedina razlika je u tome što nam sada za anode trebaju 4 dodatna pina jer više ne možemo jednostavno ići na 5V tračnicu. Mikrokontroler nam treba da odlučimo koja znamenka dobiva sok.

Stoga ćemo koristiti PC1, PC2, PC3 i PD4 za kontrolu anoda od 4 znamenke.

Možete i samo priključiti žice. (ne zaboravite na otpornike od 330 ohma na anodnim žicama!)

Korak 4: Kodiranje četveroznamenkastog zaslona

Kodiranje 4-znamenkasti zaslon
Kodiranje 4-znamenkasti zaslon

Razmislimo kako želimo kodirati ovaj zaslon.

Željeli bismo da korisnik pritisne tipke na tipkovnici i da se pri pritisku svake tipke brojevi pojavljuju na zaslonu. Dakle, ako pritisnem 1, a zatim 2, prikazat će se na zaslonu kao 12. Također bih htio pohraniti tu vrijednost, 12, za internu upotrebu, ali do toga ćemo doći kasnije. Zasad želim samo napisati novu makronaredbu koja uzima vaše pritiske tipki i prikazuje ih. Međutim, budući da imamo samo 4 znamenke, želim biti siguran da vam omogućuje samo upisivanje četiri broja.

Drugi je problem u tome što način rada multipleksiranog četveroznamenkastog zaslona funkcionira tako što se anode izmjenjuju tako da je svaka znamenka uključena samo djelić sekunde prije nego što prikaže sljedeću, a zatim sljedeću i na kraju opet na prvu, itd. Dakle, treba način da se ovo kodira.

Također želimo da pomakne "kursor" preko desnog razmaka pri upisivanju sljedeće znamenke. Tako da ako želim upisati 1234 na primjer, nakon što ukucam 1, kursor će se pomaknuti tako da će se sljedeća znamenka koju upišem pojaviti na sljedećem 7-segmentnom zaslonu i tako dalje. Sve dok se to događa, još uvijek želim moći vidjeti što sam upisao pa se i dalje mora kretati kroz znamenke i prikazivati ih.

Zvuči kao velika narudžba?

Stvari su zapravo još gore. Potrebna su nam još 4 registra opće namjene koje možemo upotrijebiti za spremanje trenutnih vrijednosti 4 znamenke koje želimo prikazati (ako ćemo se kretati kroz njih moramo ih negdje držati pohranjene), a problem s tim je što imamo kao ludi smo koristili registre opće namjene i ako ne pazimo neće nam ostati. Stoga je vjerojatno dobra ideja riješiti to pitanje prije i kasnije i pokazati vam kako osloboditi registre pomoću stoga.

Dakle, počnimo s pojednostavljivanjem stvari, upotrijebite stog i oslobodite neke registre, a zatim ćemo pokušati izvršiti zadatak čitanja i prikaza naših brojeva na 4-znamenkastom zaslonu.

Korak 5: Push 'n Pop

Push 'n Pop
Push 'n Pop

Na raspolaganju imamo samo nekoliko "Registra opće namjene", a kada se jednom upotrebe, više ih nema. Stoga je dobra programska praksa koristiti ih samo za nekoliko varijabli koje se koriste kao privremena pohrana s koje trebate čitati i pisati na portove i SRAM, ili pak one koje će vam posvuda biti potrebne u potprogramima. imenujte ih. Dakle, ono što sam učinio, sada kada smo inicijalizirali i učimo koristiti Stack, je proći kroz kôd i pronaći imenovane registre opće namjene koji se koriste samo unutar jedne potprograma ili prekidaju i nigdje drugdje u kodu ne zamjenjuju njih s jednim od naših privremenih registara i pritiskom na tipku. Zapravo, ako pogledate kod napisan za manje mikrokontrolere ili se vratite u prošlost u vrijeme kada su svi čipovi bili manji, vidjet ćete samo nekoliko registara opće namjene koji su se morali koristiti za sve, pa niste mogli samo pohranite vrijednost tamo i ostavite je na miru jer vam je taj registar bio potreban za druge stvari. Tako ćete vidjeti šifriranje i iskakanje posvuda u kodu. Možda sam trebao imenovati naše privremene registre opće namjene AX i BX kao poštovanje prema tim prošlim danima.

Primjer će pomoći da ovo postane jasnije.

Primijetite da u našoj analogno -digitalnoj konverziji potpuni prekid ADC_int koristimo registar opće namjene koji smo nazvali buttonH koji smo upotrijebili za učitavanje vrijednosti ADCH -a i usporedili ga s našom tablicom za pretraživanje analognih pretvorbi u pritiske tipki. Ovaj registar buttonH koristimo samo unutar podrutine ADC_int i nigdje drugdje. Stoga ćemo umjesto toga koristiti našu varijablu temp2 koju koristimo kao privremenu varijablu koju možemo koristiti unutar bilo koje podrutine i njezina vrijednost neće utjecati na ništa izvan te potprograme (tj. Vrijednost koju dajemo u ADC_int neće se nigdje koristiti drugo).

Drugi primjer je u našoj makronaredbi odgode. Imamo registar koji smo nazvali "milisekunde" koji sadrži naše vrijeme kašnjenja u milisekundama. U ovom slučaju to je makro i podsjećamo da je način rada makroa tako da asembler postavi cijeli kôd makroa na mjesto programa gdje se poziva. U ovom slučaju htjeli bismo se riješiti "milisekundne" varijable i zamijeniti je jednom od naših privremenih varijabli. U ovom slučaju učinit ću to malo drugačije kako bih vam pokazao kako čak i ako će vrijednost varijable biti potrebna drugdje, možemo je i dalje koristiti pomoću stoga. Dakle, umjesto u milisekundama koristimo "temp", a kako ne bismo zeznuli druge stvari koje također koriste vrijednost temp, jednostavno započinjemo makro "odgode" "guranjem" temp na hrpu, zatim ga koristimo umjesto milisekundi, a zatim na kraju makronaredbe "iskočimo" njezinu prethodnu vrijednost iz hrpe.

Neto rezultat je da smo "posudili" temp i temp2 za privremenu uporabu, a zatim ih vratili na prethodne vrijednosti kada završimo.

Evo rutine prekida ADC_int nakon ove promjene:

ADC_int:

tlačna temperatura; spremi temp budući da ga ovdje mijenjamo push temp2; spremi temp2 lds temp2, ADCH; učitavanje tipke ldi ZH, visoka (2*broja) ldi ZL, niska (2*broja) cpi temp2, 0 breq return; ako se okidači buke ne promijene 7senumber setkey: lpm temp, Z+; učitavanje iz tablice i povećanje prirasta clc cp temp2, temp; usporedite pritiskanje tipke sa stolom brlo PC+4; ako je ADCH niži, pokušajte ponovno lpm 7.septembra, Z; u suprotnom učitajte tablicu vrijednosti ključa inc znamenku; povećati brojčani broj rjmp return; i povratni adiw ZH: ZL, 1; inkrement Z rjmp setkey; i vratite se na vrh return: pop temp2; vratiti temp2 pop temp; vratiti temp reti

Primijetite da je način na koji slaganje funkcionira tako da je prvi uključen posljednji. Baš kao hrpa papira. Vidite da u prva dva retka gurnemo vrijednost temp na stek, zatim gurnemo temp2 na hrpu, zatim ih koristimo u potprogramu za druge stvari i na kraju ih opet vratimo na prethodne vrijednosti prvo iskakanje temp2 off (budući da je zadnji pritisnut na njega nalazi se na vrhu hrpe i bit će prvi koji ćemo iskočiti), a zatim se pojavi temp.

Dakle, od sada ćemo uvijek koristiti ovu metodu. Jedini put kada ćemo zapravo označiti registar za nešto drugo osim za varijablu temp je kada će nam to trebati posvuda. Na primjer, registar koji se zove "overflows" je onaj koji koristimo na nekoliko različitih mjesta u programu pa bismo mu htjeli dati ime. Naravno da bismo ga i dalje mogli koristiti na način na koji smo to učinili s temp i temp2 jer bismo nakon njegova vraćanja vratili njegovu vrijednost. No, to bi previše spagiralo stvari. Imenovani su s razlogom, a temp i temp2 smo već odredili za taj posao.

Korak 6: Niskopropusni filteri i pojačalo napona

Niskopropusni filteri i pojačalo napona
Niskopropusni filteri i pojačalo napona
Niskopropusni filteri i pojačalo napona
Niskopropusni filteri i pojačalo napona

Kako bismo malo očistili šum i poboljšali rad naše tipkovnice, želimo dodati nekoliko niskopropusnih filtera. Oni filtriraju šum visoke frekvencije i dopuštaju prolaz signala niske frekvencije. U osnovi način na koji to možete učiniti je jednostavno dodati kondenzator od 68 pf između našeg analognog ulaza i mase, a također i 0,1 mikrofarad (tj. 104) kondenzator između našeg prekida PD4 (INT0) i mase. Ako se poigrate s njima dok pritiskate gumbe na tipkovnici, moći ćete vidjeti što rade.

Zatim želimo napraviti pojačalo napona. Ispostavilo se da donji red tipki na tipkovnici (kao i tipka za ponovno biranje) ispuštaju preniski napon da bi se isključio INT0 prekid. Analogni priključak je dovoljno osjetljiv da očitava niske napone s ovih tipki, ali naš prekidni pin ne dobiva dovoljno dobar rastući rub za prekidanje kada pritisnemo te tipke. Stoga bismo htjeli na neki način osigurati da lijepi rastući rub napona pogodi PD4, ali isti niski napon pogodi ADC0. Ovo je prilično velika narudžba jer oba signala dolaze s iste izlazne žice naše tipkovnice. Postoje brojni sofisticirani načini za to, ali nakon ovog vodiča više nećemo koristiti našu tipkovnicu, pa samo spojimo metodu koja funkcionira (jedva).

Najprije morate spojiti vanjski gumb kako biste zamijenili INT0 prekid i upravljali zaslonom držeći tipku na tipkovnici i klikom na gumb. Ovo ima manje problema s tipkovnicom i omogućit će vam da budete sigurni da su vaši naponi ispravno postavljeni na tablici za traženje tipkovnice. Kada znate da je tipkovnica ispravno ožičena, riješite se gumba i vratite INT0 prekid natrag. Postoje neki ozbiljni problemi s bukom i naponom koji upravljaju tipkovnicom na ovaj način, pa je dobro znati da sve radi tako da se budući problemi mogu izolirati tipkom INT0.

Kada povežete tipkovnicu i pojačalo napona, vrlo je vjerojatno da iste vrijednosti otpornika koje sam koristio neće raditi. Zato ćete morati malo eksperimentirati da biste dobili vrijednosti koje vam odgovaraju.

Ako pogledate dijagram koji sam priložio ovom koraku, vidjet ćete kako će pojačalo napona raditi. Koristimo neke otpornike i dva tranzistora. Način rada tranzistora (pogledajte tehničke listove!) Postoji li minimalni napon koji morate unijeti na osnovni pin na tranzistoru (srednji pin) koji će ga zasititi i omogućiti protok struje između igle kolektora i emitera pribadača. U slučaju tranzistora 2N3904 koji ovdje koristimo napon je 0,65V. Sada uzimamo taj napon s našeg izlaza s tipkovnice i ne želimo mijenjati taj izlaz pa ćemo staviti veliki otpornik između izlaza s tipkovnice i baze prvog tranzistora (koristio sam 1Mohm). Na dijagramu sam ovo označio kao R_1. Zatim želimo postaviti razdjelnik napona tako da je baza tranzistora "gotovo" već na 0,65 volti, a samo će je još mali, malo više gurnuti preko vrha i zasititi. Taj mali, mali dio dolazit će s izlaza tipkovnice kad pritisnemo gumb. Budući da donje tipke na tipkovnici ispuštaju samo mali napon, moramo biti već vrlo blizu zasićenja kako bi oni bili dovoljni. Otpornici razdjelnika napona označeni su na dijagramu R_a i R_b. Koristio sam R_a = 1Mohm i R_b = 560Kohm, ali gotovo je sigurno da ćete se morati poigrati s ovim brojkama kako biste to učinili prikladnim za svoje postavljanje. Možda biste htjeli imati zid u blizini kojim ćete udariti glavom i dvije ili tri čaše viskija pri ruci (preporučio bih Laphroaig - skupo, ali vrijedi ako volite dim. Ako stvari postanu stvarno lude, onda samo nabavite vrč BV -a i smjestiti se preko noći)

Pogledajmo sada kako će nam tranzistori donijeti lijepu prednost pri ulasku u tipku INT0 i generirati naš prekid pritiska na tipku. Prvo pogledajmo što se događa kada ne pritisnem tipku. U tom slučaju prvi tranzistor (označen T1 na dijagramu) je isključen. Dakle, između pinova kolektora i emitera ne teče struja. Tako će baza drugog tranzistora (s oznakom T2) biti visoko povučena i tako će zasititi dopuštajući struji da teče između njegovih pinova. To znači da će odašiljač T2 biti povučen nisko jer je spojen na kolektor koji je sam spojen na masu. Tako će izlaz koji ide na naš prekidač prekida prekida INT0 (PD4) biti nizak i neće biti prekida.

Što se događa kad pritisnem tipku? Pa onda baza T1 ide iznad 0,65 V (u slučaju donjih tipki samo jedva ide iznad!) I tada će se dopustiti struja koja će bazu T2 povući na niski napon i to će isključiti T2. Ali vidimo da kada je T2 isključen, tada se izlaz visoko izvlači i stoga ćemo dobiti 5V signal koji ide na naš INT0 pin i to će uzrokovati prekid.

Primijetite kakav je neto rezultat ovdje. Ako pritisnemo tipku 1, dobit ćemo 5V na PD4 bez značajnog mijenjanja izlaza na ADC0, a što je još važnije, čak i ako pritisnemo zvjezdicu, 0, Hash ili ponovno biranje, dobivamo i 5V signal koji ide na INT0, a također izazivajući prekid! Ovo je važno jer ako smo samo prešli izravno s izlaza tipkovnice na pin INT0, ti ključevi ne stvaraju gotovo nikakav napon i neće biti dovoljni za aktiviranje tog pina za prekid. Naše pojačalo napona riješilo je ovaj problem.

Korak 7: 4-znamenkasti kôd zaslona i video

To je sve za tutorial 9! Priložio sam kôd i video zapis koji prikazuje operaciju.

Ovo će biti zadnji put da ćemo koristiti analognu tipkovnicu (hvala Bogu). Bilo ga je teško koristiti, ali je također bilo vrlo korisno pomoći nam u učenju o analogno-digitalnoj konverziji, analognim priključcima, prekidima, multipleksiranju, filterima šuma, pojačalima napona i mnogim aspektima kodiranja sklopova od tablica za traženje do brojača vremena/brojača itd. Zato smo se odlučili koristiti. (plus zabavno je čistiti stvari).

Sada ćemo ponovno pogledati komunikaciju i natjerati naše 7-segmentne i naše 4-znamenkaste ekrane da očitaju naše kockice s valjka na isti način na koji smo to učinili s našim analizatorom registra. Ovaj put ćemo koristiti dvožilno sučelje, a ne našu hakiranu metodu Morzeove azbuke.

Nakon što komunikacija proradi i role se pojave na zaslonima, konačno možemo napraviti prvi dio našeg konačnog proizvoda. Primijetit ćete da će bez svih analognih priključaka naš kôd biti znatno kraći i vjerojatno lakši za čitanje.

Za vas koji ste ambiciozni. Evo "projekta" koji biste mogli isprobati i za koji zasigurno imate znanja u ovom trenutku ako ste do sada prošli sve ove upute:

Projekt: Napravite kalkulator! Upotrijebite naš 4-znamenkasti zaslon i našu tipkovnicu i dodajte vanjski gumb koji će djelovati poput tipke "enter". Označite zvjezdicu na "vremena", raspršivač za "podjelu" ponovnog biranja na "plus" i bljeskalicu na "minus" i napišite rutinu kalkulatora koja djeluje kao jedan od onih starih HP kalkulatora za "obrnuto poliranje" koje su imali svi inženjeri u starim danima. Tj. način na koji oni rade je da unesete broj i pritisnete "enter". Ovo gurne taj broj na hrpu, zatim unesete drugi broj i pritisnete "enter", čime se drugi broj gura na hrpu. Na kraju pritisnete jednu od operacija poput X, /, + ili - i ona će primijeniti tu operaciju na prva dva broja u nizu, prikazati rezultat i gurnuti rezultat u hrpu tako da ga možete ponovno koristiti ako Kao. Na primjer, za dodavanje 2+3 trebali biste učiniti: 2, "enter", 3, "enter", "+", a na zaslonu bi se tada prikazalo 5. Znate kako koristiti stog, zaslon, tipkovnicu i većinu pozadinskog koda već napisali. Samo dodajte tipku enter i potprograme potrebne za kalkulator. Malo je kompliciranije nego što mislite na prvu, ali zabavno je i izvedivo.

Vidimo se sljedeći put!

Preporučeni: