Innholdsfortegnelse:

AVR Assembler Tutorial 9: 7 Steps
AVR Assembler Tutorial 9: 7 Steps

Video: AVR Assembler Tutorial 9: 7 Steps

Video: AVR Assembler Tutorial 9: 7 Steps
Video: AVR Assembly Tutorial: Part 1 (Basic Commands) 2024, November
Anonim
AVR Assembler Opplæring 9
AVR Assembler Opplæring 9

Velkommen til opplæring 9.

I dag skal vi vise hvordan du kan kontrollere både en 7-segmenters skjerm og en 4-sifret skjerm ved hjelp av vår ATmega328P- og AVR-monteringsspråkkode. I løpet av dette må vi ta avledninger til hvordan vi bruker stabelen for å redusere antall registre vi trenger å knytte. Vi vil legge til et par kondensatorer (lavpasfiltre) for å prøve å redusere støyen på tastaturet vårt. Vi vil lage en spenningsforsterker av et par transistorer, slik at INT0 -avbryteren fungerer bedre for knappene med lavere spenning på den nederste raden på tastaturet. Og vi vil slå hodene litt mot veggen og prøve å få de riktige motstandene slik at tingen fungerer som den skal.

Vi bruker tastaturet fra opplæring 7

For å gjøre denne opplæringen trenger du, i tillegg til de vanlige tingene:

  1. En 7-segmenters skjerm

    www.sparkfun.com/products/8546

  2. Et firesifret display

    www.sparkfun.com/products/11407

  3. En trykknapp

    www.sparkfun.com/products/97

  4. Dataarkene for displayet som kan lastes ned fra de respektive sidene som er lenket til ovenfor.
  5. En 68 pf keramisk kondensator, et par 104 kondensatorer, en haug med motstander, to 2N3904 NPN -transistorer.

Her er en lenke til den komplette samlingen av mine AVR assembler-opplæringsprogrammer:

Trinn 1: Koble til 7-seg skjermen

Tilkopling av 7-seg skjermen
Tilkopling av 7-seg skjermen
Tilkopling av 7-seg skjermen
Tilkopling av 7-seg skjermen
Tilkopling av 7-seg skjermen
Tilkopling av 7-seg skjermen

Vi kommer til å bruke den samme koden som vi brukte i opplæring 7 for tastaturet for å kontrollere skjermen med 7 segmenter. Så du må lage en kopi av det, og vi vil endre det.

Vi vil kartlegge segmentene til pinnene på mikrokontrolleren vår som følger:

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

hvor bokstavene i segmentene er vist på bildet sammen med pinout som tilsvarer vanlig 5V og hvert av LED -segmentene inkludert desimaltegnet (dp) nederst til høyre på displayet. Grunnen til dette er slik at vi kan legge inn hele tallet i et enkelt register og sende det ut til portene B og D for å lyse opp segmentene. Som du kan se er bitene nummerert i rekkefølge fra 0 til 7, og så vil de kartlegge til riktige pinner uten å måtte sette og fjerne individuelle biter.

Som du kan se ved koden vi har lagt ved i neste trinn, har vi flyttet skjermrutinen til en makro, og vi har frigjort SDA- og SCL -pinnene for fremtidig bruk i neste opplæring.

Jeg bør legge til at du må sette en motstand mellom den vanlige anoden på displayet og 5V -skinnen. Jeg valgte en 330 ohm motstand som vanlig, men hvis du vil kan du beregne minimum motstand som er nødvendig for å få maksimal lysstyrke ut av skjermen uten å steke den. Slik gjør du det:

Se først på databladet og legg merke til at det på den første siden gir forskjellige egenskaper til displayet. De viktige størrelsene er "Forward Current" (I_f = 20mA) og "Forward Voltage" (V_f = 2.2V). Disse forteller deg at spenningsfallet over skjermen vil være hvis strømmen er lik fremoverstrømmen. Dette er den maksimale strømmen som displayet vil ta uten å steke. Det er følgelig også den maksimale lysstyrken du kan få ut av segmentene.

Så la oss bruke Ohms lov og Kirchoffs loop -regel for å finne ut hvilken minimum motstand vi må sette i serie med displayet for å få maks lysstyrke. Kirchoffs regel sier at summen av spenningen endres rundt en lukket sløyfe i en krets er lik null og Ohms lov sier at spenningsfallet over en motstand motstand R er: V = I R hvor I er strømmen som strømmer gjennom motstanden.

Så gitt en kildespenning på V og gå rundt kretsen vår har vi:

V - V_f - I R = 0

som betyr (V - V_f)/I = R. Så motstanden som trengs for å få maksimal lysstyrke (og sannsynligvis steke segmentene) vil være:

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

Så hvis du ville kan du gjerne bruke 150 ohm uten bekymringer. Imidlertid tror jeg 140 ohm gjør det for lyst etter min smak, og derfor bruker jeg 330 ohm (som er en slags min personlige Goldilocks -motstand for lysdioder)

Trinn 2: Monteringskode og video

Jeg har lagt ved monteringskoden og en video som viser betjeningen av tastaturet med displayet. Som du kan se har vi ganske enkelt kartlagt ringetasten til "r", flash -tasten til "F", stjernen til "A" og hash -tegnet til "H". Disse kan kartlegges til forskjellige operasjoner som bakside, enter og hva-ikke hvis du vil fortsette å bruke tastaturet for å skrive tall på LCD-skjermer eller firesifrede skjermer. Jeg vil ikke gå gjennom koden linje for linje denne gangen siden den er veldig lik den vi allerede har gjort i tidligere opplæringsprogrammer. Forskjellene er hovedsakelig bare mer av de samme tingene vi allerede vet hvordan vi skal gjøre som avbrudd og oppslagstabeller. Du bør bare gå gjennom koden og se på de nye tingene vi har lagt til og tingene vi har endret og finne ut av det derfra. Vi vil gå tilbake til linje-for-linje-analyse i den neste opplæringen når vi introduserer nye aspekter ved montering av språkkoding på AVR-mikrokontrollere.

La oss nå se på et firesifret display.

Trinn 3: Koble til det firesifrede displayet

Tilkopling av det firesifrede displayet
Tilkopling av det firesifrede displayet
Tilkopling av det firesifrede displayet
Tilkopling av det firesifrede displayet

I henhold til databladet har det firesifrede displayet en fremoverstrøm på 60 mA og en fremspenning på 2,2 volt. Så, med samme beregning som før, kunne jeg bruke en 47 ohm motstand hvis jeg ville. I stedet skal jeg bruke en … hrm.. la meg se … hva med 330 ohm.

Måten det 4-sifrede displayet er koblet til er at det er 4 anoder, en for hver av sifrene, og de andre pinnene styrer hvilket segment som kommer på i hver. Du kan vise 4 sifre samtidig fordi de er multiplekset. Med andre ord, akkurat som vi gjorde for terningsparet, sykler vi ganske enkelt strømmen gjennom hver av anodene etter tur, og det blinker dem etter hverandre. Det vil gjøre dette så raskt at øynene våre ikke vil se blinking, og det vil se ut som om alle fire sifrene er på. Men bare for å være sikker, er måten vi vil kode det på å sette alle fire sifrene, deretter sykle anodene, i stedet for å angi, flytte, sette, flytte osv. På den måten kan vi få en presis timing mellom å lyse opp hvert siffer.

La oss nå teste at segmentene alle fungerer.

Plasser din 330 ohm motstand mellom den positive skinnen på brødbrettet og den første anoden på displayet. Databladet forteller oss at pinnene er nummerert fra 1 til 16 mot klokken, og starter nederst til venstre (når du ser på displayet normalt.. med desimaltegnene langs bunnen) og det står at anodene er pinnummer 6, 8, 9 og 12.

Så vi kobler pin 6 til 5V og tar deretter en negativ ledning fra GND -skinnen og stikker den inn i alle de andre pinnene og ser at alle segmentene lyser på sifferet den tilsvarer (som faktisk er det andre sifferet fra den rette). Sørg for at du får alle de 7 segmentene og desimaltegnet til å lyse.

Nå stikker du GND -ledningen inn i en av pinnene for å lyse opp et av segmentene, og denne gangen flytter du motstanden til de andre 3 anodene og ser at det samme segmentet lyser opp i hvert av de andre sifrene.

Noe uvanlig?

Det viser seg at pinout på databladet er feil. Dette er fordi det er databladet og pinout for en 12-pinners, 4-sifret skjerm. Dvs. en uten kolon eller øvre desimaltegn. Displayet jeg fikk da jeg bestilte det er en 16-pins, 4-sifret skjerm. Faktisk, på min, er segmentanodene ved pinnene 1, 2, 6 og 8. Kolonanoden er pinne 4 (katodestift 12) og den øvre dp -anoden er pinne 10 (katoden er pinne 9)

Øvelse 1: Bruk motstanden og jordledningen til å kartlegge hvilken pinne som tilsvarer hvilket segment og desimaltegn på displayet, slik at vi får opp de riktige segmentene når vi koder det.

Måten vi ønsker å kode segmentkartet er akkurat som vi gjorde med etsifret 7-segment display ovenfor-vi trenger ikke å endre noe i koden, det eneste vi endrer er hvordan ledningene er koblet sammen på brettet. Bare koble den riktige portpinnen på mikrokontrolleren til den tilsvarende pinnen på det firesifrede displayet, slik at for eksempel PB0 fortsatt går til pinnen som tilsvarer segment a, PB1 går til segment B, etc.

Den eneste forskjellen er at nå trenger vi 4 ekstra pinner for anodene siden vi ikke kan gå til 5V -skinnen lenger. Vi trenger mikrokontrolleren for å bestemme hvilket siffer som får saften.

Så vi vil bruke PC1, PC2, PC3 og PD4 for å kontrollere anodene til de fire sifrene.

Du kan like godt gå videre og koble til ledningene. (ikke glem 330 ohm motstander på anodetrådene!)

Trinn 4: Koding av det firesifrede displayet

Koding av det firesifrede displayet
Koding av det firesifrede displayet

La oss tenke på hvordan vi vil kode denne skjermen.

Vi vil at brukeren trykker på tastaturknappene og at tallene vises i rekkefølge på displayet mens de trykker på hver knapp. Så hvis jeg trykker på en 1 etterfulgt av en 2, vil den vises på displayet som 12. Jeg vil også lagre den verdien, 12, for intern bruk, men vi kommer til det litt senere. For nå vil jeg bare skrive en ny makro som tar tastetrykkene dine og viser dem. Siden vi bare har fire sifre, vil jeg imidlertid sørge for at det bare lar deg skrive fire tall.

Et annet problem er at måten den multipleksede 4-sifrede skjermen fungerer på er ved å sykle anodene slik at hvert siffer bare er på i et splitsekund før det viser det neste og deretter det neste og til slutt tilbake til det første igjen osv. Så vi trenger en måte å kode dette på.

Vi vil også at den skal flytte "markøren" til et mellomrom til høyre når vi skriver det neste sifferet. Så at hvis jeg vil skrive 1234, for eksempel, etter at jeg har skrevet 1, vil markøren bevege seg over slik at det neste sifferet jeg skriver vil vises på det neste 7-segmentet displayet og så videre. Mens dette skjer, vil jeg fortsatt kunne se det jeg har skrevet, så det må fortsatt være å sykle gjennom sifrene og vise dem.

Høres det ut som en høy ordre?

Ting er faktisk enda verre. Vi trenger 4 mer generelle registre som vi kan bruke til å lagre de nåværende verdiene til de 4 sifrene vi vil vise (hvis vi skal bla gjennom dem må vi lagre dem et sted) og problemet med dette er at vi har har brukt opp generelle registre som vanvittige, og hvis vi ikke passer på, har vi ingen igjen. Så det er sannsynligvis en god idé å takle dette problemet før heller enn senere og vise deg hvordan du frigjør registre ved å bruke stabelen.

Så la oss starte med å forenkle ting litt, bruke stabelen og frigjøre noen registre, og så skal vi prøve å utføre oppgaven med å lese og vise tallene våre på det firesifrede displayet.

Trinn 5: Push 'n Pop

Push 'n Pop
Push 'n Pop

Det er bare noen få "generelle formålsregistre" som vi har til rådighet, og når de først er brukt, er det ikke flere. Så det er god programmeringspraksis å bare bruke dem for et par variabler som brukes som midlertidig lagring som du trenger for å lese fra og skrive til, porter og SRAM med, eller de du trenger i underrutiner overalt, så du navngi dem. Så det jeg har gjort, nå som vi har initialisert og lærer å bruke stakken, er å gå gjennom koden og finne de navngitte generelle registerene som bare brukes inne i en enkelt underprogram eller avbrudd og ingen andre steder i koden og erstatte dem med et av våre midlertidige registre og et trykk og pop til stabelen. Faktisk, hvis du ser på kode skrevet for mindre mikrokontrollere, eller hvis du går tilbake i tid da alle sjetonger var mindre, vil du bare se et par generelle registre som måtte brukes til alt, så du kunne ikke bare lagre en verdi der inne og la den være i fred siden du var sikker på å trenge det registeret for andre ting. Så du vil se pushin 'og en poppin' overalt i koden. Kanskje jeg burde ha kalt våre midlertidige generelle registre AX og BX som en respektfull ros til de svunne dager.

Et eksempel vil bidra til å gjøre dette mer tydelig.

Legg merke til at i vår analoge til digitale konvertering fullstendig avbrudd ADC_int bruker vi et generelt formål som vi har kalt buttonH som vi brukte for å laste inn verdien av ADCH og sammenligne det med oppslagstabellen for analog til knappetrykk -konvertering. Vi bruker bare denne knappenH -registeret i ADC_int -underprogrammet og ingen andre steder. Så i stedet vil vi bruke variabelen vår temp2 som vi bruker som en midlertidig variabel som vi kan bruke innenfor en gitt underrutine, og verdien vil ikke påvirke noe utenfor den underrutinen (dvs. verdien vi gir den i ADC_int vil ikke bli brukt hvor som helst ellers).

Et annet eksempel er vår forsinkelsesmakro. Vi har et register vi har kalt "millisekunder" som inneholder forsinkelsestiden vår i millisekunder. I dette tilfellet er det i en makro, og vi husker at makroens måte er at montøren plasserer hele makrokoden på stedet i programmet der den kalles. I dette tilfellet vil vi bli kvitt variabelen "millisekunder" og erstatte den med en av våre midlertidige variabler. I dette tilfellet vil jeg gjøre det litt annerledes for å vise deg hvordan selv om verdien av variabelen kommer til å være nødvendig andre steder, kan vi fortsatt bruke den ved å bruke bunken. Så i stedet for millisekunder bruker vi "temp" og for at vi ikke skal skru opp andre ting som også bruker verdien av temp, begynner vi ganske enkelt "forsinkelsen" -makroen ved å "skyve" temp til stabelen, så bruker vi den i stedet for millisekunder, og deretter på slutten av makroen "popper" vi den tidligere verdien tilbake fra stabelen.

Nettoresultatet er at vi har "lånt" temp og temp2 for midlertidig bruk og deretter gjenopprettet dem til sine tidligere verdier når vi er ferdige.

Her er ADC_int -avbruddsrutinen etter at du har gjort denne endringen:

ADC_int:

trykk temp; lagre temp siden vi endrer det her push temp2; lagre temp2 lds temp2, ADCH; last tastetrykk ldi ZH, høy (2*tall) ldi ZL, lav (2*tall) cpi temp2, 0 breq retur; hvis støyutløsere ikke endrer 7segnumber setkey: lpm temp, Z+; last fra tabellen og etter inkrement clc cp temp2, temp; sammenligne tastetrykk med tabellen brlo PC+4; hvis ADCH er lavere, prøv igjen lpm 7segnumber, Z; ellers last keyvalue tabellen inc digit; øk sifferet rjmp return; og returner adiw ZH: ZL, 1; økning Z rjmp setkey; og gå tilbake til toppen tilbake: pop temp2; gjenopprette temp2 pop temp; gjenopprette temp reti

Legg merke til at måten bunken fungerer på er at den første på er den siste av. Akkurat som en bunke papirer. Du ser at i de to første linjene våre skyver vi verdien av temp til stabelen, så skyver vi temp2 videre til stabelen, så bruker vi dem i subrutinen for andre ting, og til slutt gjenoppretter vi dem til deres tidligere verdier igjen ved å første popping temp2 off (siden det var den siste som ble presset på den er øverst i stabelen og vil være den første vi springer tilbake) og deretter popping temp.

Så fra nå av vil vi alltid bruke denne metoden. Den eneste gangen vi faktisk vil utpeke et register for noe annet enn en tempariabel er når vi kommer til å trenge det overalt. For eksempel er registret kalt "overløp" et som vi bruker flere forskjellige steder i programmet, og derfor vil vi gi det et navn. Selvfølgelig kan vi fortsatt bruke det slik vi har gjort med temp og temp2 siden vi ville gjenopprette verdien etter at vi er ferdige. Men det ville spaghettifisere ting for mye. De er navngitt av en grunn, og vi har temp og temp2 allerede utpekt for den jobben.

Trinn 6: Lavpassfiltre og spenningsforsterker

Lavpassfiltre og spenningsforsterker
Lavpassfiltre og spenningsforsterker
Lavpassfiltre og spenningsforsterker
Lavpassfiltre og spenningsforsterker

For å rydde opp i støyen litt og få tastaturet til å fungere bedre, vil vi legge til et par lavpasfiltre. Disse filtrerer ut høyfrekvent støy og lar lavfrekvenssignalet passere. I hovedsak er måten å gjøre dette på å legge til en 68 pf kondensator mellom vår analoge inngang og bakken og også en 0,1 mikrofarad (dvs. 104) kondensator mellom PD4 (INT0) interrupt og bakken. Hvis du leker med disse mens du trykker på knappene på tastaturet, vil du kunne se hva de gjør.

Deretter ønsker vi å lage en spenningsforsterker. Det viser seg at den nederste raden med taster på tastaturet (så vel som ringetasten) gir for lav spenning for å utløse INT0 -avbruddet. Den analoge porten er følsom nok til å lese de lave spenningene fra disse tastene, men avbruddspinnen vår får ikke en god nok stigekant til å avbryte når vi trykker på disse tastene. Derfor vil vi gjerne ha en måte å sørge for at en god spenningsøkningskant treffer PD4, men den samme lavspenningen treffer ADC0. Dette er en ganske høy ordre siden begge signalene kommer fra den samme utgangskabelen til tastaturet vårt. Det er en rekke sofistikerte måter å gjøre dette på, men vi kommer ikke til å bruke tastaturet vårt lenger etter denne opplæringen, så la oss bare slå sammen en metode som fungerer (knapt).

Du bør først koble til en ekstern knapp for å erstatte INT0 -avbruddet og kontrollere displayet ved å holde en tast på tastaturet og klikke på knappen. Dette har færre tastaturproblemer og vil tillate deg å være trygg på at spenningene dine er riktig angitt på tastaturets oppslagstabell. Når du vet at tastaturet er koblet til riktig, må du kvitte deg med knappen og sette INT0 -avbruddet tilbake. Det er noen alvorlige problemer med støy og spenning som styrer tastaturet på denne måten, så det er godt å vite at alt fungerer slik at fremtidige problemer kan isoleres til INT0 -tasten.

Når du kobler til tastaturet og spenningsforsterkeren din, er det svært sannsynlig at de samme motstandsverdiene som jeg har brukt ikke kommer til å fungere. Så du må gjøre noen eksperimenter for å få verdier som fungerer for deg.

Hvis du ser på diagrammet jeg har lagt ved dette trinnet, vil du se hvordan spenningsforsterkeren kommer til å fungere. Vi bruker noen motstander og to transistorer. Måten transistorer fungerer på (er i databladene!) pin. Når det gjelder 2N3904 -transistoren som vi bruker her, er spenningen 0,65V. Nå tar vi den spenningen fra utgangen fra tastaturet, og vi vil ikke endre utgangen, så vi vil sette en stor motstand mellom utgangen fra tastaturet og basen til den første transistoren (jeg brukte 1Mohm). Jeg har merket dette som R_1 i diagrammet. Deretter ønsker vi å sette opp en spenningsdeler slik at basen til transistoren er "nesten" på 0,65 volt allerede, og bare en liten bit mer vil skyve den over toppen og mette den. Den lille biten kommer fra utdataene på tastaturet når vi trykker på en knapp. Siden de nedre tastene på tastaturet bare legger ut en liten spenning, må vi være veldig nær metning allerede for at de skal være nok. Spenningsdeleren motstander er merket R_a og R_b på diagrammet. Jeg brukte R_a = 1Mohm og R_b = 560Kohm, men det er nesten sikkert at du må leke med disse tallene for å få det riktig for oppsettet ditt. Det kan være lurt å ha en vegg i nærheten for å slå hodet mot og to eller tre glass scotch på hånden (jeg vil anbefale Laphroaig - dyrt, men verdt det hvis du liker røyk. Hvis ting blir skikkelig vanvittige, så er det bare å ta en kanne av BV og bosette seg for natten)

La oss nå se på hvordan transistorer kommer til å gi oss en fin stigende kant inn på INT0 -tasten og generere tastetrykkavbruddet. La oss først se på hva som skjer når jeg ikke trykker på en tast. I så fall er den første transistoren (merket T1 i diagrammet) av. Så det strømmer ingen strøm mellom kollektor- og emitterpinnene. Dermed vil basen til den andre transistoren (merket T2) trekkes høyt, og dermed vil den mette slik at strøm kan strømme mellom pinnene. Dette betyr at emitteren til T2 vil trekkes lavt siden den er koblet til kollektoren som selv er koblet til jord. Dermed vil utgangen som går til vår INT0 -tastetrykkavbruddspinne (PD4) være lav, og det vil ikke være noen avbrudd.

Hva skjer nå når jeg trykker på en tast? Vel, da går basen til T1 over 0,65V (for de nedre tastene går den bare så vidt over!), Og så får strømmen strømme som vil trekke basen til T2 til lav spenning og dette vil slå av T2. Men vi ser at når T2 er av, blir utgangen trukket høyt, og derfor får vi et 5V -signal som går til vår INT0 -pin, og det vil forårsake et avbrudd.

Legg merke til hva nettoresultatet er her. Hvis vi trykker på 1 -tasten, får vi 5V til PD4 uten at signifikant endrer utgangen til ADC0, og enda viktigere, selv om vi trykker på Asterisk, 0, Hash eller Redial, får vi også et 5V -signal som går til INT0 og også forårsaker avbrudd! Dette er viktig siden hvis vi bare gikk direkte fra tastaturutgangen til INT0 -pinnen, genererer disse tastene nesten ingen spenning, og de vil ikke være nok til å utløse den avbrytende pinnen. Spenningsforsterkeren vår har løst dette problemet.

Trinn 7: 4-sifret visningskode og video

Det er alt for opplæring 9! Jeg har lagt ved koden og en video som viser operasjonen.

Dette vil være siste gangen vi bruker det analoge tastaturet (gudskjelov). Det var vanskelig å bruke, men det var også veldig nyttig for å lære oss om analog-til-digital konvertering, analoge porter, avbrudd, multiplexing, støyfiltre, spenningsforsterkere og mange aspekter ved monteringskoding fra oppslagstabeller til timer/tellere, etc. Det er derfor vi bestemte oss for å bruke den. (pluss at det er morsomt å finne ting).

Nå skal vi se på kommunikasjon igjen og få våre 7-segmenter og våre 4-sifrede skjermer til å lese opp terningkastene våre fra terningrullen vår på samme måte som vi gjorde med vår registeranalysator. Denne gangen vil vi bruke to-leder grensesnittet i stedet for vår hackede sammen morse-kode metode.

Når vi har fått kommunikasjonen til å fungere og rullene som vises på skjermene, kan vi endelig lage det første stykket av vårt sluttprodukt. Du vil legge merke til at koden vår blir vesentlig kortere og sannsynligvis lettere å lese uten alle de analoge portstoffene.

For de av dere som er ambisiøse. Her er et "prosjekt" du kan prøve som du sikkert har kunnskapen å gjøre på dette tidspunktet hvis du har gått gjennom alle disse opplæringen til dette punktet:

Prosjekt: Lag en kalkulator! Bruk vårt firesifrede display og tastaturet, og legg til et eksternt knappetrykk som vil fungere som en "enter" -tast. Tilordne stjernen til "tider", hash -verdien for å "dele" oppringningen til "pluss" og blitsen til "minus", og skriv en kalkulatorrutine som fungerer som en av de gamle HP "reverse polsk" -kalkulatorene som alle ingeniørene hadde i gamle dager. Dvs. måten de fungerer på er at du skriver inn et tall og trykker "enter". Dette skyver det tallet til bunken, så skriver du inn et andre nummer og trykker "enter", som skyver det andre tallet til bunken. Til slutt trykker du på en av operasjonene som X, /, + eller - og den vil bruke denne operasjonen på de to øverste tallene på bunken, vise resultatet og skyve resultatet på stabelen slik at du kan bruke den igjen hvis du som. For eksempel for å legge til 2+3, gjør du: 2, "enter", 3, "enter", "+" og deretter vil displayet lese 5. Du vet hvordan du bruker stakken, displayet, tastaturet og du har det meste av bakgrunnskoden allerede skrevet. Bare legg til enter -nøkkelen og underrutinene som trengs for kalkulatoren. Det er litt mer komplisert enn du først tror, men det er morsomt og gjennomførbart.

Ser deg neste gang!

Anbefalt: