Indholdsfortegnelse:

AVR Assembler Tutorial 9: 7 trin
AVR Assembler Tutorial 9: 7 trin

Video: AVR Assembler Tutorial 9: 7 trin

Video: AVR Assembler Tutorial 9: 7 trin
Video: DIY Custom Slides 🤩💖 #shorts #diy #art #tutorial #artist #craft #drawing #crafts #painting 2024, Juli
Anonim
Vejledning til AVR -samler 9
Vejledning til AVR -samler 9

Velkommen til selvstudium 9.

I dag viser vi, hvordan du styrer både en 7-segment skærm og en 4-cifret skærm ved hjælp af vores ATmega328P og AVR-samlingskode. I løbet af dette bliver vi nødt til at tage afledning til, hvordan vi bruger stakken til at reducere antallet af registre, som vi skal binde. Vi tilføjer et par kondensatorer (lavpasfiltre) for at forsøge at reducere støj på vores tastatur. Vi vil oprette en spændingsforstærker ud af et par transistorer, så vores INT0 -afbryderkontakt fungerer bedre for knapperne med lavere spænding på tastaturets nederste række. Og vi vil banke vores hoveder lidt mod væggen og forsøge at få de korrekte modstande, så tingen fungerer korrekt.

Vi bruger vores tastatur fra selvstudium 7

For at udføre denne vejledning skal du ud over de almindelige ting bruge:

  1. Et 7-segment display

    www.sparkfun.com/products/8546

  2. Et firecifret display

    www.sparkfun.com/products/11407

  3. En trykknap

    www.sparkfun.com/products/97

  4. Dataarkene til displayet, som kan downloades fra deres respektive sider, der er linket til ovenfor.
  5. En 68 pf keramisk kondensator, et par 104 kondensatorer, en flok modstande, to 2N3904 NPN -transistorer.

Her er et link til den komplette samling af mine AVR-assembler-selvstudier:

Trin 1: Tilslutning af 7-seg displayet

Tilslutning af 7-seg displayet
Tilslutning af 7-seg displayet
Tilslutning af 7-seg skærm
Tilslutning af 7-seg skærm
Tilslutning af 7-seg skærm
Tilslutning af 7-seg skærm

Vi kommer til at bruge den samme kode, som vi brugte i Tutorial 7 til tastaturet til at styre 7-segment displayet. Så du bliver nødt til at lave en kopi af det, og vi vil ændre det.

Vi kortlægger segmenterne til stifterne på vores mikrokontroller som følger:

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

hvor bogstaverne i segmenterne er vist på billedet sammen med pinout svarende til almindelig 5V og hver af LED -segmenterne inklusive decimaltegnet (dp) nederst til højre på displayet. Årsagen til dette er, så vi kan indtaste hele tallet i et enkelt register og output, der registreres til port B og D for at lyse segmenterne op. Som du kan se, er bitene nummereret i rækkefølge fra 0 til 7, og de vil derfor kortlægge til de korrekte stifter uden at skulle indstille og rydde individuelle bits.

Som du kan se ved den kode, vi har vedhæftet i det næste trin, har vi flyttet vores displayrutine til en makro, og vi har frigjort SDA- og SCL -benene til fremtidig brug i det næste selvstudium.

Jeg skal tilføje, at du skal sætte en modstand mellem displayets fælles anode og 5V -skinnen. Jeg valgte som normalt en 330 ohm modstand, men hvis du kunne lide det, kunne du beregne den mindste modstand, der er nødvendig for at få den maksimale lysstyrke ud af displayet uden at stege den. Sådan gør du det:

Se først på databladet, og bemærk, at det på den første side giver forskellige egenskaber ved displayet. De vigtige størrelser er "Forward Current" (I_f = 20mA) og "Forward Voltage" (V_f = 2.2V). Disse fortæller dig, at spændingsfaldet over skærmen vil være, hvis strømmen er lig med fremadgående strøm. Dette er den maksimale strøm, som displayet vil tage uden stegning. Det er følgelig også den maksimale lysstyrke, du kan få ud af segmenterne.

Så lad os bruge Ohms lov og Kirchoffs loop -regel til at finde ud af, hvilken minimum modstand vi skal bruge i serie med displayet for at få den maksimale lysstyrke. Kirchoffs regel siger, at summen af spændingen ændrer sig omkring en lukket sløjfe i et kredsløb er lig med nul, og Ohms lov siger, at spændingsfaldet over en modstand modstand R er: V = I R, hvor I er strømmen, der strømmer gennem modstanden.

Så givet en kildespænding på V og går rundt i vores kredsløb har vi:

V - V_f - I R = 0

hvilket betyder (V - V_f)/I = R. Så den modstand, der er nødvendig for at få den maksimale lysstyrke (og sandsynligvis stegning af segmenterne) ville være:

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

Så hvis du ville, kunne du med glæde bruge 150 ohm uden bekymringer. Jeg synes dog, at 140 ohm gør det for lyst til min smag, og derfor bruger jeg 330 ohm (hvilket er en slags min personlige Goldilocks -modstand for lysdioder)

Trin 2: Monteringskode og video

Jeg har vedhæftet samlingskoden og en video, der viser betjening af tastaturet med displayet. Som du kan se, har vi ganske enkelt kortlagt genopkaldstasten til "r", flashtasten til "F", stjernen til "A" og hashtegnet til "H". Disse kan kortlægges til forskellige operationer som backspace, enter, og hvad ikke, hvis du vil fortsætte med at bruge tastaturet til at skrive tal på LCD-skærme eller firecifrede displays. Jeg vil ikke gå igennem koden linje for linje denne gang, da den ligner meget, hvad vi allerede har gjort i tidligere selvstudier. Forskellene er hovedsageligt mere af de samme ting, vi allerede ved, hvordan vi gør, som afbrydelser og opslagstabeller. Du skal bare gå igennem koden og se på de nye ting, vi har tilføjet, og de ting, vi har ændret, og finde ud af det derfra. Vi vender tilbage til line-by-line analyse i den næste vejledning, når vi introducerer nye aspekter ved samling af sprogkodning på AVR-mikrokontrollere.

Lad os nu se på et firecifret display.

Trin 3: Tilslutning af det firecifrede display

Tilslutning af det 4-cifrede display
Tilslutning af det 4-cifrede display
Tilslutning af det 4-cifrede display
Tilslutning af det 4-cifrede display

Ifølge databladet har det firecifrede display en fremadgående strøm på 60 mA og en fremspænding på 2,2 volt. Så ved samme beregning som før kunne jeg bruge en 47 ohm modstand, hvis jeg ville. I stedet vil jeg bruge en … hrm.. lad mig se … hvad med 330 ohm.

Den måde, hvorpå det 4-cifrede display er kablet, er, at der er 4 anoder, en for hver af cifrene, og de andre ben styrer, hvilket segment der kommer i hver. Du kan vise 4 cifre samtidigt, fordi de er multipleksede. Med andre ord, ligesom vi gjorde med terningerne, cykler vi simpelthen strømmen gennem hver af anoderne efter tur, og det vil blinke dem efter hinanden. Det vil gøre dette så hurtigt, at vores øjne ikke kan se, at det blinker, og det vil se ud som om alle fire cifre er tændt. Men bare for at være sikker, er den måde, vi vil kode det på, at indstille alle fire cifre, derefter cykle anoderne frem for at indstille, flytte, indstille, flytte osv. På den måde kan vi få en præcis timing mellem tænding af hvert ciffer.

Lad os foreløbig teste, at segmenterne alle fungerer.

Placer din 330 ohm modstand mellem den positive skinne på dit brødbræt og den første anode på displayet. Databladet fortæller os, at benene er nummereret fra 1 til 16 mod uret, der starter nederst til venstre (når du ser normalt på displayet.. med decimaltegnene langs bunden), og det står, at anoderne er stiftnumre 6, 8, 9 og 12.

Så vi forbinder pin 6 til 5V og tager derefter en negativ ledning fra din GND -skinne og stikker den ind i alle de andre pins og ser, at alle segmenterne lyser på det ciffer, den svarer til (hvilket faktisk er det andet ciffer fra det rigtige). Sørg for at få alle 7 segmenter og decimaltegnet til at lyse.

Stik nu din GND -ledning ind i en af stifterne for at tænde et af segmenterne, og denne gang skal du flytte modstanden rundt til de andre 3 anoder og se, at det samme segment lyser i hvert af de andre cifre.

Noget usædvanligt?

Det viser sig, at pinout på databladet er forkert. Dette er fordi det er databladet og pinout til et 12-benet, 4-cifret display. Dvs. en uden kolon eller øvre decimaltegn. Det display, jeg fik, da jeg bestilte det, er et 16-pins, 4-cifret display. Faktisk er segmentanoderne på mine ved ben 1, 2, 6 og 8. Kolonanoden er ben 4 (katodestift 12) og den øvre dp -anode er stift 10 (katode er stift 9)

Øvelse 1: Brug din modstand og jordledning til at kortlægge, hvilken pin der svarer til hvilket segment og decimaltegn på displayet, så vi får de korrekte segmenter til at lyse op, når vi koder det.

Den måde, vi vil kode segmentkortet på, er præcis som vi gjorde med det enkeltcifrede 7-segment display ovenfor-vi behøver ikke at ændre noget i koden, det eneste vi ændrer er, hvordan ledningerne er forbundet på boardet. Du skal blot tilslutte den korrekte portstift på mikrokontrolleren til den tilsvarende pin på det 4-cifrede display, så f.eks. PB0 stadig går til stiften svarende til segment a, PB1 går til segment B osv.

Den eneste forskel er, at nu har vi brug for 4 ekstra ben til anoderne, da vi ikke længere kan gå til 5V skinnen mere. Vi har brug for mikrokontrolleren til at bestemme, hvilket ciffer der får saften.

Så vi vil bruge PC1, PC2, PC3 og PD4 til at styre anoderne på de 4 cifre.

Du kan lige så godt gå videre og tilslutte ledningerne. (glem ikke de 330 ohm modstande på anodetrådene!)

Trin 4: Kodning af det firecifrede display

Kodning af det 4-cifrede display
Kodning af det 4-cifrede display

Lad os tænke over, hvordan vi vil kode denne skærm.

Vi vil gerne have, at brugeren trykker på tastaturets knapper og får tallene vist i rækkefølge på displayet, når de trykker på hver knap. Så hvis jeg trykker på en 1 efterfulgt af en 2, vises den på displayet som 12. Jeg vil også gerne gemme den værdi, 12, til intern brug, men vi kommer til det lidt senere. For nu vil jeg bare skrive en ny makro, der tager dine tastetryk og viser dem. Men da vi kun har 4 cifre, vil jeg sikre mig, at det kun giver dig mulighed for at skrive fire tal.

Et andet problem er, at den måde, hvorpå det multipleksede 4-cifrede display fungerer, er ved at cykle anoderne, så hvert ciffer kun er tændt i et splitsekund, før det viser det næste og derefter det næste og til sidst tilbage til det første igen osv. Så vi har brug for en måde at kode dette på.

Vi vil også have det til at flytte "markøren" over til højre et mellemrum, når vi skriver det næste ciffer. Så hvis jeg f.eks. Vil skrive 1234, efter at jeg har skrevet 1, vil markøren flytte sig, så det næste ciffer, jeg skriver, vises på det næste 7-segment display og så videre. Alt imens dette sker, vil jeg stadig gerne kunne se, hvad jeg har skrevet, så det stadig skal cykle gennem cifrene og vise dem.

Lyder det som en høj ordre?

Tingene er faktisk endnu værre. Vi har brug for 4 mere generelle registre, som vi kan bruge til at gemme de aktuelle værdier for de 4 cifre, vi vil vise (hvis vi skal gennemgå dem, skal vi gemme dem et sted), og problemet med dette er, at vi har har brugt registre til generelle formål som vanvittige, og hvis vi ikke passer på, har vi ingen tilbage. Så det er nok en god idé at tackle det problem før eller senere og vise dig, hvordan du frigør registre ved at bruge stakken.

Så lad os starte med at forenkle tingene lidt, bruge stakken og frigøre nogle registre, og derefter vil vi forsøge at udføre opgaven med at læse og vise vores tal på det firecifrede display.

Trin 5: Push 'n Pop

Push 'n Pop
Push 'n Pop

Der er kun få "Generelle formålsregistre", som vi har til rådighed, og når de først er brugt, er der ikke flere. Så det er god programmeringsskik kun at bruge dem til et par variabler, der bruges som midlertidig lagring, som du har brug for til at læse fra og skrive til, porte og SRAM med, eller også dem, du får brug for i underprogrammer overalt, og så du navngiv dem. Så hvad jeg har gjort, nu hvor vi har initialiseret og lærer at bruge stakken, er at gå gennem koden og finde de navngivne generelle registre, der kun bruges inde i en enkelt underprogram eller afbrydelse og ingen andre steder i koden og erstatte dem med et af vores midlertidige registre og et skub og pop til stakken. Faktisk, hvis du ser på kode skrevet til mindre mikrokontrollere, eller hvis du går tilbage i tiden til, da alle chips var mindre, vil du kun se et par generelle registre, der skulle bruges til alt, så du kunne ikke gem bare en værdi derinde og lad den være i fred, da du helt sikkert havde brug for det register til andre ting. Så du vil se pushin 'og en poppin' overalt i koden. Måske skulle jeg have navngivet vores midlertidige generelle registre AX og BX som en respektfuld ros til de svundne dage.

Et eksempel vil hjælpe med at gøre dette mere klart.

Bemærk, at i vores Analog til Digital konvertering fuldstændig afbrydelse ADC_int bruger vi et generelt formålsregister, som vi har navngivet buttonH, som vi brugte til at indlæse værdien af ADCH og sammenligne det med vores opslagstabel med analoge til knappresskonverteringer. Vi bruger kun denne knapH -register inden for ADC_int -underprogrammet og ingen andre steder. Så i stedet vil vi bruge vores variabel temp2, som vi bruger som en midlertidig variabel, som vi kan bruge inden for en given underprogram, og dens værdi vil ikke påvirke noget uden for denne underprogram (dvs. den værdi, vi giver den i ADC_int, vil ikke blive brugt nogen steder andet).

Et andet eksempel er i vores forsinkelsesmakro. Vi har et register, vi har navngivet "millisekunder", som indeholder vores forsinkelsestid i millisekunder. I dette tilfælde er det i en makro, og vi husker, at makros måde er, at samleren placerer hele makrokoden på stedet i programmet, hvor den kaldes. I dette tilfælde vil vi gerne slippe af med variablen "millisekunder" og erstatte den med en af vores midlertidige variabler. I dette tilfælde vil jeg gøre det lidt anderledes for at vise dig, hvordan selvom værdien af variablen bliver nødvendig andetsteds, kan vi stadig bruge den ved at bruge stakken. Så i stedet for millisekunder bruger vi "temp", og for at vi ikke skruer op for andre ting, der også bruger værdien af temp, starter vi simpelthen "forsinkelsen" -makroen ved at "skubbe" temp til stakken, så bruger vi den i stedet for millisekunder, og derefter i slutningen af makroen "popper" vi dens tidligere værdi tilbage fra stakken.

Nettoresultatet er, at vi har "lånt" temp og temp2 til midlertidig brug og derefter gendannet dem til deres tidligere værdier, når vi er færdige.

Her er ADC_int -afbrydelsesrutinen efter at have foretaget denne ændring:

ADC_int:

skub temp; gem temp, da vi ændrer det her push temp2; gem temp2 lds temp2, ADCH; belastning tastetryk ldi ZH, høj (2*tal) ldi ZL, lav (2*tal) cpi temp2, 0 breq return; hvis støjudløsere ikke ændrer 7segnumber setkey: lpm temp, Z+; belastning fra bord og post stigning clc cp temp2, temp; sammenligne tastetryk med bordet brlo PC+4; hvis ADCH er lavere, prøv igen lpm 7segnumber, Z; ellers indlæse nøgleværdi tabel inc ciffer; øge cifretallet rjmp return; og returner adiw ZH: ZL, 1; forøgelse Z rjmp setkey; og gå tilbage til top retur: pop temp2; gendan temp2 pop temp; gendanne temp reti

Bemærk, at den måde, stakken fungerer på, er, at den første tænding er den sidste slukning. Ligesom en stak papirer. Du ser, at vi i vores første to linjer skubber værdien af temp videre til stakken, derefter skubber vi temp2 videre til stakken, derefter bruger vi dem i underprogrammet til andre ting, og endelig gendanner vi dem til deres tidligere værdier igen ved at første popping temp2 off (da det var den sidste, der blev skubbet på den, er øverst på stakken og vil være den første, vi springer tilbage) og derefter popper temp.

Så fra nu af vil vi altid bruge denne metode. Den eneste gang, vi rent faktisk vil udpege et register for noget andet end en midlertidig variabel, er, når vi får brug for det overalt. For eksempel er registret kaldet "overløb" et, som vi bruger flere forskellige steder i programmet, og derfor vil vi gerne give det et navn. Selvfølgelig kunne vi stadig bruge det på den måde, vi har gjort med temp og temp2, da vi ville gendanne dets værdi, når vi er færdige. Men det ville spaghettificere tingene for meget. De er navngivet af en grund, og vi har allerede udpeget temp og temp2 til det job.

Trin 6: Lavpasfiltre og spændingsforstærker

Lavpasfiltre og spændingsforstærker
Lavpasfiltre og spændingsforstærker
Lavpasfiltre og spændingsforstærker
Lavpasfiltre og spændingsforstærker

For at rydde lidt op i støjen og få vores tastatur til at fungere bedre, vil vi tilføje et par lavpasfiltre. Disse filtrerer væk fra højfrekvent støj og lader lavfrekvenssignalet passere igennem. Grundlæggende er måden at gøre dette blot at tilføje en 68 pf kondensator mellem vores analoge indgang og jord og også en 0,1 mikrofarad (dvs. 104) kondensator mellem vores PD4 (INT0) afbrydelse og jord. Hvis du leger med disse, mens du trykker på knapperne på tastaturet, vil du kunne se, hvad de gør.

Dernæst vil vi lave en spændingsforstærker. Det viser sig, at den nederste række af taster på tastaturet (samt genopkaldstasten) udsender en for lav spænding til at udløse INT0 -afbrydelsen. Den analoge port er følsom nok til at aflæse de lave spændinger fra disse taster, men vores afbrydelsesnål får ikke en god nok stigende kant til at afbryde, når vi trykker på disse taster. Derfor vil vi gerne have en måde at sikre, at en flot spændingsstigende kant rammer PD4, men den samme lavspænding rammer ADC0. Dette er en temmelig høj ordre, da begge signaler kommer fra den samme outputledning på vores tastatur. Der er en række sofistikerede måder at gøre dette på, men vi kommer ikke til at bruge vores tastatur længere efter denne vejledning, så lad os bare slå en metode sammen, der virker (knap).

Du skal først tilslutte en ekstern knap for at udskifte INT0 -afbrydelsen og styre displayet ved at holde en tast på tastaturet og klikke på knappen. Dette har færre tastaturproblemer og giver dig mulighed for at være sikker på, at dine spændinger er indstillet korrekt på tastaturets opslagstabel. Når du ved, at tastaturet er korrekt forbundet, skal du slippe af med knappen og sætte INT0 -afbrydelsen tilbage. Der er nogle alvorlige støj- og spændingsproblemer, der styrer tastaturet på denne måde, så det er godt at vide, at alt fungerer, så fremtidige problemer kan isoleres til INT0 -tasten.

Når du tilslutter dit tastatur og din spændingsforstærker, er det meget sandsynligt, at de samme modstandsværdier, som jeg har brugt, ikke virker. Så du bliver nødt til at lave nogle eksperimenter for at få værdier, der virker for dig.

Hvis du ser på diagrammet, jeg har knyttet til dette trin, vil du se, hvordan spændingsforstærkeren kommer til at fungere. Vi bruger nogle modstande og to transistorer. Den måde transistorer fungerer på (se databladene!) pin. I tilfælde af 2N3904 -transistoren, som vi bruger her, er spændingen 0,65V. Nu tager vi denne spænding fra vores output fra tastaturet, og vi ønsker ikke at ændre denne output, så vi vil sætte en stor modstand mellem output fra tastaturet og basen på den første transistor (jeg brugte 1 Mohm). Jeg har mærket dette som R_1 i diagrammet. Derefter vil vi oprette en spændingsdeler, så transistorens bund er "næsten" ved 0,65 volt allerede, og kun en lille smule mere vil skubbe den over toppen og mætte den. Den teeny weeny bit kommer fra output fra tastaturet, når vi trykker på en knap. Da de nederste taster på tastaturet kun udsender en lille spænding, skal vi allerede være meget tæt på mætning, for at de er nok. Spændingsdelers modstande er mærket R_a og R_b på diagrammet. Jeg brugte R_a = 1Mohm og R_b = 560Kohm, men det er næsten sikkert, at du bliver nødt til at lege med disse tal for at få det rigtigt til din opsætning. Du vil måske have en væg i nærheden til at slå hovedet mod og to eller tre glas scotch ved hånden (jeg vil anbefale Laphroaig - dyrt, men det er det værd, hvis du kan lide røg. Hvis tingene bliver virkelig vanvittige, så tag bare en kande af BV og bosætte sig om natten)

Lad os nu se på, hvordan transistorer kommer til at få os en flot stigende kant ind på INT0 -tasten og generere vores tastetryksafbrydelse. Lad os først se på, hvad der sker, når jeg ikke trykker på en tast. I så fald er den første transistor (mærket T1 i diagrammet) slukket. Så der strømmer ingen strøm mellem kollektor- og emitterstifterne. Således vil basen af den anden transistor (mærket T2) blive trukket højt, og den vil således mætte, så strøm kan strømme mellem dens ben. Det betyder, at emitteren af T2 trækkes lavt, da den er forbundet til kollektoren, som selv er forbundet til jorden. Således vil udgangen, der går til vores INT0 -tastetryksafbrydelsesstift (PD4) være lav, og der vil ikke være nogen afbrydelse.

Hvad sker der nu, når jeg trykker på en tast? Jamen så går basen på T1 over 0,65V (i tilfælde af de nederste taster går den kun knap over!), Og så får strømmen lov til at strømme, hvilket vil trække basen af T2 til lav spænding, og dette vil lukke for T2. Men vi ser, at når T2 er slukket, så trækkes outputtet højt, og derfor får vi et 5V -signal til vores INT0 -pin, og det vil forårsage en afbrydelse.

Læg mærke til, hvad nettoresultatet er her. Hvis vi trykker på 1 -tasten, får vi 5V til PD4 uden at ændre output betydeligt til ADC0, og endnu vigtigere, selvom vi skubber stjerne, 0, hash eller genopkald, får vi også et 5V -signal til INT0 og også forårsager en afbrydelse! Dette er vigtigt, da hvis vi bare gik direkte fra tastaturets udgang til INT0 -stiften, genererer disse taster næsten ingen spænding, og de vil ikke være nok til at udløse denne afbrydelsesstift. Vores spændingsforstærker har løst dette problem.

Trin 7: 4-cifret displaykode og video

Det er alt til tutorial 9! Jeg har vedhæftet koden og en video, der viser operationen.

Dette vil være sidste gang, vi vil bruge det analoge tastatur (gudskelov). Det var svært at bruge, men det var også meget nyttigt at hjælpe os med at lære om analog-til-digital konvertering, analoge porte, afbrydelser, multiplexing, støjfiltre, spændingsforstærkere og mange aspekter ved samlingskodning fra opslagstabeller til timer/tællere osv. Derfor besluttede vi at bruge det. (plus det er sjovt at scuffe ting).

Nu skal vi se på kommunikation igen og få vores 7-segmenter og vores 4-cifrede displays til at aflæse vores terningkast fra vores terningrulle på samme måde, som vi gjorde med vores registeranalysator. Denne gang vil vi bruge to-wire grænsefladen frem for vores hackede sammen morse kode metode.

Når kommunikationen fungerer, og rullerne vises på skærmen, kan vi endelig lave det første stykke af vores slutprodukt. Du vil bemærke, at uden alle de analoge port -ting vil vores kode blive betydeligt kortere og sandsynligvis lettere at læse.

Til jer der er ambitiøse. Her er et "projekt", som du kan prøve, som du helt sikkert har den viden at gøre på dette tidspunkt, hvis du har gennemgået alle disse øvelser til dette punkt:

Projekt: Lav en lommeregner! Brug vores 4-cifrede display og vores tastatur, og tilføj et eksternt tastetryk, der fungerer som en "enter" -tast. Kort stjernen til "tider", hash for at "opdele" genopkaldet til "plus" og blitzen til "minus", og skriv en lommeregnerutine, der fungerer som en af de gamle HP "reverse polish" -beregnere, som alle ingeniører havde dengang. Dvs. måden de fungerer på er, at du indtaster et nummer og trykker på "enter". Dette skubber det tal videre til stakken, derefter indtaster du et andet nummer og trykker på "enter", som skubber det andet tal videre til stakken. Til sidst trykker du på en af operationerne som X, /, + eller - og den vil anvende denne handling på de to øverste tal på stakken, vise resultatet og skubbe resultatet ind på stakken, så du kan bruge det igen, hvis du synes godt om. For eksempel for at tilføje 2+3 ville du gøre: 2, "enter", 3, "enter", "+" og displayet ville derefter læse 5. Du ved, hvordan du bruger stakken, displayet, tastaturet, og du har det meste af baggrundskoden allerede skrevet. Tilføj blot enter -nøglen og de underrutiner, der er nødvendige til regnemaskinen. Det er lidt mere kompliceret, end du måske først tror, men det er sjovt og muligt.

Vi ses næste gang!

Anbefalede: