100% encontró este documento útil (1 voto)
177 vistas158 páginas

Cekit Microcontroladore Programacion

Cargado por

Miguel Rodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
177 vistas158 páginas

Cekit Microcontroladore Programacion

Cargado por

Miguel Rodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 158
a, CONCEPTOS BASICOS DE PROGRAMACION Cuando se incluye un microcontro- Jador en un circuito 0 en un aparato electrénico, se debe establecer la com- binacién adecuada de hardware (cir- cuitos) y sofiware (programas). A esto se le llama un disefio con microcon- trolador. Cuando éste se adquiere del fabricante o a través de un distribui- dor, no incluye el programa el cual debe ser planeado y escrito por el di- sefiador del hardware 0 por un pro- gramador, que en la mayoria de los casos, es él mismo. Curso préctco de Microcontrotadores ex @ OSC OTTO EMEC Introduccién Los microcontroladores permiten configurar un sistema de acuerdo con los requerimientos im- puestos por el problema que se va a resolver, gra- cias a una caracterfgtica fundamental que com- parten con las computadoras convencionales: son programables. Por esto es posible incorporarlos a un sistema electrénico, normalmente orientado ala captura y entrega de informacién, permitien- do decidir lo que debe hacerse con los datos y sefiales procesados. El arte de trabajar con microcontroladores requiere del dominio de dos habilidades funda- mentales: la primera es la destreza para selec~ cionar componentes electrénicos y conectarlos adecuadamente, y la segunda, es ¢l dominio de las técnicas de programacién, gracias a las cua- les se puede lograr que el microcontrolador se comporte segiin los requerimientos de la solu- cién propuesta. Sil lector ya ha estado inmerso en el mun- do de la electrdnica, entonces tendré las bases necesarias para entender el funcionamiento in- terno y operativo del microcontrolador y podré FFigura 1.1 Sistema de control para la deteccién de objetos metilicas & crn: Curso préctico de Microcontrotadares configurar el hardware 0 los citcuitos sin mayo- res dificultades. Sin embargo, el aspecto de la programacién puede resultarle un poco comple- jo. De todas maneras, independientemente de las bases teéricas y précticas que usted posea, encon- trard en este curso los conocimientos de progra- macién necesatios para realizar con éxito los pro- yectos propuestos en otras secciones de la obra. Fundamentos de programacin Para iniciarnos en los fundamentos de la progra~ macién, veamos primero un sencillo ejemplo de la vida real tomando como elemento de control una computadora genética. El diagrama de la fi- gura 1.1 corresponde al esquema de control uti- lizado en algunos aeropuertos para detectar la presencia de objetos metilicos escondidos en la ropa o adheridos al cuerpo de los pasajeros. Figura 1.2 Diagrama de bloques del sistema de deteccién de abjetos metalicos La misién del detector de metales es la de producit una sefial eléctrica cada ver que una persona cruce frente al detector portando algiin objeto metélico. En cuanto a la alarma sonora, &ta debe producir una sefal audible en presen- cia de un elemento peligroso, con el fin de aler- rara las aucoridades correspondientes, figura 1.2. {Cuil es el papel que cumple la computado- ra en este proceso? Como seguramente podré deducir el lector, la computadora esta conectada de modo permanente tanto al detector de meta- les, como al dispositivo sonoro, figura 1.3. La interfaz de entrada se encarga de adaptar la sefial proveniente del detector, introduciéndo- Ia en la memoria de la computadora. El amplifi- cador de salida se utiliza para aumentar el tama- fio de la sefial eléctrica generada, aplicandola ala alarma sonora y generando un sonido percepti- ble por el ofdo humano. Programacion (ono eg Figura 1.3 Ahora surge una pregunta mds interesante que la anterior: zosmo es posible que la compu- radora active la alarma sonora tinicamente cuan- do un pasajero cruza portando un objeto met co, mientras que la mantiene en silencio cuando no detecta el metal? Antes de responder a esta pregunta, es necesario comprender un aspecto clave relacionado con el funcionamiento interno de una computadora. En contra de lo que pudiera pensarse, ésta no “observa” ni controla el mundo exterior de manera continua, Ella utiliza pequefios perfo- dos de tiempo para realizar las acciones que le son encomendadas, por lo que la tinica opcién que le queda es la de organizar sus tareas de for- ma secuencial en el tiempo, figura 1.4. Este punto debe recordarse siempre, ya que es la base del funcionamiento de cualquier sistema basa- do en computadoras, microprocesadores 0 mi- crocontroladores. ado Es Pero tec Erect a Figura 1.4 La computadora trabaja a intervalos de tiempo predefinidos DDiagrama de bloques del sistema de deteccién de objetos metalicos En palabras sencillas, ;qué funciones debe- tfa realizar la computadora de la figura 1.1 para set eficiente en la tarea de detectar objetos meté- licos?. Observe los siguientes pasos presentados en la figura 1.5. Cane Aes Sees een aren espudsla es" a: Figura 1.5 Programa para resolver probisma de detector de metals. Ahora le preguntamos al lector: zen donde piensa usted que debe almacenarse este conjun- to de instrucciones? La respuesta no es compli- cada: en el interior de la computadora, de un microcontrolador o de un sistema con micro- procesador. Pues bien, el conjunto de instrucciones que acabamos de presentar es lo que se conoce con el Curso préctico de Microcontroladores dase: @ nombre de PROGRAMA y representa el cora- 26n de los sistemas electrénicos modernos, en los cuales es tan importante la interconexién de los circuitos eléctricos como el desarrollo de los pro- gramas orientados a la solucién del problema. Recuerde q La misién de un programador es la de en- render el problema que debe resolver, escribir la secuencia de instrucciones requeridas en el Jen- guaje apropiado, almacenar la secuencia de ins- trucciones en la memoria interna de la computa- dora y, por tiltimo, ejecutar 0 poner en marcha el programa creado, figura 1.6. Figura 1.6 El trabajo de un programador Lenguajes de programacién Qué lenguaje debe utilizarse para escribir un pro- grama? La respuesta depende de la computadora © en nuestro caso, del microcontrolador utiliza- do y del problema que se va a resolver. Si su pro- blema es tinicamente describir los pasos que de- ben seguirse para alcanzar el resultado deseado, es suficiente con emplear frases tomadas del idio- ma espafiol, naturalmente en el orden que resul- te mds adecuado. Un ejemplo de ello es el pro- grama que presentamos en la figura 1.5. & excrr: Curso practico de Microcontroladores Pero, jserd posible que una computador, como una de las muchas utilizadas en un acro- puerto, pueda entender este tipo de programa? El sentido comtin nos dice que no: es necesario convertir cada una de las instrucciones al “idio- ma” que comprenden las computadoras. Exis- ten varios idiomas lenguajes utilizados por las computadoras modernas. Algunos de ellos tie- nen como finalidad ayudar a resolver proble- mas de carécter administrativo, como el lenguaje COBOL, por ejemplo, mientras que otros ayu- dan a crear programas de utilidad para ingenie- ros, como FORTRAN o PASCAL, para citar solamente dos ejemplos. Cuando se trata de resolver un problema cuya catacteristica es el control de componen- tes electrdnicos, como en el caso de los micro- controladores, se debe recurtir a un lenguaje es- pecializado. El mas comin de ellos recibe el nombre de LENGUAJE ENSAMBLADOR o ASSEMBLER. Este lenguaje esta compuesto por un conjunte de palabras sencillas que permiten describir acciones bisicas, como por ejemplo el movimiento de datos entre las diferentes partes del sistema. Una de las dificultades que aparece cuando se utiliza el lenguaje ENSAMBLADOR tiene que yer con el hecho de que cada computadora o cada familia de microcontroladores tiene el suyo pro- pio. Sin embargo, y de acuerdo a nuestra expe- riencia, estamos convencidos de que si usted aprende a programar correctamente desde la base, en un cierto lenguaje, sin importar cual sea, esta- rd en condiciones de transferir sus habilidades a un sistema diferente. Con el objeto de aclarar las ideas, y empezar a entrar en materia, vamos a mostrarle como es- cribir el programa de la figura 1.5 en lenguaje ENSAMBLADOR. Por comodidad y facilidad didactica, vamos a utilizar por ahora instruccio- nes para una computadora genética, es decir, una computadora que tenga la mayoria de elementos presentes en las restantes computadoras. foe ae [oom Detector de metales Posicin de memoria Alarma sonora Vale 1 »)) Qué valor tiene dato en memoria? Vale 0 Para facilitar las cosas, vamos a mostrar el proceso gréficamente, figura 1.7 1P20 | ag Figura 1.7 Solucién visual del problema de! detector de metales Ahora que usted ha visto la solucién gréfica del problema, podré entender la conversi6n a palabras del mismo proceso, figura 1.8. Ya estamos preparados para escribir la so lucién en lenguaje ENSAMBLADOR gené- rico. En realidad, todo lo que tenemos que hacer es utilizar palabras més cortas, y esta- blecer convenios que permitan realizar una escritura uniforme. Cada paso se numera en forma ascendente, yen cada uno de ellos se almacena la cortes- pondiente instruccién, figura 1.9. La columna de “Comentario” se utiliza para dar una expli- cacién de cada instruccién y sila instruccién es muy obvia, no se utiliza. Curso préctico de Microcontroladores ex © ED el proceso 3s: GEE Terminar Figura 1.8 Solucién en palabras del problema del detector de metales faneepius basicos de programa Figura 1.9. & programa escrito en lenguaje ENSAMBLADOR genético, E] lector debe acostumbrarse a traducir mentalmente las instrucciones escritas en len- guaje ENSAMBLADOR. Para ilustrar este proceso, vamos a realizar las correspondien- tes conversiones de los pasos mostrados en la figura 1. 9. EI lenguaje ENSAMBLADOR de las computadoras reales es atin mas compacto que el mostrado en Ja figura 9. Una versién més cercana a la realidad se muestra en la figura 1.10. <> eax Figura 1.10 Ei programa escrito en lenguaje ENSAMBLADOR _genéirico, pera més compacto. Simplemente, hemos utilizado palabras mas cortas. Vamos a repetir, nuevamente, la traduccién mental de instrucciones. Sin em- bargo, le sugerimos que observe con cuidado la instruccién del paso 0004, ya que en ella hemos realizado una mejora que confiere ma- yor claridad al proceso de programacién. En lugar de indicar que se activa la alarma sonora, es preferible escribir (enviar) un dato al dispositive fisico: 1 para activar, 0 para apagar. Mis adelante estudiaremos programas simi- lates a los mostrados en las figuras 1.9 y 1.10, pero utilizando el lenguaje ENSAMBLADOR de un microcontrolador real. El diagrama de bloques o de flujo Es bastante comin, para facilitar su trabajo, que los programadores utilicen elementos grificos para realzar visualmente las caracteristicas de los componentes que hacen parte de la solucién de un problema. Por este motivo, no es tampoco de extrafiar que los programas de las computa- doras se disefien a partir de esquemas concretos, Programacia Inicio eu) Meee CU Id ‘Fgura 1.11 Diagrama de bioques para programe ce detector ce metals tan acciones coneretas que deben ser ejecutadas por la computadora, figura 1.12. Figura 1.12 Una accién simple GEER Derener la cjecucidn del programa. Las flechas indican el flujo que debe se- guir la computadora para ejecutar las acciones indicadas. No es necesario numerar los elemen- dado ori is [o que ha dado orgen «una representcién de Te ee aac rne acan con catdad el nominada DIAGRAMA DE BLOQUES, cono- "58 é aaa cpconclnenbiedeDIAGRAMADE 90.4 debe spite, gura 1.13. FLUJO, Observe a continuacién el programa de In figura’, pero presentaco mediante un diagra- ma de bloques, figura 1.11. | ae En esta construccién se observan varios ele- mentos que es conveniente enumerar. En primer lugar, las figuras con forma rectangular represen- Figura 1.13 Flechas que indican el fujo de sjecucién del programa cua rite de nrocnttares: GAC od Un figura con forma de rombo representa una condicién que debe ser evaluada o analiza- da, y en base a este andlisis, tomar una decisién. Si la respuesta es satisfactoria, es decir, si se cumple la condicién, debe tomarse un determi- nado camino; en caso contrario, cuando no se cumple la condicién, debe tomarse un camino diferente, figura 1.14. SI NO Figura 1.14 Rombo que indica una decision Un rectingulo con los extremos redondea- dos indica una accién especial. En particular, si la figura contiene la palabra Inicio se indica a la computadora el punto en donde comenzar el programa. Siel componente contiene la palabra Fin, se indica a la computadora que el proceso ha ter- minado, figura 1.15. Figura 1.15. Inicio y Fin del programa Los textos presentes en los diversos com- ponentes hacen referencia a las acciones que se deben ejecutar. La informacién que se entrega en los pérrafos anteriores brinda una perspecti- va de las posibilidades visuales de las que dis- ponemos al elaborar un programa. Naturalmen- te, en programacién existen otros elementos que deben considerarse, pero las estudiaremos cuan- do sean necesarios. Conc NOSTRA Olner euteC De la computadora al microcontrolador En esta primera visién del mundo de la pro- gramacién, sélo nos resta observar un detalle de gran interés: zes Iégico utilizar una podero- say costosa computadora personal para detec- tar la presencia de objetos metdlicos? Es evi- dente que en el caso de que existan alternati- vas més simples y econémicas, éstas deben ser escogidas. Pero, zcudles son estas alternativas? A la pregunta planteada en el pérrafo anterior se puede responder haciendo referencia al com- ponente electrénico mds notable de nuestro tiempo: ef microcontrolador. Desde otro punto de vista, podemos defi- nit un microcontrolador como una computa- dora en miniatura alojada en un solo circuito integrado, pero con la capacidad suficiente para resolver problemas especificos de diferente complejidad, con lo que se obtiene un signifi- cativo ahorro en los recursos fisicos utilizados, figura 1.16. La arquirectura y el modo de operacién del mictocontrolador se estudian en la seccién de teorfa de esta obra. Los aspectos relacionados con las técnicas de programacién aplicadas al microcontrolador serdn deseritos completamen- tea lo largo de las proximas lecciones. Figura 1.16. Estructura interna de un microcontrolador © Aencr: Curso practico de Microcontroladores Ae SISTEIMMAS DE NUMERACION © EN LA PROGRAMACION DE MICROCONTROLADORES — Los seres humanos trabajamos con el sis- tema decimal, los microcontroladores tra- bajan con el sistema binario y para facili- tar la escritura de los programas de estos, se trabaja en el sistema hexadecimal. Por esto es importante conocer estos dos ulti- mos sistemas de numeracién si queremos aplicar en forma eficiente esta tecnologtfa. Gurso préctico sobre Microcontroladores crn: © Sistemas de numeracion Los microcontroladores son sistemas cuyo comportamiento no se define en el momento de su fabricacién, Para que un microcontrolador sea iil, se debe grabar en su memoria interna el con- junto de acciones que debe ejecutar. Una ver hecho esto, se dice que el microcontrolador ha sido programado, y se encuentra preparado para ejecutar los procesos de control que le han sido encomendados. Habitualmente, un microcontto- Jadot embebido (embedded) o incluido en un cit- cuito de control electrénico, mantiene su pto- grama original, en tanto no se presente ningiin desperfecto en cl circuito integrado. {Qué técnica se utiliza para programar un microcontrolador? En la seccién dedicada a los conceptos bésicos, se mencioné que las instrucciones del programa se deben codifi- car utilizando el lenguaje llamado ENSAM- BLADOR. Esto, aunque en principio parece correcto, no refleja exactamente lo que pasa en el interior del microcontrolador. En tilti- ma instancia, los microcontroladores sola- mente comprenden el lenguaje de los “unos” y los “ceros” o sistema binario; en otras pala- bras, son circuitos digirales. El programador, inicialmente, codifica la solucién del problema en lenguaje ENSAM- BLADOR. A continuacién, utilizando una computadora de soporte, transforma el progra- ma convirtiéndolo a cédigo de MAQUINA (unos y ceros). Este cédigo binario se graba en la memoria del microcontrolador, y es el que realmente se ejecuta al iniciar el ciclo de ope- racién del sistema. Estructura de los datos Un concepto fundamental a la hora de pro~ gramar un'microcontrolador, es el relacionado con la manipulacién de los datos provenientes del mundo exterior. Suponga, por un momen- ro, que usted decide construir un sistema que mida la temperatura de una habitacién y que active una alarma sonora cuando la tempera tura sobrepase los 26°C. {Cémo hace el microcontrolador para cono- cery manipular los datos que corresponden a la temperatura del medio ambiente? Recuerde: to- dos los datos manejados por un microcontrola- dor son de tipo digital, Esto significa que la in- formacién se representa internamente mediante niveles de voltaje discretos. Por ejemplo, un ni- vel de voltaje de 0 voltios se representa con el ntimero cero (0), mientras que un nivel de volea- je de +5 voltios se representa con el ntimero uno (1), figura 2.1. we Ovottios, nimero 0 +5 volts, nero 1 Figura 2.1 Representacién de un dgito binario :Cémo se puede representar una tempera- tura de 20°C, utilizando para ello unos y ceros? Una solucién a este problema se basa en el uso del sistema binario (base dos). Fl sistema binario se caracteriza por em- plear tinicamente los digitos 0 y 1. Para empe- zar aentrar en materia, vamos a mostrarle cSmo se pueden representar las temperaturas 0°C y 1°C en este sistema. Para el ejemplo plantea- do, la representacién es directa: basta con uti- lizar un simple digito binario (también deno- minado bit). ‘Temperatura Numero binario orc cc Pasemos ahora a representar con nime- ros binarios las temperaturas 0°C, 1°C, 2°C y 3°C. Si sélo disponemos de dos valores en el sistema binario, 0 y 1, zcémo es posible representar cuatro temperaturas diferentes? La solucién se obtiene agregando a la izquicrda del mimero binario un segundo digito (dif) con el cual se puedan crear combinaciones que no se repitan Gop GCITE: corso etic sobre Miceoconroladres ‘Temperatura Niimero binario orc 0 1°C 0 Zee A El digito (6) situado més ala derecha del ni- mero binario, toma los valores 0y 1 para las eempe- raturas 0°C y 1°C (exactamente igual que antes). Sin embargo, observe que esta situacién se repite para las temperaturas correspondientes a2°Cy 3°C. Laclave para diferenciar los dos rangos de vem- peratura (0°C -1°C y 2°C -3°C) estd en el bit mds ala izquierda del némero binario. Este bit coma el valor 0 para las dos primeras temperaturas (0°C y 1°C), y adquiere el valor 1 para las dos temperatu- ras restantes (2°C y 3°C). De este modo, aunque el bit de la derecha se repica en los rangos mostra- dos, la combinacién de los dos bits permite repre- sentar las cuatro temperaturas de manera tinica, Temperatura Numero binario orc 0 me Lt Representemos ahora las eemperaturas 0°C, 1°C, 2°C, 3°C, 4°C, 5°C, 6°Cy7°C. Cémo podré adivi- nar el lector, €s necesario agregar un nuevo bit en el extremo izquierdo del ntimero binario, de modo que se creen combinaciones tinicas, Observe el resultado: ‘Temperatura Niimero binario orc Vey Otten Las combinaciones de digitos binarios son tinicas; esto garantiza que cada temperatura se representa, también, de manera tinica. Podria- mos continuar haciendo crecer la tabla mostra- da, pero es evidente que se debe encontrar un mécodo que permita representar cualquier tem- perarura, sin importar cual sea su valor. Para empezar, observe el digico (bi) del ex- tremo izquierdo de los nuimeros binarios de la tabla anterior. Este digito vale 0 para las prime- ras cuatro temperaturas, mientras que vale 1 para las tiltimas cuatro. Gracias a la presencia de este tercer bit, se puede disponer de ocho temperatu- ras diferentes. Como regla general, cada bit que se agrega a la izquierda de un niimero binario, permite du- plicar la cantidad de elementos que se podfan diferenciar antes de agregarlo. El esquema de la figura 2.2 ilustra el peso 0 valor relativo que tiene el tercer digito (de dere- cha a izquierda) en cualquier ntimero binario. ‘Wimerostineries — jimero inert dedos digitas go ros digit El tercer bit de la iz- Auierda agrega ol valor 4 alnimero dela deren Figura 2.2 Ei peso de un bit de acuerdo con su posicion El efecto de colocar el valor 1 al tercer digito 3 similar a sumat 4 al ntimero binario de la dere- cha, En este sentido, el peso del rercer digico es 4. Al hablar de un it, es conveniente conocer su posicién dentro del ntimero binario, Es usual < (ia sistemas de numeracion que los digitos binarios se numeren de dere- cha a izquierda, en orden creciente, empezan- do con el valor 0, Para ilustrar los conceptos vis- tos hasta ahora, presentamos la estructura que tiene un mimeto binario de 8 bits, con los pesos asociados a cada digito binario, figura 2.3. Peso delbit 128 64 32 16 8 4 24 Posiciindelbit 7 6 5 432 1 0 “El peso de cada bites el doble que el peso del bit situado a su derecha” ‘Figura 2.3. Fesos asociados a cade bit Los pesos permiten establecer el valor deci- mal de un numero binatio. Observe el mimero binario 1011, correspondiente a una temperatu- rade 11°C. Si queremos encontrar el valor deci- mal a partir de esta representacién binaria, basta simplemente con sumar el peso de los digitos cuyo valor es 1 8+ 0 +1 Namero decimal oe “Unicamence importan los pesos de los bits del ntimero binario, cuyo valor es 1” Facil, verdad? ;Podrfa el lector indicar qué temperatura se representa con el ntimero bina- rio 11001101? Observe abajo la solucién: Hemos resaltado en negrilla los pesos de los bits cuyo valor es 1. El nimero decimal resulta Namero binario 1 1 Peso de los digitos binarios 128 64 x1) + Gx0) + xl) + (1x1) = de la suma de los pesos de los digitos binarios cuyo valor es 1. El digito situado mds a la iz quierda tiene el peso més alto, mientras que el digito sicuado més a la derecha es el digito que tiene el menor peso. El digito con mayor peso se denomina MSB (Most Significant Bit), mientas que el digito con el menor peso se denomina LSB (Least Significant Bit). Digito con menor peso (88) Digito con mayor peso use) Figura 24 Los digitos MSB y LSB Los primeros 16 ntimeros binarios son de gran importancia en el dominio de la electrénica digital, de los microcontroladores, de los micro- procesadores y de las computadoras. Estos nti- meros forman la base del sistema hexadecimal, el cual consiste de 16 simbolos diferentes. En la tabla de la figura 2.5 se muestran los ntimeros del 0 al 15 en su representacién bina- ria, decimal y hexadecimal. Ademés, se indica cémo derivarlos valores decima- les a partir de los pesos asociados a los bits cuyo valor es 1. En el sistema hexadecimal, Jos tlti- ‘mos seis niimeros se representan con las letras A, B, C, D, E y B tomadas todas ellas del alfabeto. La conversién de un ntimero binario al sistema hexadecimal no cambia el valor del nii- mero representado. Sin embargo, es una norma en electrénica utilizar ntimeros hexadecimales en lugar de nimeros binarios zpor qué? Observe la siguiente simplificacién: dado el mimero binario 11001101101 10011, encuentre el niimero hexa- decimal equivalente. ell Ot 32 16 8 4 2 1 (128x1)+(64x1)+(32x0)+(16x0)+(8x1)+(4x1)+(2x0)+(1x1) Niimero decimal 128 + 64+ 0 + 0+8+ 4+ 0+ 1=250 & GBI R: cx000 ps0 20870 tervcctrciadres El primer paso que se debe dar para resolver el problema propuesto consiste en dividir el nti- mero binario en grupos de 4 bits: se empieza agrupando los 4 bits a la derecha del ntimero bi- nario, se agrupan luego los 4 bits ubicados in- mediatamente a la izquierda, y el proceso conti- nia hasta que se agotan todos lds digitos del nii- mero binario original. Si el tiltimo grupo creado no contiene exactamente 4 bits, se recurre a com- pletarlo agregando ceros (no significativos) a su izquierda. Apliquemos este procedimiento al niimero binario 11001101101 10011. Figura 25 Equivaiente binarf, hexadecimal OPE Mech IL Ze Ze Ze Ze L a, eZ) Zz e ie . 5 |y decimal El segundo paso en la solucién del problema consiste en buscar en la tabla de ntimeros hexa- decimales el grupo binario a ser reemplazado, escribiendo en su lugar el ntimero hexadecimal correspondiente, figura 2.6 . Figura 26 Generac de un niimero hexadecimal ‘Una consecuencia positiva de a representacién hexadecimal estriba en que es mucho més fécil re- cordar el ntimero CDB3 en base 16, que su equiva- Curso prictico sobre Microcontroladores enn: & de numeracion lente-binatio 1100110110110011. Otraventaja que se deriva del uso de los ntimeros hexadecimales tie- ne que ver con la disminucién del espacio emplea- do para su representacién en documentos escritos. En los préximos apartados vamos a estable- cer algunas definiciones que seran titiles mas ade- lante. Bit Un bit es la unidad minima de informacién en tun sistema binario, y puede tomar sélo uno de estos valores: 1 6 0. Nibble Un nibble es un grupo de 4 bits. El nibble es cil para representar conjuntos de digitos decimales, como se ver4 a continuacién. BCD Un digito decimal: 0, 1, 2, 3, 4, 5, 6, 7,8 09 se puede representar mediante 4 digitos binarios (un nibble) La siguiente tabla muestra los digitos deci- males y su equivalence binario, al cual seo conoce con el nombre BCD (Binary Coded Decimal. Digito decimal Digito BCD Algunos sistemas permiten la representacién de los mimeros decimales en formato BCD. Cuando se utiliza esta forma de representacién, se reemplaza cada digito decimal por su equiva- lente en BCD, uno después de otro. El resultado que arroja este proceso difiere del que se obten- dria aplicando la numeracién binaria basada en pesos. Para ilustrar lo anterior, consideremos cl niimero 32; su representacién en binario es: 00100000. En la figura 2.7 puede apreciar su representacién en BCD. 3: mua Figura 2.7. Representacin en BCD del niimero 32 Byte Un byte es un grupo de 8 bits, En un byte, el bit de mayor peso, usualmente el de la izquierda, se denomina bit MSB; el bit de menor peso, usual- mente el de la derecha, se denomina bit LSB. El dyte es una de las estructuras de datos més utili- zadas en todos los sistemas de computacin. Word Una palabra (word) es un conjunto de 16 bits, y equivale a la unidn de 2 byzes. Ocasionalmente, es necesario agrupar un conjunto de 32 bits como si se tratara de una sola entidad. Esta nueva es- tructura (4 bytes) se conoce con el nombre de palabra doble (double). La figura 2.8 presenta un resumen de los cle- mentos vistos. a 3210 res 43240 Bit ‘Nibble Byte 154191211 0 9 8 7 6 5 4 3 2 to Word Figura 2.8 Representaciones binarias Rango de los niimeros binarios Si utilizamos tinicamente 2 digitos binarios, po- dremos diferenciar entre 4 entidades distintas: 00, 01, 10y 11. ;Cudntos elementos podtemos diferenciar con 16 bits? La respuesta a esta pre~ gunta no se obtiene generando todas las posibles combinaciones y luego contindolas, ya que esto Ievaria demasiado tiempo. En su lugar se em- plea la siguiente férmula: & err: Curso practico sobre Microcontroladores: Ntimero de combinaciones = 2" en donde m es el mimero de digitos binarios. Aplicando la férmula al problema planteado se obtiene: Numero de combinaciones = 2" = 65536 Operaciones basicas Los microcontroladores permiten el uso extensi- vo de las operaciones matemdticas bdsicas: es posible sumar o restar ntimeros binarios, realizar operaciones de tipo Iégico y desplazar el conte- nido binario de un registro o posicién de memo- ria, A continuacién, vamos a ilustrar las opera- ciones de suma y resta binaria. La suma de digitos binarios La suma de mimeros binarios es similar a la suma de niimeros decimales. Basta con recordar que en el caso del sistema binario, s6lo se utilizan dos digitos: el cero y el uno. La figura 2.9 permite entender el mecanismo empleado cuando se su- man mimeros binarios. 0 0 + 1 ee 1 1 1 10 Figura 2.9 La suma binaria La primera suma es evidente: al sumar dos ceros se obtiene un cero, La segunda suma, al igual que la tercera, tampoco presenta ninguna dificul- tad: al suimar el ntimero uno con el ntimero cero se obtiene como resultado el niimero uno. El caso més interesante corresponde a la cuarta columna: si suma el néimero uno con el ntimero uno, obtiene como respuesta el mime- ro dos. Recuerde: el ntimero dos se representa en el sistema binario con la combinacién 10. Sumar dos digitos con valor uno en el sis- tema binario produce como resultado el valor Lot relie cin) cero. Bl uno que sobra se acumula y pasa a la siguiente columna. La operaci6n binaria: 1 + 1+ 1, se puede resolver recurtiendo a sumas sucesivas, Obser- ve la figura 2.10. En el paso (a) se suman los dos primeros unos. La respuesta es cero y “lle- vo" uno. En el paso (b) se toma el valor calcula- do en el paso anterior (10) y se agrega al tercer uno que tenfamos pendiente por sumat. La res- puesta final es 11. Figura 2.10 Suma de tes oigtos binaros cuyo valores 1 ‘Suma de ndmeros binarios La suma de ndimeros binarios es similar a la suma de ntimeros decimales: se empieza con los digitos situados a la derecha del ntimero binario, suman- dolos entre si, y calculando, tanto el resultado de Ja suma como el valor del acarreo (cary) que se transfiere a la siguiente columna. EI proceso se repite para cada nueva co- lumna a la izquierda, pero comando en cuenta el bit de acarreo que viene de la columna més a la derecha. Elproceso descrito en el parrafo anterior pue- de resultar dificil para quien no tenga experien- cia previa con los sistemas binarios. Por esta ra- z6n, sugerimos que las sumas binarias que ten- gan algin grado de complejidad (mimeros con muchos digitos binarios) se resuelvan convirtien- do primero los nimeros al sistema decimal, rea- lizando a continuacién la suma y por iltimo, pa- sando la respuesta a su equivalente binario (un método més simple consiste en utilizar una cal- culadora que tenga incluida la posibilidad de su- mar nimeros binarios) curso prictoo sobs Meacontosirs GAIT: @ Sistemas de numeraci Numeros binarios negativos En apartados anteriores hemos visto como represen- tar ntimeros decimales en notacién binaria. Pero podrfamos preguntar: zy si el ntimero decimal es ne- gativo? La respuesta a esta cuestidn es clave para las operaciones de resta binaria. En primer lugar, antes de entrar en materia, vamos a recordar como se re- presenta (utilizando ocho bits) el ntimero decimal 3: 4Cémo se representa, en binario, el mimero decimal ~3 ? Para empezar, si usted suma el valor 3 al nti- mero —3, debe obtener como respuesta cl ntime- 10 0. Entonces, :qué valor debe sumarse al nti- mero binario 00000011 (3 decimal) para obte- ner el ntimero 00000000 (0 decimal)? Observe la respuesta en la figura 2.11. cuyo valor es cero se cambian por uno. A esto se lo llama complemento a uno. 3, Por tiltimo, se suma el bit 1 al ndimero obteni- do en el paso anterior. El resultado es el nuime- ro negativo buscado. Ejemplo: Representar en binario el niimero -25. Aplicacién del algoritmo 1, Convertir el niimero 25 a binario. Peso 128643216 8 4 Numero 25 10 0001 2. Complementar los digitos binarios. 00011001 11100110 Numero 25 Complemento a uno 3. Sumar al ntimero en complemento a uno con el valor 1. Figura 2.11 Nimero binario negativo Supongamos, por un momento, que el bitde acarreo no importa y puede desecharse. Si este fue- ra el caso, podrfamos asumir que el valor 11111101 equivale al mimero —3, ya que al su- marlo al ntimero 3 produce el valor 0. {Cémo puede representarse, en general, un mimero decimal negativo usando el sistema bina- rio? La respuesta esta contenida en el algoritmo denominado complement a dos lo cual se logra- dela siguiente manera: 1, Se convierte el niimero decimal a su repre- sentacién en binario. 2. Se invierten los digitos binarios: aquellos cuyo valor es uno se cambia por cero, y aquellos Resta de niimeros binarios Del apartado anterior debe resultar evidente que el proceso para realizar restas binarias con- siste simplemente en encontrar el nimero ne- gativo del valor a restar, sumAndolo a conti- nuacién al ntimero positivo. Esto es equiva lente (en decimal) a una operacién del tipo: 48 -32 = 48 + (-32). De nuevo, al igual que en la suma binaria, es més cémodo realizar primero la conversién de los nuimeros binarios a su equivalence decimal antes de proceder a realizar la resta. El resultado obtenido se convierte al equivalente binario ne- gativo, obteniéndose la respuesta deseada, En capitulos posteriores tendremos la ocasién de aplicar este método. £ pear: Curso préctico sobre Microcontroladores LECCION 3 OCI! mblador PROGRAMACION DE MICROCONTROLADORES Uno de los aspectos mas importantes en el disefio y en la ejecucién de pro- yectos y aparatos con microcontrola- dores, es la planeacién y escritura ade- cuadas de sus programas, los cuales varfan segtin la marca y el modelo del dispositivo utilizado, los circuitos ex- ternos a él conectados y la funcién a realizar. A partir de esta leccién ire- mos explicando, paso a paso, la me- todologia y las técnicas apropiadas para hacerlo. ‘ocontroladores La solucién de un problema de control elec- trdnico, basado en microcontroladores, incluye dos etapas fundamentales: escribir el programa en lenguaje ensamblador y generar el archivo binario gjecutable que debe grabarse en la memoria del microcontrolador. Para empezar, estudiaremos el proceso de ensamblado de cédigo. El ensamblador esté conformado por varios médulos independientes, cada uno de los cuales cumple una funcidn especifica. Los médulos més importantes son los siguientes: Ensamblador basico. Genera, a partir del c6- digo fuente, un archivo binario relocalizable. Este archivo puede ser almacenado en cualquier segmento disponible en la memoria del micro- controlador. Enlazador (linker). Crea, a partir del archivo bi- nario relocalizable, un archivo binario cjecuta- ble. Este eddigo es el que ejecuta directamente el microcontrolador. Control de librerias (lib). Este médulo permite creat archivos binarios que pueden ser unidos (enlazados) con otros bloques de cédigo binario, lo que facilita la reutilizacién de partes de pro- gramas generados en otros proyectos. El uso de librerfas simplifica el desarrollo de programas de gran tamatio y complejidad. La figura 3.1 muestra la estructura del en- samblador, asi como el flujo de informacién en- tre sus médulos. Pésigo do wea Ensamblador Figura 3.4 Estructura de! ensamblador En lo sucesivo emplearemos el término en- samblador para referiznos al conjunto completo de programas que genera un archivo binario a par- tir del cédigo fuente de un programa de usuario. Un programa de usuario es un programa escrito usando el lenguaje ensamblador. Su objetivo es la solucién de un problema de control electrénico. Un programa ensamblador es aquel que reci- be el cédigo fuente de un programa de usuario y genera un archivo binario ejecutable. Este cédigo se almacena en la memoria de progra- ma, y es ejecutado por la unidad central de proceso cada vez que el microcontrolador se pone en marcha, Conirol o sistema embebido Un proyecto de control o sistema embebido (embedded system) utiliza un microcontrolador part sggstionar de manera auténoma los procesos de ad- quisicién de datos y la activacién de las lineas de sali- da conectadas a periféricos externos. Debido a que el precio de un microcontrolador es insignificante com- parado con el de una computadora personal (PC) y, aclemds, su tamafio es bastante reducido, se entiende queselo prefiera en el control de procesos electréni- cosy en el disetio de aparatos electrdnicos modernos dotados con cierta “inteligencia’ El desarrollo de un proyecto embebido esta sujeto a un ciclo de vida particular, segiin se apre- cia en la figura 3.2. Método de diseno , ‘on cascada Figura 3.2 Ciclo de vida de un proyecto embebide + & err: Curso préctico sobre Microcontroladores Este ciclo de vida se atiene a principios séli- dos utilizados durante décadas por los ingenie- 10s especializados en el desarrollo de programas de tipo general. Un esquema mds simple, y tal vez més cercano a la realidad de quien programa un microcontrolador, se muestra en la figura 3.3, en donde se indica de manera concreta cuales son los pasos que debe seguir un programador para obtener el programa o eédigo final. Programacton Archivos generados por el programa ensamblador Ademés del cddigo binario, el ensamblador ge- nera un conjunto de archivos adicionales, gra- cias a los cuales es posible controlar la evolu- cién del proyecto. La extensién que acompafia a cada nombre de archivo, y que consiste en tres letras después de un punto (.), indica cual es el tipo de informacién que contiene el ar- chivo. Un ejemplo tomado de un ensambla- dor tipico es el siguiente: Tipo de archivo Extensién | Ejempla i Cédigo fuente del programa | ASM primero.asm| Cédigo binario gjecutable. | HEX | primero.hex Figura 3.3 Etapas en el desarolo de una aplicacin para |r stado del programa LST primero.lst Imleroconvoladores | ta de errores ERR | primero.err En la figura 3.4 se plantea el método de tra- | Cédigo objeto ejecutable | OBJ | primero.obj Archivo de libreria LIB Tutinas.lib bajo que recoge las ideas presentadas previamente y que son la clave para desarrollar un programa con éxito. Aunque el proceso es de naturaleza se- cuencial, es comtin que se elabore uno en espiral en el que, cada cierto tiempo, se practique una revisién minuciosa de los objetivos alcanzados hasta el momento. Esto implica una revisién per- manente del trabajo desarrollado. See HEB iste ME ecient: BRB Elements cal sistema, ‘Figura 3.4 Método de trabajo para el desarrifo de programas ‘basados en microcontrotador Un archivo con extensién ASM (6 asm, dado que aqui no importan las maytisculas 0 mintis- culas) contiene el cédigo fuente del programa. El nombre del archivo (la palabra primero, en el gjemplo mostrado) esté separado de su extensién mediante un punto, y debe cumplir con las res- tricciones impuestas por el sistema operativo. El mécodo més simple para crear un nombre co- recto consiste en empezar con una lecra (y en algunos casos con un caréeter de subrayado (_)), agregdndole a continuacién una combinacién ar- bieearia de letras, ntimeros y caracteres de subra- yado. Algunos sistemas operativos restringen la longicud del nombre a un méximo de ocho ca- racteres. Ejemplos validos de nombres de archi- vos fuente son los siguientes: primero.asm —control.asm alarma_l.asm cempX20.asm Un archivo con extensin HEX u OBJ con- tiene el cédigo binario ejecutable, y se deriva au- tomédticamente de un archivo con extensién ASM. in de microcontroladores El proceso de ensamblado puede generar tam- bign, de manera automatica, dos archivos de gran importancia préctica. El primero de ellos (con exten- sién LST) es un listado que contiene el texto del programa fuente debidamente formateado, lo que permite documentar con claridad el desarrollo del mismo. Este listado incluye la numeracién de pdgi- nas, la fecha y la hora en que se hizo el proceso de ensamblado, la tabla de simbolos del programa fuen- tc, la distribucién de los datos en la memoria, asicomo los etrores y advertencias que se derivan directamente del cddigo fuente, Las instrucciones se onganizan en columnas de acuerdo con una tabulacién estindar. El segundo tipo de archivo (con extensién ERR) Ie sitve al programador para estudiar los errores cometidos (cuando éstos se producen), facilitando el proceso de correccién y depuracién del cédigo fuente. Los tipos de archivo descritos anteriormente pueden diferir de acuerdo con el microcontro- lador utilizado. Términos usuales Es importante establecer el significado de algu- nos términos que seran muy utilizados en las proximas lecciones: Registro. Es un depésito de mimeros binarios que permite guardar datos en forma temporal. El nom- bre del registro sirve para identificarlo plenamente y establece el tipo de informacién que almacena. Por ejemplo, el registro W (disponible en los mi- crocontroladores de la familia PIC) se utiliza en la mayorfa de operaciones que manipulan datos. Su nombre viene de la palabra inglesa work (trabajo). Literal. Se refiere un valor constante, usualmen- te un ntimero escrito en formato hexadecimal. Ejemplos de lirerales: 3, 12, 3E Estructura de un programa escrito en lenguaje ensamblador “Todos los microcontroladores disponen, como mi- nimo, de un ensamblador, Ahora bien, debido a su naturaleza particular, cada ensamblador tiene sus pro- pias reglas que deben ser respetadas. Afortunadamen- te, existen ciertas normas de tipo general, comunesa Ja mayotfa de los ensambladores, que es necesario conocer para reducirl tiempo invertido en el proce- so de escribir un programa de usuario. A continus- cidn, comentamos algunas de estas caractersticas. Un programa escrito usando instrucciones del lenguaje ensamblador debe organizarse segiin un disefio basado en columnas. En la figura 3.5 se muestra la estructura de un programa escrito en ensamblador. Figura 3.5 Divisién en cofumnas de un programa fuente escrito en ensamblacor Cada una de las columnas cumple una fun- cién especifica, segiin se indica a continuacién. Etiqueta Una etiqueta es un nombre con el cual se identi- fica una posicién de memoria del microcontro- lador,y sitve para marcar puntos espectficos den- tro del programa, Toda etiquera debe empezar a scribirse en la primera columna de Ia linea y su longitud no puede sobrepasar (usualmente) los 31 caracteres; puede incluir, ademas, caracteres alfanuméticos, cl caricter de subrayado (_) y el simbolo de interrogacién (2). Instruccién Una instruccién hace referencia a una de las ope- raciones basicas que puede ejecutar un micro- controlador. Un ejemplo de una instruccién ti- pica es MOVLW, utilizada para cargar el regis- tro W con un valor literal. El término cargar se interpreta en este contexto como almacenar en, por lo que la instruccién MOVLW puede leerse asf: “almacenar un valor literal en el registro W”. * @ BICIT: so priten str Mezoconrltores Operando Un operando es un elemento utilizado por una instruccién. Algunas instrucciones, debido a su simplicidad, no utilizan operando. Otras, un poco més complejas, requieren el uso de un sélo operando, Por tiltimo, existen instrucciones que requicren el uso de dos operandos para cumplir cabalmente su funcién, El primer operando, cuando esté definido, se denomina operando fuente. El segundo operando, complemento del anterior, recibe el nombre de operando destino. La informacién fluye desde el operando fuente hacia el operando destino. Comentario ‘Un comentario es un bloque de texto que le sir- ve al programador para documentar sus progra- mas, Los comentarios son ignorados por el en- samblador, y se reconocen porque empiezan con el caricter punto y coma (;). Tipos de linea que se pueden incluir en un programa Los programas en ensamblador se deben escribir segiin un esquema que permica estructurar de manera sélida al trabajo desarrollado. En la figu- ra 3.6 se muestra la arquitectura general de un programa para microcontrolador. Eo Constantes Peer Geo ued Figura 3.6 Arguitectura general de un programa en eresamblador A-continuacién presentamos el significado de cada uno de los bloques mencionados. Encabezado Esl primer componente del programa, yen él se definen algunas directrices de tipo general, cono- cidas como directivas, que modifican el fancio- Getic namiento del ensamblador. Para ilustrar lo ance- rion, considere la familia de microcontroladores PIC, la cual utiliza el ensamblador MPASM. En este ensamblador la directiva list indica la versién del microcontrolador utilizado, lo que establece el tipo de programa binario generado. Esta directiva 8 obligatoria, ya que cada microcontrolador ge- neta su propio cédigo binario y el ensamblador debe adaprarse al modelo utilizado. Para ilustrar Jo expuesto en el pdrrafo an- terior, supongamos que usted utiliza en un pro- yecto el microcontrolador 16C84. La directi- va que debe incluir al comienzo del programa es la siguiente: list p=16C84 ; microcontrolador 16084 Constantes En esta seccién se incluyen las definiciones de constantes que son reconocidas en los demds puntos del programa, El uso de constantes sim- plifica la leccura de un programa, ya que, en lugar de referirse a un valor hexadecimal en par- ticular, se puede utilizar el nombre de la cons- tante asociada. La mayorfa de los ensamblado- res utilizan la palabra equ para definir una cons- ante. Por ejemplo, la linea puertoA equ 05 le indica al ensamblador que se puede utilizar la palabra puertoA en lugar del nimero 05. Definicién del origen del programa ‘Al programar un microcontrolador es necesatio indicar explicitamente en que sitio de la memo- tia se debe almacenar el cédigo binario del pro- grama que esté a punto de ser ensamblado. Esto se consigue con la palabra org (origen). Por ejem- plo, la siguiente Iinea org @ indica al ensamblador que debe almacenarse, a partir de la linea 0 en la memoria de programa, Curso préctico sobre Microcontroladores exer: ® racontroladores el cédigo binario generado. Existen algunas va- riaciones que indicaremos oportunamente cuan- do sea necesario. Instrucciones del programa Esta seccién se utiliza para almacenar las instruc- ciones del programa. Una instruccién tipica in- cluye los siguientes campos: etiqueta_| cédigo de instruccion operandos) s comentario A excepcién del campo oédigo de instruccién, Jos restantes campos pueden aparecer (0 no apa- recet) dentro de una linea de programa. Final del programa Esta seccién contiene una instruccién simple que marca el final del programa. El ensamblador MPASM (de la familia de microcontroladores PIC) utiliza la siguiente instruccién para conse- guir este propésito: end El entorno de programacion El objetivo de cualquier programa de usuario es, en principio, muy simple: leer datos de periféri- cos externos, calcular, y activar lineas de salida que produzcan cambios en el ambiente externo. Las siguientes afirmaciones permiten entender la estructura del entorno de programacién del mi- crocontrolador: 1 El microcontrolador accede al contenido 0 alas sefiales de los componentes externos, a través del uso de puertos de entrada. 2. El microcontrolador modifica el contenido 0 envi sefiales a los componentes externos, mediante cl uso de puertos de salida. 3 Los datos lefdos en un puerto de entrada son almacenados, en primer lugar, en un registro interno del microcontrolador. 4 Cuando un mictocontrolador lee muchos datos provenientes de componentes exter- nos (mediante el uso de puertos de entra- da), debe almacenar esta informacién en la memoria de datos; esto permite que los datos estén disponibles para ser utilizados mds adelante. El microcontrolador posee una unidad arit- meética y I6gica que se encarga de realizar operaciones sobre los datos. De acuerdo con Ios resultados obtenidos, el microcontrola- dor roma decisiones sobre la activacién de Ineas en los puertos de salida. Un sistema embebido (basado en microcon- troladot), cumple con el objetivo de con- trol para el cual ha sido disefiado gracias a la existencia de un conjunto de instruccio- nes (programa) que indica de manera pre- isa lo que debe hacerse en cada instante del tiempo. Un programa (conjunto de instrucciones) se almacena en la memoria de programa del microcontrolador. 8 Un microcontrolador puede recibir sefiales del excerior (en instantes del tiempo que no es posible predecit), ante las cuales debe re- accionar sin pérdida de tiempo. Esto impli- cael abandono temporal de aquello que se csté ejecutando, para dar cumplimiento a una funcién que atienda la interrupcién. AA los procesos implicados en este tema se los co- rnoce con el nombre de procesos para el ma- nejo de interrupciones. a a La figura 3.7 presenta un modelo simplifi- cado del entoro en el que se desenvuelve la eje- cucién de un programa de microcontrolador. El contador de programa EI microcontrolador utiliza un registro especial, denominado contador de programa, para saber cul eslasiguiente instruccién que debe ejecutar. El pro- eso ¢s simple: al comienzo de la ejecucién, el con- tador de programa apunta ala primera instruccién del programa; cada vez.que ejecuta una instruccién, el contador de programa incrementa su valor, de modo que la instruecién que se ejecuta la préxima -ver.es la siguiente en la memoria de programa, + @ err: Curso prictico sobre Microcontroladores La ejecucién de las instrucciones, y el cam- bio en el contador de programa, es un proceso automitico y transparente para el programador, lo que significa que se produce bajo el control interno del microcontrolador. Algunas veces el contador de programa cambia su contenido por un valor que no co- rresponde a la siguiente posicién de memoria. Esto se veré en el siguiente apartado. La figura 3.8 muestra el flujo probable en la ejecucién de un programa. Conjunto (sef) de instrucciones Antes de iniciar el estudio de las técnicas de pro- gramacién, y su aplicacién a problemas concre- tos en el campo de los microcontroladores, es importante comprender la naturaleza de las ins- trucciones disponibles y la forma como se orga- nizan jerérquicamente, segtin las funciones para las que‘han sido disefiadas, * Cada inscruccién permite actuar sobre un de- terminado elemento del entorno de programa- cidn: algunas de ellas permiten leer informa- cién proveniente de periféricos externos (me- diante puertos de entrada), mientras que otras lostuccien = @ Figura 3.7 E1 entoo de programacién fundamental alteran componentes conectados a los puertos de salida, lo que en cierto sentido implica un proceso de escribir informacién. Este proceso se ilustra en la figura 3.9: * Un conjunto especializado de instrucciones per- mite acceder a informacién almacenada en la ‘memoria, realizando a continuacién sobre ellas operaciones aritméticas 0 Iégicas. Los resulea- dos intermedios pueden ser devueltos nuevamen- tealamemoria, 0 almacenados en registros tem- porales, para ser utilizados posteriormente. La figura 3.10 muestra este tipo de instruccién. Momoria de programa Contador de programa El contador de programa almacena la dieccién do la ‘Sigionsstucciin que cebe efecutrse Flecucién secuencial DWI Figura 3.8 Fiuio probable en ia eiecucién de un programa 100 NECIORIRCLULeLere LCL eR OLeS Instruceiin de lectura Figura 3.9 instrueciones de entrada/salida. Dato intermedio Dao? Dato used mente Dato usada postirarnente Figura 3.10 Instrucciones de transferencia a memoria y célculos aritméticos y gicos. + En ocasiones es conveniente manipular direc- tamente los bits individuales de los datos alma- cenados en la memoria o disponibles en un re- gistro interno. El microcontrolador dispone de instrucciones que aislan cada bi# de manera in- dividual. De este modo se puede tomar una decisién segiin el valor del bie alterar su con- tenido cambiéndolo por un valor diferente. La figura 3.11 muestra algunas posibilidades brin- dadas por estas instrucciones. islecconado a s ‘Acclén 1: Tomar una decision oa segin el valor dei it Acelén 2: Cambiar el valor del bit seleeeras Figura 3.11 Insircoiones do manipula de bits * Los programas no siempre se ejecutan de ma- nera lineal; algunas veces es necesatio alterar el contenido del contador de programa, lo que deriva en una ejecucién no secuencial de las instrucciones. Esta caracteristica con- fiere una mayor flexibilidad a los programas. Las instrucciones de salto se dividen en dos categorias. La primera de ellas corresponde a strucciones de salto condicional, en las cuales el salto se produce si, y sélo si se cum- ple una determinada condicién. las La segunda categoria corresponde a las instruc- ciones de salto incondicional, Como su nombre lo indica, no se requiere que se cumpla ninguna condicién previa para generar el salto. La figura 3,12 muestza los dos tipos de salto indicados. ‘Memoria de programa ‘Memoria de programa camino sequido cepande de ura conaicion El camino sequido siempre ‘950 mismo Figura 3.12 Salto condicional ¢ Incondicional + En ocasiones, algunos procesos del microcon- trolador no se pueden encasillar en ninguno de los grupos mencionados. Las instrucciones im- plicadas en la ejecucién de estos procesos se co- nocen con el nombre de instrucciones de con- trol, y su presencia ayuda a mejorar de manera significativa el funcionamiento de los programas. ‘A titulo de ejemplo, podemos citar las instruc- ciones que habilitan (o inhiben) las interrupcio- nes externas. En su momento se mostrard un panorama completo de ellas. & RICITE: cx20 140000 sore irocanttadres Instrucciones de desplazamiento de bits En ocasiones es conveniente desplazar los bits de tun registro (o posicidn de memoria) para ejecutar una operacién matemitica sencilla, o simplemente para crear un efecto que pueda reflejarse en el me- dio de salida, como es el caso de un display o des- pliegue luminoso © un conjunto de diodes LED. Para iniciar el tema, vamos a plantear el si- guiente problema: se debe multiplicar el conte- nido del registro W con el literal 2, reemplazan- do el contenido previo del registro con el valor obtenido en la mulriplicacién. wre >W En el esquema mostrado en la figura 3.13, el registro W contiene el valor 24. La respuesta (48) reemplaza el contenido previo del registro W. (48) x2 =mp [0011/0000 Registro W después (24) oor 1000 Registro W antes Figura 3.13 &! contenido det registro W mutiplicado por 2 Si compata el contenido del registro W an- tes y después de ln multiplicacién, verd que la diferencia radica en la posicién que ocupa cada biz, es suficiente desplazar el contenido original del registro W una posicién a la izquierda, para obtener el resultado de multiplicar el nimero por 2 (figura 3.14). Figura 3.14 Desplazamiento a la izquierda Desplazar el contenido de un registro un bit a la izquierda, es equivalence a multiplicar su contenido por 2. En cuanto a la operaci6n de divisién, el pro- ceso es a la inversa: basta con desplazar el conte- nido del registro un fr a la derecha, para obte- ner como resultado la divisién del niimero entre dos. Observe el proceso en la figura 3.15. (12) (24) aon TaOD) + 2 —> (HEHOTTD) w w Figura 3.15 Desplazamiento a la derecha {Qué ocurre con el bit que sale del registro, tanto a izquiierda como a derecha, después del desplazamiento? Este se debe almacenar en un sitio preparado especialmente para ello. El microcontrolador posee un registro especial, denominado registro de estado, pata el cual el valor de los bits cambia segtin el resultado de las operacio- nes ejecutadas. La figura 3.16 muestra el uso del re- gistro de estado para almacenar el ditexcedente que resulta de un desplazamiento a la derecha. Figura 3.16 £1 registro de estado del microcontrolador Ahora bien, ;cul es el valor del Bit que ingre- sa por el extremo mds ala izquierda del registro en. un desplazamiento hacia la derecha? Usualmente, es el valor cero. Esto se aplica también al desplaza- miento en sentido contrario, en cuyo caso el bit que ingresa por el extremo més a la derecha es el digito cero. La figura 3.17 ilustza este proceso. Bit del registro de estado Figura 3.17. Bits que ingresan af registro : carn rieto woos wcorvaaciss: NCE: & famacion de microcontroladores El desplazamiento de bits permite llevar a cabo tareas diferentes alas que se derivan del cél- culo numérico: es posible desplazar circularmente el contenido de un registro, de modo que el bir més a la detecha se inserta como primer bit més ala izquierda (0 en sentido inverso, segtin se de- see). La figura 3.18 ilustra los desplazamientos mencionados. [dooor10n Dato original fimo} ron [ijolofoo 0] Resultado Figura 3.18 Desplazamiento circular Aplicacién del desplazamiento circular Estudie el siguiente programa: en el encontraré la solucién a un problema de animacién visual sobre un dispositive éptico, La figura 3.19 mues- tra el resultado de este proceso y la figura 3.20 su diagrama de flujo. . Cargar el registro W con el valor binario 11000010. Desplazar circularmente el contenido del re- gistro W un bira la derecha. 3. Enviar al puerto de salida el dato almacenado en el registro W. Hacer una pausa. Nv B 5, Regresar al paso 2, con lo que el proceso se repite indefinidamente. Tiempo 0 010 Terpot [011 000/01 Tiempo 2 Tiempo 3 Tiempo 4 00 Figura 3.19 Aplicacin det desplazamiento circular Figura 3.20 Diagrama de flo El registro de estado E| registro de estado de un microcontrolador permite verificar condiciones derivadas de pro- cesos internos o externos, asf como establecer condiciones especiales de control. Cada diren el registro de estado tiene un significado particular el cual puede variar segtin la marca y familia del microcontrolador. A continuacién vamos a des- cribirlos bits mds importantes, dejando la expli- cacién de los restantes para cuando corresponda segtin las aplicaciones desarrolladas. En la figura 3.21 se muestra una parte de la estructura tipica de un registro de estado. Niz | Cero Negativo Interrupeiones —] Acarreo Figura 3.21 £1 repisir de estado A continuacién describimos el significado de los bits de control. C- Control de acarreo. Toma el valor 1 cuando se produce un bir de acarreo (Carry) en una suma de niimeros binatios. & Geyer: Curso practico sobre Microcontroladores Z- Control de cero. Toma el valor 1 cuando el. resultado de una operacién es cero. N- Control de mimero negativo. Toma el valor 1 cuando el resultado de una operacién es negativo. I- Activacién global de interrupciones. Al esta- blecer su valor a 1 se activa la deteccién de interrupciones: el microcontrolador puede ser interrumpido en su funcionamiento por ele- mentos externos. E] microcontrolador dispone de instruccio- nes que permiten tomar decisiones de acuerdo con el valor presente en los bits de estado. Estas instrucciones son titiles para crear ciclos o bifur- car a otras posiciones de memoria. Modos de direccionamiento Uno de los problemas al que se enfrenta un progra- mador es el de acceder a los datas disponibles en la memoria de una manera répida y eficaz. Existen diversos mecanismos para lograr esto, a los que se denomina modos de direccionamiento. Los modos de direccionamiento més conocidos son los siguientes: * Direccionamiento implicito * Direccionamiento inmediato * Direccionamiento directo * Direccionamiento relativo * Direccionamiento indexado * Direccionamiento extendido * Direccionamiento indirecto Direccionamiento implicito Las instrucciones que usan este modo de diteccio- rnamiento se caracterizan por no requerir el uso de operandos, debido a que no necesitan acceder a la memoria de datos. Por ejemplo, la instruccién NOP pertenece a esta categoria. La instruccién NOP no produce ningiin efecto visible en la ejecucién del Programacion programa, a pesar de lo cual es util porque consu- me cierta cantidad de ciclos de maquina y por ello petmie la creacién de retardos de tiempo. Direccionamiento inmediato Se presenta cuando el dato no proviene de la memoria, sino que esté incluido en la misma ins- truccidn. Por ejemplo: MOVLW 5A Esta instruccién almacena el literal SA en el re- gistro W. Se puede apreciar que el dato no pro- cede del exterior ni tampoco de la memoria de datos. La figura 3.22 muestra el efecto del ditec- cionamiento inmediato. Literal. aA ve 5A Ww Figura 3.22 Direccionamiento inmeciato El direccionamiento inmediato se utiliza cuando los datos que toman las instrucciones son literales (constantes) conocidos de antemano. Direccionamiento directo El direccionamiento directo se utiliza cuando el daco se transfiere hacia, o desde, una posicién de memoria particular. Por ejemplo: MOVWE 0x0C Esca instruccién mueve el contenido del registro W hacia la posicién de memoria 0x0C. El con- tenido de la posicién OxOC desaparece y en su lugar se coloca el valor del registro W. La figura 3.23 ilustra el direccionamiento directo. NOTA; Los mimeros hexadecimales se escriben an- reponiéndoles Ox. De lo anterior se deduce que el valor 0x0C puede leerse: “ntimero hexadecimal 0C”. Este valor corresponde al ntimero decimal 12. Curso prictico sobre Microcontrotadores enor: & Adramacion de microcontraladores ‘Memoria de datos Direcciin Dato 0x08 ad 37 + 37 0x00 w Figura 3.23 Direccionamiento directo Direccionamiento relative Las instrucciones de salto permiten alterar la eje- cucin secuencial de un programa. Las instruc ciones que utilizan este modo deciden a que posi- cién deben salar, realizando para ello un céleulo sencillo: suman un cierto valor numérico al valor del contador de programa, el cual contiene la di- reccién de la instruccién de salto. La ejecucién del programa contintia a partir della direcci6n cal- culada. Una ilustracién de lo anterior se observa en la figura 3.24. Instruccién Operando Desplazsmicnto ‘elativo ala inscidn que JNEOD Salta, 5 €l resultado previo no es «aro, ds posciones ms alae Figura 3.24 Direcoionanviento relativo Direccionamiento indexado La direccién de destino se calcula utilizando como base un registro especial. En la figura 3.25 se muestra el caso en consideracién. Direcoién Dato Registro base X a] LDA. 3000,% Cargue deco A and e Gide dterén 3000 +e ontenid dee dene nino 28 Figura 3.25 Direccionamiento indexado Direccionamiento extendido El direccionamiento extendido permite acce- det a todo el espacio de memoria del micro- controlador. La direccién se almacena en dos 0 tres bytes del operando, de modo que sin impor- tar el tamafio de la direcciéa destino se puede acceder directamente a ella La figura 3.26 ilustra el modo de direccionamien- to extendido. Direccién Dato LDA s3A4F argue el sega A usando dato almaceado en l dién atvolat 3A4T Figura 3.26 Direccionamiento extendido Direccionamiento indirecto En el modo de direccionamiento indirecto la direccién de una posicién de memoria se cal- cula mediante una doble referencia. En primer lugar se obtiene el dato contenido en una cierta posicién de memoria, y con base en este dato, se obtiene la direccién efectiva de la posicién de memoria deseada. La direccidn efectiva es la direccién deseada. En ‘el modo de direccionamiento indirecto esta se calcula como se aprecia en la figura 3.27. EDA {$ 3000) Cage el egisso A uted corn base dato conn en icsectin 3000. Figura 3.27 Direccionamiento indirecto & ABHCIT: curso pricicn sobre mirocontotaderes LECCION 4 MODELO DE PROGRAMACION PARA LOS MICROCONTROLADORES PIC Antes de elaborar cualquier programa, se debe conocer el modelo de progra- macién o estructura légica de los prin- _ cipales componentes de un microcon- — trolador. En esta leccién veremos el del PIC 16F84, el cual puede ser aplicado, con algunas pequefias variaciones pro- pias de cada familia, a los otros mode- los fabricados por Microchip. Madelo de programacién para los microcontrotadores PIC Vamos iniciar este tema estudiando las ca- racteristicas Iigicas del PIC 16F84 de Micto- chip, un microcontrolador versatil y de arqui- tectura simple. Estos conceptos se pueden apli- cat en su gran mayoria a los demas microcon- troladores PIC. Mas adelante, cuando veamos Ja programacién de otros microcontroladores de diferentes modelos, explicaremos los detalles es- pl pecificos de cada uno. Bsta leccién presenta el estudio sistemtico de Jos elementos que todo programador debe consicle- rara la hora de elegir un microcontrolador: la orga- nizacién de la memoria, el conjunto de instruccio- 765432140 w JERTO Pul A 76543210 No tlizacos PUERTO B 76543210 (GPR) Aes CES aa MEMORIA DE PRO crs) REGISTROS ESPECIFICOS (SFR) Ca Sue Caeser a BANCO 1 REGISTRO DE ESTADO Ceo asia) REGISTROS DE PILA (Stack 8 niveles Vector de reset Vector de interrupciones GRAMA Figura 4.1 La arquitectura del PIC 16F84 desde ef punto de vista del programador ge & CeKnT. Curso practico sobre Microcontroladores nes disponible, los modos de direccionamiento y las particularidades generales del sistema elegido. Sin em- bargo, estudliaremos estos elementos desde la éptica del programador, a quien le importa en primera ins- cancia, s6lo la naturaleza légica de los componentes y no sti comportamiento eléctrico. Los elementos A continuacién se listan los principales compo- nentes del microcontrolador PIC 1684, impli- cados en el disefio y construccién de la mayorla de aplicaciones basadas en los PIC. + El registro de trabajo W + Bl registro de estado + La memoria de programa + La memoria de datos * Los registros de propésito especial * Los registros de propésito general + Los registros de pila (stack) + El puerto A * El puerto B La arquitectura del PIC 16F84 (La vision del programador) Un programador concibe la arquitectura del PIC 16F84 como un conjunto de recursos disponi- bles, al que puede acceder mediante el uso siste- matico de un conjunto de instrucciones. El or- den con el que escribe las instrucciones influye en el funcionamiento del sistema; es por este motivo que el programador debe conocer con todo detalle el comportamiento légico de los di- ferentes elementos que conforman la arquitectu- ra del microcontrolador. La figura 4.1 muestra la apariencia que presenta el PIC 16F84 a un programador. En los siguientes apartados vere- mos cada elemento en detalle, Los microcontroladores de la familia Micro- chip utilizan la arquitectura Harvard, la que se caractetiza por independizar el bus de datos del bus de memoria. Esto permite adaptar el tama- fio de los buses de acuerdo con los requerimien- tos del sistema, ademds de aumentar sensiblemen- te la velocidad de trabajo. Adicionalmente, los Pragramacion 76543210 FEE) Figura 4.2 Et repisto de twabejo W microcontroladores PIC se basan en la tecnologia RISC, la cual se caracteriza por un conjunto redu- cido de instrucciones que se ejecuta en un sélo ciclo de maquina. Las tecnologias mencionadas confieren a este modelo de microcontrolador una enorme potencia en comparacién con sus compe- tidores, en cuanto a la relacidn costo/beneficio. * El registro de trabajo W El registro W, de 8 it, sirve para almacenar un dato, usualmente de forma temporal, cuyo valor seré utili- zado posteriormente en un cilculo matematico o en, Ja transferencia entre registros y memoria (figura 4.2).. Toda la informacidn dehe pasar por este registro, raz6n por la cual es de suma importancia para la mayoria de instrucciones del microcontrolador. El registro de estado (status register) La mayoria de los procesos ejecutados por el crocontrolador generan efectos que pueden reper- cutir sobre el desenvolvimiento del programa. ‘Como ejemplo de lo anterior, considere la inscruc~ cidn que desplazaa la derecha el contenido de una posicién de memoria. Esta instruccién puede dar como resultado, en algtin instante del tiempo, un valor igual a cero. En ocasiones, esta situacién puede ser de interés para el programador. El bit Z (cero) del registro de estado toma el valor 1 si el contenido de la tiltima operacién efectuada es cero. En este caso, el uso de una ins- truccin apropiada permite al programa verifi- car el valor del dir y bifurcar a una posicién de memoria no secuencial, continuando desde alli Ia ejecucidn del programa. La figura 4.3 muestra la estructura del égistro de estado. Los campos en color gris representan es- tados cuyo uso se relaciona con problemas de ma- yor complejidad que no aplicaremos por ahora. * Curso préctico sobre Microcontroladores enar.. & REGISTRO DE ESTADO ‘Activacién global say de interrupciones Digit carry Selaccion de bancos Power down para.e direccionamiento indirecto Figura 4.3 Et registro de estado Los bits del registro de estado que mas se utilizan son los siguientes: C Carry (bit de acarreo). Este bit se activa cuando se presenta un acarreo en el bit mAs significativo del resultado. DC _ Digit Carry (bit deacarreo de digito). Este bit se activa cuando se presenta un acarreo en el bir 3 del resultado. Esto tiene rela- cidn, sobre todo, con operaciones en for- mato BCD. Z Zero (bir de cero). Este bit toma el valor 1 cuando el resultado de una operacién 16- gica 0 aritmética es cero. Selecciona el banco de memoria que se va a utilizar. Si RPO = 0, se selecciona el banco 1; si RPO = 1, seselecciona el banco 0 (ver memoria de datos en la RAM un poco més adelante). Aaa te UY (1K) Figura 4.4 La memoria de programa dela de pragra in para los microcontroladores PIC La memoria de programa En el PIC 16F84 los programas de usuario se almacenan en una zona de memoria con un ta- mafo de 1K. Esto es suficiente para albergar la solucién de buena parte de los problemas de con- ol, La figura 4.4 muestra un esquema bésico de la memoria de programa, En esta memoria hay dos posiciones que tie nen especial interés para el programador: 0000H y 0004H. La primera corresponde al punto dearran- que de todo programa y se conoce con el nombre de vector de reset, mientras que la segunda es el inicio de la rutina de servicio de interrupciones y se Ja denomina vector de interrupeién, En los pérra- fos siguientes se amplian estos conceptos. Vector de reset. Cuando se aplica una sefial de nivel bajo a la linea de reset, el contador de pro- grama toma el valor 0000H y el programa em- pieza a ejecutarse a partir de la primera instruc- cién. La situacién anterior se presenta también, pero de forma automatica, al conectar la energia al circuito del microcontrolador. Vector de interrupcién. Los programas con un cierto grado de complejidad admiten la aplicacién de sefiales externas, denominadas interrupciones, que alertan sobre la aparicién de condiciones que deben ser atendidas sin ninguna demora por par- te del sistema, Las interrupciones también pue- den producirse como consecuencia de variaciones en el estado de remporizadores internos 0 debido al cambio en el contenido de ciertos registros. Un teclado conectado a un puerto de entrada del microcontroladores un buen ejemplo del ma nejo de interrupciones: cada vez que el usuario del sistema pulsa una tecla, el programa debe re- accionar sin pérdida de tiempo para determinar la tecla presionada y almacenar su valor en un regis- tro interno. La direccién de memoria 0004H es el punto de inicio de la rutina de servicio de la inte- rrupcidn. La porcién de programa que debe eje- cutarse cuando ocurra la interrupelén debe guar- darse a partir de la direccién 0004H. @ CITE 0120 prhcte0 soe merovontroadores De lo expuesto en los parrafos anteriores tene- mos dos situaciones posibles: + El programa no contiene rutina de manejo de interrupciones, por lo que se puede utilizar toda Ja memoria de manera lineal para almacenar el programa de usuario, figura 4.5a. Esto en el caso del 16F84. En otros modelos este manejo puede ser diferente. + El programa incluye una rutina de servicio de interrupciones, lo que obliga a la inclusién de un salto al comienzo del programa (direccién 00H) para omitir el cédigo de programa que atiende la rutina de servicio, figura 4.5b. (a () oon Inicio de programa Futina de servicio de interrupcion | | Programa principal Figura 4.5 La rutina de servicio de interrupciones La memoria de datos en RAM La memoria de datos en RAM del PIC 16F84 esté compuesta por 64 registros almacenados en posiciones de memoria consecutivas. Los primeros 12 registros, comprendidos entre 00H y OBH, cumplen un propésito especifi- co en el contexto de funcionamiento del mi- crocontrolador. Los tiltimos 48 registros, en el rango comprendido entre OCH y 2FH, se usan para almacenar informacién temporal. La figura 4.6 muestra un esquema simplifi- cado de la memoria de datos. Programacion 00H BH oc H 2FH Figura 4.6 Esquenma simptificado de la memoria de datos Los registros de propésito especial ELPIC 16F84 se caracteriza por disponer de dos bancos de memoria de datos: el banco cero y el banco uno. Lo anterior implica que cada registro est disponible tanto en el banco cero como en el banco uno, La figura 4.7 muestra los doce pri- meros registros (00H-OBH) y su significado de- pendiendo del banco de memoria utilizado. BANCO O BANCO Direocionamiontoindrecto “Temporzadorcontador Pate bala del contador de programa Paste ata del contador de programa op x [ surcon | mtcon_} contol ce interupciones Figura 4.7 Los segistros de propdisito especial La forma de uso de los registros de propé- sito especial se verd en detalle cuando estudie~ mos el conjunto (set) de instrucciones del mi- crocontrolador y la programacién de los bits del registro de estado. Los registros de propésito general Los 36 registros de propésito general (00H- 2FH) estén mapeados sobre el banco de me- moria cero; esto significa que sélo uno de los registros, el correspondiente al banco cero, estaré disponible para el programador. La fi- gura 4.8 muestra la disposicidn de los regis- tros de propésito general. * Curso practice sobre Microcontrotadores Genin: & Modelo de programacisn para los microcontroladores PIC Direcciones mapeadas sobre el banco 0 Figura 4.8 Los registros de propdsito general Los registros de pila (stack) Es bastante comin dividir un programa en pequefias porciones de cédigo, cada una de las cuales cumple un propésito especial. El programa principal, es decir, aquel que serd gjecutado cuando el microcontrolader reciba una sefial de reset (0 cuando sea energizado) efectuard llamadas a estos subprogramas en diferentes puntos, de acuerdo con las necesi- dades establecidas. Un subprograma debe terminar con una ins- truccién de retorno. Esta instruccién deposita en el contador de programa la direccién de memo- ria en donde debe reanudarse la ejecucién del programa. El microcontrolador utiliza para con- seguir este propdsito un conjunto de registros internos denominados registros de pila (sack). El conjunto de registros de pila esté conformado por ocho registros (figura 4.9). Figura 4.9 Los registra de pla (stack) En cada ‘nueva llamada a un subprograma se almacena la direccién de retorno en el signien- te registro de la pila, lo que permite regresar al sitio correcto cada vez que finalice cada subpro- grama. Debe hacerse notar que el programador no puede acceder directamente al contenido de ninguno de los registros de la pila La memoria EEPROM de datos EI PIC 16F84 dispone de una memoria EE- PROM que consta de 64 bytes, comprendidos entre 00H y 3FH (figura 4.10). Para acceder a estos registros hay que utilizar los registros de con- trol EEDATA, EEADR, EECONI y EECON2. En capitulos posteriores veremos la forma de aplicar la programacién de estos registros. ‘OOH ‘EEPROM FH Figura 4.10 La memoria EEPROM de datos Subprogramas Un subprograma es un conjunto de instruc- ciones que sélo son ejecutadas como respuesta auna inseruceién CALL. La iltima instruc- cién de un subprograma debe ser una instruc- cién de retorno (RET), la cual devuelve el control a la instruccién inmediatamente a continuacién de la instruecién de llamado (CALL). La Figura 4.11 muestra el llamado aun subprograma. il ‘Subprograma eager Figura 4.11 Liemado a un subprograma Por qué son titiles los subprogramas? Imagine que elige un microcontrolador que no posea la instruccién para multiplicar dos ntimeros enteros. Un método para resolver este problema consiste en idear un conjunto de instrucciones que realicen la multiplica- cidn a partir del contenido de dos registros preestablecidos, dejando la respuesta en un tercer registro. . & MAR: 000 pti saeesexocontcoee Eluso mis inteligente de las instrucciones que multiplican dos niimeros enteros consiste, no en agregarlas cada vez que se deban multiplicar dos ntimeros, sino en escribirlas aparte (fuera del pro- grama principal) y lamarlas cada vez que se las requiiera. Con esta idea en mente observe la Figu- ra 4.12 y siga la direccién de las flechas. ‘Subprograma para multiplicar Figura 4,12 Un subprograma para muitipioar dos nimeros enteros La pila (stack) Los registros de pila estén muy ligados al con- cepto de subprograma (asf como al manejo de las interrupciones). En principio, una pila no es mds que un depésito de datos en donde el tilti- mo dato en entrar es el primero en salit. Cuando se recuperan los datos guardados en la pila, se los obtiene en orden inverso a como fueron almace- nados. La Figura 4.13 muestra el uso de una pila con 3 ntimeros enteros. 3 7 5 5 7. 3. TTA yd 7 5 Figura 4.13 Funcionamiento de una pila En el siguiente apartado veremos la relacién que existe entre las pilas y los subprogramas. Funcionamiento de los registros de pila del microcontrolador Para entender de manera cabal el funcionamien- to de los registros de pila, considere un ejemplo simple de llamado a subprograma. El programa one mostrado en la Figura 4.14 hace un llamado al subprograma rotulado con la etiqueta SubA. An- tes de que el contador de programa modifique su contenido por el de la instruccién CALL, es necesario preservar la direccién de retorno. Esto permitira que, una vez finalizado el subprogra- ma, el microcontrolador contintie la ejecucién a partir de la siguiente instruccién en donde se produjo el llamado. CALL etn reccén 00 opwando 20 stan a exec 81 Figura 4.44 Llemado a un subprograma La instruccién CALL guarda en el fondo de la pila la direccién de retorno, la cual corresponde ala direccidn de la siguiente instruccién. En la Figura 4.15,a grandes rasgos, se observa la estructura del subprograma SubA. Este subpro- grama contiene un llamado a un segundo subpro- grama, SubB, lo que genera un dato adicional en Ia cima de la pila, antes de proceder a modificar el contenido del contador de programa. Figura 4.15 Llamando a un subprograma desde iro subprograma. Cuando se ejecuta la instruccién RET del segundo subprograma (SubB), la unidad de con- trol del microcontrolador extrae el dato almace- nado en el tope de la pila (el cual corresponde a Ja direccién de retorno) y lo deposita en el con- tador de programa, El programa contintia eject- « Curso préctico sobre Microcontroladores Aen: & Modelo de programacion pi tandose después de la instruccién CALL del pri- mer subprograma, figura 4.16. (+ ay Sub B Continiaentas. nee instruccién 30 S RET] | Figura 4.16 Retomo de! segundo subprograma La gjecucién dela instruceién RET del primer subprograma causa un retorno al programa princi- pal. Observe el contenido de la pila, Figura 4.17. po ! 3 ‘Sub A Continda en la ~~, instruccién 82 Figura 4.17 Retorno del primer subprograma Los procesos relacionados con el manejo de la pila son transparentes al programador, es de- cir, ocurren de manera automética en el interior del microcontrolador. Puertos Recordemos que un puerto es un elemento a tra- vés del cual se introduce o se extrae informacién de un microcontrolador. El PIC 16F84 posee dos puertos denominados A y B. El puerto A El puerto A consta de 5 Iineas que pueden wtili- zarse como entradas 0 como salidas, dependiendo de las necesidades de la aplicacién, figura 4.18. La linea RA4 puede servir como entrada para los pul- 503 de reloj aplicados al remporizador interno ‘TMRO. El programador puede acceder al conte- ido del puerto leyendo (o escribiendo) el conte- nido del registro 05H del banco 0 de memoria. El puerto B El puerto B esté conformado por 8 lineas que pue- como entrada 0 como salida se- ientos de la aplicacién, figura 4.19. Figura 4.18 £1 puerto A Aligual que el puerto A, el puerto B esté disponible al programador en el registro 0GH del banco 0 de memoria. La linea RBO puede utilizarse para detec tar interrupciones externas, Mundo exterior : Figura 4.19 Ei puerto B Configuracion de los puertos A y B Cada bit de un puerto puede ser configurado, de manera individual, como entrada 0 como salida, dependiendo de las necesidades particu- lares del proyecto. Un mecanismo simple para configurar los bits de los puertos Ay B, ya sea como entrada 0 como salida, consiste en emplear los registros TRISA y TRISB del banco | dela memoria de registros en RAM. La figura 4.20 muestra la relacién entre los puertos A y B y los corres- én. Al es- pondientes registros de program, tudiar el sez de instrucciones se en detalle. PUERTO A PUERTO B Tris A TrisB Figura 4.20 Regist TRISA y TRISB ex "FE. curso prictico sobre Mlcrocontroladares AHH) 2 0 HERRAMIENTAS DE SOFTWARE PARA EL DESARROLLO DE APLICACIONES BASADAS EN MICROCONTROLADORES PIC La elaboracién de un circuito de control embebido requiere el uso de diversas herramientas de hardware y de software. Estos elementos estén conformados por tarjetas electrénicas y programas de soporte, y son dis- tribuidos por un gran nimero de compaiiiasa lo largo de todo el mundo. Algunas obsequian a los usuarios los programas basicos, como el ensamblador y el gra- bador de memoria, lo que ha permitido el uso masivo de los microcontroladores. Curso practico sobre Microcontroladores enn:. @ Elementos orientados al hardware Los elementos de Aardware se utilizan para veri- ficar el correcto funcionamiento del prototipo construido, asi como para almacenar en la me- moria el cédigo binario ejecurable. A grandes rasgos, estos componentes son los siguientes: + Grabador de memoria 6 programador: es un sistema electrénico que permite almacenar el programa en la memoria del microcontrolador. Para conseguir esto, es comiin que se conecte el grabador al puerto serie 0 paralelo de una computadora personal, de modo que median- te el uso de un programa especialmente prepa- rado pata ello, se hace el envio al microcontro- lador del cédigo binario ejecutable. Los graba- ores mas sofisticados permiren almacenar pro- gramas sobre diferentes modelos de microcon- trolador, permitiendo elegir a voluntad la refe- rencia deseada, Un ejemplo de un grabador es el K-175 de la compafiia CEKIT S.A. + Sistema de desarrollo: es un equipo que combina hardware y software y permice 1e2- lizar el ciclo completo en el proceso de ela- boracién de un prototipo. Al igual que el gra- bador de memoria, el sistema de desarrollo es controlado por un programa de computa- dora personal que permite editar, compilar y depurar (corregit) cl programa de usuario. ‘Alcanzado este punto, el usuario puede gra- bar la memoria del microcontrolador con el programa elaborado, asi como establecer las cos de conexiones requeridas con los peri entrada-salida dispuestos sobre la tarjeta base. Cuando el prototipo funciona adecuadamen- te, se procede a la construccién del sistema final sobre una tarjeta independiente. Un ejemplo de un sistema de desarrollo es el PICSFART Plus de Microchip. Elementos basados en software En esta leccidn nos vamos a concentrar en el estu- dio de las herramientas de software imprescindibles para el desarrollo completo de un proyecto de con- trol con microcontrolador, Estos elementos son: Bie ee eee OSU eerie eet erlang 1. Un editor de texto 2. Un ensamblador 3. Un grabador de memoria 4, Un simulador El simulador es una alternativa opcional que permite probar el funcionamiento de un progra- maa nivel de software, sin que se requiera la cons- truccién fisica del proyecto. Muchos simulado- res incorporan las restantes herramientas de sofi- ware, lo que simplifica en gran medida el desa- rrollo de los programas de control. Sin embargo, debe quedar claro que, una ver verificado el pro- totipo con el simulador, éste debe construirse de manera real. Un ejemplo de un simulador es el MPLAB de Microchip. Este programa contiene todo lo que se necesita para simular el funciona- miento de un prototipo de control. En la figura 5.1 se observa el papel que jue- gan estas herramientas en el ciclo de desarrollo de un proyecto. El orden que debe seguirse es importante: en primer lugar, escribir el progra- ma fuente (editor de texto), a continuacién ge~ nerar el eédigo binario ejecutable (ensambla- dor) y por tiltimo, programar el microcontrola- dor (grabador de memoria). ren det create a Figura 5.1 €1cicto de desarrollo de un proyecto ‘Vamos a describir cada una de las herramien- tas de software indicadas en la figura 5.1. El editor de texto El primer paso en la elaboracién de un progra- ma de mictocontrolador consiste en utilizar un editor de texto, similar al bloc de notas de Win- : @ GHENT: corso prictce sobre irocanttadores

También podría gustarte