Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Eléctrica EL3003 – Laboratorio de Ingeniería Eléctrica INFORME MICROCONTROLADORES Nombre Alumnos: Profesor Fecha : : Boris Garrido Arévalo Javier Yarmuch Muñoz Tomas Ogden Araya Nelson Morales O. 1-06-2011 Santiago, Chile. 1 1. Tabla de Contenido 1. 2. Introducción........................................................................................................................... 1 Marco teórico. ....................................................................................................................... 2 2.1. El microcontrolador. .................................................................................................. 2 2.2. Diferencias entre microprocesador y microcontrolador. .............................................. 3 2.3. Estructura básica........................................................................................................ 4 2.4. Proceso en detalle. .................................................................................................... 5 2.4.1. Registros. ................................................................................................................ 6 2.4.2. Unidad de control. .................................................................................................. 6 2.4.3. Unidad aritmético-lógica. ........................................................................................ 7 2.4.4. Buses. ..................................................................................................................... 7 2.4.5. Conjunto de instrucciones....................................................................................... 7 2.5. Memoria. .................................................................................................................. 8 2.6. Periféricos. ................................................................................................................ 9 2.6.1. Temporizadores y contadores. ................................................................................ 9 2.6.2. Conversor analógico/digital..................................................................................... 9 2.6.3. Puertos de comunicación. ....................................................................................... 9 2.6.4. Comparadores. ..................................................................................................... 10 2.6.5. Modulador de ancho de pulso (PWM). .................................................................. 10 2.7. Lenguaje entre el microcontrolador y nosotros. ........................................................ 11 3. Experiencia en el laboratorio y otros. ................................................................................... 14 3.1 Configuración del software. ..................................................................................... 14 3.2 Conexión del Micro controlador. .............................................................................. 14 3.3 Actividades con MCLS-Software. .............................................................................. 14 3.3.1 Parpadeo de un LED. ............................................................................................. 14 3.3.2 Tira de LEDs. ......................................................................................................... 15 3.4 Problemas. .............................................................................................................. 16 4. Conclusiones. ....................................................................................................................... 17 2 1. Introducción En cualquier proceso de cualquier índole, ya sea este un mecanismo mecánico, de transmisión de calor, un proceso industrial o cualquiera que sea, está presente la idea de mantener un control sobre los mecanismos y variables involucradas para lograr una estabilidad y obtener así los resultados esperados. Dentro de esta idea de control son importantes dos puntos, el primero es la medición de las variables que participan el proceso y que determinan su resultado, y el segundo es dar paso a acciones que lleven estas variables a los valores considerados adecuados. Así, pudiendo manejar estos puntos, el proceso debería comportarse de una manera prevista y los resultados obtenidos serán muy cercanos a los esperados, cosa muy importante ya que en muchos de estos procesos un funcionamiento erróneo puede conllevar a pérdidas cuantiosas en cuanto a lo económico o irremediables cuando se trata de la seguridad de las personas. Para lograr este control se han inventado diversos sistemas, si bien la idea de control no ha cambiado, las implementaciones para este fin si lo han hecho. Así, los primeros sistemas de control consistían en elementos digitales discretos, pero la necesidad de ahorro de espacio y dinero llevaron al desarrollo de dispositivos cada vez más pequeños, llegando a crearse sistemas integrados de control, los llamados microcontroladores. Dichos microcontroladores, cada vez más capaces y más pequeños, son los responsables del control de la mayoría de los procesos que ocurren dentro de los aparatos modernos, estando presentes en cosas tan inimaginables como en el sistema de frenos de un automóvil o el control de temperatura de un horno. Así, poco a poco los estos pequeños dispositivos toman más fuerza y ganan más terreno dentro de la tecnología actual, llegando a que en un mundo moderno la idea de un mecanismo complejo que no utilice microcontroladores se hace impensable. 1 2. Marco teórico. 2.1.El microcontrolador. Un microcontrolador es un circuito integrado que incluye en su interior las tres unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada y salida. La memoria del programa en forma de flash ROM a menudo se incluyen en el chip, así como una pequeña cantidad de RAM . Estos son diseñados para aplicaciones embebidas, en contraste con los microprocesadores utilizados en computadoras personales u otras aplicaciones de propósito general. Figura 1: ejemplo microcontrolador. Los microcontroladores son utilizados en los productos controlados automáticamente y dispositivos, tales como los sistemas de control del motor del automóvil, los dispositivos médicos implantables, mandos a distancia, máquinas de oficina, electrodomésticos, herramientas eléctricas, juguetes, etc. Al reducir el tamaño y el costo en comparación con un diseño que utiliza un microprocesador independiente, memoria y dispositivos de entrada/salida. Algunos microcontroladores pueden utilizar bits de palabras de cuatro y funcionan a la velocidad de la frecuencia de un reloj incorporado tan bajas como 4 [kHz], de bajo consumo de energía. Por lo general, tendrá la capacidad de conservar la funcionalidad a la espera de un evento como pulsar un botón u otra interrupción. Otros microcontroladores pueden servir en roles críticos de rendimiento, donde pueden necesitar que actué más como un procesador de señal digital (DSP), con velocidades de reloj más alta y el consumo de energía. 2 2.2.Diferencias entre microprocesador y microcontrolador. “La idea es que el circuito integrado se coloque en el dispositivo, enganchado a la fuente de energía y de información que necesite, y eso es todo. Un microprocesador tradicional no le permitirá hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los modulos de entrada y salida (puertos) y la memoria para almacenamiento de información.” El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (UCP), también llamada procesador, de un computador. La UCP está formada por la Unidad de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta. Las patitas de un microprocesador sacan al exterior las líneas de sus buses de direcciones, datos y control, para permitir conectarle con la Memoria y los Módulos y configurar un computador implementado por varios circuitos integrados. Se dice que un microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la aplicación a la que se destine. Figura 2: ejemplo en esquema de un microprocesador. Si sólo se dispusiese de un modelo de microcontrolador, éste debería tener incluido todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. En la práctica cada fabricante de microcontroladores ofrece un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Es posible seleccionar la capacidad de las memorias, el número de pines, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño es la selección del microcontrolador a utilizar. 3 Figura 3: Figura general periféricos. El microcontrolador es un sistema cerrado. Todas las partes del computador están contenidas en su interior y sólo salen al exterior las líneas que gobiernan los periféricos. 2.3.Estructura básica. El tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación, un ejemplo es el control de un electrodoméstico sencillo como una batidora, utilizará un procesador muy pequeño (4 u 8 bit) por que sustituirá a un autómata finito. En cambio un reproductor de música y/o vídeo digital (mp3 o mp4) requerirá de un procesador de 32 bit o de 64 bit y de uno o pines de señal digital (audio y/o vídeo). Figura 4: Esquema de un microcontrolador. Estos dispositivos representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs más especializados. Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc. Un microcontrolador difiere de una unidad central de procesamiento normal, debido a que es más fácil convertirla en una computadora en funcionamiento, con un mínimo de circuitos integrados externos de apoyo. 4 Los microcontroladores disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidores de analógico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y otros. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programación integrado, como el lenguaje de programación BASIC que se utiliza bastante con este propósito. Los microcontroladores negocian la velocidad y la flexibilidad para facilitar su uso. Debido a que se utiliza bastante sitio en el chip para incluir funcionalidad, como los dispositivos de entrada/salida o la memoria que incluye el microcontrolador, se ha de prescindir de cualquier otra circuitería. 2.4.Proceso en detalle. Antes de que existieran los microcontroladores, existían circuitos integrados los cuales eran muy sistemas digitales muy complejos, los cuales si se quería hacer una pequeña modificación de cualquier tipo, se tenia que pensar en crear grandes cambios en la configuración del hardware, pero al avanzar los años, pero todo eso cambio con el surgimiento del primer microcontrolador (el 4004 destinado al desarrollo de las calculadoras), este tiene la capacidad de hacer cálculos dependiendo de códigos de entrada adecuados. Visto así, no hay nada de especial en un microprocesador; la maravilla está en que la combinación adecuada de los códigos de entrada, su ejecución secuencial, el poder saltar hacia atrás o adelante en la secuencia de códigos en base a decisiones lógicas u órdenes específicas, permite que la máquina realice un montón de operaciones complejas, no contempladas en los simples códigos básicos. Es lógico pensar que el invento del microprocesador integrado no fue una revelación divina para sus creadores, sino que se sustentó en los avances, existentes hasta el momento, en el campo de la electrónica digital y las teorías sobre computación. Pero sin lugar a dudas fue “la gota que rebalso el vaso” de la revolución científico-técnica, porque permitió desarrollar aplicaciones impensadas o acelerar algunas ya encaminadas. Ahora comenzaremos a ver cómo es que está hecho un procesador, no será una explicación demasiado detallada porque desde su invención éste ha tenido importantes revoluciones propias, pero hay aspectos básicos que no han cambiado y que constituyen la base de cualquier microprocesador. En la Figura 'Esquema de un microcontrolador' podemos ver la estructura típica de un microprocesador, con sus componentes fundamentales, claro está que ningún procesador real se ajusta exactamente a esta estructura, pero aun así nos permite conocer cada uno de sus elementos básicos y sus interrelaciones. 5 2.4.1. Registros. Son un espacio de memoria muy reducido pero necesario para cualquier microprocesador, de aquí se toman los datos para varias operaciones que debe realizar el resto de los circuitos del procesador. Los registros sirven para almacenar los resultados de la ejecución de instrucciones, cargar datos desde la memoria externa o almacenarlos en ella. Aunque la importancia de los registros parezca trivial, no lo es en absoluto. De hecho una parte de los registros, la destinada a los datos, es la que determina uno de los parámetros más importantes de cualquier microprocesador. Cuando escuchamos que un procesador es de 4, 8, 16, 32 o 64 bits, nos estamos refiriendo a procesadores que realizan sus operaciones con registros de datos de ese tamaño, y por supuesto, esto determina muchas de las potencialidades de estas máquinas. Mientras mayor sea el número de bits de los registros de datos del procesador, mayores serán sus prestaciones, en cuanto a poder de cómputo y velocidad de ejecución, ya que este parámetro determina la potencia que se puede incorporar al resto de los componentes del sistema, por ejemplo, no tiene sentido tener una ALU de 16 bits en un procesador de 8 bits. Por otro lado un procesador de 16 bits, puede que haga una suma de 16 bits en un solo ciclo de máquina, mientras que uno de 8 bits deberá ejecutar varias instrucciones antes de tener el resultado, aun cuando ambos procesadores tengan la misma velocidad de ejecución para sus instrucciones. El procesador de 16 bits será más rápido porque puede hacer el mismo tipo de tareas que uno de 8 bits, en menos tiempo. 2.4.2. Unidad de control. Esta unidad es de las más importantes en el procesador, en ella recae la lógica necesaria para la decodificación y ejecución de las instrucciones, el control de los registros, la ALU, los buses y cuanta cosa más se quiera meter en el procesador. La unidad de control es uno de los elementos fundamentales que determinan las prestaciones del procesador, ya que su tipo y estructura, determina parámetros tales como el tipo de conjunto de instrucciones, velocidad de ejecución, tiempo del ciclo de máquina, tipo de buses que puede tener el sistema, manejo de interrupciones y un buen número de cosas más que en cualquier procesador van a parar a este bloque. Por supuesto, las unidades de control, son el elemento más complejo de un procesador y normalmente están divididas en unidades más pequeñas trabajando de conjunto. La unidad de control agrupa componentes tales como la unidad de decodificación, unidad de ejecución, 6 controladores de memoria cache, controladores de buses, controladores de interrupción, pipelines, entre otros elementos, dependiendo siempre del tipo de procesador. 2.4.3. Unidad aritmético-lógica. Como los procesadores son circuitos que hacen básicamente operaciones lógicas y matemáticas, se le dedica a este proceso una unidad completa, con cierta independencia. Aquí es donde se realizan las sumas, restas, y operaciones lógicas típicas del álgebra. Actualmente este tipo de unidades ha evolucionado mucho y los procesadores más modernos tienen varias ALU, especializadas en la realización de operaciones complejas como las operaciones en coma flotante. Su impacto en las prestaciones del procesador es también importante porque, dependiendo de su potencia, tareas más o menos complejas, pueden hacerse en tiempos muy cortos. 2.4.4. Buses. Son el medio de comunicación que utilizan los diferentes componentes del procesador para intercambiar información entre sí, eventualmente los buses o una parte de ellos estarán reflejados en los pines del encapsulado del procesador. Existen tres tipos de buses: Dirección: Se utiliza para seleccionar al dispositivo con el cual se quiere trabajar o en el caso de las memorias, seleccionar el dato que se desea leer o escribir. Datos. Control: Se utiliza para gestionar los distintos procesos de escritura, lectura y controlar la operación de los dispositivos del sistema. 2.4.5. Conjunto de instrucciones. Aunque no aparezca en el esquema, no podíamos dejar al conjunto o repertorio de instrucciones fuera, porque este elemento determina lo que puede hacer el procesador. Define las operaciones básicas que puede realizar el procesador, que conjugadas y organizadas forman lo que conocemos como software. El conjunto de instrucciones vienen siendo como las letras del alfabeto, el elemento básico del lenguaje, que organizadas adecuadamente permiten escribir palabras, oraciones y cuanto programa se le ocurra. Existen dos tipos básicos de repertorios de instrucciones, que determinan la arquitectura del procesador: CISC y RISC. CISC, del inglés Complex Instruction Set Computer, Computadora de Conjunto de Instrucciones Complejo. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y que permiten realizar operaciones complejas entre operandos situados en la 7 memoria o en los registros internos. Este tipo de repertorio dificulta el paralelismo entre instrucciones, por lo que en la actualidad, la mayoría de los sistemas CISC de alto rendimiento, convierten las instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones. RISC, del inglés Reduced Instruction Set Computer, Computadora con Conjunto de Instrucciones Reducido. Se centra en la obtención de procesadores con las siguientes características fundamentales: Instrucciones de tamaño fijo. Pocas instrucciones. Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos. Número relativamente elevado de registros de propósito general. Una de las características más destacables de este tipo de procesadores es que posibilitan el paralelismo en la ejecución, y reducen los accesos a memoria. Es por eso que los procesadores más modernos, tradicionalmente basados en arquitecturas CISC implementan mecanismos de traducción de instrucciones CISC a RISC, para aprovechar las ventajas de este tipo de procesadores. Los procesadores de los microcontroladores PIC son de tipo RISC. 2.5.Memoria. Memoria de programa: El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. Como éste siempre es el mismo, debe estar grabado de forma permanente. Existen algunos tipos de memoria adecuados para soportar estas funciones, de las cuales se describen las siguientes: - ROM con máscara: se graba mediante el uso de máscaras. Sólo es recomendable para series muy grandes debido a su elevado coste. - EPROM: se graba eléctricamente con un programador controlador por un PC. Disponen de una ventana en la parte superior para someterla a luz ultravioleta, lo que permite su borrado. Puede usarse en fase de diseño, aunque su coste unitario es elevado. - OTP: su proceso de grabación es similiar al anterior, pero éstas no pueden borrarse. Su bajo coste las hacen idóneas para productos finales. - EEPROM: también se graba eléctricamente, pero su borrado es mucho más sencillo, ya que también es eléctrico. No se pueden conseguir grandes capacidades y su tiempo de escritura y su consumo es elevado. - FLASH: se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero que suelen disponer de mayor capacidad que estas últimas. Son recomendables aplicaciones en las que es necesario modificar el programa a lo largo de la vida del producto. Por sus mejores prestaciones, está sustituyendo a la memoria EEPROM para contener instrucciones. 8 Memoria de datos: Los datos que maneja los programas varían continuamente, y esto exige que la memoria que los contiene debe ser de lectura y escritura, por lo que la memoria RAM estática (SRAM) es la más adecuada, aunque sea volátil. Hay microcontroladores que disponen como memoria de datos una de lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. 2.6.Periféricos. Cuando observamos la organización básica de un microcontrolador, señalamos que dentro de este se ubican un conjunto de periféricos, cuyas salidas están reflejadas en los pines del microcontrolador. A continuación describiremos algunos de los periféricos que con mayor frecuencia encontraremos en los microcontroladores. 2.6.1. Temporizadores y contadores. Son circuitos sincrónicos para el conteo de los pulsos para poder tener una entrada de reloj. Si la fuente de un gran conteo es el oscilador interno del microcontrolador es común que no tengan un pin asociado, y en este caso trabajan como temporizadores. Por otra parte, cuando la fuente de conteo es externa, entonces tienen asociado un pin configurado como entrada, este es el modo contador. Los temporizadores son uno de los periféricos más habituales en los microcontroladores y se utilizan para muchas tareas, como por ejemplo, la medición de frecuencia, implementación de relojes, para el trabajo de conjunto con otros periféricos que requieren una base estable de tiempo entre otras funcionalidades. 2.6.2. Conversor analógico/digital. Es muy frecuente el trabajo con señales analógicas, éstas deben ser convertidas a digital y por ello muchos microcontroladores incorporan un conversor analógico-digital, el cual se utiliza para tomar datos de varias entradas diferentes que se seleccionan mediante un multiplexor. 2.6.3. Puertos de comunicación. Existen distintos protocolos de comunicación, que consisten en el envio de información con sierto tipos de señales, siertos intervalos de tiempo, en algunos casos la comunicación puede ser bidireccional, se mencionaran algunos de los mas importantes: 9 2.6.3.1. Puerto serie Este periférico está presente en casi cualquier microcontrolador, normalmente en forma de UART (Universal Asynchronous Receiver Transmitter) o USART (Universal Synchronous Asynchronous Receiver Transmitter) dependiendo de si permiten o no el modo sincrónico de comunicación. 2.6.3.2. SPI Este tipo de periférico se utiliza para comunicar al microcontrolador con otros microcontroladores o con periféricos externos conectados a él, por medio de una interfaz muy sencilla . Hay solo un nodo controlador que permite iniciar cualquier transacción, lo cual es una desventaja en sistemas complejos, pero su sencillez permite el aislamiento galvánico de forma directa por medio de optoacopladores. 2.6.3.3. I2C Cumple las mismas funciones que el SPI, pero requiere menos señales de comunicación y cualquier nodo puede iniciar una transacción. Es muy utilizado para conectar las tarjetas gráficas de las computadores personales con los monitores, para que estos últimos informen de sus prestaciones y permitir la autoconfiguración del sistema de video. 2.6.3.4. USB Los microcontroladores son los que han permitido la existencia de este sistema de comunicación. Es un sistema que trabaja por polling (monitoreo) de un conjunto de periféricos inteligentes por parte de un amo, que es normalmente un computador personal. Cada nodo inteligente está gobernado inevitablemente por un microcontrolador. 2.6.4. Comparadores. Son circuitos analógicos basados en amplificadores operacionales que tienen la característica de comparar dos señales analógicas y dar como salida los niveles lógicos ‘0’ o ‘1’ en dependencia del resultado de la comparación. Es un periférico muy útil para detectar cambios en señales de entrada de las que solamente nos interesa conocer cuando está en un rango determinado. 2.6.5. Modulador de ancho de pulso (PWM). Los PWM (Pulse Width Modulator) son periféricos muy útiles sobre todo para el control de motores, sin embargo hay un grupo de aplicaciones que pueden realizarse con este periférico, dentro de las cuales podemos citar: inversión DC/AC para UPS, conversión digital analógica D/A, control regulado de luz (dimming) entre otras. 10 2.7. Lenguaje entre el microcontrolador y nosotros. Lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación. Una visión típica de la arquitectura de computadoras como una serie de capas de abstracción: hardware, firmware, ensamblador, kernel, sistema operativo y aplicaciones. Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del “álgebra de Boole” a las redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos. El sistema binario, en matemáticas e informática, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). El sistema Hexadecimal, es el sistema de numeración de base 16 (empleando por tanto 16 símbolos). Su uso actual está muy vinculado a la informática y ciencias de la computación, pues los computadores suelen utilizar el byte u octeto como unidad básica de memoria; y, debido a que un byte representa 28 valores posibles, y esto puede representarse como , que, según el teorema general de la numeración posicional, equivale al número en base 16 , dos dígitos hexadecimales corresponden exactamente (permiten representar la misma línea de enteros) a un byte. 11 En principio, dado que el sistema usual de numeración num es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos quee nos faltan. El conjunto de símbolos sería, por tanto, el siguiente: S = {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} Se debe notar que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. En ocasiones se emplean letras minúsculas en lugar de mayúsculas. Como en cualquier sistema de numeración posicional, el valor numérico de cada dígito es alterado dependiendo de su posición en la cadena de dígitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo: 3E0A16 = 3×163 + E×162 + 0×161 + A×160 = 3×4096 + 14×256 + 0×16 + 10×1 = 15882. El sistema hexadecimal actual fue introducido en el ámbito de la computación por primera vez por IBM en 1963.. Una representación anterior, con 0 0–9 y u–z, z, fue usada en 1956 por la computadora Bendix G-15. Figura 5: Lenguaje de maquina hexadecimal. El lenguaje ensamblador, o assembler (assembly language en inglés ) es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representa representación ción es usualmente definida por el fabricante de hardware, los registros del procesador, las posiciones posicione de memoria,, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel,, que, idealmente son portables. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola ola declaración gener generalmente da lugar a muchas instrucciones de máquina. 12 Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados. 13 3. Experiencia en el laboratorio y otros. 3.1 Configuración del software. Primero que todo, es necesario configurar el software que se utiliza para hacer funcionar y programar el micro controlador. Al proceder con esto hubo un problema grave con la compatibilidad del software con la versión del sistema operativo, por lo tanto se procedió a descargar una nueva versión que contiene una actualización que sirve para hacerlo funcionar. El software utilizado esta en http://mcls-modular.de/download/deutsch/idev310.exe . Al instalarlo, identifica por si mismo que esta conectado un hardware conocido. Se elige el 80C535 y se continúa. Lo demás procede de la misma forma que se señala en la guía de trabajo. 3.2 Conexión del Micro controlador. La conexión que hay entre la plataforma de trabajo y el computador es vía puerto COM. Al tener esto conectado, se necesita que las placas estén correctamente conectadas en la plataforma y también estén correctamente conectadas entre ellas. Al hacerlo así, se puede proceder a probar los distintos programas que trae el software. 3.3 Actividades con MCLS-Software. 3.3.1 Parpadeo de un LED. Primero que todo, es necesario conectar las placas de la siguiente forma: 14 Luego, al abrir el archivo blink1.asm en el programa, y después de analizar su contenido, se obtuvo el resultado esperado. Se logró que el LED conectado al puerto P1.7 se encendiera. Ese puerto se puede cambiar, buscándolo en el código y eligiendo el que uno quiera. Por otro lado, dentro de las líneas de comandos, se encuentra un subprograma llamado tiempo, el cual da la orden al LED de parpadear con cierta frecuencia. Si este subprograma no se encuentra, el LED simplemente no parpadeará. Por último, el switch al cual se conecta, no influye en este programa, ya que al moverse no hace ninguna variación en el LED que parpadea. 3.3.2 Tira de LEDs. En la siguiente experiencia se necesita que se conecten las cosas de la siguiente forma: 15 Como se ve, todos los LEDs están conectados a un puerto diferente lo cual hace pensar que cada uno se debería comportar de una forma diferente con respecto a otro. De hecho, al abrir el programa led_II.asm en el software, se logra que los LEDs se prendan, logrando una secuencia entre todos. Esta secuencia está determinada por una línea de comando que contiene 8 valores, que son ceros y unos, y que está desfasada para cada LED, de forma que se logra obtener la secuencia mencionada. Ese desfase, es controlado por el subprograma tiempo que determina un cierto periodo entre una orden y otra. Por último, es importante señalar que en esta experiencia, el switch si es útil. Lo que hace es hacer funcionar la secuencia al revés, es decir, el código entra al revés por cada led, haciendo que se vea al revés el juego de luces. 3.4 Problemas. Uno de los más grandes problemas que se tuvo, fue no poder hacer funcionar el programa en un principio, lo cual imposibilitaba todo el desarrollo de la actividad. Pero no solo surgió ese problema. También ocurrió que las últimas dos experiencias no estaban en el software, por lo tanto no se pudieron concretar. Estas actividades corresponden a Encendido de Led por medio de teclado y Conteo Hexadecimal. 16 4. Conclusiones. Al principio, cuando aparecieron los primeros microcontroladores no se pensó que estos fuesen a causar un gran impacto en las vidas de las personas y en el mundo, pero a medida que pasaron los años, se fue demostrando la verdadera revolución que ocasionarían mejorando nuestras vidas. Hoy en dia hay microcontroladores en todo lo que nos rodea, disminuyendo los espacios requeridos por los circuito, aumento del control de los dispositivos electrónicos, etc. Además se pudo experimentar de forma practica algunas características importantes que nos permiten facilitarnos la vida, con una simple manipulación de led, el cual es el comienzo de robot en industrias automatizadas, automóviles, en fin, un mundo de posibilidades incontables que van creciendo día a día. 17