Sadržaj:

AVR Assembler Tutorial 9: 7 Koraci
AVR Assembler Tutorial 9: 7 Koraci

Video: AVR Assembler Tutorial 9: 7 Koraci

Video: AVR Assembler Tutorial 9: 7 Koraci
Video: AVR Ассемблер. Урок 9. USART. AVR Assembler. Lesson 9. USART. 2024, Juli
Anonim
Vodič za AVR asembler 9
Vodič za AVR asembler 9

Dobro došli u Vodič 9.

Danas ćemo pokazati kako kontrolirati i 7-segmentni zaslon i 4-znamenkasti zaslon koristeći naš kod za montažni jezik ATmega328P i AVR. Pri tome ćemo morati uzeti u obzir kako koristiti stek 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 tastaturu iz Tutorijala 7

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

  1. 7-segmentni ekran

    www.sparkfun.com/products/8546

  2. 4-cifreni ekran

    www.sparkfun.com/products/11407

  3. Taster

    www.sparkfun.com/products/97

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

Evo veze do kompletne 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 tastaturu za upravljanje 7-segmentnim ekranom. 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 sa ispisom koji odgovara uobičajenim 5V i svakim od LED segmenata uključujući decimalnu tačku (dp) u donjem desnom uglu ekrana. Razlog za to 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 numerisani redom od 0 do 7 i tako će se preslikati na 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 postaviti otpornik između zajedničke anode ekrana i 5V šine. Odabrao sam otpornik od 330 ohma kao i obično, ali ako želite, mogli biste izračunati minimalni otpor potreban za postizanje maksimalne svjetline s ekrana bez prženja. Evo kako to učiniti:

Prvo pogledajte tehnički list i primijetite da na prvoj stranici on daje različita svojstva prikaza. Važne veličine su "Napredna struja" (I_f = 20mA) i "Napredna voltaža" (V_f = 2.2V). Oni vam govore da želite da pad napona na ekranu 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 maksimalna svjetlina koju možete izvući iz segmenata.

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

Dakle, s obzirom na napon izvora 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 vjerovatno 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 140 ohma postaje previše svijetlo za moj ukus, pa koristim 330 ohma (što je neka vrsta moje lične otpora zlata za LED diode)

Korak 2: Kôd montaže i video zapis

Priložio sam kod montaže i video zapis koji prikazuje rad tastature sa ekranom. Kao što vidite, jednostavno smo preslikali ključ za ponovno biranje u "r", flash ključ u "F", zvjezdicu u "A" i znak raspršivanja u "H". To se može mapirati na različite operacije poput povratka, unosa i šta sve ne, ako želite nastaviti koristiti tipkovnicu za upisivanje brojeva na LCD zaslonima ili četveroznamenkastim zaslonima. Ovaj put neću prolaziti kroz red po red 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 tabela 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 na linijsku analizu u sljedećem vodiču kada predstavimo nove aspekte kodiranja asemblerskog jezika na AVR mikrokontrolerima.

Pogledajmo sada četveroznamenkasti zaslon.

Korak 3: Ožičenje četveroznamenkastog zaslona

Ožičenje četverocifrenog ekrana
Ožičenje četverocifrenog ekrana
Ožičenje četveroznamenkastog zaslona
Ožičenje četveroznamenkastog zaslona

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

Način povezivanja četveroznamenkastog zaslona je da postoje 4 anode, po jedna za svaku od znamenki, a druge pinove kontroliraju koji segment se uključuje 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 budemo sigurni, način na koji ćemo ga kodirati je postavljanje sve četiri znamenke, a zatim kruženje anoda, a ne postavljanje, pomicanje, postavljanje, pomicanje itd. Na taj način možemo dobiti precizno vrijeme između osvjetljavanja svake znamenke.

Za sada, hajde da testiramo da li svi segmenti rade.

Postavite otpornik od 330 ohma između pozitivne šine vaše matične ploče i prve anode na ekranu. 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 ekran.. s decimalnim zarezima duž dna) i navodi da su anode brojevi pinova 6, 8, 9 i 12.

Tako spajamo pin 6 na 5V, a zatim uzimamo negativni vod sa vaše GND šine i zabadamo 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 ubacite svoju ž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.

Ima li šta 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 decimale. Zaslon koji sam dobio prilikom naručivanja je 16-pinski, četveroznamenkasti. 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 žicu za uzemljenje da 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 sa jednocifrenim 7-segmentnim ekranom iznad-ne moramo mijenjati ništa u kodu, jedino što mijenjamo je kako su žice spojene na ploči. Jednostavno priključite odgovarajući pin 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 šinu. Potreban nam je mikrokontroler da odlučimo koja cifra dobiva sok.

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

Mogli biste i sami priključiti žice. (ne zaboravite na otpornike od 330 ohma na anodnim žicama!)

Korak 4: Kodiranje četvorocifrenog ekrana

Kodiranje 4-cifrenog ekrana
Kodiranje 4-cifrenog ekrana

Razmislimo kako želimo kodirati ovaj ekran.

Željeli bismo da korisnik pritisne tipke na tipkovnici i da se brojevi pojavljuju uzastopno na ekranu pri pritisku svakog gumba. Dakle, ako pritisnem 1, a zatim 2, on će se pojaviti na ekranu kao 12. Također bih htio pohraniti tu vrijednost, 12, za internu upotrebu, ali do toga ćemo doći kasnije. Za sada samo želim napisati novi makro koji uzima vaše pritiske tipki i prikazuje ih. Međutim, budući da imamo samo 4 znamenke, želim se uvjeriti da vam dozvoljava samo unos četiri broja.

Drugi problem je u tome što način rada multipleksiranog četveroznamenkastog ekrana funkcionira tako što se anode mijenjaju 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 prvu, itd. Dakle, treba način da se ovo kodira.

Također želimo da pomakne "kursor" udesno razmak pri upisivanju sljedeće znamenke. Tako da ako želim na primjer upisati 1234, nakon što ukucam 1, kursor će se pomaknuti tako da će se sljedeća znamenka koju upišem pojaviti na sljedećem 7-segmentnom ekranu i tako dalje. Sve dok se to događa, još uvijek želim vidjeti ono što sam upisao, tako da i dalje mora kružiti kroz cifre 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 koristiti za spremanje trenutnih vrijednosti 4 znamenke koje želimo prikazati (ako ćemo ih prelaziti kroz ciklus moramo ih negdje držati pohranjene), a problem s tim je što imamo trošili smo registre opće namjene kao ludi i ako ne pazimo neće nam ostati. Stoga je vjerovatno dobra ideja riješiti to pitanje prije i kasnije i pokazati vam kako osloboditi registre pomoću steka.

Pa počnimo tako što ćemo pojednostaviti stvari, upotrijebiti hrpu i osloboditi neke registre, a zatim ćemo pokušati izvršiti zadatak čitanja i prikaza naših brojeva na četveroznamenkastom ekranu.

Korak 5: Push 'n Pop

Push 'n Pop
Push 'n Pop

Na raspolaganju imamo samo nekoliko "registara opće namjene", a kada se jednom upotrebe, više ih nema. Stoga je dobra programska praksa da ih koristite samo za nekoliko varijabli koje se koriste kao privremena pohrana s koje vam je potrebno za čitanje i pisanje na portove i SRAM, ili pak one koje će vam trebati u potprogramima posvuda. dajte im ime. Dakle, ono što sam učinio, sada kada smo se 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 i zamjenjuju njih s jednim od naših privremenih registara i pritiskom na tipku. Zapravo, ako pogledate kôd napisan za manje mikrokontrolere ili se vratite 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 nazvati 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 tabelom za pretraživanje analognih konverzija pritiskom na gumb. 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 njena 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šem makrou 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 makro kôd na mjesto programa gdje se poziva. U ovom slučaju želimo se riješiti "milisekundne" varijable i zamijeniti je jednom od naših privremenih varijabli. U ovom slučaju ću to učiniti malo drugačije kako bih vam pokazao kako čak i ako će vrijednost varijable biti potrebna na drugom mjestu, možemo je i dalje koristiti pomoću steka. Dakle, umjesto u milisekundama koristimo "temp", a kako ne bismo zeznuli druge stvari koje također koriste vrijednost temp, jednostavno započinjemo "delay" makro "guranjem" temp na stek, tada ga koristimo umjesto milisekundi, a zatim na kraju makroa "iskočimo" njegovu prethodnu vrijednost iz hrpe.

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

Evo rutine prekida ADC_int nakon ove promjene:

ADC_int:

push temp; sačuvaj temp budući da ga ovdje mijenjamo push temp2; spremi temp2 lds temp2, ADCH; učitavanje tastera ldi ZH, visoki (2*brojevi) ldi ZL, niski (2*brojevi) 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; uporedite pritiskanje tastera sa stolom brlo PC+4; ako je ADCH niži, pokušajte ponovo lpm 7.septembra, Z; u suprotnom učitajte tablicu vrijednosti ključa inc cifru; povećati cifreni broj rjmp return; i povratni prijevoz 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 gomila papira. Vidite da u prva dva retka gurnemo vrijednost temp na stek, zatim gurnemo temp2 na stek, 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 pojavljuje temp.

Dakle, od sada ćemo uvijek koristiti ovu metodu. Jedini put kada ćemo zaista označiti registar za nešto drugo osim za varijablu temp je kada će nam to trebati svugdje. Na primjer, registar pod nazivom "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 radili s tempom i temp2 jer bismo vratili njegovu vrijednost nakon što završimo. Ali to bi previše spagiralo stvari. Imenovani su s razlogom, a mi smo temp i temp2 već odredili za taj posao.

Korak 6: Niskopropusni filteri i pojačalo napona

Niskopropusni filtri i pojačala napona
Niskopropusni filtri i pojačala napona
Niskopropusni filtri i pojačala
Niskopropusni filtri i pojačala

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, kao i 0,1 mikrofarad (tj. 104) kondenzator između našeg prekida PD4 (INT0) i mase. Ako se poigrate sa ovim dok pritiskate tastere na tastaturi, moći ćete da vidite šta oni 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 port je dovoljno osjetljiv da očitava niske napone s ovih tipki, ali naš pin za prekid ne dobiva dovoljno dobru rastuću ivicu da prekine kada pritisnemo te tipke. Stoga bismo htjeli na neki način osigurati da lijepa rastuća ivica napona pogodi PD4, ali isti niski napon pogodi ADC0. Ovo je prilično velika narudžba jer oba signala dolaze iz iste izlazne žice naše tastature. 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).

Prvo morate spojiti vanjsko dugme kako biste zamijenili INT0 prekid i upravljali zaslonom držeći tipku na tastaturi i klikom na dugme. Ovo ima manje problema sa tastaturom i omogućit će vam da budete sigurni da su vaši naponi ispravno postavljeni na tabeli za traženje tastature. Kada znate da je tastatura ispravno ožičena, uklonite dugme i vratite INT0 prekid natrag. Postoje neki ozbiljni problemi s bukom i naponom koji kontroliraju tipkovnicu na ovaj način, pa je dobro znati da sve radi tako da se budući problemi mogu izolirati tipkom INT0.

Kada povežete tastaturu i pojačalo napona, vrlo je vjerojatno da iste vrijednosti otpornika koje sam koristio neće raditi. Zato ćete morati 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 na koji rade tranzistori (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 kolektorskog pina i emitera pin. 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 1 Mohm). Na dijagramu sam ovo označio kao R_1. Zatim želimo postaviti razdjelnik napona tako da je baza tranzistora "skoro" već na 0,65 volti, a samo će je malo više gurnuti preko vrha i zasititi. Taj mali, mali dio će doći iz izlaza tastature kada pritisnemo dugme. Pošto donji tasteri na tastaturi ispuštaju samo mali napon, moramo biti već blizu zasićenja da bi 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 brojevima 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 smjestite 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 šta se dešava kada ne pritisnem taster. U tom slučaju prvi tranzistor (označen T1 na dijagramu) je isključen. Dakle, struja ne teče između igle kolektora i emitera. Tako će baza drugog tranzistora (označena s 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 emiter 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.

Šta se dešava kada pritisnem taster? Pa onda baza T1 ide iznad 0,65 V (u slučaju donjih tipki samo jedva ide iznad!) I tada će se pustiti 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.

Primjetite koji je neto rezultat ovdje. Ako pritisnemo tipku 1, dobit ćemo 5V na PD4 bez značajnog mijenjanja izlaza na ADC0, i što je još važnije, čak i ako pritisnemo zvjezdicu, 0, Hash ili ponovno biranje, dobit ćemo i 5V signal koji ide na INT0, a također uzrokuje prekid! Ovo je važno jer ako smo upravo prešli s izlaza tipkovnice na pin INT0, ti ključevi ne proizvode 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 kod za prikaz i video

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

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

Sada ćemo ponovo 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žični interfejs, a ne našu metodu hakerske morzeove aparature.

Kad komunikacija proradi i rolne se pojave na ekranima, 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 one od vas koji su ambiciozni. Evo "projekta" koji biste mogli isprobati i za koji zasigurno imate znanja da radite u ovom trenutku ako ste do sada prošli kroz sve ove upute:

Projekat: Napravite kalkulator! Upotrijebite naš četveroznamenkasti zaslon i našu tipkovnicu i dodajte vanjsko pritiskanje tipke koje će djelovati poput tipke "enter". Označite zvjezdicu "vremena", hash za "podjelu" ponovnog biranja na "plus" i bljeskalicu na "minus" i napišite rutinu kalkulatora koja djeluje kao jedan od onih starih HP -ovih kalkulatora za "obrnuto poliranje" koje su imali svi inženjeri nazad u dan. Tj. način na koji oni rade je da unesete broj i pritisnete "enter". Ovo gurne taj broj u stek, zatim unesete drugi broj i pritisnete "enter", koji drugi broj gurne u stek. Na kraju pritisnete jednu od operacija poput X, /, + ili - i ona će primijeniti tu operaciju na prva dva broja u steku, prikazati rezultat i gurnuti rezultat u hrpu tako da ga možete ponovo koristiti ako kao. Na primjer, za dodavanje 2+3 trebali biste učiniti: 2, "enter", 3, "enter", "+", a na ekranu bi se tada prikazalo 5. Znate kako koristiti stog, ekran, tastaturu i je većina pozadinskog koda već napisana. Samo dodajte tipku enter i potprograme potrebne za kalkulator. Malo je složenije nego što biste mogli pomisliti, ali zabavno je i izvedivo.

Vidimo se sljedeći put!

Preporučuje se: