You are on page 1of 13

1

Microcontroladores y su Programacin.
10270929 GUSTAVO NAHM GREGORIO VALENCIA

C ONTENTS I Caractersticas de los Microcontroladores. I-A las caractersticas que nos ayudan a decidir entre la gran variedad de microcontroladores (PIC) son: . . . . . . . . I-B Introduccin. . . . . . . . . . . . . . . . I-C Familias . . . . . . . . . . . . . . . . . I-C1 Arquitectura Von Neumann . I-C2 Arquitectura Harvard . . . . I-C3 Arquitectura vs Microarquitectura . . . . . . . . . . . . I-C4 Principales familias . . . . . I-D Ancho de buses . . . . . . . . . . . . . I-E Memoria . . . . . . . . . . . . . . . . . I-E1 Memoria de programa . . . . I-E2 Memoria de datos . . . . . . Circuitera alternativa para entrada/salida II-A Displays LED, LCD y otros dispositivos de visualizacin. . . . . . . . . . . . . II-A1 Diodos LED . . . . . . . . . II-A2 Display de 7 segmentos basado en diodos LED . . . II-A3 Visualizador de cristal lquido (LCD) . . . . . . . . II-A4 Las vlvulas de vaco . . . . II-A5 Visualizadores uorescentes . II-B Codicadores de posicin. . . . . . . . II-B1 Codicadores incrementales . II-B2 Codicadores absolutos . . . Programacin de microcontroladores. III-A Modelo de programacin. . . . . . . . III-B Estructura de los registros del CPU . . III-B1 Registros de Datos (AX, BX, CX,DX): . . . . . . . . . . . III-B2 Registros de Segmentos (CS, DS, SS, ES): . . . . . . . . . III-B3 Registros Especiales [SP, IP, FLAGS(BANDERAS)]: . . . III-B4 Registros de Indice y Punteros (SI, DI, BP): . . . . . . III-B5 Registros de la CPU . . . . . III-C Modos de direccionamiento . . . . . . III-D Conjunto de instrucciones . . . . . . . III-E Lenguajes ensambladores . . . . . . . III-F Codicacin . . . . . . . . . . . . . . . 1

2 2 3 3 3 4 4 4 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7

Denicin de Microcontrolador: Un microcontrolador es una computadora encapsulada en un slo circuito integrado (chip). La palabra micro se reere a que es un dispositivo pequeo y controlador se reere a que el dispositivo puede ser utilizado para controlar objetos, procesar informacin o efectuar eventos. En otra denicin, un microcontrolador es un chip de alta integracin que contiene todos los componentes necesarios para efectuar funciones de control. Diferencias entre microprocesador y microcontrolador: El microcontrolador tiene su base en el microprocesador que encontramos en una computadora, a diferencia de que el ltimo est diseado para propsito general, mientras que el microcontrolador se utiliza para tareas ms especicas. El microprocesador se dene como Unidad Central de Proceso (CPU) en un slo chip y est diseado para leer y ejecutar instrucciones almacenadas en memoria.

II

III

Tabla 1: Diferencia entre microprocesadores y microcontroladores

7 I. C ARACTERSTICAS DE LOS M ICROCONTROLADORES . 8 8 8 8 10 10 11 12 13 Las principales caractersticas de los Microcontroladores son: Unidad de Procesamiento Central (CPU): Tpicamente de 8 bits, pero tambin las hay de 4, 32 y hasta 64 bits con arquitectura Harvard, con memoria/bus de datos separada de la memoria/bus de instrucciones de programa, o arquitectura de von Neumann, tambin llamada arquitectura Princeton, con memoria/bus de datos y memoria/ bus de programa compartidas. Memoria de Programa: Es una memoria ROM (ReadOnly Memory), EPROM (Electrically Programable ROM), EEPROM (Electrically Erasable/Programable

References

ROM) o Flash que almacena el cdigo del programa que tpicamente puede ser de 1 kilobyte a varios megabytes. Memoria de Datos: Es una memoria RAM (Random Access Memory) que tpicamente puede ser de 1, 2 4, 8, 16, 32 kilobytes. Generador del Reloj: Usualmente un cristal de cuarzo de frecuencias que genera una seal oscilatoria de entre 1 a 40 MHz, o tambin resonadores o circuitos RC. Interfaz de Entrada/Salida: Puertos paralelos, seriales (UARTs, Universal Asynchronous Receiver/Transmitter), I2C (Inter-Integrated Circuit), Interfaces de Perifricos Seriales (SPIs, Serial Peripheral Interfaces), Red de Area de Controladores (CAN, Controller Area Network), USB (Universal Serial Bus). Otras opciones: Conversores Anlogo-Digitales (A/D, analog-todigital): Para convertir un nivel de voltaje en un cierto pin a un valor digital manipulable por el programa del microcontrolador. Moduladores por Ancho de Pulso (PWM, PulseWidth Modulation): Para generar ondas cuadradas de frecuencia ja pero con ancho de pulso modicable. La alta integracin de subsistemas que componen un Microcontrolados reduce el nmero de chips, la cantidad de pistas y espacio que se requerira en un circuito impreso si se implementase un sistema equivalente usando chips separados. A. las caractersticas que nos ayudan a decidir entre la gran variedad de microcontroladores (PIC) son:

Nmero de bits: Arquitecturas de 8, 16 y 32 bits. Velocidad: en MIPS o en MHz. De 4MHz a 80MHz. Memoria de programa: Tamao: de 300Bs a 512KBs. Tipo: Flash (regrabable) vs OTP (programable una nica vez). Autoescribible? ICSP. Memoria principal: de 16Bs a 64KBs. Memoria permanente: EEPROM de 0 a 4KBs. Temperatura de trabajo: De -40C a 150C. Voltaje: desde 18V. Encapsulado: DIP/SPDIP para prototipos. Otros: SOIC, QFN, SSOP, TQFP, DFN, . . . Pines de E/S y pines totales: 4 a 85 / 6 a 100 Unidades de E/S y otros componentes: Conversores A/D. Nmero de puertos: 0 a 32 Resolucin (bits) por puerto: 10b a 16b Puertos de comunicacin digital (serie, RF, Ethernet, USB, . . . ). USB: Soporte para USB 2.0. OTG (On-The-Go): Pensado para sistemas embebidos, permite que un mismo dispositivo acte como master y como slave. UART / USART: Clsica conexin de puerto serie (RS-232). La UART slo soporta comunicacin asncrona. Comunicacin con otros sistemas.

SPI (Serial Peripheral Interface): interfaz serie sncrona y full-duplex que sigue el paradigma maestro/esclavo. Comunicacin entre componentes electrnicos del mismo sistema, que requieran buen ancho de banda. I2C (Inter-Integrated Circuit): maestro/esclavo ms lento que SPI. Pensado para comunicacin entre componentes que no requieran velocidad, sino bajo coste. Requiere menos pines y permite conectar dispositivos en caliente. CAN (Controller Area Network): Comunica varias MCUs entre s. Diseado para automviles comunicar todos los sistemas electrnicos del automvil. LIN (Local Interconnect Network): Subsistema de CAN ms econmico. IrDA: Comunicacin por infrarrojos. Puerto paralelo: GPIO, PMP. AC97: Interfaz de E/S para audio. Conecta la MCU con un codec externo. Ethernet: clsica conexin de red. Radiofrecuencia (RF): comunicacin inalmbrica rfPIC: 10MW (~200m) Temporizadores, comparadores, PWM, capturadores Timers: Contadores de 8 a 32 bits que se incrementan automticamente. Permiten temporizar operaciones, interfaces, etc. Puede haber varios por chip (de 1 a 13). Watchdog Timer: Contador que se incrementa autom Mdulo CCP (Capture/Compare/PWM): Utiliza un registro dedicado para las tres funciones (CCPR) y un pin de E/S dedicado. Acta junto con el primer temporizador (TMR1). Capture: en el momento en el que ocurre un anco (programable) en el pin, se guarda el valor de TMR1 en CCPR y salta una interrupcin. Compare: se guarda un valor en CCPR, y salta una interrupcin cada vez que el valor de TMR coincide con el de CCPR. PWM (Pulse Width Modulation): utilizado para control de motores. Usa el pin como salida, emitiendo un pulso modulado en anchura. B. Introduccin. Los micrconctoladores son computadores digitales integrados en un chip que cuentan con un microprocesador o unidad de procesamiento central (CPU), una memoria para almacenar el programa, una memoria para almacenar datos y puertos de entrada salida. A diferencia de los microprocesadores de propsito general, como los que se usan en los computadores PC, los microcontroladores son unidades autosucientes y ms econmicas. El funcionamiento de los microcontroladores est determinado por el programa almacenado en su memoria.

Este puede escribirse en distintos leguajes de programacin. Adems, la mayora de los microcontroladores actuales pueden reprogramarse repetidas veces. Por las caractersticas mencionadas y su alta exibilidad, los microcontroladores son ampliamente utilizados como el cerebro de una gran variedad de sistemas embebidos que controlan mquinas, componentes de sistemas complejos, como aplicaciones industriales de automatizacin y robtica, domtica, equipos mdicos, sistemas aeroespaciales, e incluso dispositivos de la vida diaria como automviles, hornos de microondas, telfonos y televisores. Un aspecto de especial inters para el desarrollador de circuitos basados en Microcontroladores son las interfaces de entrada/salida. A travs de los pines del chip asociados a las interfaces de entrada/salida, el Micro puede interactuar con otros circuitos externos envindoles seales de comando o recibiendo estmulos correspondientes a variables externas. Por lo general varios pines de datos son bidireccionales, es decir pueden congurarse como entradas o salidas. Cuando son entradas, pueden adquirir datos interpretando el valor de voltaje como un valor lgico 0 o 1, mientras que cuando son salidas pueden entregar una seal binaria de voltaje cuya magnitud depender del valor lgico 0 o 1. Monitoreando el valor de las entradas, el Microcontrolador puede responder a eventos externos y realizar una cierta accin, como variar las seales de salida de acuerdo al valor en la entradas. Para responder a eventos externos, los Microcontroladores cuentan con un recurso conocido como interrupciones. Las interrupciones son seales que se generan internamente en el Microcontrolador que detienen la ejecucin normal del programa para ejecutar alguna subrutina de respuesta al evento. Una vez ejecutada la subrutina de interrupcin la ejecucin del programa continua en el punto en que se encontraba antes de generarse la interrupcin. Un ejemplo tpico es el de un botn pulsador conectado a un pin de entrada. Una vez pulsado, se genera una seal de interrupcin que iniciar la ejecucin de la subrutina de interrupcin, que por ejemplo podra activar un pin de salida para encender un led. C. Familias 1) Arquitectura Von Neumann: Con esta arquitectura se hace el diseo conceptual y la estructura operacional de la mayora de microprocesadores y de computadoras de uso personal que se utilizan desde su aparicin a la fecha. Esta arquitectura esta basada en el concepto de programa almacenado propuesto por el matemtico Von Neumann y propuesto por Jhon presper Ecker, Jhon William Mauchly, Arthur Burks, entre otros en el periodo de construccin de la ENIAC. En la arquitectura Von Neumann la CPU se conecta a una memoria principal nica generalmente del tipo RAM, donde se almacenan los datos y el programa, accediendo a travs de un sistema de buses nico, como son el bus de direccin, control y datos.

La arquitectura Von Neumann tiene varias limitaciones:

La longitud de las instrucciones estn limitadas por el bus de datos, lo que hace que el ejecutar una instruccin compleja requiera varios accesos a memoria. El microprocesador es mas lento en su respuesta, la velocidad de operacin se afecta por tener un nico bus para datos e instrucciones lo que impide acceder a la memoria de datos y de instrucciones simultneamente, es decir, no permite superponer tiempos de acceso.

Figura 1: Arquitectura Von Neumann

2) Arquitectura Harvard: El termino proviene de la Harvard Mark I, la cual almacenaba los datos en cintas perforadas y las instrucciones mediante interruptores, la arquitectura Harvard se caracteriza por tener separados los bloques de memoria de datos e instrucciones y acceder a ellos por buses independientes de direccin, datos y control. La independencia de buses permite tener accesos simultneos e independientes a la memoria de datos e instrucciones, el contenido y longitud de las localidades de memoria pueden ser distintos para los datos e instrucciones, esto permite un optimizacin en el uso de la memoria. Los diseadores aprovechan este concepto donde la memoria de datos puede por ejemplo de 8bits, mientras la memoria de instrucciones se adecua a la longitud de las instrucciones buscando que cada instruccin se aloje en una posicin de memoria, con lo que la ejecucin de una instruccin puede hacerse en un solo ciclo maquina, permitiendo tambin la superposicin de tiempos de acceso, por tanto en el mismo lapso que busca y ejecuta una instruccin puede estar realizando una accin de lectura o escritura en la memoria de datos. Esta caracterstica es explotada por microprocesadores y microcontroladores con conjunto de instrucciones reducido (RISC). La arquitectura Harvard tiene ventajas signicativas con respecto a la arquitectura Von Neumann, las ms signicativitas son:

El tamao de las instrucciones no esta relacionado con el tamao de los datos permitiendo optimizar la memoria haciendo que cada instruccin ocupe una nica posicin de memoria, esto hace que la longitud de programa puede ser menor. La posibilidad de superponer tiempos de acceso, es decir, poder acceder a la memoria de programa y a la memoria de datos en el mismo ciclo maquina, esta caracterstica y la anterior permiten una velocidad de operacin es mas alta

Figura 2: Arquitectura Harvard

3) Arquitectura vs Microarquitectura: La arquitectura de un ordenador est constituida por la arquitectura de su conjunto de instrucciones o ISA (del ingls Instruction Set Architecture) y su microarquitectura. Arquitectura del ordenador = Arquitectura del conjunto de instrucciones (ISA) + Microarquitectura La arquitectura del conjunto de instrucciones (ISA) es una imagen abstracta del sistema de computacin tal como sera visto por un programador en lenguaje mquina, e incluye el conjunto de instrucciones, modos de direccionamiento, registros y formatos de direcciones y datos soportados por el procesador o CPU (del ingls Central Processing Unit). Los procesadores, y por extensin los ordenadores, quedan denidos por tanto en base a la arquitectura del conjunto de instrucciones que implementan, as podemos encontrar referencias a procesadores u ordenadores de tipo CISC, RISC o SISC: CISC (Complex Instruction Set Computer): Modelo de arquitectura de computadores cuyos microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos. Los CISC pertenecen a la primera corriente de construccin de procesadores antes del desarrollo de los RISC, este tipo de arquitectura diculta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayora de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC . Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la familia Intel x86, AMD x86-64 usada en la mayora de las computadoras personales actuales. SISC (Specic Instruction Set Computer): Modelo de arquitectura de computadores orientada al procesamiento de tareas en paralelo. Esto se implementa mediante el uso de la tecnologa VLSI, que permite a mltiples dispositivos de bajo costo que se utilicen conjuntamente para resolver un problema particular dividido en partes disjuntas. La arquitectura RISC es un subconjunto del SISC, centrada en la velocidad de procesamiento debido a un conjunto de instrucciones reducido. RISC (Reduced Instruction Set Computer): Modelo de arquitectura de computadores cuyos microprocesadores cuentan con las siguientes caractersticas fundamentales: Instrucciones de tamao jo y presentadas en un reducido nmero de formatos, donde slo las instrucciones de carga y almacenamiento acceden a la memoria de datos. Adems estos procesadores suelen disponer de muchos

registros de propsito general. El objetivo era posibilitar la segmentacin y el paralelismo en la ejecucin de instrucciones y reducir los accesos a memoria. Es una losofa de diseo de CPU para computadora que est a favor de conjuntos de instrucciones pequeas y simples que toman menor tiempo para ejecutarse. Las mquinas RISC protagonizan la tendencia actual de construccin de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC son ejemplos de algunos de ellos. Microprocesadores SISC (o RISC) nunca han logrado amenazar el amplio dominio de los procesadores CISC en los ordenadores personales, debido a su popularidad y al aumento constante en la capacidad de procesamiento de los mismos.2 Por lo tanto, el uso de RISC y SISC sigue limitado a necesidades muy especcas de procesamiento. En arquitectura de computadoras, 16 bits, 32 bits o 64 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 16 bits, 32 bits o 64 bits de ancho. En el tema que nos ocupa, se utilizan para referirse a una arquitectura de procesador basadas en registros, bus de direcciones o bus de datos que permiten procesar (interna y externamente) datos de ese ancho. 4) Principales familias: Freescale: Divisin de semiconductores de Motorola. 68HC705: MCU ms vendida de la historia? 8 bits, 20 pines, 112B RAM. 68HC11: Familia de MCUs con arquitectura Von Neumann. Instrucciones CISC. Coldre: arquitectura de 32 bits. Hasta 128KBs datos, 512KBs programa, 500MHz, 120 pines. Intel: Familias de 8 y 16 bits. 8051: Muy extendido. Sirve como ncleo para MCUs de otros fabricantes (Atmel: mayores fabricantes de tarjetas inteligentes). Texas Instruments, Zilog, Analog Devices. . . Microchip: PIC: MCUs de 8, 16 y 32 bits. dsPIC: DSPs. rfPIC: MCUs con unidad de RF. Por qu lo escogemos? Muy extendido, muchsima informacin, muy didctico, alianza acadmica, muestras gratuitas, fcil programacin (HW y SW),

D. Ancho de buses El ancho del bus que comunica la memoria con la CPU determina el tamao de la unidad de datos o instrucciones, un microprocesador de 8 bits con bus de 8btis tendr que manejar datos o instrucciones de 8 bits de longitud. Para el acceso a datos o instrucciones de ms de 8bits tendr que realizar ms de un acceso a la memoria. Un ancho de bus de 16 bits, direcciona memoria de 1 MB.

La arquitectura de von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a travs de un sistema de buses nico (direcciones, datos y control). La arquitectura Harvard dispone de dos memorias independientes una, que contiene slo instrucciones y otra, slo datos. Ambas disponen de sus respectivos sistemas de buses y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias.
Clasicacin por el ancho del bus de datos interno: Esta clasicacin es la ms mencionada cuando se habla de microcontroladores, ya que reeja en su totalidad el desempeo y costo del microcontrolador. El ancho de bus de datos interno es el nmero de bits que el CPU maneja en sus operaciones internas (por ejemplo, 4-bits, 8-bits, 32 bits, etc).

Ducto de Control: El ducto de control consiste de 4 a 10 lneas de seales en paralelo. El CPU manda seales sobre el ducto de control para habilitar las salidas de los dispositivos de memoria o puertos direccionados. Generalmente las seales del ducto de control son leer memoria, escribir en memoria, leer E/S y escribir E/S. Por ejemplo para leer un dato de un byte de una localidad de memoria, el CPU manda la direccin de la localidad de memoria deseada por el ducto de direcciones y despus manda la seal de lectura de memoria por el ducto de control. La seal de lectura habilita al dispositivo de memoria direccionado para proporcionar el dato de un byte en el ducto de datos de donde es ledo por el CPU.

E. Memoria Las memorias son dispositivos de almacenamiento de informacin binaria permanente o voltil. El sistema de adquisicin de datos requerir el almacenamiento permanente de un gran nmero de datos binarios y disponer de ellos cuando sea necesario. Un microcontrolador ejecuta instrucciones. Las instrucciones son ledas de la memoria del programa para ejecutarlas una detrs de otra. La memoria de programa contiene las instrucciones que queremos que el microcontrolador ejecute. La memoria es el lugar donde se almacenan datos. Dependiendo de la arquitectura del microcontrolador existen dos tipos de memorias: la memoria del programa y la memoria de datos. Estas dos memorias son independientes entre ellas, teniendo tamao y longitudes de palabra distintas. Cada bloque posee su propio bus, de tal forma que el acceso a cada uno puede producirse durante el mismo ciclo del oscilador. 1) Memoria de programa: A esta memoria tambin se le denomina memoria de instrucciones y memoria de solo lectura (ROM). Aqu es donde se escriben los programas. Existen diferentes tipos de memorias: ROM, PROM, EPROM, EEPROM y FLASH. Las caractersticas de cada una de las memorias mencionadas son:

Existen dos conjuntos de ductos distintos que pueden ser identicados en un microprocesador. Uno de estos conjuntos son los ductos internos que forman parte de la organizacin interna del microprocesador y este es de gran inters para los diseadores del IC y poco concerniente para los diseadores de aplicaciones con microprocesadores. Estos ductos internos no tiene efecto sobre la interfaz del IC con el exterior y solo afectan sobre la velocidad efectiva del microprocesador. El segundo conjunto de ductos se reere a la estructura de los ductos externos del microprocesador. Existen alternativas para ser diferenciados, las cuales son el nmero de direcciones o nmero de bits que simultneamente puede presentar (ancho del bus), el tipo de interaccin del bus con el CPU y los dispositivos externos, y la dedicacin o funcin del bus. Generalmente las microprocesadores y computadoras poseen tres ductos los cuales son: Ducto de Direcciones, Ducto de Datos y Ducto de Control .
Ducto de Direcciones: El bus de direcciones consiste de 16,

20, 24 o mas lneas de seales en paralelo. Por estas lneas el CPU enva la localidad de memoria en la cual va escribir o leer. El nmero de localidades que el CPU puede direccionar o accesar se determina por el nmero de lneas del bus de direcciones. Si el CPU tiene N lneas de direccin entonces puede direccionar 2N localidades. Cuando el CPU lee o manda datos a o desde un puerto, la direccin del puerto tambin se enva por el bus de direcciones.
Ducto de Datos: El ducto de datos consiste de 8,16,

Memorias ROM: Son utilizadas para almacenar datos

32 o mas lneas de seales en paralelo, estas lneas son bidireccionales. Esto signica que el CPU puede leer datos por estas lneas desde la memoria o un puerto, as tambin puede mandar datos a una localidad de memoria a un puerto. Muchos dispositivos en un sistema pueden tener sus salidas conectadas al ducto de datos, pero las salidas de solamente un dispositivo pueden estar habilitadas. Cualquier dispositivo conectado al ducto de datos debe ser de tres estados as estos dispositivos pueden estar otados cuando no estn en uso.

permanentemente. Las grabaciones regularmente se hacen en fbrica. Memorias PROM: Son semejantes a las ROM, adems se graban elctricamente y lo puede realizar el usuario despus de su fabricacin. Esta memoria permite slo una grabacin. Memorias EPROM: Este tipo de memoria puede ser grabada por el usuario y hacerlo tantas veces como sea necesario. Cuando esta memoria ha sido grabada, los datos se pueden borrar si la ventana del circuito integrado se expone a la luz ultravioleta.

Memorias EEPROM: Son memorias similares a las

EPROM, slo que la operacin de grabacin es totalmente elctrica. Memoria FLASH: Son memorias nombradas FLASH por la rapidez con que se pueden reprogramar. Utilizan un borrado elctrico selectivo a nivel de bloque de bytes. La cantidad de memoria depende de la gama de microcontroladores, as como de los fabricantes. Para programas simples se opta por disponer de microcontroladores con menor memoria y ms baratos, mientras que para programas de mayor tamao se seleccionan microcontroladores de ms memoria. 2) Memoria de datos: La memoria que se constituye de datos tambin se denomina memoria de lectura y escritura o memoria de acceso aleatorio (RAM), sta es utilizada por el microprocesador, as como por otros dispositivos de hardware. La memoria RAM se clasica en dos tipos de memorias diferentes, las cuales son DRAM y SRAM.
Memorias DRAM: Estas memorias son del tipo dinmico y almacenan los datos similarmente a la carga de un capacitor. Por lo tanto tienden a descargarse, por lo que es necesario refrescar la informacin contenida en ellas peridicamente. Su fabricacin es barata y su operacin es lenta. Memorias SRAM: Las memorias SRAM son del tipo esttico y almacenan los datos en circuitos biestables, por lo tanto, no se necesita refrescar los datos. Estas memorias son ms rpidas que las de tipo DRAM y su fabricacin resulta ms cara.

est comprendido entre 1.9 y 3 volts. Si se les aplica un voltaje mayor, pueden sufrir daos irreversibles. 3) Visualizador de cristal lquido (LCD): Este dispositivo, conocido tambin como LCD (Liquid Cristal Display), basa su funcionamiento en la disposicin de algunas sustancias que se encuentran en una fase lquida y slida a la vez, a la que se denomina mesafase. En dicha fase, las molculas tienen una gran libertad de movimiento (como en los lquidos) y tambin cierta ordenacin (parecida a la de las sustancias slidas cristalinas). Aunque la distribucin de los tomos y molculas de estos materiales es similar a la de los tomos y molculas de los cristales slidos, puede variar mediante la aplicacin de calor o de un campo elctrico. De acuerdo con esta reordenacin, se habla de tres tipos de cristales: esmtico, colestrico y nemtico. 4) Las vlvulas de vaco: El fundamento operativo de estas vlvulas, se basa en la transportacin de electrones a travs del vaco; mediante la tensin del calefactor (lamento) se extraen los electrones del material conductor slido (el ctodo incandescente), que es mantenido a alta temperatura. Luego de rodear al ctodo como una nube de carga espacial, los electrones liberados se trasladan al electrodo opuesto para crear ah una diferencia de tensin; para ello, se necesita de una tensin de nodo. A su vez, la corriente de electrones resultante puede ser controlada por otra tensin llamada tensin de rejilla. 5) Visualizadores uorescentes: Estos dispositivos, usados frecuentemente sobre todo en equipos de audio y en videograbadoras, se basan en la tecnologa de las vlvulas de vaco (en donde el nodo constituye el segmento o smbolo especial emisor de luz). En esta tecnologa, el lamento comn a todo el visualizador est recubierto de volframio (que permite alcanzar temperaturas del orden de 500 a 650 C); tambin existe una rejilla comn a todo dgito (que, como tal, controla la emisin electrnica) y varios nodos que estn recubiertos de una sustancia uorescente (la cual emite luz al ser bombardeada por electrones). Evidentemente, es una estructura muy parecida a la de una vlvula triodo.

La memoria de datos se organiza en bancos, y la cantidad de estos depende del tipo de microcontrolador, as como del fabricante. Esta memoria de datos funciona de forma similar al banco de registros de un procesador. II. C IRCUITERA ALTERNATIVA PARA ENTRADA / SALIDA A. Displays LED, LCD y otros dispositivos de visualizacin. 1) Diodos LED: Los ledes se usan como indicadores en muchos dispositivos y en iluminacin. Los primeros ledes emitan luz roja de baja intensidad, pero los dispositivos actuales emiten luz de alto brillo en el espectro infrarrojo, visible y ultravioleta. Cuando un led se encuentra en polarizacin directa, los electrones pueden recombinarse con los huecos en el dispositivo, liberando energa en forma de fotones. Este efecto es llamado electroluminiscencia y el color de la luz (correspondiente a la energa del fotn) se determina a partir de la banda de energa del semiconductor. 2) Display de 7 segmentos basado en diodos LED: Los visualizadores que emplean diodos LED se conocen como displays de 7 segmentos y vienen en dos conguraciones bsicas: de nodo comn y de ctodo comn. Existen conguraciones donde se emplean 2, 3, 4 ms visualizadores interconectados; o visualizadores en conexin de serie de barras grcas. El voltaje aplicado a este tipo de visualizadores,

B. Codicadores de posicin. Son aquellos que ofrecen directamente una seal digital a partir de una entrada analgica. Sirven para realizar mediciones generalmente de posicin lineal o angular y pueden ser incrementales o absolutos. 1) Codicadores incrementales: Un codicador incremental de rotacin est formado por un disco con ranuras radiales ubicadas por lo general muy juntas en toda su circunferencia, o sino con lneas alternadas en color claro y oscuro, que giran frente a un fotosensor (o un conjunto de stos, para ms precisin), generando un pulso por cada ranura o cambio de color.

De datos. De ndice y de punteros. De segmento. Especiales.

Figura 3: Codicador incremental

Un ejemplo tpico de este tipo de codicadores se puede ver dentro de los mouses (ratones) de computadora: pequeos discos con ranuras en cada eje de movimiento. Un circuito lleva la cuenta de los pulsos, con lo que se puede conocer tanto el ngulo que se ha avanzado como la velocidad de giro (midiendo el tiempo entre pulsos). Estos codicadores son baratos pero no ofrecen una posicin absoluta (como el potencimetro), ya que el disco es igual en toda su circunferencia y no hay manera de saber dnde est ubicado (en qu ngulo absoluto) el eje. Habitualmente, se debe proveer al sistema de una manera de ubicarse en una posicin cero, y de ah en adelante contar pulsos hacia adelante o hacia atrs. 2) Codicadores absolutos: Los codicadores absolutos pticos funcionan con un concepto similar al de los tipos incrementales, slo que poseen un disco con un dibujo complejo, distribuido en anillos concntricos que representan los bits de una palabra binaria.

Figura 5: Registros dividos por categoria

La mecnica bsica en la ejecucin de cualquier programa consiste en cargar los registros con datos de la memoria o de dispositivos de entrada y salida, procesar dichos datos y devolver el resultado a la memoria o dispositivo de entrada y salida, si bien es cierto que a veces se puede actuar directamente sobre la memoria sin usar registros si la operacin es sencilla. 1) Registros de Datos (AX, BX, CX,DX):: Los registros ms utilizados en un programa son los registros de datos. Su nombre es debido a que su utilidad fundamental es la de almacenar datos que se usan de forma frecuente durante la ejecucin de un programa, evitndose as el reiterado acceso del microprocesador a la memoria. En total hay 4 registros de este tipo cada uno de ellos de 16 bits (1 palabra) que se denominan AX, BX, CX y DX. Cada uno de estos registros se subdivide adems en dos registros de 8 bits (1 byte) que se denominan con la misma letra que el registro completo pero terminado en H si se reere al byte superior (8 bits ms signicativos del registro) o en L si se reere al byte inferior (8 bits menos signicativos del registro). As pues, si hay un dato tipo word almacenado en el registro AX, es posible acceder a su byte superior mediante AH y al inferior mediante AL. El resto de registros de Datos (BX, CX y DX) tambin cuentan con esta propiedad.

Figura 4: Codicador absoluto

Deben tener un detector ptico por cada uno de estos anillos. Por ejemplo un disco con 8 anillos (como el de la gura), tendr una resolucin de 8 bits, o sea que podr dividir su circunferencia en 256 porciones (ms de 1 grado, si hablamos de ngulo). Un disco con ms anillos concntricos ofrecer ms bits de resolucin y dar un dato de posicin angular ms preciso. III. P ROGRAMACIN DE MICROCONTROLADORES . A. Modelo de programacin. B. Estructura de los registros del CPU Dentro del procesador existen unos contenedores especiales de 16 bits con diferentes nalidades llamados registros. La ventaja de estos registros es que al estar dentro del microprocesador, el acceso de este a su contenido es muy rpido, y siempre mucho mayor que acceder a datos de la memoria. Aunque en un principio cualquier registro se puede usar para manejar datos de un programa, cada uno de ellos tiene una nalidad especca que permite clasicarlos en cuatro categoras:

Figura 6: Ejemplo de un registro AX

Aunque almacenar datos temporales es la principal nalidad de los registros de datos, cada uno de ellos tiene usos especcos que son propios de ellos y que ningn otro registro puede realizar. El registro AX o Acumulador: Es el registro principal, se usa en operaciones de multiplicacin, divisin y operaciones matemticas especializadas y en ciertas operaciones de E/S y conversin, en alguna de estas operaciones slo se puede usar este registro y no otro. El registro BX o base: Se utiliza en algunos modos de direccionamiento para formar la direccin de memoria de la que obtiene o en la que almacena los datos una determinada instruccin. Se usa para indicar el desplazamiento (oset) para referenciar direcciones de memoria con direccionamiento indirecto. El registro CX o contador: Se utiliza con las instrucciones de repeticin y de bucle, almacenando el nmero de veces que se repetir una determinada instruccin o fragmento de un programa. En instrucciones de desplazamiento y rotacin se usa como contador de 8 bits. El registro DX o de datos: Se usa junto a AX en operaciones aritmticas de 32 bits y en las de E/S para especicar la direccin del puerto de E/S. 2) Registros de Segmentos (CS, DS, SS, ES):: El microprocesador divide la memoria en segmentos de 64K teniendo diferentes segmentos dependiendo de la utilidad que le quiera dar a cada uno de ellos. Los registros de segmento tendrn la direccin de memoria donde comienza cada tipo de segmento. Registro CS (Segmento de cdigo): Apunta siempre al segmento donde se encuentra las instrucciones del programa que se est ejecutando. Los programas mayores de 64K requieren cambiar CS de forma peridica. Este registro no se puede modicar directamente y debe hacerse mediante las denominadas instrucciones de transferencia de control. Registro DS (Segmento de datos): Apunta al segmento de memoria donde las instrucciones del segmento de cdigo leen o almacenan los datos que usa el programa en ejecucin. Este registro puede cambiarse durante la ejecucin del programa para as poder acceder a toda la memoria instalada en el sistema. Registro SS (Segmento de pila): Contiene la direccin de comienzo del segmento de pila. La pila es un rea de memoria destinada a almacenar valores de 16 bits de forma temporal en la ejecucin de un programa. Registro ES (Segmento Extra): Es una ampliacin del segmento de datos Las reas de 64K de cada segmento pueden solaparse total o parcialmente siendo imposible acceder a zonas de memoria no incluidas en los segmentos. 3) Registros Especiales [SP, IP, FLAGS(BANDERAS)]:: Estos registros son utilizados por el microprocesador para almacenar sus propios datos y raramente se modicaran desde el programa. Registro SP(Stack Pointer Puntero de pila): Nos indica el desplazamiento respecto a SS donde ponemos el comienzo de la pila.

Registro IP (Puntero de instruccin o contador de programa): Apunta en todo momento a la direccin de la siguiente instruccin que debe ejecutarse, es un oset respecto al valor de CS por lo que dicha instruccin estar en CS:IP, al igual que CS, el registro IP slo puede modicarse mediante las llamadas instrucciones de transferencia de control. Registro de estados o banderas (FLAGS): Se utiliza para indicar al programa ciertas condiciones que han tenido lugar como resultado de la ltima operacin realizada. Cada uno de los bits del registro de banderas marca si se ha producido una de estas condiciones: con un valor 1 si se produjo o 0 si no tuvo lugar. Es por ello que a cada uno de los bits que conforman este registro se le llama bandera o en ingls Flag.

Figura 7: Bits de los estados.

De este registro slo usaremos: Los bits 0, 2, 4, 6, 7, 8, 9, 10 y 11. Los bits 0,2, 4, 6,7 y 11 son indicadores de condicin que refejan los resultados de operaciones normalmente aritmticas o de comparacin en nuestro programa. Los bits 8, 9 y 10 son indicadores de control en los que puedo denir el funcionamiento del microprocesador. Estos ags pueden ser comprobados por instrucciones de salto condicional, lo que permite variar el fujo secuencial del programa segn se activen o no dichos ags. 4) Registros de Indice y Punteros (SI, DI, BP): : Aunque al igual que los registros de datos pueden utilizarse para almacenar datos de forma temporal, su principal nalidad es la de almacenar la posicin de memoria donde se encuentra algn dato necesario para las instrucciones del programa. En total hay tres registros de este tipo que reciben los nombres SI, DI, BP. Registro SI (Indice fuente): Se utiliza para indicar la direccin desde donde comienzan los datos que quiero leer dentro de un segmento de datos. Registro DI (Indice destino): Se utiliza para indicar la direccin desde donde nalizan los datos que quiero leer dentro de un segmento de datos. Registro BP (Puntero Base): Es utilizado por instrucciones que quieren acceder a datos contenidos en el interior de la pila, y es utilizado en los usos alternativos de la pila que se vern mas detalladamente. 5) Registros de la CPU: Para poder hacer estas cosas, es obvio que la CPU necesita almacenar algunos datos temporalmente. Debe recordar la posicin de la ltima instruccin de forma que sepa dnde ir a buscar la siguiente. Necesita almacenar instrucciones y datos temporalmente mientras una instruccin est siendo ejecutada. En otras palabras, la CPU necesita una pequea memoria

interna. En la estructura interna de la CPU se indican los caminos de transferencia de datos y de control lgico, que incluyen un elemento con el rtulo bus interno de la CPU. Este elemento es necesario para transferir datos entre los diversos registros y la ALU, ya que sta en realidad slo opera con datos de la memoria interna de la CPU. La gura muestra tambin los elementos bsicos tpicos de la ALU. Dentro de la CPU hay una memoria interna compuesta por un conjunto de registros. Los registros de la CPU son: Registros visibles al usuario: Permiten al programador de lenguaje de mquina o ensamblador minimizar las referencias a memoria principal optimizando el uso de los registros. Registros de control: Son utilizados por la unidad de control para controlar el funcionamiento de la CPU y por programas privilegiados del sistema para controlar la ejecucin de programas. Registro de estado: Se utiliza para tomar decisiones en funcin de operaciones realizadas. Registro puntero a pila. Registros visibles al usuario Un registro visible al usuario es aqul que puede ser referenciado por medio del lenguaje mquina que ejecuta la CPU. Prcticamente todos los diseos contemporneos de CPUs estn provistos de varios registros visibles al usuario, en oposicin a disponer de un nico acumulador. Podemos clasicarlos en: Uso General Datos Direcciones Cdigos de Condicin

casos hay una separacin clara o parcial entre registros de datos y registros de direcciones.

Registros de control Hay diversos registros de la CPU que se pueden emplear para controlar su funcionamiento. La mayora de stos, en la mayor parte de las mquinas, no son visibles al usuario. Algunos de ellos pueden ser visibles a instrucciones de mquina ejecutadas en un modo de control o de sistema operativo. Naturalmente, mquinas diferentes tendrn diferentes organizaciones de registros y usar distinta terminologa. Se enumera aqu una lista razonablemente completa de tipos de registros, con una breve descripcin. Son esenciales cuatro registros para la ejecucin de una instruccin: el contador de programa , el registro de direccin, el registro de instruccin y el registro de datos.

El contador de programa contiene una direccin de instruccin. Tpicamente, la CPU actualiza el PC despus de cada captacin de instruccin de manera que siempre apunta a la siguiente instruccin a ejecutar. Una instruccin de bifurcacin o salto tambin modicar el contenido de PC. La instruccin captada se carga en el registro de instruccin, donde son analizados el cdigo de operacin y los campos de operando. Se intercambian datos con la memoria por medio de registro de direcciones y el de datos.

En un sistema con organizacin de bus, el de direcciones se conecta directamente al bus de direcciones, y el de datos directamente al bus de datos. Los registros visibles al usuario, sucesivamente, intercambian datos con el de datos. Los cuatro registros que acaban de mencionar se usan para la transferencia de datos entre la CPU y la memoria. Dentro de la CPU, los datos tienen que ofrecerse a la ALU para su procesamiento. La ALU puede tener acceso directo al de datos y a los registros visibles al usuario. Como alternativa, puede haber registros intermedios adicionales en el lmite de la ALU; estos registros sirven como registros de entrada y salida de la ALU e intercambian datos con el de datos y los registros visibles al usuario.
Figura 8: Tipos de registros.

Los registros de uso general pueden ser asignados por el programador a diversas funciones. A veces, su uso dentro del repertorio de instrucciones es para contener el operando para cualquier cdigo de operacin. Esto proporciona una utilizacin de registros de autntico uso general. Con frecuencia, sin embargo, existen restricciones. Por ejemplo, puede haber registros especcos para operaciones en coma otante. En algunos casos los registros de uso general pueden ser utilizados para funciones de direccionamiento. En otros

Registro de estado Todos los diseos de CPUs incluyen un registro o un conjunto de registros, conocidos a menudo como palabra de estado de programa "programa status word", PSW), que contiene informacin de estado. La PSW contiene tpicamente cdigos de condicin adems de otra informacin de estado. Entre los campos comunes o indicadores se incluyen los expresados en la tabla.

10

Tabla 2: Los bits de estados y su uso

Registro puntero a pila El registro puntero a pila permite almacenar la direccin de acceso a la memoria pila. Su funcionamiento se trat en las subrutinas. Subrutinas de una Pila: crece hacia posiciones decrecientes de memoria. Se caracteriza por: La direccin del fondo de la pila (constante). La direccin de la cabecera de la pila (indicada por el registro puntero de pila). Ejemplo: Puntero de pila: SP o A7.

Inmediato: Uno de los argumentos es una constante, es el valor que utiliza la instruccion. Ej.: load $r1; #A2h; $r1 A2h. Directo: Un argumento dado es una direccion cuya localidad de memoria es el origen o destino necesario para la instruccion. Ej.: load $r1; @A2h; $r1 MD[A2h]. Estos modos de direccionamiento son principalmente: inmediato, directo e indirecto. Modo Inmediato: Es cuando se utiliza el valor literal, colocado inmediato a la instruccin. Modo Directo: En la instruccin se apunta la localidad de memoria que contiene el dato que se va a utilizar. Modo Indirecto: Dentro de la instruccin se utiliza un registro como operando que accesa a una localidad de memoria que contiene el dato. Modos de direccionamiento en las instrucciones Los operandos y resultado de una instruccin son accedidos a travs de modos de direccionamiento. Cada campo de operando o resultado en una instruccin contiene informacin acerca del modo de direccionamiento empleado para acceder a l. Cdigo de operacin (CO) y modicador (MD) Operandos (OPi) y resultado (RES)

Figura 10: Operando de los modos de direccionamiento

Cada campo de operandos o resultado tendr los siguientes subcampos:

Figura 11: Subcampo de los operandos del modo de direccionamiento


Figura 9: Registro puntero de una pila

C. Modos de direccionamiento Un programa est compuesto de instrucciones, stas pueden realizar operaciones, manipular y transladar datos de una localidad a otra, a travs de sus modos de direccionamiento. Cuando se realiza la programacin de un microcontrolador, al momento de especicar los datos y operandos, es posible hacerlo de formas distintas, llamadas: modos de direccionamiento. Los modos de direccionamiento sirven para especicar donde encontrar los argumentos que una instruccion necesita al ejecutarse. Algunos de estos modos de direccionamiento son: Implicito: No tiene argumentos, solo es el codigo de operacion. Se conoce toda la informacion necesaria para ejecutar la instruccion. Ej.: nop; CP CP+1 Registro: Los datos que necesita la instruccion estan contenidos en los registros. Ej.: jump $r1; CP $r1.

Mdir: especicador del modo de direccionamiento (ocupa pocos bits). CR: campo especicador del registro involucrado en el modo de direccionamiento (ocupa pocos bits). CD: campo que puede contener un operando inmediato, una direccin o un desplazamiento (suele ocupar bastante espacio).

D. Conjunto de instrucciones Programa: Una secuencia de instrucciones que son ejecutadas por una computadora o un microcontrolador, en una secuencia especca, para realizar una tarea. Los programas son escritos en diferentes tipos de lenguajes, tales como "C", Fortran o BASIC. El conjunto de instrucciones se denomina programa. Dependiendo del conjunto de aplicaciones para los que un procesador esta construido, se dene un repertorio de instrucciones que cubre con las necesidades de un dise~nador de aplicaciones. Las instrucciones son las tareas que puede realizar un procesador. El ciclo de instruccion es el conjunto de etapas necesarias para atender una instruccion. Las etapas realizadas en el ciclo de instruccion son:

11

1) Buscar: La instruccion en memoria de programa, obteniendo la instruccion que tiene que ejecutarse. 2) Decodicar: Las instrucciones, donde la CPU examina la instruccion que debe ser atendida. 3) Ejecutar la instruccion: La unidad de control congura todos los elementos por medio del BUS de control para realizar la operacion requerida por la instruccion. 4) Leer o escribir en la MD: Almacenar o leer datos de la memoria de datos. 5) Leer o escribir en el AR: Almacenar o leer datos del archivo de registros. Una clasicacion posible para las instrucciones se enlista a continuacion: Instrucciones de E/S Se usan para la comunicacin con los dispositivos perifricos. Y son IN, OUT. Acceso a memoria: Load: cargar un dato de la memoria a registro. Store: almacenamiento de registro a memoria. Pila: para manejar la estructura datos tipo pila (LIFO ultimo en entrar, primero en salir) se utiliza un registro como puntero, para almacenar un dato se obtiene de forma inmediata o por registro, al recuperar el dato solamente se almacena en un registro. Transferencia de control: Saltos condicionales: de acuerdo al estado de una bandera salta a una direccion de memoria de programa. Saltos incondicionales: salta directo a una direccion de memoria de programa, en lo que se especica la direccin absoluta a la que se salta; y los relativos; que son saltos hacia delante o hacia atrs desde el valor de IP. Instrucciones de transferencia de datos: Las instrucciones de transferencia de datos copian datos de un sitio a otro y son: MOV, XCHG, XLAT, LEA, LDS, LES, LAHF, SAHF, PUSH, PUSHF, POP, POPF. Subrutina: Llamada a subrutina: se actualiza el contador del programa con una nueva direccion donde comienza una rutina. Se utiliza algun metodo para salvar la direccion del contador de programa antes de la actualizacion. Retorno de subrutina: se actualiza al contador de programa con la direccion de la instruccin siguiente a la llamada de la subrutina, para restaurar el ujo normal del programa. Interrupciones: Retorno de interrupciones: es parecido al anterior pero con la diferencia de que se tiene que noticar mediante esta instruccion al manejador de interrupciones que la interrupcion ha terminado y que continue con el ujo de ejecucion, bajo el criterio que este tome. Utilizando la ALU:

Aritmetica: suma, resta, multiplica, division, etc. Este tipo de instrucciones realizan operaciones aritmticas con los operandos. Y son: ADD, ADC, DAA, AAA, SUB, SBB, DAS, AAS, NEG, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW, CWB, INC, DEC. Corrimiento o desplazamiento: realiza un desplazamiento de n bits a la izquierda o la derecha, de acuerdo a los valores almacenados en los acumuladores o seleccionados del archivo de registros, y son: SAL/SHL, SAR, SHR, ROL, ROR, RCL, RCR. Logica: realiza las operaciones: OR, XOR, AND, NAND, NOT; NOR, XNOR, TEST, CMP. Comparacion: es una resta pero no guarda el resultado, y modica los bits del registro de banderas. Auxiliares: Reiniciar el temporizador guardian, poner en cero el contador de este componente evitando el reinicio del procesador. La instruccion de no operacion que solo consume tiempo durante la ejecucion del programa. Las instrucciones que detienen de forma denitiva el ujo del programa. Ej.: la instruccion halt. Las instrucciones que esperan un evento externo o interno, pasa a un estado de bajo rendimiento o de bajo consumo de energa hasta que suceda el evento deseado. Ej.: la instruccion sleep.

E. Lenguajes ensambladores El lenguaje es la manera que utlizamos los seres humanos para comunicarnos, por medio de sonidos, expresiones, simbolos, etc. de igual manera la computadora necesita de un lenguaje para que pueda funcionar y nosotros como desarrolladores debemos entender. Los lenguajes formales como los lenguajes de programacion obedecen a reglas preestablecidas y por tanto, se ajustan a ellas, no evolucionan y han sido creados para un n especico. Se dene lenguaje como un conjunto de palabras que estan compuestos de smbolos de un alfabeto. Una gramtica da cuenta de la estructura de un lenguaje, es decir, de las sentencias que lo forman, proporcionando las formas validas en que se pueden combinar los smbolos del alfabeto. Una maquina abstracta o automata es un dispositivo terico capaz de recibir y transmitir informacion. Para realizar esta labor manipula cadenas de smbolos que se suministran en la entrada, produciendo como salida otras cadenas de smbolos en cada momento. Para realizar esto es necesario un conjunto de estados internos requeridos para poder deducir a partir de la entrada una salida de informacion.

Figura 11: Relacion de una gramatica, lenguaje y la maquina abstracta

12

La computadora utiliza el conocido lenguaje ensamblador, que es un lenguaje de alto nivel y al hablar de lenguajes de alto nivel debemos comprender que trabaja por medio de codigo binario. Existen varios tipos de lenguaje ensamblador, aunque nalmente todos realizan las mismas tareas.

F. Codicacin El lenguaje ensamblador es el sistema alfanumrico para escribir cdigo mquina mediante expresiones abreviadas (mnemotcnicos). La compilacin es ms complicada porque incluye la conversin de operaciones matemticas complejas, comandos de lenguaje natural o tipos de comandos complejos. Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas mquinas. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la mquina, la memoria, dispositivos de E/S, etc. Para la creacin de un programa es necesario seguir cinco pasos: Diseo del algoritmo, codicacin del mismo, su traduccin a lenguaje mquina, la prueba del programa y la depuracin. En la etapa de diseo se plantea el problema a resolver y se propone la mejor solucin, creando diagramas esquemticos utilizados para el mejor planteamiento de la solucin. La codicacin del programa consiste en escribir el programa en algn lenguaje de programacin (en este caso en ensamblador), tomando como base la solucin propuesta en el paso anterior. La traduccin al lenguaje mquina es la creacin del programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que pueda ser interpretado por el procesador. La prueba del programa consiste en vericar que el programa funcione sin errores, o sea, que haga lo que tiene que hacer. La ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de prueba. La correccin de una falla normalmente requiere la repeticin de los pasos comenzando desde el primero o el segundo. Para poder crear un programa se requieren varias herramientas: Un editor Un compilador Un enlazador

Ensambladores Cruzados: Permiten el soporte de medios sicos como pantallas, impresoras, teclado, etc. y la programacion que ofrecen maquinas potentes que luego seran ejecutados en sistemas especializados. Ensambladores Residentes: Permanecen en la memoria de la computadora, y cargan para su ejecucion al programa objeto producido. es el indicado para el desarrollo de pequeos sistemas de control. Macroensambladores: Permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una ves que se a genereado el codigo objeto, normalmete son programas complejos y residentes. Microensambladores: Indica al interprete las instrucciones de como debe actuar la CPU. Ensambladores de una fase: Leen una linea de programa fuente y la traducen directamente para producir una instruccion en lenguaje maquina, estos ensambladores son sencillos, baratos y coupan poco espacio. Ensambladores de dos fases: Se llaman asi por que realizan la traduccion en dos etapas, en la primera fase revisan el codigo fuente y lo construyen en una tabla de simbolos, en la segunda fase vuelven a leer el programa fuente y pueden tradirlo por completo. estos ensabladores son los mas utilizados en la actualidad.

Este proceso corresponde a utilizar un programa en el PC que toma el cdigo ensamblado (.hex, .o, .bin, .coff) para el Microcontrolador especco, y lo enva mediante algn puerto (serial, paralelo, USB, etc.) a un dispositivo que lo escribe en la memoria del Micro. Se acostumbra denominar programador tanto al sofware como al hardware involucrados para este propsito, lo cual puede prestarse a confusin. El software programador a veces recibe tambin el nombre de downloader, ya que su propsito es descargar o transferir desde el PC al Microcontrolador el cdigo ensamblado. En la gura se muestran las componentes involucradas en el proceso de programacin del Micro. Es importante mencionar que no deben confundirse los trminos desarrollo o programacin del software y programacin del Microcontrolador, el primero se reere a escribir el programa, mientras que el segundo se reere transferir el cdigo de mquina a la memoria del Micro.

Figura 13: Etapas del desarrollo de software.

Figura 12: Programacin del Microcontrolador

13

R EFERENCES
[1] Ignacio M. Pedro, Interface de transeferencia de datos a travs del bus USB, Facultad de Ingeniera, Universidad de Buenos Aires. Consultado 25/11/2013. [2] Zuiga C. Jaime A, Tcnicas de diseo con microcontroladores, Departamento de Electrnica, Universidad Tcnica Federico Santa Mara. Consultado 25/11/2013. [3] Torres T. Miguel, Tutorial Microcontroladores PIC, Ponticia Universidad Catlica de Chile. Consultado 25/11/2013. [4] Garre del Olmo, Carlos, Microcontroladores, ATCCCIA Deparment, Rey Juan Carlos University. Consultado 27/11/2013. [5] Rodrguez S. Jos M., Microcontroladores, Curso Terico, ROSO Electric Supply. Consultado 27/11/2013. [6] Montenegro J. & Marcelo R., Microcontroladores - Parte 1, Departamento de Electrnica, Universidad Tcnologica Nacional de Buenos Aires. Consultado 28/11/2013. [7] R. Osio, Jorge & Arztegui W. & A. Rapallini, Jos, Descripcin General de un Microcontrolador (Mdulos Bsicos), Facultad de Ingeniera, Universidad Nacional de la Plata. Consultado 28/11/2013. [8] Vzquez A., Alvaro, Dispositivos de Visualizacin, Electronica y Servicio. Consultado 29/11/2013. [9] Barry B. BREY, Los microprocesadores de INTEL, Ed. Prentice Hall. Consultado 29/11/2013. [10] Tim Wilmshurst, Designing Embedded Systems with PIC Microcontrollers, Principles and applications, Ed. ELSEVIER. Consultado 30/11/2013. [11] Enrique Palacios, Microcontrolador PIC16F84, Desarrollo de Proyectos, Ed. Alfaomega RA-MA. Consultado 30/11/2013.

You might also like