Taula de continguts:

Tutorial AVR Assembler 9: 7 passos
Tutorial AVR Assembler 9: 7 passos

Vídeo: Tutorial AVR Assembler 9: 7 passos

Vídeo: Tutorial AVR Assembler 9: 7 passos
Vídeo: Atmel Studio 2024, Juliol
Anonim
Tutorial AVR Assembler 9
Tutorial AVR Assembler 9

Benvingut al tutorial 9.

Avui mostrarem com controlar tant una pantalla de 7 segments com una pantalla de 4 dígits mitjançant el nostre codi de llenguatge de muntatge ATmega328P i AVR. Al llarg de fer això, haurem de desviar-nos de com utilitzar la pila per reduir el nombre de registres que hem de lligar. Afegirem un parell de condensadors (filtres de pas baix) per intentar reduir el soroll del nostre teclat. Crearem un amplificador de tensió d’un parell de transistors perquè el nostre interruptor d’interrupció INT0 funcioni millor per als botons de baixa tensió de la fila inferior del teclat. I xocarem una mica amb el cap contra la paret intentant obtenir les resistències correctes perquè la cosa funcioni correctament.

Utilitzarem el teclat del tutorial 7

Per fer aquest tutorial, a més de les coses estàndard, necessitareu:

  1. Una pantalla de 7 segments

    www.sparkfun.com/products/8546

  2. Una pantalla de 4 dígits

    www.sparkfun.com/products/11407

  3. Un polsador

    www.sparkfun.com/products/97

  4. Els fulls de dades de la pantalla que es poden descarregar des de les seves respectives pàgines enllaçades anteriorment.
  5. Un condensador ceràmic de 68 pf, un parell de 104 condensadors, un munt de resistències, dos transistors NPN 2N3904.

Aquí hi ha un enllaç a la col·lecció completa dels meus tutorials del muntador AVR:

Pas 1: cablejar la pantalla de 7 seg

Cablatge de la pantalla de 7 seg
Cablatge de la pantalla de 7 seg
Cablatge de la pantalla de 7 seg
Cablatge de la pantalla de 7 seg
Cablatge de la pantalla de 7 seg
Cablatge de la pantalla de 7 seg

Utilitzarem el mateix codi que hem utilitzat al Tutorial 7 per al teclat per controlar la pantalla de 7 segments. Per tant, haureu de fer-ne una còpia i la modificarem.

Cartografiarem els segments als pins del nostre microcontrolador de la següent manera:

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

on es mostren les lletres dels segments a la imatge juntament amb el pinout corresponent a 5V comuns i cadascun dels segments de LED, inclòs el punt decimal (dp) a la part inferior dreta de la pantalla. La raó d'això és que podem introduir tot el número en un registre únic i sortir que es registra als ports B i D per il·luminar els segments. Com podeu veure, els bits es numeren seqüencialment de 0 a 7 i, per tant, es maparan als pins correctes sense haver de configurar i esborrar bits individuals.

Com podeu veure pel codi que hem adjuntat al següent pas, hem traslladat la nostra rutina de visualització a una macro i hem alliberat els pins SDA i SCL per al seu ús futur al següent tutorial.

He d'afegir que cal posar una resistència entre l'ànode comú de la pantalla i el carril de 5V. Vaig escollir una resistència de 330 ohms com sempre, però si voleu, podríeu calcular la resistència mínima necessària per obtenir la màxima brillantor de la pantalla sense fregir-la. A continuació s’explica com fer-ho:

Primer mireu el full de dades i observeu que a la primera pàgina hi apareixen diverses propietats de la pantalla. Les quantitats importants són el "corrent directe" (I_f = 20mA) i el "voltatge directe" (V_f = 2.2V). Això us indica que voleu que la caiguda de tensió a la pantalla sigui si el corrent és igual al corrent directe. Aquest és el corrent màxim que prendrà la pantalla sense fregir-se. En conseqüència, també és la màxima brillantor que podeu treure dels segments.

Per tant, fem servir la llei d’Ohm i la regla del bucle de Kirchoff per esbrinar quina resistència mínima hauríem de posar en sèrie amb la pantalla per obtenir la màxima brillantor. La regla de Kirchoff diu que la suma del canvi de voltatge al voltant d’un bucle tancat en un circuit és igual a zero i la llei d’Ohm diu que la caiguda de tensió a través d’una resistència de resistència R és: V = I R on I és el corrent que circula per la resistència.

Per tant, donada una tensió de font de V i donant la volta al nostre circuit, tenim:

V - V_f - I R = 0

el que significa (V - V_f) / I = R. Per tant, la resistència necessària per obtenir la màxima brillantor (i probablement fregir els segments) seria:

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

Per tant, si ho volguéssiu, podríeu fer servir 150 ohms sense preocupacions. Tot i això, crec que 140 ohms el fan massa brillant per al meu gust i, per tant, faig servir 330 ohms (que és una mena de resistència personal de Goldilocks per als LED)

Pas 2: Codi de muntatge i vídeo

He adjuntat el codi de muntatge i un vídeo que mostra el funcionament del teclat amb la pantalla. Com podeu veure, simplement hem assignat la tecla Rellamada a "r", la tecla flash a "F", l'asterisc a "A" i el signe hash a "H". Aquestes es podrien assignar a diverses operacions, com ara retrocés, entrada i què passa si voleu continuar utilitzant el teclat per escriure números en pantalles LCD o pantalles de 4 dígits. Aquesta vegada no passaré pel codi línia per línia, ja que és molt similar al que ja hem fet en tutorials anteriors. Les diferències són principalment més de les mateixes coses que ja sabem fer, com ara les interrupcions i les taules de cerca. Simplement hauríeu de revisar el codi i mirar les coses noves que hem afegit i les coses que hem canviat i esbrinar-les a partir d’aquí. Tornarem a l’anàlisi línia per línia al següent tutorial quan introduïm nous aspectes de la codificació del llenguatge ensamblador als microcontroladors AVR.

Vegem ara una pantalla de 4 dígits.

Pas 3: cablejar la pantalla de 4 dígits

Cablatge de la pantalla de 4 dígits
Cablatge de la pantalla de 4 dígits
Cablatge de la pantalla de 4 dígits
Cablatge de la pantalla de 4 dígits

Segons el full de dades, la pantalla de 4 dígits té un corrent directe de 60 mA i un voltatge directe de 2,2 volts. Per tant, pel mateix càlcul que abans, podria fer servir una resistència de 47 ohms si ho volgués. En lloc d'això, faré servir un … hrm.. deixeu-me veure … què hi ha uns 330 ohms.

La manera en què es connecta la pantalla de 4 dígits és que hi ha 4 ànodes, un per a cadascun dels dígits, i els altres pins controlen quin segment apareix a cadascun. Podeu mostrar 4 dígits simultàniament perquè estan multiplexats. En altres paraules, tal com vam fer per al parell de daus, simplement fem circular la potència a través de cadascun dels ànodes al seu torn i els parpellejarà un darrere l’altre. Ho farà tan ràpidament que els nostres ulls no veuran el parpelleig i semblarà que els quatre dígits estiguin activats. Tanmateix, per estar segur, la forma en què el codificarem és establir els quatre dígits i, a continuació, fer un cicle dels ànodes en lloc de configurar, moure, configurar, moure, etc. D'aquesta manera, podem obtenir un temps precís entre il·luminar cada dígit..

De moment, comprovem que tots els segments funcionen.

Col·loqueu la vostra resistència de 330 ohm entre el carril positiu de la vostra taula i el primer ànode de la pantalla. El full de dades ens indica que els pins estan numerats de l’1 al 16 en sentit antihorari començant per la part inferior esquerra (quan es mira la pantalla amb normalitat.. amb els punts decimals a la part inferior) i s’indica que els ànodes són els números de pin 6, 8, 9 i 12.

Per tant, connectem el pin 6 a 5V i després prenem un avantatge negatiu del carril GND i el col·loquem a tots els altres pins i veiem que tots els segments s’il·luminen al dígit al qual correspon (que és en realitat el segon dígit de el dret). Assegureu-vos que obteniu els 7 segments i el punt decimal per il·luminar-se.

Ara cliqueu el cable GND en un dels pins per il·luminar un dels segments i, aquesta vegada, moveu la resistència als altres 3 ànodes i observeu que el mateix segment s’il·lumina en cadascun dels altres dígits.

Alguna cosa inusual?

Resulta que la fixació del full de dades és incorrecta. Això es deu al fet que és el full de dades i el pinout per a una pantalla de 12 pins de 4 dígits. És a dir, un sense dos punts ni punt decimal superior. La pantalla que vaig obtenir quan la vaig demanar és una pantalla de 16 pins de 4 dígits. De fet, a la meva, els ànodes del segment es troben als pins 1, 2, 6 i 8. L’ànode de còlon és el pin 4 (pin càtode 12) i l’ànode dp superior és el pin 10 (el càtode és pin 9)

Exercici 1: utilitzeu la resistència i el cable de terra per localitzar quin pin correspon a quin segment i punt decimal de la pantalla, de manera que obtinguem els segments correctes que s’il·luminen quan el codifiquem.

La forma en què volem codificar el mapa de segments és exactament igual que amb la pantalla de 7 segments de només dígits de més amunt: no hem de canviar res al codi, l’únic que canviem és com estan connectats els cables. al tauler. Simplement connecteu el pin de port correcte del microcontrolador al pin corresponent de la pantalla de 4 dígits perquè, per exemple, PB0 segueixi passant al pin corresponent al segment a, PB1 al segment B, etc.

L'única diferència és que ara necessitem 4 pins addicionals per als ànodes, ja que ja no podem anar al carril de 5V. Necessitem que el microcontrolador decideixi quin dígit obté el suc.

Per tant, utilitzarem PC1, PC2, PC3 i PD4 per controlar els ànodes dels 4 dígits.

Podeu continuar endavant i endollar els cables. (no us oblideu de les resistències de 330 ohm dels cables de l’ànode!)

Pas 4: Codificació de la pantalla de 4 dígits

Codificació de la pantalla de 4 dígits
Codificació de la pantalla de 4 dígits

Pensem en com volem codificar aquesta pantalla.

Ens agradaria que l'usuari premés els botons del teclat i que els números apareixessin seqüencialment a la pantalla mentre premen cada botó. Per tant, si premo un 1 seguit d’un 2, apareixerà a la pantalla com a 12. També m’agradaria emmagatzemar aquest valor, 12, per a ús intern, però hi arribarem una mica més tard. De moment, només vull escriure una nova macro que us prengui les tecles i les mostri. Tot i això, com que només tenim 4 dígits, vull assegurar-me que només us permet escriure quatre números.

Un altre problema és que la manera de funcionar de la pantalla multiplexada de 4 dígits consisteix en fer circular els ànodes de manera que cada dígit només estigui encès durant una fracció de segon abans que es mostri el següent i després el següent i, finalment, torneu al primer de nou, etc. necessito una manera de codificar això.

També volem que mogui el "cursor" cap a la dreta un espai quan escrivim el següent dígit. De manera que si vull escriure 1234 per exemple, després d’escriure l’1, el cursor es desplaçarà de manera que el següent dígit que escrigui aparegui a la pantalla de 7 segments següent, etc. Mentre això passa, encara vull poder veure el que he escrit, de manera que ha de seguir circulant pels dígits i mostrant-los.

Sembla un ordre alt?

Les coses són encara pitjors. Necessitem 4 registres de propòsit general més que puguem utilitzar per emmagatzemar els valors actuals dels 4 dígits que volem mostrar (si els anem a recórrer els hem de guardar emmagatzemats en algun lloc) i el problema és que tenim he estat utilitzant registres de propòsit general com una bogeria i, si no en vigilem, ja no ens quedaran. Per tant, probablement sigui una bona idea abordar aquest problema més aviat que tard i mostrar-vos com alliberar els registres mitjançant la pila.

Comencem doncs, simplificant una mica les coses, utilitzant la pila i alliberant alguns registres i després intentarem realitzar la tasca de llegir i mostrar els nostres números a la pantalla de 4 dígits.

Pas 5: premeu Pop

Push 'n Pop
Push 'n Pop

Només hi ha uns quants "registres d'ús general" que tenim a la nostra disposició i, un cop utilitzats, ja no n'hi ha més. Per tant, és una bona pràctica de programació utilitzar-les només per a un parell de variables que s’utilitzen com a emmagatzematge temporal que necessiteu per llegir i escriure a ports i SRAM, o bé aquelles que necessitareu a les subrutines d’arreu i així nomenar-los. Per tant, el que he fet, ara que hem inicialitzat i estem aprenent a utilitzar la pila, és passar pel codi i trobar els registres de propòsit general que només s’utilitzen dins d’una única subrutina o interrupció i en cap altre lloc del codi i substituir ells amb un dels nostres registres temporals i un push and pop a la pila. De fet, si mireu el codi escrit per a microcontroladors més petits, o si retrocediu en el temps fins a quan tots els xips eren més petits, només veureu un parell de registres d’ús general que s’havien d’utilitzar per a tot, de manera que no podríeu només cal emmagatzemar-hi un valor i deixar-lo en pau, ja que segur que necessitava aquest registre per a altres coses. Per tant, veureu el botó "pushin" i el poppin a tot el lloc al codi. Potser hauria d'haver nomenat els nostres registres temporals de propòsit general AX i BX com a felicitacions respectuoses per als temps passats.

Un exemple ajudarà a fer-ho més clar.

Tingueu en compte que a la nostra conversió analògica a digital ADC_int, fem servir un registre de propòsit general que hem anomenat buttonH que hem utilitzat per carregar el valor d’ADCH i comparar-lo amb la nostra taula de cerca de conversions analògiques a polsadores de botons. Només fem servir aquest registre del botó H a la subrutina ADC_int i en cap altre lloc. Així doncs, utilitzarem la nostra variable temp2 que utilitzarem com a variable temporal que podem utilitzar dins de qualsevol subrutina i el seu valor no afectarà res fora d’aquesta subrutina (és a dir, el valor que li donem a ADC_int no s’utilitzarà enlloc) en cas contrari).

Un altre exemple es troba a la nostra macro de retard. Tenim un registre que hem anomenat "mil·lisegons" que conté el nostre temps de retard en mil·lisegons. En aquest cas es troba en una macro i recordem que la manera com funciona la macro és que el muntador col·loca tot el codi macro al lloc del programa on es diu. En aquest cas, ens agradaria desfer-nos de la variable "mil·lisegons" i substituir-la per una de les nostres variables temporals. En aquest cas ho faré una mica diferent per mostrar-vos com, fins i tot si el valor de la variable serà necessari en qualsevol altre lloc, encara el podem fer servir utilitzant la pila. Així que, en lloc de mil·lisegons, fem servir "temp" i, per tal de no trastornar altres coses que també utilitzen el valor de temp, simplement comencem la macro "endarrerir" "empenyent" la temp a la pila, llavors la fem servir en lloc de mil·lisegons i, al final de la macro, "recuperem" el seu valor anterior de la pila.

El resultat net és que hem "prestat" temp i temp2 per a ús temporal i, després, els hem restaurat als seus valors anteriors quan acabem.

Aquí teniu la rutina d’interrupcions ADC_int després de fer aquest canvi:

ADC_int:

empènyer la temperatura; guardeu la temperatura ja que la modificem aquí, premeu temp2; guardar temp2 lds temp2, ADCH; càrrega de tecles ldi ZH, alt (2 * números) ldi ZL, baix (2 * números) cpi temp2, 0 breq retorn; si els activadors de soroll no canvien 7segnumber setkey: lpm temp, Z +; carregar des de la taula i després de l'increment clc cp temp2, temp; compareu la tecla amb la taula brlo PC + 4; si ADCH és inferior, torneu-ho a provar lpm 7segnumber, Z; en cas contrari, carregueu la xifra inc de la taula de valors clau; incrementar el número de dígits rjmp return; i tornar per ZH: ZL, 1; increment Z rjmp setkey; i tornar a dalt tornar: pop temp2; restaurar temp2 pop temp; restaurar la reti temporal

Fixeu-vos que la manera com funciona la pila és que la primera activada és la darrera apagada. Igual que una pila de papers. Veureu que en les nostres primeres dues línies empenem el valor de temp a la pila, després empenem temp2 a la pila, les fem servir a la subrutina per a altres coses i, finalment, les restablim als seus valors anteriors. primer desactivant temp2 (ja que va ser l'últim que es va empènyer, es troba a la part superior de la pila i serà el primer que tornem a treure) i després apareixent temp.

Així doncs, a partir d’ara sempre farem servir aquest mètode. L'única vegada que designarem un registre per a una altra cosa que no sigui una variable temporal és quan ho necessitarem a tot arreu. Per exemple, el registre anomenat "desbordaments" és el que fem servir en diversos llocs diferents del programa i, per tant, ens agradaria donar-li un nom. Per descomptat, podríem utilitzar-lo de la manera que hem fet amb temp i temp2, ja que restauraríem el seu valor un cop acabem. Però això espagetificaria massa les coses. S’anomenen per una raó i tenim temp i temp2 ja designats per a aquesta feina.

Pas 6: Filtres de pas baix i amplificador de voltatge

Filtres de pas baix i amplificador de voltatge
Filtres de pas baix i amplificador de voltatge
Filtres de pas baix i amplificador de voltatge
Filtres de pas baix i amplificador de voltatge

Per netejar una mica el soroll i fer que el nostre teclat funcioni millor, volem afegir un parell de filtres de pas baix. Aquests filtren el soroll d'alta freqüència i permeten passar el senyal de baixa freqüència. Bàsicament, la manera de fer-ho és simplement afegir un condensador de 68 pf entre la nostra entrada analògica i la terra i també un condensador de 0,1 microfarad (és a dir, 104) entre la nostra interrupció PD4 (INT0) i la terra. Si jugueu amb aquests mentre premeu els botons del teclat, podreu veure què fan.

A continuació, volem fer un amplificador de tensió. Resulta que la fila inferior de tecles del teclat (així com la tecla de tornada a marcar) produeixen una tensió massa baixa per provocar la interrupció INT0. El port analògic és prou sensible per llegir els voltatges baixos d’aquestes tecles, però el nostre pin d’interrupció no obté una vora ascendent prou bona com per interrompre’ls quan premem aquestes tecles. Per tant, ens agradaria una forma d'assegurar-nos que una bona pujada de tensió arribi a PD4, però la mateixa baixa tensió arribi a ADC0. Es tracta d’un ordre força alt, ja que els dos senyals provenen del mateix cable de sortida del nostre teclat. Hi ha diverses maneres sofisticades de fer-ho, però ja no utilitzarem el teclat després d’aquest tutorial, així que combinem un mètode que funcioni (amb prou feines).

Primer heu de connectar un botó extern per substituir la interrupció INT0 i controlar la pantalla mantenint premuda una tecla del teclat i fent clic al botó. Això té menys problemes de teclat i us permetrà estar segurs que els voltatges s’estableixen correctament a la taula de cerca del teclat. Un cop hàgiu sabut que el teclat està connectat correctament, desfeu-vos del botó i torneu a posar la interrupció INT0. Hi ha problemes greus de soroll i tensió que controlen el teclat d'aquesta manera, per tant, és bo saber que tot funciona perquè els problemes futurs es puguin aïllar a la tecla INT0.

Quan connecteu el teclat i l'amplificador de tensió, és molt probable que els mateixos valors de resistència que he utilitzat no funcionin. Per tant, haureu de fer una mica d’experimentació per obtenir valors que us funcionin.

Si mireu el diagrama que he adjuntat a aquest pas, veureu com funcionarà l'amplificador de tensió. Utilitzem algunes resistències i dos transistors. El funcionament dels transistors (vegeu les fitxes tècniques) és que hi ha un voltatge mínim que cal introduir al pin base del transister (el pin central) que el saturarà i permetrà que el corrent flueixi entre el pin del col·lector i l’emissor. pin. En el cas del transistor 2N3904 que estem utilitzant aquí, la tensió és de 0,65V. Ara estem prenent aquest voltatge de la nostra sortida del teclat i no volem canviar aquesta sortida, de manera que posarem una gran resistència entre la sortida del teclat i la base del primer transistor (he utilitzat 1Mohm). Ho he etiquetat com a R_1 al diagrama. A continuació, volem configurar un divisor de tensió de manera que la base del transistor sigui "gairebé" a 0,65 volts i només una mica més de petita la pujarà per sobre i la saturarà. Aquest petit bit petit vindrà de la sortida del teclat quan premem un botó. Com que les tecles inferiors del teclat només produeixen una tensió petita, hem d’estar molt a prop de la saturació perquè siguin suficients. Els resistors divisors de tensió estan etiquetats al diagrama R_a i R_b. He utilitzat R_a = 1Mohm i R_b = 560Kohm, però és gairebé segur que haureu de jugar amb aquests números per fer-ho bé per a la vostra configuració. És possible que vulgueu tenir una paret a prop per xocar amb el cap i dos o tres gots d’escot a mà (us recomanaria Laphroaig, car, però val la pena si us agrada fumar. Si les coses es tornen bojes, només cal que tingueu una gerra de BV i conformar-se amb la nit)

Ara vegem com els transistors ens proporcionaran una bona pujada cap a la tecla INT0 i generaran la nostra interrupció de pressió. Primer vegem què passa quan no estic pressionant una tecla. En aquest cas, el primer transistor (etiquetat T1 al diagrama) està apagat. Així, doncs, no circula corrent entre el pin del col·lector i l’emissor. Així, la base de l’altre transistor (etiquetada amb T2) s’estirarà i, per tant, es saturarà permetent que el corrent flueixi entre els seus pins. Això vol dir que l’emissor de T2 es baixarà ja que està connectat al col·lector que està connectat a terra. Per tant, la sortida que es dirigeix al nostre pin d'interrupció (PD4) de pressió de tecla INT0 serà baixa i no hi haurà interrupció.

Ara, què passa quan premo una tecla? Doncs bé, llavors la base de T1 supera els 0,65 V (en el cas de les tecles inferiors només amb prou feines supera!) I llavors es deixarà fluir el corrent que farà que la base de T2 baixi de tensió i això apagarà T2. Però veiem que quan T2 està apagat, la sortida s’eleva i, per tant, obtindrem un senyal de 5V que anirà al nostre pin INT0 i provocarà una interrupció.

Fixeu-vos quin és el resultat net aquí. Si premem la tecla 1, obtenim 5V que van a PD4 sense canviar significativament la sortida que va a ADC0 i, el que és més important, fins i tot si premem Asterisk, 0, Hash o Redial, també obtindrem un senyal de 5V que va a INT0 i també provocant una interrupció Això és important, ja que si acabem d’anar directament de la sortida del teclat al pin INT0, aquestes tecles gairebé no generen voltatge i no seran suficients per activar aquest pin d’interrupció. El nostre amplificador de tensió ha resolt aquest problema.

Pas 7: codi de visualització i vídeo de 4 dígits

Això és tot per al tutorial 9! He adjuntat el codi i un vídeo que mostra l'operació.

Aquesta serà la darrera vegada que utilitzarem el teclat analògic (gràcies a Déu). Va ser difícil d’utilitzar, però també va ser molt útil per ajudar-nos a conèixer la conversió analògica a digital, els ports analògics, les interrupcions, el multiplexat, els filtres de soroll, els amplificadors de tensió i molts aspectes de la codificació de muntatges des de taules de cerca fins a temporitzadors / comptadors., etc. Per això vam decidir utilitzar-lo. (a més, és divertit buscar coses).

Ara tornarem a examinar la comunicació i aconseguirem que les nostres pantalles de 7 segments i de 4 dígits llegeixin els llançaments de daus del rodet de daus de la mateixa manera que ho vam fer amb el nostre analitzador de registres. Aquesta vegada utilitzarem la interfície de dos fils en lloc del mètode piratejat de codi morse.

Un cop tinguem les comunicacions en funcionament i apareguin els rotllos a les pantalles, finalment podrem fer la primera peça del nostre producte final. Notareu que, sense totes les coses del port analògic, el nostre codi serà significativament més curt i probablement més fàcil de llegir.

Per als que sou ambiciosos. Aquí teniu un "projecte" que podeu provar i que segur que teniu els coneixements necessaris per fer en aquest moment si heu passat tots aquests tutorials fins a aquest punt:

Projecte: Feu una calculadora! Utilitzeu la pantalla de 4 dígits i el teclat i afegiu un botó extern que actuï com una tecla "enter". Assigneu l'asterisc a "temps", el hash per "dividir" la remarcació a "més" i el flaix a "menys" i escriviu una rutina de calculadora que funcioni com una d'aquestes antigues calculadores HP de "poliment invers" que tenien tots els enginyers. enrere en el dia. És a dir, la manera com funcionen és que introduïu un número i premeu "entra". Això empeny aquest número a la pila i, a continuació, introduïu un segon número i premeu "enter", que empeny el segon número a la pila. Finalment, premeu una de les operacions com X, /, + o - i aplicarà aquesta operació als dos primers números de la pila, mostrarà el resultat i empenyeu el resultat a la pila perquè pugueu tornar a utilitzar-lo si M'agrada. Per exemple, per afegir 2 + 3, faria: 2, "introduïu", 3, "introduïu", "+" i la pantalla indicaria 5. Ja sabeu com utilitzar la pila, la pantalla, el teclat i tenen la majoria del codi de fons ja escrit. Només cal afegir la tecla d'inici i les subrutines necessàries per a la calculadora. És una mica més complicat del que es podria pensar al principi, però és divertit i factible.

Ens veiem a la propera!

Recomanat: