Está en la página 1de 169
- Lenguajesde programacion Introduccion Pasos a seguir para PVE AER) elaborar un proyecto Col Cea) ea ; UO Rag OLS are) Curso practico sobre ETT TS (Teoria, Prog! Programacion, Pyne mae y Wi Coen Pence a Sd 6 £1 Curso pric sabre MCROCONTROLADORES de PKI. pu WW: i ea ace a oa cae os Cabana tugs clea petas econeson Ge color, De estas iiltimas, 8 estin dedicadas a la seccion de 4a 22 N°R-22, Piso, PROGRAMACION y 8 2 la secci6n de PROYECTOS, Tekin (6) 3388179. 3348187 Las paginas de cada secci6n son encuademables por separado, Por esta raz6n, all 3318189 - 3548193 Fass (6) 3548020 Pereira Colombia Carrera 13 N° 38-43, iso 1 format los volimenes, debe cuidarse de desprender previamente, de todos los fasciculos, as 8 paginas centrales ce PROYECTOS, las 4 lc PROGRAMACION y por tikimo las 8 paginas de Durante la publicacién de los fasciculos se lets Bana ponder ala vena ls tapas de los 3 volimenes de fa obea para su encuademacton, ean ogg - Colombia CEKITS.A. garantiza la publicaci6n de la totalidad de la obra, el suministro de la tapas necesarias para su encuademnacién y el servicio de niimerosatrasidos hasaun Mail: ecekit@col2telecom.com.co ao después de terminada la crculacion del tikimo fasciculo. Fambién garantiza la butp://ewww.cekit.com.co fidelidad de la informaci6n teérico-prictca suministraca y el comrecto funcionamiento i Gerente Gener de los programas includes como ejemplos de a obra. einen Geren Comers Motorola, Microchip, PIG, Intel, Atmel, Parallax, Zilog, Philips, son marcas registradas de Marcel Aha lnsclfereies empress en los Estados Unides yen os pies. tas productesy nombres de Decco ll compas menciomidasen esa obra pueden ser marcas regsadkas de ss propietaros, 1 elipe 5: Bstecuno hasdodsberado sein ed plan deledtory des autres y Lane ea Ths nsponsalilad porlon quienes integra del re departamento téenico de CEKTE'S A, JUAN ANDRES CASTANO W. is MANUEL FELIPE GONZALEZ G. Distribucion Internacional ‘ a a eae Argentina: imporador Ector ConosurS.A. Av. Belgrano 355 1 Tel 4342-9029 Fax: 4312:9025, JUAN DIEGO HERNANDEZ. femal: goonosur@speedy.comar Dis. Capital: VACCARO SANCHES Y CIA, - Moreno 794, 97(1082) Buenos Ates. Dist. Interior: DISTRIBUIDORA BERTRAN S.A. - Av. VélerSarsfild Proyectos 195001285) Buenos Aires, - Bolivia: AGENCIA MODERNA LTDA. - Chile: DISTRIBUIDORA, ALFA S.A. ~ Colombia: DISTRIBUIDORAS UNIDAS, - Venezuela: DISTRIBUIDORA CONT: oN AE eg NENTAL- México: CONSORCIO SAYROIS - Ecuador DISTRIBUIDORA ANDES - Panam: pig cardia: Laxz Angela Plata. PANAMEX'A.- Pert DISTRIBUIDORA BOUVARIANA S.A. - Paraguay: SELECGIONES S.A C Diseto: Gloria Marcela GomezG. Unuguay:DISTRIBUIDORA CAREAGA Diagramacion Héctor Hugo Fimencs Suscripciones (no validas en Argentina), ntimeros atrasados ee y consultas técnicas en Colombia CEKIT S.A. reprodec ped ote por aur me se Calle 22 N°8- 22, Piso 2, A.A. 194 Pereira(Colombia) pense ero descr, 0a nuestro correo electrénico: EDICION CONO SUR ‘ecekit@col2.telecom.com.co Inxemacional Graphics & Printing Co. 72600 Doulas Road, Suite 403 Coral Gables, Florida 33134, USA ISBN (Fasciculo 8) 958-657-510-1 Impreso y encuadernado por: ISBN (Volumen 1) 958-657-1989 RR Donnelley af ISBN (Obra completa), 958-657-997-0 ‘América Latina Ruta Panamericana Km, 38,700 Buenos Aires Argentina Impreso en Argentina Jurio 2003, Estudie, con el método de CERIT de “Aprender haciendo”, la tecnolo- gia de los Microcontroladores, una de las que mas haf cambiado el mundo en los iltimos afios y gang miieho dinero Estos pequefios ce electrénicos se-encuentran en todas partes: au- bros Tméviles,/éomplitadoras, clectrodomésticos, alarmas, jueBos de luces, instrumentos, equipos de cofaunicaciones, etc. ‘neste curso incluimos los principios te cos, los fundamentos de su programacién, julia. gran camidad we actividades pricticas y proyectos completos para tsamblar. Los mietocontroladores son los elementos bé sicos y fundamentales de una nueva revoliitién, _ lniinrerconexién de todo con.todorertuna red mundial, de ons control. Estorper- CE eed PTT Te a cna eee a ieee a eed mitird la comunicacién de hechos y datos entre personas y objetos formando la red del con miento, base de la economia del nuevo milenio Capacitese y forme parte activa de la nue- va economia, Las personas con buenos conocimientos de esta tecnologia, tendrain muchas oportunida- des laborales 0 podrin fabricar sus propios aparatos en forma industrial, lo que puede ser la base para una empresa muy rentable. Con e8ti estructurada el curso 320 paginas (1 a 320) secciones mos de pasta dura con cada uno de los temas pr pales, Para su facil identificacién, cada una de las sec ciones tiene un color diferente. La distribucién de Jos tomos es la siguiente: Tomo 2: Programacién 160 paginas (1 a 160) El Curso practico sobre Microcontoladores de CEKIT S.A. se publicard en 40 fascfculos con tres ida uno, y al final, se agrupard en tres to- Tomo 3: Proyectos 320 paginas (1 a 320) Seccion tle Teoria En la seccién de teorfa, se estudian los fundamentos tedricos y funcionales de los microcontroladores. Esto se refiere a la estructura 0 arquitectura interna de los mismos, as{ como a la funcién de cada uno de los terminales o pines de los diferentes dispositivos tratados en el curso cuyo conoci cesario para disefiar citcuitos con estos componentes. jento es ne- Se empieza con un repaso sobre el tema de los mictoprocesadores, los cuales dieron origen a los microcontroladores, y se desarrollan durante las lecciones, los diferentes aspectos técnicos de esta tecnologfa. WT. Capacttamon para vlvte mejor la Los registros Organizacién de la memoria La EPROM de datos Las interrupciones Los puertos de entrada/salida (I/O) Los temporizadores (Timers) Las opciones Comparacién/Captura/PWM El puerto serial sincrono SSP, bssp La USART Las referencias de voltaje Los comparadores Los conversores A/D Modos de bajo consumo (sleep y watchdog) Bits de configuracion Programacién en el circuito (in circuit) El conjunto (set) de instrucciones Las comunicaciones seriales Otros microcontroladores Parallax (Basic Stamp) Intel Atmel ceion de Programacion Todo aparato o proyecto con microcontroladores i Neccion te proyectos Indicador binario de 4 bits ‘Alarma para el hogar y el automévil Reloj digital y calendario Secuenciador de luces programable Cerradura codificada Activacién de aparatos via telefénica ‘Temporizador universal ‘Aviso luminoso con diodos LED Luces ritmicas Convertidor paralelo-serial Punta logica ‘Temporizador miniacura Frecuencimetro Generador de seftales Programador de memorias Adquisicion de datos en 16 bits “Minirobot con microcontrolador Addquisici6n de datos por el ee ere Programacién de un microcontrolador El ciclo de desarrollo de un programa + Herramientas de software Programacién en modo inmediaro Programacién orientada a registros Control de flujo de un programa Puertos de entrada/salida Subrutinas Interrupciones Programacién en lenguaje estructurado Temporizadores Programacién serial Programando los conversores A/D y D/A. Programacién en lenguaje C Tépicos avanzados de programacién En esta importante seccién del curso, se entrega una amplia informacién con la cual el alumno podrd ensamblar una buena cantidad de proyec- tos. Para cada uno de ellos se incluye la teorfa de funcionamiento, el diagrama esquemético, la lis- ta de materiales, las instrucciones para el ensam- blaje y el listado del programa. ‘unde ensantie “Teer ycioraninta A quienes va dirigido el curso El tema de los microcontroladores es de gran utilidad para un grupo muy amplio de perso- nas que requieran conocer esta tecnologia por su gran cantidad de aplicaciones. Los principales grupos de usuarios son: Estudiantes y profesionales de Ingenieria y Tecnologfas: * Electrénica Eléctrica * Mecénica * Sistemas * Bioingenieria * Mecatrénica Automatizacién Estudiantes de cole; Técnicos en: * Electronica industrial * Automatizacién * Electrénicos en general * Alumnos de los cursos de CEKIT S.A. + Estudiantes y profesionales en FISIC para sus necesidades de instrumentaci Autodidactas 0 aficionados con conocimientos e1 * Electrénica Digital * Microprocesadores - ‘eel? Certificatio ee Una vez terminado el curso y aprobada la evaluacién que se publi- caré al finalizar la obra, el alumno recibir un Certificado de Apti- tud Ocupacional otorgado por CEKIT S.A. y aprobado por las respectivas autoridades educativas. Este certificado ler permitira acceder a puestos calificados de trabajo. nal Otra obra con fa calidad editorial y didéctica de Ceuur.. cua sara vivir mafor See) CONCEPTOS BASICOS DE PROGRAMACION Cuando se incluye un microcontro- lador en un circuito 0 en un aparato electrénico, se debe establecer la com- binacién adecuada de hardware (cir- cuitos) y software (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 mayorfa de los casos, es ¢| mismo. curso prt te Menconrosdoes RCI: o Ce Uheeptos basicos de programacion Introducci6n Los microcontroladores permiten configurar un sistema de acuerdo con los requerimientos im- puestos por el problema que se va a resolver, gra- cia’ a una caracteristica 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 el dominio de las eéenicas 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. Si el lector ya ha estado inmerso en el mun do de la electrdnica, entonces tendri las bases necesarias para entender el funcionamiento in- terno y operativo del microcontrolador y podré Figura 1.1 Sistema de contol paraladeteccén de jets metaicos & CIR 002018080 Meecoiratree configurar el hardware o los circuitos 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 te6ricas y précticas que usted posca, encon- trard en este curso los conocimientos de progra- macién necesarios para realizar con éxito los pro- yectos propuestos en otras secciones de la obra. Fundamentos de programacion 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érica. El diagrama de la fi- gura 1.1 corresponde al esquema de control uti- Tizado 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 de! sistema de deteccién de objets metaicos La misidén del detector de metales es la de producir una sefial eléctrica cada vez que una persona cruce frente al detector portando algiin objeto metilico, En cuanto a la alarma sonora, &ta debe producir una sefial audible en presen- cia de un elemento peligroso, con el fin de aler- tara las autoridades correspondientes, figura 1.2. Cudles el papel que cumple la computado- ra en este proceso? Como seguramente podra 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 seftal proveniente del detector, introduciéndo- Ia en la memoria de la computadora. amp cador de salida se utiliza para aumentar el rama- fio de la sefial eléctrica generada, aplicindola a la alarma sonora y generando un sonido percepti- ble por el ofdo humano, ea ores Programac Cour) co fl Figura 1.3 Diagrama de boques de sistema de deteccin de objets metélcos Ahora surge una pregunta més interesante cémo es posible que la compu- tadora active la alarma sonora tinicamente cuan- do un pasajero cruza portando un objeto metali- 0, 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. Fla 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. Ca ora Prete Ce) ore La computadora trabaja a intesvalos de tiemco En palabras sencillas, zqué funciones debe- ria realizar la computadora de la figura 1.1 para ser eficiente en la tarea de detectar objetos meti- licos?. Observe los siguientes pasos presentados en Ia figura 1.5. Cea peti red ‘Figura 1.5 Programa pararesover el problema del detector de metaes. Ahora le preguntamos al lector: zen dénde 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 micto- procesador. Pues bien, el conjunto de instrucciones que acabamos de presentar es lo que se conoce con el curso prcte de Mercontoiviaes GACT: ® fwoneeptos basicos de programacion 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 ircuitos eléctricos como el desarrollo de los pro- gramas orientados a la solucién del problema. Recuerde que: La misién de un programador es la de en- tender el problema que debe resolver, escribir la secuencia de instrucciones requeridas en el len- guaje apropiado, almacenar la secuencia de ins- trucciones en la memoria interna de la computa- dora y, por Ultimo, ejecutar o poner en marcha el programa creado, figura 1.6. Figura 1.61 treba de un programadr Lenguajes de programacion {Qué lenguaje debe utilizarse para escribir un pro- sgrama? La respuesta depende de la computadora 6 en nuestro caso, del microcontrolador utiliza- do y del problema que se va a resolver. Sisu pro- blema es dinicamente describir los pasos que de- ben seguirse para alcanzar el resultado deseado, es suficiente con emplear frases tomadas de idio- ma espafiol, naturalmente en el orden que resul- te mas adecuado. Un ejemplo de ello es el pro- grama que presentamos en la figura 1.5. Pero, ;seré posible que una computadora, como una de las muchas utilizadas en un aero- puerto, pueda entender este tipo de programa? El sentido comin nos dice que no: es necesario convertir cada una de las instrucciones al “idio- ma’ que comprenden las computadoras. ten varios idiomas o lenguajes utilizados por las computadoras modernas. Algunos de ellos tie- nen como finalidad ayudar a resolver proble- mas de caracter 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 caracteristica es el control de componen- tes clectrénicos, como en el caso de los micro- controladores, se debe recurrir a un lenguaje es- pecializado. El mas comin de ellos recibe el nombre de LENGUAJE ENSAMBLADOR o. ASSEMBLER. Este lenguaje est compuesto por tun conjunto 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 vercon el hecho de que cada computadorao 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- ren 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- ctibir el programa de la figura 1.5 en lenguaje ENSAMBLADOR. Por comodidad y facilidad didéctica, vamos a utilizar por ahora instruccio- nes para una computadora genérica, es decir, una computadora que tenga la mayoria de elementos presentes en las restantes computadoras. Programacion Detector de metales Posicin de memoria Alarma sonora Vale 0 bictcamis 1 ) ces Figura 1.7 Solvcén visual del prablema del detector de metaies (Qué valor tiene dato en memoria? Para facilitar las cosas, vamos a mostrar el proceso gréficamente, figura 1.7. Ahora que usted ha visto la solucién grifica del problema, podré entender la conversién 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 [EE En caso contraro, el valor del dato es 1 (pi de metal) y debe activarse la alarma sonora. EE > Terminar at proceso Figura 1.8. Sotcin en palabras del problema del detector de metales escritura uniforme. Cada paso se numera en forma ascendente, yen cada uno de ellos se almacena la corres- 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 uve prio te Meroconrsceres: AGRCUT: © GHEE CSE macion ‘Figura 1.9 programa escito en lenguaje ENSAMBLADOR genérico. El lector debe acostumbrarse a traducir mentalmente las instrueciones 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. GEIR > Detener a cjecucisn del programa, El lenguaje ENSAMBLADOR de las computadoras reales es atin mds compacto que el mostrado en la figura 9. Una versién ms cercana a la realidad se muestra en la figura 1.10. © IR: 0020; 0 merccorontere Figura 1.10 Ei programa escrito en lenguaje ENSAMBLADOR genéric, pero mas compacto. Simplemente, hemos utilizado palabras més cortas. Vamos a repetir, nuevamente, la traduccién mental de instrucciones, Sin em- bargo, le sugerimos que observe con cuidado Ja 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 dispositivo fisico: 1 para activar, 0 para apagar. Més adelante estudiaremos programas simi- lares a los mostrados en las figuras 1.9 y 1.10, pero utilizando el lenguaje ENSAMBLADOR de un microcontrolador real. El diagrama de bloques 0 de flujo Es bastante comtin, para facilitar su trabajo, que los programadores utilicen elementos gréficos 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, GEM En caso de que el dato guardado en mem sea igual al valor 1, es decir, se detecta la presencia de un objeto metilico, se debe escribir el niimero 1 en la direccién asignada ala alarma sonora, Esta accién inicia el sonido de met ie caso de necesitar a poco més adelante) se ar De bocnccion ocr abet (escribir el niimero 0 en la direcein asignada a la alarma). BEBE Derener la ejecucidn del programa. lo que ha dado origen a una representacién de- nominada DIAGRAMA DE BLOQUES, cono- cida también con el nombre de DIAGRAMA DE FLUJO, Observe continuacién el programa de Ia figura 1.9, pero presentado mediante un diagra- ma de bloques, figura 1.11. En esta construccidn se observan varios ele- mentos que es conveniente enumerar. En primer lugar, las figuras con forma rectangular represen- NO sl ‘iowa 1.11 Drama ce logs para programa ce tector ce mates tan acciones concretas que deben ser ejecutadas, por la computadora, figura 1.12. ‘Figura 1.12 Una acién simple Las flechas indican el flujo que debe se- guir la computadora para ejecutar las acciones indicadas. No es necesario numerar los elemen- tos grficos, ya que estas indican con claridad el camino que debe seguirse, figura 1.13. | a ‘Figura 1.13 Flachasqueincane fujo de eecuciin de programa Curso prctico de Microcontroladores excrr: @ Conee ees basicos de programacién Un figura con forma de rombo representa uuna 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 decisién Un rectingulo con los extremos redondea- dos indica una accién especial. En particular, si Ja figura contiene la palabra Inicio se indica a la computadora el punto en donde comencar el programa, Si el 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 de 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. © GATE 0.01 picts verses 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 ldgico 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, :cudles 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: el microcontrolador. Desde otro punto de vista, podemos defi- nir 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. Laarquitectura y el modo de operacién del microcontrolador se estudian en la seccién de teoria de esta obra. Los aspectos relacionados con las récnicas de programacién aplicadas al microcontrolador serdn descritos completamen- tea lo largo de las préximas lecciones, Sul Figura 1.16 Estructura interna de un microcotolador LECCION 2 SISTEMAS DE NUMERACION EN LA PROGRAMACION DE _ MICROCONTROLADORES Los seres humanos trabajamos con el sis- tema decimal, los microcontroladores tra- bajan con el sistema binatio y pata facili tar la escritura de los programas de estos, se trabaja en el sistema hexadecimal. Por esto es importante conocer estos dos tilti- mos sistemas de numeraci6n si queremos aplicar en forma eficiente esta tecnologia. care prcto ste mereconroines GREET: Sif lemas de numeracién Los microcontroladores son sistemas cuyo ‘comportamiento no se define en el momento de su fabricacién, Para que un microcontrolador sea Util, se debe grabar en su memoria incerna el con- junto de acciones que debe ejecutar, Una vez hecho esto, se dice que el microcontrolador ha sido programado, y se encuentra preparado para jecutar los procesos de control que le han sido encomendados. Habitualmente, un microcontto- lador embebido (embedded) o incluido en un cir cuito de control electrénico, mantiene su pro- grama original, en tanto no se presente ningdn desperfecto en el circuito integrado. Qué técnica se utiliza para programar un microcontrolador? En la seccién dedicada a los conceptos bisicos, 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 dlti- ma instancia, los microcontroladores sola- ‘mente comprenden el lenguaje de los “unos” y los “ceros” o sistema binario; en otras pala- bras, son circuitos digitales. 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 selacionado con la manipulacién de los datos provenientes del mundo exterior. Suponga, por un momen- to, que usted decide construir un sistema que mida la temperatura de una habitacién y que active una alarma sonora cuando la tempera- cura sobrepase los 26°C. © cic {Cémo hace el microcontrolador para cono- cer y manipular los datos que corresponden a la temperatura del medio ambiente? Recuerde: to- dos los datos mangjados por un microcontrola- dor son de tipo digital. Esto significa que k formacién se representa internamente mediante niveles de voltaje discretos. Por ejemplo, un vel de voltaje de 0 voltios se representa con el nimero cero (0), mientras que un nivel de volta je de +5 voltios se representa con el nimero uno (1), figura 2.1. i 0 volves, nimero 0 fav —1 +5,volos,nimero 1 ‘Figura 2.1. Reoresentacién de un gto nario {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 binatio (base dos) EI sistema binario se caracteriza por em- plear tinicamente los digitos 0 y 1. Para empe- varaentrar en materia, vamos a mostrarle cémo 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 Neimero binario orc o re 1 Pasemos ahora a representar con niime- ros binarios las temperaturas 0°C, 1°C, 2°C y 3°C, Si s6lo disponemos de dos valores en el sistema binario, 0 y 1, zedmo es posible representar cuatro temperaturas diferentes? La solucién se obtiene agregando a la izquierda del ntimero binario, un segundo digito (bi) con el cual se puedan crear combinaciones que no se repitan, Curso préctico sobre Microcontroladores Temperatura. Nimero binario orc 0 (| 1c 0 zz fo} 3°C iL] El digito (6) situado mas a la derecha del nie ‘mero binario, toma los valores Oy 1 para las eempe- raturas 0°C y 1°C (exactamente igual que antes). Sin embargo, observe que esta situacién se repite para ls temperaturas correspondientesa2°Cy 3°C. Laclave para diferenciar los dos rangos de tem- perarura (0°C-1SCy 2°C -3°C) esta en el bit mis a la inquierda del ntimero binario. Este bit coma el valor 0 para las dos primeras temperaturas (0°C y 1°C), yadquiereel valor 1 para las dos temperatt ras restantes (2°C y 3°C). De este modo, aunque bit de la derecha se repita en los rangos mostra- dos, la combinacién de los dos bits permite repre- sentar las cuatro temperaturas de manera tinica. ‘Temperatura Niimero binario 0 0 he 1 ze 0 3c 1 Representemos ahora las remperaturas 0°C, 1°C, 2°C, 3°C, 4°C, °C, Cy 7°C, Cémo podré adivi- nar el lector, es necesario agregar un nucvo bit en el ‘extremo izquierdo del ntimero binario, de modo que se creen combinaciones inicas. Observe el resultado: Temperatura orc eC 2G aC 4°C °C 6C TC rogramacion Las combinaciones de digitos binarios son inicas; 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étodo que permita representar cualquier tem- peratura, sin importar cual sea su valor, Para empezar, observe el digito (bi) del ex- tremo izquierdo de los ntimeros binarios de la tabla anterior. Este digito vale 0 para las prime- ras cuatro temperaturas, mientras que vale 1 para las dltimas cuatro. Gracias a la presencia de este tercer bit, se puede disponer de ocho temperatu- ras diferentes. ‘Como regla general, cada bir que se agrega a Ia izquierda de un mimero binario, permite du- plicar la cantidad de elementos que se podian 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 némero binario. Nimerstinaios ime anos EI tercer bit do fa I2- ie dos diitos etre digtos———_ulerda agrogael valor 4 lurmero de deecha Figura 2.2. El peso ds un bit de acuerdo con su pescin El efecto de colocar el valor 1 al tercer digito ¢s similar a sumar 4 al niimero binario de la dere- cha, En este sentido, el peso del tercer digito es 4 Al hablar de un bis, es conveniente conocer in dentro del ntimero bin: SISICIESCGIMICET CT) que los digitos binarios se numeren de dere- cha a izquierda, en orden creciente, empezan- do con el valor 0, Parailustrarlos conceptos vis- tos hasta ahora, presentamos la estructura que tiene un niimero binario de 8 bits, con los pesos asociados a cada digito binario, figura 2.3. Pesodelbit 128 64 32.16 8 4 2.1 Poscindeltit 7 6 5 43921 0 “El peso de cada bites el doble que el peso del bitsituado a su derecha” Figura 23. Pesos asociados a cada bit Los pesos permiten establecer el valor deci- mal de un ntimero binario. Observe el nimero binario 101 1, correspondiente a una temperatu- rade 11°C, Si queremos encontrar el valor deci- mal a partir de esta representaci6n binaria, basta simplemente con sumar el peso de los digitos cuyo valor es 1 de la suma de los pesos de los dfgitos binarios cuyo valor es 1. El digito situado més a la iz- quierda tiene el peso més alto, mientras que el digito situado més a la derecha es el digito que ticne el menor peso. El digito con mayor peso se denomina MSB (Most Significant Bit), mientras que el digito con el menor peso se denomina LSB (Least Significant Bit). Digit con mayer peso Digto con menor peso nse) s8) BEESEen? Figura 24 Los dgitos MSB y (SB Los primeros 16 ntimeros binarios son de gran importancia en el dominio de la clectrénica digital, de los microcontroladores, de los micro- procesidores y de las computadoras. Estos nui- ‘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 nimeros del 0 al 15 en su representacién bina- Namero binario Leaner 1 Pesos eee 4 2 1 (8x1) + (4x0) + (2x1) + (Ix) = ier Ou 2° 49 Numero decimal ria, decimal y hexadecimal. Ademés, se indica cémo derivar los valores decima- les a partir de los pesos asociados a los bits cuyo valor es 1. = 11| Enel sisterna hexadecimal, los ilti- “Unicamente importan los pesos de los bits del ntimero binario, cuyo valor es 1” Facil, verdad? ;Podria 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 niimero decimal resulta ‘mos seis njimeros se representan con las letras A, B, C, D, Ey F, tomadas todas ellas del alfabeto. La conversién de un niimero binario al sistema hexadecimal no cambia el valor del mii- mero representado, Sin embargo, ¢s una norma cen electrdnica utilizar ntimeros hexadecimales en lugar de niimeros binarios zpor qué? Observe la siguiente simplificacién: dado el ntimero binario 1100110110110011, encuentre el nimero hexa- decimal equivalente. ‘Néimero binario 1 1 Peso de los digitos binarios. 128 64 Numero decimal (128x1)+(G4x1) +(32x0)+(16x0)+(8x1)+(4x1)+(2x0)+(Lo1) 128 + 64 + Qld eos SURG Gas aa? 21 0+ OF 8+ 44 0+ 1 =250 EICIT.: 100180 sr Meremrtates Programacion 2 ogee oe eee ec oS} mmooe@roerannreonnso 64a 0 0+0+0+0 1 O+0+041 2 0+0+2+0 3 O+042+1 4 0+440+0 5 0444041 6 0444240 ie 0444241 8 8+0+040 9 8+0+041 10 8+0+240 1" 8+04+2+1 2 8+4+0+0 B 8+44+041 4 8444240 15 Bede 241 El primer paso que se debe dar para resolver el problema propuesto consiste en dividir el ni- mero binario en grupos de 4 bits: se empieza agrupando los 4 bits a la derecha del niimero bi- nario, se agrupan luego los 4 bits ubicados in- mediatamente a la izquierda, y el proceso conti- niia hasta que se agotan todos los digitos del ni- mero binario original. Si el tiltimo grupo creado no contiene exactamente 4 bits, se recurre a com- pletarlo agregando cetos (no significativos) a su izquierda. Apliquemos este procedimiento al ndmero binario 1100110110110011 | didoridiiotrooi1 elas Niimero binari¢ original Grupos de 4 bits conmattennnrnns gpere: &a> Figura 25 Equivalente binario, hexadecimal 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 niimero hexadecimal correspondiente, figura 2.6 . fee ‘Niimero binario original] ue un vw a Grupos de 4 bits C DB 3 Neimeroshexadecimales equivalences Figura 26 Goneracién de un mimero hexadecimal ‘Una consecuencia positiva dela representacién hexadecimal estriba en que es mucho més ficil re- cordar el mimero CDB3 en base 16, quest equiva- Sistemas de nur ion lente binario 1100110110110011, Otra ventaja que se deriva del uso de los nimeros hexadecimalest 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 serin tiles més ade- lante Bit Un dit es la unidad minima de informacién en un 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 iil para representar conjuntos de digitos decimales, como se verd a continuacién. BCD Un digito decimal: 0, 1, 2, 3, 4, 5, 6,7, 8.0 9 se puede representar mediante 4 digitos binarios (un nibble) La siguiente tabla muestra los digitos deci- ‘males y su equivalente binario, al cual se lo conoce con el nombre BCD (Binary Caded Decima), Digito decimal Digito BCD 0000 0001 0010 0011 0100 0101 0110 oll 1000 1001 CauAUaunnc Algunos sistemas permiten la representacién de los ntimeros 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 el niimero 32; su representacién en binario es: 00100000. En la figura 2.7 puede apreciar su representacién en BCD. 2 {0010070 Fgura 27, presen en BO ce rime $2 Byte Un byte es un grupo de 8 bits. En un byte, el bie de mayor peso, usualmente el de la izquierda, se denomina bit MSB; el bie de menor peso, usual- mente el de la derecha, se denomina dit LSB. El byte es una de las estructuras de datos més util zadas en todos los sistemas de computacién. Word Una palabra (word) es un conjunto de 16 bis, y cequivale a la unién de 2 byres. Ocasionalmente, esnecesario 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 ele- ‘mentos vistos. 8 coe Bit Nibble byte Jniniaianinininininind Word Figura 28 Representaciones binaias poss aio Rango de los numeros binarios Si utilizamos tinicamente 2 digitos binarios, po- dremos diferenciar entre 4 entidades distintas: 00, 01, 10 y 11. ;Cudntos elementos podremos diferenciar con 16 bits? La respuesta a esta pre- gunta no se obtiene generando todas las posibles combinaciones y luego contandolas, ya que esto llevarfa demasiado tiempo. En su lugar se em- plea la siguiente formula: & AGCIN: 0020 picts str eocontolaoes Nimero de combinaciones = en donde n es el ntimero de digitos binarios. Aplicando la férmula al problema planteado se obtiene: Nimero de combinaciones = 2" = 65536 Operaciones basicas Los microcontroladores permiten el uso extensi- vo de las operaciones matematicas bisicas: es posible sumar restar ntimeros binarios, realizar operaciones de tipo lé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 niimeros binarios es similar ala suma de mimeros decimales. Basta con recordar que en el caso del sistema binario, sélo se utilizan dos digitos: el cero y el uno. La figura 2.9 permite entender el mecanismo empleado cuando se su- man niimeros binarios. 0 0 1 1 Or i 0 eT 0 1 1 10 Figura 29 La sum 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 sumar el ntimero uno con el nximero cero se obtiene como resultado el ntimero uno. El caso més interesante corresponde a la cuarta columna: si suma el mimero uno con el niimero uno, obtiene como respuesta el niime- 0 dos, Recuerde: el niimero 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 aso pets stre mioconvotcoes CQGRCET: cero. El uno que sobra se acumula y pasa a la siguiente columna. La operacién binaria: 1 + 1 + 1, se puede resolver recurriendo a sumas sucesivas. Obser- ve la figura 2.10. En el paso (a) se suman los dos primeros unos. La respuesta es cero y “Ile- 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 sumar, La res- puesta final es 11. (@) o Figura 2.10 Suma de res optosbinaros cuyo valores 1 Suma de numeros binarios La suma de niimeros binarios es similar a la suma de mimeros decimales: se empieza con los digitos situados a la derecha del ntimero binatio, sumén- dolos entre s, y calculando, ranto el resultado de a suma como el valor del acarreo (carry) que se transfiere ala siguiente columna. El proceso se repite para cada nueva co- lumna a la izquierda, pero tomando en cuenta el bit de acarreo que viene de la columna més ala derecha El proceso descrito en el pirrafo anterior pue- de resultar dificil para quien no tenga experien- cia previa con los sistemas binarios. Por esta ra- 26n, sugerimos que las sumas binarias que ten- gan algtin grado de complejidad (mimeros con muchos digitos binarios) se resuelvan convirtien- do primero los ntimeros al sistema decimal, rea- lizando a continuacién la suma y por tiltimo, 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 ntimeros binarios). Sisteitas de nuMmerdcion Numeros binarios negativos En apartados anteriores hemos visto como represen- tar niimeros decimales en notacién binaria. Pero podriamos preguntar: zy si el mimero decimal es ne- gativo? La respuesta a esta cuestién 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: Decimal Binario es 00000011 {Cémo se representa, en binario, el ntimero decimal -3 ?. Para empezar, si usted suma el valor 3 al ni- mero -3, debe obtener como respuesta el ntime- ro 0. Entonces, zqué valor debe sumarse al nii- 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 seo llama complemento a uno. Por tiltimo, se suma el bit 1 al rimero obteni- doen el paso anterior. El resultado es el ntime- ro negativo buscado. Ejemplo: Representar en binario el mimero -25. Aplicacién del algoritmo 1. Convertir el ntimero 25 a binario. 128 64 32.16 ooo1 8421 1001 2. Complementar los digitos binatios Neimero 25 Complemento a uno 00011001 11100110 3. Sumar al miimero en complemento a uno con el valor 1. Decimal Binario Complemento a uno 11100110 3 00000011 Suma con bit I 00000001 es) + 11111101e— Neimero (-25) 11100111 [Respuesta 0 100000000 | Figura 2.11 Nimerobinaro 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 niimero —3, ya que al su- ‘marlo al ntimero 3 produce el valor 0. {Cémo puede representarse, en general, un nimero decimal negativo usando el sistema bina- rio? La respuesta est contenida en cl algoritmo denominado complemento a das lo cual se logra- de la siguiente manera: 1. Se convierte el niimero decimal a su repre- sentacién en binario. 2. Seinvierten los digitos binarios: aquellos cuyo valor es uno se cambia por cero, y aquellos Resta de nimeros binarios Del apartado anterior debe resultar evidente que el proceso para realizar restas binarias con- siste simplemente en encontrar el niimero ne- gativo del valor a restar, sumandolo a conti- nuacién al ntimero positive. 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 conversin de los niimeros binarios a su equivalente decimal antes de proceder a realizar la resta. El resultado ‘obtenido se convierte al equivalence binario ne- gativo, obteniéndose la respuesta deseada. En capftulos posteriores tendremos la ocasién de aplicar este método. & GAT: 0120 pctce ste wiroconrondres =e 0) Editor de texto | PROGRAMACION DE MICROCONTROLADORES Uno de los aspectos més importantes en el disefio y en la ejecucién de pro- yectos y aparatos con microcontrola- dores, és la planeacién y escritura ade- cuadas de sus programas, los cuales varian segtin la marca y el modelo del dispositivo utilizado, jos 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 pee neericd ivrouramacion de microcontroladores La solucién de un problema de control clec- trénico, basado en microcontroladores, incluye dos etapas fundamentales: eseribir el programa en lenguaje ensamblador y generar el archivo binario ejecutable que debe grabarse en la memoria del microcontrolador. Para empezar, estudiaremos cl proceso de ensamblado de cddigo. El ensamblador est conformado por varios ‘médulos independientes, cada uno de los cuales cumple una fancién especifica. Los médulos mis importantes son los siguientes: Ensamblador basico. Genera, a partir del cé- 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 ejecuta- ble. Este cédigo es el que ejecuta directamente el microcontrolador. Control de librerfas (Jib). Este médulo permite crear archivos binarios que pueden ser unidos (enlazados) con otros bloques de eédigo binario, lo que facilita la reutilizacién de partes de pro- ‘gramas generados en otros proyectos. El uso de librerias simplifica el desarrollo de programas de gran tamafio y complejidad. La figura 3.1 muestra la estructura del en- samblador, asi como el flujo de informacién en- tre sus médulos. Teer ti Cbaigo i seis Ensamblador Figura 3.1 Estructura del ensamblador En lo sucesivo emplearemos el término en- samblador para referimnos al conjunto completo de programas que genera un archivo binario a par- tir del cédigo fuente de un programa de usuatio, 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 eddigo fuente de un programa de usuario y genera un archivo binario ejecutable. Este édigo se almacena en la memoria de progra- ma, y es ejecutado por la unidad central de proceso cada ver. que el microcontrolador se pone en marcha. Control o sistema embebido Un proyecto de control o sistema embebido (embedded system) wsiliza un microcontrolador para gestionar de manera auténoma los procesos de ad- uiscién de datos yl activacién de las lineas de sali- da conectadasa periféticos externos. Debidoa que el precio de un microcontrolador es insignificant com- parado con el de una computadora personal (PC) y, ademds, su tamafio es bastante reducido, seentiende que se lo prefiera en el control de procesos electrSni- cosy en el disefio de aparatos electrénicos modernos dotados con cierta “inteligencia” El desarrollo de un proyecto embebido esta sujeto aun ciclo de vida particular, segiin se apre- cia en la figura 3.2. Figura 3.2 Ciclo de vid de un proyecto embebido ® CIT: xc y00 wr Mecrcoitors Este ciclo de vida se atiene a principios séli- dos utilizados durante décadas por los ingenie- ros especializados en el desarrollo de programas de tipo general. Un esquema mas simple, y tal vvez. mas 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 cédigo final. a-ha erties Archivos generados por el programa ensamblador Ademés del eédigo binario, el ensamblador ge- nera un conjunto de archivos adicionales, gra- cias a los cuales es posible controlar la evolu- cidn 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: —-a Tipo de archivo ‘Extensin | Ejemplo ‘Cédigo fuente del programa | ASM | primero.asm| Cédigo binario ejecutable | HEX | primero.hex| Figura 3.3 Etapas en el desarrollo de una aplicacién para istado del programa LsT primero.tst riroconroasos 1 sua 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 rutinas.tib bajo que recoge las ideas presentadas previamente y que son la clave para desarrollar un programa con éxiro. Aunque el proceso es de naturaleza se- cuencial, es comiin 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. ee MB eotse HE oyna: TRE cererns et astera Figura 3.4 Método de trabajo para e desarrlo de programas basados en microcontolador Unarchivo con extensién ASM (6 asm, dado que aqui no importan las maytisculas o minis- culas) contiene el cédigo fuente del programa. El nombre del archivo (la palabra primero, en el ejemplo mostrado) esté separado de su extensién mediante un punto, y debe cumplir con las res- tricciones impuestas por el sistema operativo. El método mas simple para crear un nombre co- recto consiste en empezar con una letra (y en algunos casos con un caricter de subrayado (_)), agregindole a continuacién una combinacién ar- bicraria de letras, ntimeros y caracteres de subra- yado. Algunos sistemas operativos restringen la longitud del nombre a un maximo de ocho a- racteres, Ejemplos validos de nombres de archi- vos fuente son los siguientes: primeroasm _control.asm alarma_1.asm tempX20.asm Un archivo con extensién HEX u OBJ con- tiene el cédigo binario ejecutable, y se deriva au- tomaticamente de un archivo con extensién ASM. PL0G EHEC OIC GRMCTOCOT CE CEE) El proceso de ensamblado puede generar tam- bién, de manera automatica, dos archivos de gran importancia prictica. El primero deellos (con exten sién LST) es un listado que contiene el texto del programa fuente debidamente formateado, lo que permite documentar con claridad el desarollo del mismo. Este listado incluye la numeracién de pégi- nas, la fecha y la hora en que se hizo el proceso de ensimblado, la tabla de simbolos dl programa fuen- te, ladistribucién delosdatosen la memoria, as‘como los errores y advertencias que se derivan directamente del oSigo fuente. Las instrucciones se organizan en ‘olumnas de acuerdo con tna tabulacion estindar El segundo tipo de archivo (con extensién ERR) le sirve 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 serén muy utilizados en las préximas lecciones: Registro. Es un depésito de ntimeros 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- ccrocontroladores de la familia PIC) se utiliza en la mayoria de operaciones que manipulan datos. Su nombre viene de la palabra inglesa work (trabajo). Literal. Se refiere a un valor constante, usualmen- te un niimero escrito en formato hexadecimal. Ejemplos de literales: 3, 12, 3E. Estructura de un programa escrito en lenguaje ensamblador ‘Todos los microcontroladores disponen, como mi- nnimo, de un ensambladot. Ahora bien, debido a su naturaleza particular, cada ensamblador tiene sus pro- pias reglas que deben ser respetadas. Aforrunadamen- tc, existen ciertas normas de tipo general, comunes a Ja mayoria de los ensambladores, que es necesario ‘conocer para reducirel tiempo invertido en el proce- so de escribir un programa de usuario, A continua cién, comentamos algunas de estas caracteristicas. 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 coumnas de un programa fuente escrito. en ensambiador Cada una de las columnas cumple una fun- cidn espectfica, segiin se indica a continuacién. Friqueta Una etiqueta es un nombre con el cual se identi- fica una posicién de memoria del microcontro- lador, y sirve para marcar puntos especificos den- tro del programa. Toda etiqueta debe empezar a escribirse en la primera columna de la linea y su longitud no puede sobrepasar (usualmente) los 31 caracteres; puede incluir, ademis, caracteres alfanuméricos, el earderer de subrayado (_) y el simbolo de interrogacién () Insteuceién Una instruccién hace referencia a una de las ope- raciones bésicas 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 rérmino eargar se interpreta en este contexto como almacenar en, por lo que la instruccién MOVLW puede leerse as(:“almacenar un valor literal en el registro W”. Operando Un operando es un elemento utilizado por una inscruccién. Algunas instrucciones, debido a su simplicidad, no utilizan operando. Otras, un poco mis complejas, requieren el uso de un slo operando, Por tiltimo, existen instrucciones que requieren el uso de dos operandos para cumy cabalmente su funcién. El primer operando, cuando esti 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. Comentari 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 l cardeter punto y coma (). Tipos de linea que se pueden incl un programa Los programas en ensamblador se deben escribir segtin un esquema que permita estructurar de manera sélida al trabajo desarrollado. En la figu- 2.3.6 se muestra la arquitectura general de un programa para microcontrolador. en oa eo ee fed Final del programa Figura 3.6 Arqitactora general de un programa en ensamblador ‘A continuacién presentamos el significado de cada uno de los bloques mencionados. Encabezado Esel primer componente del programa, y en él se definen algunas directrices de tipo general, cono- cidas como directivas, que modifican el funcio- curso ricco ste mroconrtsos AACN: & namiento del ensamblador. Para ilustrar lo ante- rior, considere la familia de microcontroladores PIC, la cual utiliza el ensamblador MPASM, En este ensamblador a 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- nera su propio c6digo binatio y el ensamblador debe adaptarse al modelo utilizado, Para ilustrar lo expuesto en el pérrafo an- terior, supongamos que usted utiliza en un pro- yecto el microcontrolador 16C84. La directi- va que debe incluir al comienzo del programa s la siguiente: List p=16C84 ; microcontrolador 16¢84 Constances En esta seccién se incluyen las definiciones de constantes que son reconocidas en los demés puntos del programa, El uso de constantes sim- plifica la lectura de un programa, ya que, en lugar de referirse a un valor hexadecimal en par- ticular, se puede utilizar el nombre de la cons- ante asociada. La mayorfa de los ensamblado- res utilizan la palabra equ para definir una cons- tante. Por ejemplo, la linea puertoA equ 05, le indica al ensamblador que se puede utilizar la palabra puertoA en lugar del niimero 05. Definicién del origen del programa AA programar un microcontrolador es necesario indicar explicitamente en que sitio de la memo- ria 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 linea org e indica al ensamblador que debe almacenarse, a partir de la linea 0 en la memoria de programa, rodramacion de microcontroladores 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: cédigo de inseruccién. loperando(s) | ; comentario etiquera A excepcidn del campo eédigo de instruccién, Jos restantes campos pueden aparecer (0 no apa- recer) 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 inseruccién para conse- guir este propésito: end El entorno de programacién El objetivo de cualquier programa de usuario es, en principio, muy simple: leer datos de perifér cos externos, calcular, y activar Iineas 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 ‘ envia sefiales a los componentes externos, mediante el uso de puertos de salida 3 Los datos leidos en un puerto de entrada son almacenados, en primer lugar, en un registro interno del microcontrolador. 4 Cuando un microcontrolador lee muchos datos provenientes de componentes exter- [nos (mediante cl uso de puertos de ent] da), debe almacenar esta informacién en la memoria de datos; esto permite que los datos estén disponibles para ser utilizados mis adelante. 5. El microcontrolador posee una unidad arit- mética y Idgica que se encarga de realizar operaciones sobre los datos, De acuerdo con los resultados obtenidos, el microcontrola- dor toma decisiones sobre la activacién de {ineas en los puertos de salida. 16 Un sistema embebido (basado en microcon- trolador), 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- cisa lo que debe hacerse en cada instante del tiempo. 7 Un programa (conjunto de instrucciones) se almacena en la memoria de programa del microcontrolador. 8 Un microcontrolador puede recibir sefiales del exterior (en instantes del tiempo que no ¢s posible predecir), ante las cuales debe re- accionar sin pérdida de tiempo. Esto impli- acl abandono temporal de aquello que se «sti cjecutando, para dar cumplimiento a una funcin que atienda la interrupcién. A los procesos implicados en este tema se los co- noce con el nombre de procesos para el ma- ncjo de interrupciones, La figura 3.7 presenta un modelo simplifi- ‘cado del entorno en el que se desenvuelve la cje- cucién de un programa de microcontrolador. El contador de programa E] microcontrolador utiliza un registro especial, cdenominado contador de programa, para saber cudl esa siguiente instruccién que debe ejecutat: El pro- eso es simple: al comienzo de la eecucién, el con- ‘ador de programa apuntaa la primera instruccién del programa; cada vez que jecuta una instruccién, el contador de programa incrementa su valor, de modo que la instruccién que se ejecuta a préxima vex esla siguiente en la memoria de programa. Sl La ejecucién de las instrucciones, y el cam- bio en el contador de programa, es un proceso automitico y transparente para el programador, Jo 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 nacuraleza de las ins- trucciones disponibles y la forma como se orga- nizan jerérquicamente, segain las funciones para las que han sido disentadas. * Cada instruceién permite actuar sobre un de- terminado elemento del entorno de programa- cién: algunas de ellas permiten leer informa- cién proveniente de periféricos externos (me- diante puertos de entrada), mientras que otras Figura 3.76 entorn 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 elas ‘operaciones aritméticas o légicas. Los resulta- dos intermedios pueden ser devueltos nuevamen- teala memoria, oalmacenados en registros tem- porales, para ser utilizados posteriormente. La figura 3.10 muestra este tipo de instruc Figura 3.8 Fivjo probable en a ejecuctn de un programa eprint Air: Gp Instuceén de esrtra Figura 2.9 nstrucciones de etrada/salida, Dato tometo Tat Jpostenormeme Figura 3.10 instrcciones de transterencia@ memoria y caleuios antmétcos y liicos. + 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 bir de manera in- dividual. De este modo se puede tomar una decisién segain el valor del bito alterar su con- tenido cambiéndolo por un valor diferente. La figura 3.11 muestra algunas posbilidades brin- dadas por estas instrueciones. iseeccerado ‘ecién Tomar na deci : et vadorael ot Aclon2: Cambiar var del bt ona ‘Figura 3.11 Instucciones de manipulcién de bits + Los programas no siempre se ejecutan de ma- nera lineal; algunas veces es necesario 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 inscrucciones de salto se dividen en dos categorias. La primera de ellas corresponde a las instrucciones de salto condicional, en las cuales el salto se produce si, y sélo si se cum- ple una determinada condicién. La segunda categorfa 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 mucstra los dos tipos de salto indicados. Memoria de programa Memaria de programa Sato condicional Soo incondicional camino sequde cepende El cammno sep sempre eure caraeion tselmisno Figura 3.12 Salto condicional eincondcional * 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 instrueciones de con- trol, y su presencia ayuda a mejorar de manera significativacl funcionamiento de los programas. ‘A titulo de ejemplo, podemos citar las instruc- ciones que habilitan (o inhiben) la interrupcio- nes externas. En su momento se mostrard un panorama completo de elas. Instrucciones de desplazamiento de bits En ocasiones es conveniente desplazar los biis de un registro (0 posicién de memoria) para ejecutar tuna operacién matemética sencilla, 0 simplemente para crear un efecto que pueda reflejarse en el me- dio de salida, como es el caso de un display 0 des- pliegue luminoso o un conjunto de diodos 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 cl valor obtenido en la multiplicacién. wee > 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. 4) 8) 00011 000|x2

También podría gustarte