+ All Categories
Home > Documents > Microcontroladores de 32 Bits Freescale 51JM128

Microcontroladores de 32 Bits Freescale 51JM128

Date post: 10-Oct-2015
Category:
Upload: adrian-del-real-almeraz
View: 37 times
Download: 7 times
Share this document with a friend
Popular Tags:

of 494

Transcript
  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    1/494

    MICROCONTROLADORES DE 32 BITSCOLDFIRE V1/ FAMILIA JM

    DIEGO ALEJANDRO MNERA HOYOS

    Revisin tcnica:

    0.1

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    2/494

    Contenido

    Introduccin

    Lista de FigurasLista de Ejemplos

    PARTE IConceptos Generales

    ObjetivosContenidos

    Captulo 1. Historia de los microcontroladores1.1. Evolucin de las mquinas

    Historia

    La memoriaLos mdulos o perifricosLenguajes de programacin

    1.2. El futuro1.3. Referencias1.4. Preguntas

    Captulo 2. Arquitecturas2.1. Von Newman2.2. Harvard2.3. Otros conceptos y otras arquitecturas

    CISC y RISCSISD, SIMD, MISD y MIMDVLIWSuperescalarParalelasPrediccin y ejecucin especulativa

    2.4. Referencias2.5. Preguntas

    Captulo 3. Modos de direccionamiento y tipos de instrucciones3.1. Los direccionamientos

    DirectoInmediatoIndirectoDe Stack PointerCon offsetA baseEscaladoMixtos (base+ ndice * escalar + desplazamiento)

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    3/494

    RelativoSalto absolutoBitMemoria a memoria

    3.2. Lenguajeassembler

    3.3. Tipos de instruccionesFormato de una instruccinMovimiento de datosAritmticas y lgicasDe controlManipulacin de bitsRote y desplazamientoSalto relativoSalto absolutoEspeciales

    3.4. Directivas o pseudo-instrucciones

    De definicinDe origenOtras

    3.5. Referencias3.6. Preguntas

    Captulo 4. Elementos y herramientas bsicas de desarrollo4.1. Consideraciones de diseo con microcontroladores

    El diseoLimitacin de memoria y velocidad de ejecucinAlgoritmos y diagramacin previa

    Las banderas de usuario como marca de eventos4.2. La codificacin4.3. El ensamble o compilacin4.4. La depuracin

    La puesta a punto4.5. Herramientas de desarrollo disponibles en el mercado

    SpyderMulitinkCycloneProDEMOJM

    4.6. Otros aspectos a tener en cuenta en el diseo con microcontroladores

    El RESETEl RelojEl circuito impreso (PCB)Limitaciones elctricas y del ambienteRuido (EMI EMC)

    4.7. Referencias4.8. Preguntas

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    4/494

    PARTE II

    Arquitectura de los microcontroladores de 32 bits ColdFire V1

    Objetivo

    ContenidosCaptulo 5. La familia de los Microcontroladores ColdFire V15.1. Introduccin a la arquitectura ColdFire V1 de 32 bits

    Caractersticas generalesArquitectura del ncleoModos de operacinModelo de programacin

    5.2. Organizacin de la memoria5.3. Procesamiento de excepciones5.4. La pila y el puntero a pila

    5.5. Referencias5.7. Preguntas

    Captulo 6. Modos de Direccionamiento y Juego de Instrucciones6.1. Modos de direccionamiento6.2. Resumen del juego instrucciones6.3. Ejercicios con direccionamientos e instrucciones6.4. Referencias6.5. Preguntas

    Captulo 7. Migracin de 8 a 32 bits

    7.1. Una breve descripcin de la familia de 8 bits HCS087.2. Concepto FLEXIS7.3. Cuidados en la migracin7.4. Referencias7.5. Preguntas

    PARTE IIIAmbiente de programacin, herramientas de desarrollo

    ObjetivoContenidos

    Captulo 8. Ambiente de programacin y herramienta de desarrollo8.1. Introduccin al compilador CodeWarrior8.2. Descripcin de la herramienta DEMOJM8.3. Creacin de proyectos en C8.4. Familiarizacin con el ambiente integrado de desarrollo (IDE)

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    5/494

    El Editor de CodeWarriorEl Compilador de CodeWarriorEl Depurador de CodeWarrior

    8.5. El primer programa en C8.6. Herramienta de desarrollo DEMOJM

    Descripcin del hardwarePuesta a puntoEjemplo desde el concepto FLEXIS

    8.7. Referencias8.8. Preguntas

    PARTE IVEl Microcontrolador de 32 bits MCF51QE128

    Objetivo

    ContenidosCaptulo 9. Generalidades de la mquina MCF51JM1289.1. Diagrama en bloques9.2. Distribucin de pines y conexin mnima9.3. Distribucin de la memoria9.4. Modos de bajo consumo9.5. Referencias9.6. Preguntas

    Captulo 10. El RESET, la mquina de excepciones y el controlador de

    interrupciones10.1. Las fuentes de RESET10.2. El controlador de interrupciones10.3. El Pin de Interrupcin (IRQ:Interrupt Request)10.4. Ejercicio con la IRQ: Atencin de una interrupcin por flanco en el pin de

    IRQ10.5. Referencias10.6. Preguntas

    Captulo 11. Reloj del sistema (MCG:Multipurpose Clock Generator)11.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados

    11.2. Ejercicio con el MCG: Inicializacin del reloj interno de la MCU ycomprobacin de la velocidad de trabajo11.3. Referencias11.4. Preguntas

    Captulo 12. Los puertos de entrada y salida12.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados12.2. La funcin KBI (Keyboard Interrupts)

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    6/494

    12.3. Ejercicio con los puertos: Inicializacin de una pantalla de cristal lquido(LCD) y migracin de 8 a 32 bits.

    12.4. Referencias12.5. Preguntas

    Captulo 13. Funciones de Temporizacin (TPM: Timer/Pulse Width ModulatorModule)13.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados13.2. Ejercicios con el TPM:

    Funcionamiento del TPM como temporizador de propsito generalFuncionamiento del TPM como captura de evento de entrada (INPUT CAPTURE)Funcionamiento del TPM como PWM (Pulse Width Modulation)Funcionamiento del TPM como OUTPUT COMPARE

    13.3. El RTC (Real Time Counter)13.4. Ejercicio con el RTC: Reloj digital inicializado por teclado13.5. Referencias

    13.6. Preguntas

    Captulo 14. Conversin A/D (ADC:Analog to Digital Converter)14.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados14.2. Programa ejemplo: Medida de la temperatura utilizando un sensor LM35 y

    visualizacin en LCD14.3. Referencias14.4. Preguntas

    Captulo 15. Comparacin anloga (ACMP:Analog Comparator)

    15.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados15.2. Programa ejemplo: Monitoreo del voltaje en una celda de NiMh y controlsobre la carga

    15.3. Referencias15.4. Preguntas

    Captulo 16. Comunicaciones seriales asncronas (SCI: Serial CommunicationIntertface)

    16.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados16.2. Programa ejemplo: Comunicacin con una PC va Hyperterminal16.3. Referencias

    16.4. PreguntasCaptulo 17. Comunicaciones seriales sincrnicas (SPI: Serial Peripheral Interface/

    IIC: Inter.-Integrated Circuit)17.1. Diagrama en bloques, explicacin del funcionamiento y registros

    asociados al mdulo SPI17.2. Diagrama en bloques, explicacin del funcionamiento y registros

    asociados al mdulo IIC

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    7/494

    17.3. Programas ejemplos:Comunicacin SPI entre dos sistemas MCULectura y escritura sobre una memoria serial IIC

    17.4. Referencias17.5. Preguntas

    Captulo 18. Comunicaciones seriales (USB: Universal Serial Bus)18.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados18.2. Ejemplo con el mdulo USB: Conexin de un mouse USB al DEMOJM

    (Comunicacin como HOST)18.3. Referencias

    Captulo 19. Otros mdulos del MCF51JM12819.1. Diagrama en bloques, explicacin del funcionamiento y registros asociados al

    mdulo CMT19.2. Diagrama en bloques, explicacin del funcionamiento y registros asociados al

    mdulo CAN19.3. Referencias

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    8/494

    IntroduccinEste texto est dirigido a estudiantes y docentes en las reas de las Tcnicas Digitales yLenguajes de Programacin, que desarrollen sobre Sistemas Embebidos a

    microcontroladores; as como a personas que participen en el desarrollo de nuevosproductos en las empresas de manufactura (OEM: Original Equipment Manufacturer).

    El objetivo fundamental del texto es la enseanza de los conceptos bsicos de losmicrocontroladores de Freescale de 32 bits, en particular el microcontrolador ColdFire51JM128. El texto contiene una gran variedad de ejemplos y ejercicios prcticos, queayudarn al lector a la asimilacin inmediata de estos conceptos.

    Para tal objetivo, el lector encontrar una serie de prcticas comprobadas al 100% yaplicadas sobre un modelo de desarrollo simple pero efectivo. Este modelo se apoya enlas siguientes tres aspectos:

    Metodologa y disciplina de diseo:Proporcionada por la experiencia del autordurante ms de 20 aos en el entorno de los sistemas embebidos amicrocontrolador.

    Recursos: Documentacin para el empleo de una herramienta de desarrollo degran sencillez y bajo costo como el DEMOJM, para el montaje de las prcticaspropuestas en el texto, sobre la plataforma CodeWarrior 6.2 de Freescale.

    Prcticas implementadas y propuestas:Listado de los programas y diagramasde los circuitos, para los ejercicios realizados y propuestos.

    Para la comprensin del texto no es necesario que el lector tenga amplio conocimiento

    sobre lenguajes de programacin, dado que el modelo de desarrollo sobre las funcionesbsicas del lenguage C.

    A continuacin se hace una breve descripcin de la organizacin del libro.

    Parte I. Conceptos Generales: Esta seccin contiene una breve descripcin histrica,actualidad y evolucin de los microcontroladores. En el aparte encontrarn la definicinde los componentes que conforman su arquitectura interna y externa. Tambin, de unamanera muy genrica, aparecen las definiciones de los diferentes modos dedireccionamiento y los tipos de instrucciones que hacen a la MCU (Microcontroller Unit)una herramienta poderosa para resolver problemas en reas tan importantes como el

    Control, Telecomunicaciones, Bioingeniera, entre otras. Al final del la PARTE I espresentado al lector una serie de elementos y herramientas adicionales, para el desarrollocon dispositivos MCU y recomendaciones para el diseo de circuitos conmicrocontroladores.

    Parte II. Arquitecturas Freescale de 8 y 32 bits:El libro, como se dijo al principio delprlogo, enfatiza el uso de microcontroladores de 8 y 32 bits como elementos dedesarrollo de prototipos o productos terminados. Las arquitecturas HCS08 y ColdFire

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    9/494

    V1 de Freescale trabajan el concepto de la migracin de 8 a 32 bits, aportando ventajascomo un muy alto ahorro de energa y herramientas de desarrollo comunes. Es entoncesen este aparte en donde aparece el estudio de las arquitecturas mencionadas.

    Parte III. Conceptos de Programacin: Este aparte tiene como objetivo la

    introduccin al lector sobre el ambiente de programacin CodeWarrior, en su versin6.2. Otro objetivo importante es la presentacin de la herramienta de desarrollo sobre lacual se basan las prcticas del libro, llamada DEMOJM.

    Parte IV. Los Microcontroladores MC9S08JM128 y MCF51JM128: Corresponde a laparte final del texto y est orientada hacia los miembros de las familias HCS08 yColdFire V1 de Freescale. En la parte inicial hay una orientacin al lector en el empleode una herramienta de desarrollo de muy bajo costo (US$99) sobre la cual seimplementarn la gran mayora de los ejercicios del texto, llamada DEMOQE128 dePemicro. Tambin, como una segunda alternativa, aparece una recomendacin sobre eldiseo de un sistema de desarrollo bsico, que sera compatible con los ejercicios

    tratados. Ms adelante se definen y se trabajan las arquitecturas y los mdulos internos delos procesadores MC9S08QE128 y MCF51QE128. Para cada mdulo considerado hayun ejercicio prctico, desarrollado en ANSI C y con algunos apartes de Assembler, querefuerza rpidamente al usuario sobre la programacin y/o configuracin del mismo. Alfinal del aparte, el lector podr encontrar algunas recomendaciones para el trabajo conmdulos no vistos con detalle.

    Se espera que este esfuerzo sirva para formar en el lector una idea concreta del poderoperativo de los microcontroladores de 8 y 32 bits, as como de la facilidad de migrar deuna mquina a otra conservando bajos niveles de consumo de energa, utilizandoherramientas de desarrollo comunes y de bajo costo.

    El autor agradece a la compaa Freescale y en especial al ingeniero Armando Molano,por su valioso apoyo en el desarrollo de este texto.

    Diego Alejandro Mnera Hoyos.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    10/494

    PARTE I

    CONCEPTOS GENERALESOBJETIVOEsta parte tiene como objetivo la presentacin de los conceptos generales, necesarios parael desarrollo de prototipos y/o productos en el entorno de tecnologas embebidas enmicrocontroladores de 8 y 32 bits. En el Captulo no se hace referencia a una tecnologaen particular, ms bien se tratan los conceptos y definiciones desde una perspectivageneral.

    CONTENIDOS

    CAPTULO 1. Historia de los microcontroladoresPresenta una lectura rpida y amena, que ubique temporalmente al lector sobre laevolucin de los microcontroladores, la memoria, los mdulos o perifricos y loslenguajes de programacin para desarrollar en estos.

    CAPTULO 2. ArquitecturasEn este captulo se conceptualiza sobre las diferentes arquitecturas en las cuales estnimplementadas las unidades centrales de proceso (CPU), que conforman el ncleo (core)de los microcontroladores.

    CAPTULO 3. Modos de direccionamiento y tipos de instrucciones

    Pasa a ser uno de los captulos ms importantes del libro, debido a que comienza adefinir la parte operativa y de programabilidad1 que tienen los procesadores.

    La manera como los procesadores operan sobre los datos y la forma como direccionanlos elementos de almacenamiento, informa al usuario sobre su potencial deprocesamiento y se convierte en un factor decisivo a la hora de seleccionar una mquina.

    CAPTULO 4. Elementos y herramientas bsicas de desarrolloEs la parte filosfica y metodolgica del texto, fundamentada en la experiencia de losautores. En este captulo, el lector encontrar recomendaciones genricas a la hora deenfrentar un diseo basado en sistemas embebidos con microcontroladores.

    Adicionalmente, el captulo presenta las diferentes etapas y las herramientas que seutilizan en el desarrollo de sistemas con dispositivos MCU.

    1Concepto de gran importancia, descrito por el matemtico John Von Newman en la dcada de los 40 delsiglo XX. Von Newman, se refera a la potencia de un procesador debido a su condicin de poder ejecutarel cdigo almacenado desde sus elementos de memoria.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    11/494

    CAPTULO 1

    Historia de los Microcontroladores1.1. Evolucin de las mquinas

    HistoriaLa memoriaLos mdulos o perifricosLenguajes de programacinHerramientas de desarrollo

    1.2. El futuro1.3. Referencias1.4. Preguntas

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    12/494

    1.1. EVOLUCIN DE LAS MQUINAS

    El microcontrolador es uno de los inventos ms sobresalientes del siglo pasado. En laactualidad aporta soluciones al ser humano en comunicacin, entretenimiento, salud,seguridad, confort, movilidad y controlabilidad en general. Existen ms de 15.000

    millones de soluciones, implementadas en el planeta, a base de microcontroladores.El ncleo de un microcontrolador (MCU) es un microprocesador (CPU). Siendo esteltimo un dispositivo lgico secuencial utilizado en sistemas electrnicos digitales elcual realiza, mediante su caracterstica de programabilidad, operacionesaritmticas, lgicas y de control. En la actualidad, estas mquinas han alcanzadocapacidades de manipulacin del dato de hasta 32 bits, que los hace muy poderosos enclculos matemticos y lgicos.

    Haciendo una corta definicin, se podra decir que un microcontrolador es un:dispositivo lgico secuencial utilizado en sistemas electrnicos digitales y anlogos,

    el cual realiza mediante su caracterstica de programabilidad, operacionesaritmticas, lgicas y utilizando sus dispositivos perifricos internos, operaciones decontrolabilidad (embedded controller).

    En el ao 1965, el fsico Gordon Moore publica un artculo en la revista ElectronicsMagazine, sobre lo que ms tarde conoceramos como la Ley de Moore (ms que unaley es una profeca!). Esta ley predice el comportamiento del crecimiento en nmero detransistores de la arquitectura de una CPU, tal como aparece en la Figura 1.1. DiceMoore: Esta prediccin se mantendr hasta el ao 2011 y obedece ms a razonescomerciales que tecnolgicas.

    La ley predice que cada 18 meses la cantidad de transistores contenidos en una CPUdebe duplicarse, de lo contrario no ser comercialmente viable.

    Figura 1.1. Grafico de Moore [2].

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    13/494

    HistoriaPara la dcada de los aos 70 (siglo XX), aparecen los primeros microcomputadoresencapsulados en un chip, que ms tarde se llamaran microcontroladores. Ms que larepresentacin tabulada de los diferentes modelos, fechas de aparicin, caractersticas

    bsicas y el nombre de las industrias dedicadas al desarrollo de los microcontroladores.Compaas tan importantes como FREESCALE, RENESAS, ATMEL, RABBIT,DALLAS, INFINEON, INTEL, MICROCHIP, TOSHIBA, NEC, SILICONLABORATORIES, entre otras, mantienen una fuerte competencia en la innovacin yproduccin sobre los dispositivos microcontroladores. La competencia se desarrolla enaspectos como la capacidad en bits, migracin, velocidad, variedad en perifricos y bajoconsumo, entre otros.

    A continuacin se resaltan algunos aspectos importantes en la evolucin tecnolgica delos MCU.

    Capacidad en bitsYa se ha dicho que los microcontroladores crecieron al lado de losmicroprocesadores y en ese sentido se han desarrollado en 4, 8, 16 y hasta 32 bits.

    Tecnologa de programacinInicialmente, el programa almacenado resida en ROM de mscara y era el fabricantequien lo generaba. La desventaja de esta tecnologa radicaba en los altos volmenesque se tenan que producir, para que justificara su fabricacin desde el punto de vistaeconmico y el riesgo de cometerse algn error, factor por el cual se perda una grancantidad de dinero.

    Ms tarde aparecen las versiones OTP (One Time Programmable) de muy bajo costo,la programacin es realizada por el usuario, pero con el cuidado de que slo se puedehacer una vez. De tal manera que una vez programado el microcontrolador no habaforma de revertir el proceso.

    Con un costo mayor, pero ms seguro, se presenta la alternativa de programacinsobre una EPROM. Un gran inconveniente de esta tecnologa era la demora en elborrado de los datos, debido a la larga exposicin del chipante lmparas de luz ultravioleta.

    La anterior tecnologa es mejorada por la EEPROM, que permite grabar y borrarelctricamente los datos, pero con el inconveniente de la velocidad de procesamiento.

    Finalmente, es la tecnologa FLASH la que se impone en los mercados por su bajocosto, velocidad y facilidad de manipulacin en la programacin. Tiene la ventaja depoderse reprogramar miles de veces (an ms que la EEPROM) y su borrado eselctrico, pero es importante tener en cuenta las versiones ROM y OTP como una

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    14/494

    buena alternativa para abaratar costos de fabricacin y que hoy en da son bastanteutilizadas en productos masivos.

    VelocidadA diferencia de los microprocesadores, el objetivo fundamental de un

    microcontrolador no es el de ejecutar operaciones a velocidades de cientos de MHz,ms bien, lo interesante sera ejecutar operaciones a la ms alta velocidad con el msbajo consumo y un costo razonable. El objetivo anterior radica en que la mayora delas aplicaciones con microcontroladores se orientan a dispositivos porttilessoportados por bateras.

    La Figura 1.2 presenta la evolucin en velocidad de los microcontroladores de 8 bitshasta la actual dcada. Observe la aceleracin exponencial de la velocidad en laltima dcada.

    Figura 1.2.Evolucin de la velocidad para las mquinas de 8 bits.

    Otras mquinas con arquitecturas ms complejas como es el caso del

    microcontrolador de 16 bits C8051F1202

    , que ejecuta operaciones a 100 MIPS con unreloj de 100MHz o el microcontrolador de 32 bits MCF54853, que ejecutaoperaciones a 308 MIPS con un reloj de 200MHz.

    2Tomado del artculo:http://electronicdesign.com/Articles/ArticleID/2096/2096.html3Tomado de:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF548X&nodeId=0162468rH3YTLC00M93426

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    15/494

    La memoriaDebido a que es el cdigo quien se convierte en el factor determinante en undesarrollo con microcontrolador, la cantidad de memoria dispuesta en este es un

    factor importante al momento de elegir la mquina.

    La memoria generalmente es interna, pero existen mquinas con manejo de memoriaexterna y pueden acceder a varios MB, tanto en memoria de cdigo como datos.

    Es bien sabido que los sistemas soportados por un microcontrolador no requieren degrandes cantidades de memoria, tanto de cdigo como de datos (FLASH-RAM). Eneste sentido los microcontroladores vienen equipados con memoria de cdigo dehasta 1MB y de datos de hasta 128KB.

    Los mdulos o perifricos

    Gran variedad de perifricos orientados a los diferentes mercados tecnolgicos como:las telecomunicaciones, el transporte, aparatos elctricos de consumo masivo, entreotros; son implementados en los microcontroladores. Los usuarios encontrarn unagran variedad de perifricos, siendo los ms comnes:

    o Temporizadores (PWM, OUTPUT COMPARE, INPUT CAPTURE)o Convertidores anlogo a digitalo Entradas/salidas de propsito generalo Reloj de tiempo realo Sistemas de proteccin de flujo de programa (WDT, COP)o Puertos de comunicacin serial asncrona (UART, CAN)

    o

    Puertos de comunicacin serial sincrnica (IIC, SPI)o Bus universal de comunicacin serial (USB)o Puerta trasera de depuracin (BDM, JTAG)

    Algunas mquinas de mayor desempeo involucran mdulos ms especializadoscomo:

    o Controladores para ETHERNETo Unidades de generacin y aceleracin criptogrficao Unidades de generacin de nmeros aleatorioso Unidades de generacin y verificacin de cdigo de redundancia cclicao

    Unidades de tratamiento de aritmtica flotante (FPU)o Unidades de multiplicacin, acumulacin y corrimiento (MAC)o Unidades para manejo directo de memoria (DMA)

    Lenguajes de programacinLos lenguajes ms populares para la programacin de microcontroladores, en suorden de importancia, son:

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    16/494

    o Assembler: Toda mquina deber soportar programacin en su lenguaje nativo,

    que se acerque de manera directa a su ncleo. Este lenguaje es llamado assemblery no debe ser ignorado por ningn programador, an teniendo el mejorcompilador en otros lenguajes. La razn de lo anterior radica en la posibilidad de

    desarrollar cdigo con la mejor eficiencia, esto es, mayor velocidad, mayoraprovechamiento del recurso de memoria y ms bajo consumo.

    Afortunadamente muchas aplicaciones permiten la mezcla de assembler y otroslenguajes de mayor nivel, proporcionando al usuario la posibilidad de hacercdigo ptimo.

    o C/C++: Por excelencia, es el lenguaje de la ingeniera debido a su estructura,portabilidad y aprovechamiento de los recursos de las mquinas procesadoras(CPU, MCU). Los compiladores de este lenguaje son cada vez ms ptimos, detal forma que acortan la brecha entre el lenguaje nativo de la mquina y el C/C++.

    o Basic: Aunque no es muy popular para sistemas embebidos a microcontrolador,presenta una manera cmoda para programar los MCU sin la necesidad de muchoconocimiento de la mquina. La desventaja radica en el alto consumo de losrecursos, por tratarse de un lenguaje de alto nivel y adicionalmente la prdida delenfoque de la mquina que se est programando.

    1.2. EL FUTUROLa evolucin de los microcontroladores est ligada a la evolucin de losmicroprocesadores y ha sido caracterizada por aspectos como el incremento de la

    velocidad de ejecucin, una disminucin del consumo de energa, un alto grado deminiaturizacin, un incremento en la capacidad de manipulacin del dato y un aumentoen la capacidad implementada de dispositivos de memoria y perifricos.

    El futuro prev una migracin acelerada de las mquinas de 8 bits y 16, a las mquinasde 32 bits y superiores. El factor predominante es el fenmeno de mercado, que hace quela diferencia de precio entre la capacidad en bits sea cada da menor. De esta manera losusuarios se enfrentan a la tentacin de tener ms prestaciones por un precio razonable.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    17/494

    1.3. REFERENCIAS

    Stallings, William. Organizacin y Arquitectura de Computadores. Ed. Prentice Hall,5 ed. 2000.

    http://www.intel.com/cd/corporate/techtrends/EMEA/spa/209840.htm

    1.4. PREGUNTAS

    Realice una definicin corta y clara para un microcontrolador. Cuales son las capacidades en bits para los microcontroladores mencionados en este

    texto? Por qu es importante el concepto de bajo consumo en un microcontrolador? Cul es la razn de la baja cantidad de memoria implementada en un

    microcontrolador?

    Enuncie tres mdulos especializados que traen algunos microcontroladores. Por qu no son muy populares los lenguajes de alto nivel para programar

    microcontroladores? Enuncie una razn de peso para migrar a mquinas de ms alto nmero de bits.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    18/494

    CAPTULO 2

    Arquitecturas

    2.1. Von Newman2.2. Harvard2.3. Otros conceptos y otras arquitecturas2.4. Referencias2.5. Preguntas

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    19/494

    2.1. VON NEWMAN

    En el ao de 1903 nace en Hungra Jhon Von Newman, uno de los ms brillantesmatemticos de la era de la computacin. Durante la Segunda Guerra Mundial participcomo asesor en la construccin de la computadora ENIAC y ms tarde de la UNIVAC,

    siendo su gran aporte el del concepto de programa almacenado o micro-cdigo. A esteseor (ver Figura 2.1) se debe la arquitectura en la que se fundamentan la mayora de losmicroprocesadores y microcontroladores actuales.

    Figura 2.1. El matemtico Jhon Von Newman(Fuente: http://www.dma.eui.upm.es/historia_informatica/Doc/personajes.htm)

    ENIAC (Electronics Numerical Integrator and Calculator), como aparece en la Figura2.2, fue la primera computadora programable de propsito general, concebida paraclculos de balstica para la Segunda Guerra Mundial. La computadora se termin dedesarrollar en 1946 cuando la guerra haba pasado.

    Esta mquina pesaba 30 toneladas, la base operativa era decimal, usaba 800 kilmetros

    de cable, tena 17.000 tubos de vaco, realizaba 100.000 operaciones por segundo yconsuma 150KWh.

    Figura 2.2. Computadora ENIAC(Fuente: http://ei.cs.vt.edu/~history/ENIAC.Richey.HTML)

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    20/494

    La primera mquina en donde se utiliz el lenguaje assemblery el concepto de ProgramaAlmacenado (desarrollado por Von Newman) fue UNIVAC (Universal AutomaticComputer), ver Figura 2.3. El concepto de Programa Almacenado se refiere a lasinstrucciones que ejecutar la mquina y que es llevado a la memoria de cdigo.

    Figura 2.3. Computadora UNIVAC(Fuente: http://www.dma.eui.upm.es/historia_informatica/Doc/personajes.htm)

    Estas mquinas eran programadas en lenguaje de mquina, que sera reemplazado mstarde por el lenguaje assembler, que elimina la incmoda y tediosa labor de digitar losprogramas en binario. Esta mquina fue usada en el censo de poblacin de los EstadosUnidos y utilizaba memoria magntica en cinta.

    Aqu es importante mostrar la definicin de Von Neuman, para entender como sus ideashan perdurado por todos estos aos. Toma do textualmente de algunos apartes4sobre eldiseo de Von Newman:

    2.2. Primero: Como el dispositivo es, principalmente, un computador, tendr que realizar lasoperaciones aritmticas elementales muy frecuentemente. Estas son: la suma, la resta, lamultiplicacin y la divisin: +, --, x, /. Es, por tanto, razonable, que contenga elementos

    especializados slo en estas operaciones.

    Debe observarse, sin embargo, que aunque este principio parece consistente, la manera especficade cmo se aplica requiere un examen cuidadoso [....]. En cualquier caso, tendr que existir laparte de aritmtica central que constituir la primera parte especfica: CA (Central Aritmethical).

    4Tomado de las notas del matemtico Jhon Von Newman.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    21/494

    2.3 Segundo: El control lgico del dispositivo, es decir, la secuenciacin adecuada de lasoperaciones, debe ser realizado eficientemente por un rgano central de control. Si este dispositivode control debe ser verstil, es decir, servir en lo posible para todo uso, hay que diferenciar entrelas instrucciones especficas que definen un problema particular, y los rganos de control generalque se ocupan de que se lleven a cabo dichas instrucciones, sean cules sean. Las primeras debenalmacenarse en algn lugar; las otras deben representarse definiendo partes operativas del

    dispositivo. Con el control central nos referimos slo a esta ltima funcin, y los rganos que larealizan forman la segunda parte especfica: CC (Central Control).

    2.4 Tercero: Cualquier dispositivo que realice secuencias largas y complicadas de operaciones(concretamente de clculo), debe tener una memoria considerable [....].Las instrucciones que gobiernan un programa complicado pueden constituir un materialconsiderable, sobre todo si el cdigo es circunstancial (lo cual ocurre en la mayora de lassituaciones). Este material debe tenerse en cuenta [....].En cualquier caso, la memoria total es la tercera parte especfica del dispositivo: M (memory).

    2.6 Las tres partes especficas, CA, CC y M, corresponden a las neuronas asociativas del sistemanervioso humano. Quedan por discutir los equivalentes a las neuronas sensoriales o aferentes y lasmotoras o eferentes. Estos son los rganos de los dispositivos de entrada y salida [....].

    El dispositivo tiene que estar dotado con la habilidad de mantener contacto de entrada y salida(sensorial y motor) con medios especficos de este tipo (cf.1.2): el medio ser llamado el medio degrabacin exterior del dispositivo: R (Recording) [....].

    2.7 Cuarto: El dispositivo tiene que tener rganos para transferir [...] informacin a partir de R asus partes especficas C y M, ver figura 1.7. Estos rganos forman su entrada, la cuarta parteespecfica: I (Input). Veremos que lo mejor es hacer todas las transferencias a partir de R(mediante I) hasta M, y nunca directamente a partir de C [....].

    De este diseo aparecen los primeros diagramas de bloques que conformaran la mquinaVon Newman (Figura 2.4).

    Figura 2.4 Arquitectura primaria Von Newman.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    22/494

    Contina Von Newman:

    2.8 Quinto: El dispositivo tiene que tener rganos para transferir [....] informacin a partir de suspartes especficas C y M hacia R. Estos rganos forman su salida, la quinta parte especfica: O

    (Output). Veremos que es mejor, de nuevo, hacer todas las transferencias a partir de M (medianteO) a R, y nunca directamente a partir de C [....].

    Es claro que Von Newman define, de manera nuclear y salvo raras excepciones, laarquitectura de todos los computadores de hoy en da, la Figura 2.5. presenta de unamanera ms evolucionada el diseo del matemtico.

    Figura 2.5. Arquitectura Von Newman evolucionada.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    23/494

    2.2. HARVARD

    La arquitectura Harvard diseada por el seor Howard Aiken, graduado de laUniversidad de Harvard y desarrollada en 1944 durante el proyecto Mark I, tiene comocaracterstica ms importante tener los datos y las instrucciones en buses separados. De

    esta manera se puede ejecutar en forma paralela una instruccin con su respectivo dato,haciendo ms corto el tiempo de ejecucin.

    El ncleo de la CPU est conectado a dos memorias por intermedio de dos busesseparados. Una de las memorias contiene solamente las instrucciones del programa, y esllamada Memoria de Programa. La otra memoria slo almacena los datos y es llamadaMemoria de Datos (Figura 2.6). Ambos buses son totalmente independientes y pueden serde distintos tamaos.

    Figura 2.6. Arquitectura Harvard

    Para un procesador implementado sobre tecnologa Harvard, bajo RISC (ReducedInstruccin Set Computer), el set de instrucciones y el bus de la memoria de programapueden disearse de manera tal que todas las instrucciones tengan la misma longitud ypuedan ser ejecutadas en un ciclo de mquina.

    Adems, como los buses son independientes, la CPU puede estar accediendo a los datospara completar la ejecucin de una instruccin, y al mismo tiempo estar leyendo laprxima instruccin a ejecutar. Se puede observar claramente que las principales ventajasde esta arquitectura son:

    El tamao de las instrucciones no esta relacionado con el de los datos, y por lo tantopuede ser optimizado para que cualquier instruccin ocupe una sola posicin dememoria de programa, logrando as mayor velocidad y menor longitud deprograma.

    El tiempo de acceso a las instrucciones puede superponerse con el de los datos,logrando una mayor velocidad de operacin.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    24/494

    Una pequea desventaja de los procesadores con arquitectura Harvard, es que debenposeer instrucciones especiales para acceder a tablas de valores constantes que pueda sernecesario incluir en los programas, ya que estas tablas se encontrarn fsicamente en lamemoria de programa (por ejemplo en la EPROM de un microprocesador).

    2.3. OTROS CONCEPTOS Y OTRAS ARQUITECTURAS

    En la bsqueda de ejecutar procesos cada vez ms rpidos, programas potentes cargadosde multiplicidad de funciones, manipulacin de grandes volmenes de informacin, bajoconsumo de energa y ocupacin de pequeos espacios, las compaas que desarrollanmicroprocesadores y microcontroladores estn permanentemente buscando nuevasarquitecturas. Es de anotar que las arquitecturas de actualidad tienen su fundamento en laarquitectura madre, la arquitectura Von Newman, y en los elementos ms importantes dela arquitectura Harvard.

    Conceptos de CISC y RISCSe hace necesario mencionar dos conceptos bastante relacionados con lasarquitecturas de actualidad, como lo son RISC y CISC, en donde:

    o RISC (Reduced Instruction Set Computer):Computador con juego reducido deinstrucciones. Generalmente este tipo de instrucciones son ejecutadas en un ciclode la mquina, utilizando modos de direccionamiento simples e instruccionessencillas. El concepto de segmentacin (ejecucin de varias instrucciones en elmismo ciclo de mquina) es ms fcil aplicarlo a las instrucciones RISC debido aque stas tienen un ancho en bits constante.

    o CISC (Complex Instruction Set Computer):Computador con juego complejo deinstrucciones. Un procesador cuyo ncleo est basado en el concepto CISC en surepertorio de instrucciones, no necesita de compiladores costosos ni complejos enmejora de sus prestaciones. El enfoque de este concepto es el desarrollo delenguajes de alto nivel (HLL: High Level Language). Este concepto tambinconfigura programas ms cortos y de mejor aprovechamiento de la memoria. Seha visto que algunos algoritmos, de moderada y alta complejidad, se desarrollanmucho ms rpido en una mquina CISC que en una RISC.

    Es frecuente encontrar un sin nmero de artculos que hablan bien o mal de RISC

    y de CISC, pero a estas alturas se concluye que lo mejor es tomar lo bueno de unconcepto y del otro, como lo han hecho muchos fabricantes de microprocesadoresy que han tenido gran xito.

    Concepto VLIW (Very Large Instruction Word)Acogindose ms al concepto RISC, en cuanto al tamao constante de susinstrucciones, pero tomando elementos como el de realizar tareas complejas, propias

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    25/494

    de la tcnica CISC, aparece la arquitectura VLIW con instrucciones cuyo ancho vadesde los 64 bits hasta los 1024 bits.

    El formato de una instruccin VLIW se muestra en la Figura 2.7, en donde se puedever la ejecucin de varios procesos al mismo tiempo.

    Figura 2.7 Formato de instruccin VLIW

    A continuacin se hace una breve descripcin de las arquitecturas que actualmente seestn aplicando a las mquinas modernas y de otras que an se encuentran en etapa dedesarrollo:

    Concepto de arquitectura superescalarEl fundamento del proceso superescalar, nacido en el ao 1987 y derivado delprocesamiento normal escalar, es el canal o cauce de instrucciones (PIPELINE) ytoma elementos del concepto RISC, pero tambin es posible implementarla sobre elconcepto CISC.

    Un cauce de instrucciones consta de mltiples etapas de proceso distribuidas a lolargo de los ciclos de mquina, en donde varias instrucciones pueden ser ejecutadas ala vez. Si existen varios cauces de instrucciones se puede concluir que existe ciertonivel de ejecucin en paralelo (ver Figura 2.8).

    Para lograr esta tcnica es necesario que el sistema, en tiempo de compilacin,organice el orden en el que deben ser ejecutadas las instrucciones (ver Figura 2.9) yde esta forma evitar las dependencias entre instrucciones.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    26/494

    Figura 2.8. Arquitectura superescalar.

    (Fuente: Stallings, William. Organizacin y arquitectura de computadores. 5ta ed.2000)

    Figura 2.9. Ordenamiento de instrucciones para ejecucin ptima.(Fuente: Stallings, William. Organizacin y arquitectura de computadores. 5ta ed.

    2000)

    Lo anterior quiere decir, que si la entrada de una instruccin depende de la salida deuna instruccin precedente, la segunda instruccin se ve amarrada y no podraejecutarse hasta tanto no se procesen los datos que requieren.

    Ejemplo:Listado de un cdigo ejecutado en una mquina tradicional Harvard:

    Paso 1:sume los registros R1, R2 y almacene el resultado en R3Paso 2:substraiga R3 de R4 y almacene el resultado en R5Paso 3: sume los registros R6, R7 y almacene el resultado en R8Paso 4:almacene R1 en R9.

    Para una mquina de procesamiento superescalar, el ejemplo anterior en arquitecturaRISC, se podra ejecutar as:

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    27/494

    Paso 1:(las siguientes instrucciones se hacen simultneamente)

    o Sume los registros R1, R2 y almacene el resultado en R3.o Sume los registros R6, R7 y almacene resultado en R8.o Almacene R1 en R9.

    Paso 2:Substraiga R3 de R4 y almacene el resultado en R5.Se puede ver como las operaciones de los pasos 1, 3 y 4 se pueden ejecutarsimultneamente, debido a que no existe interdependencia entre ellas.

    Una explicacin grfica del proceso pipelinesimple y superescalar se presenta en laFigura 2.10.

    Figura 2.10. Comparacin de procesos RISC, superescalar y supersegmentazo [1].

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    28/494

    Concepto de procesadores vectoriales o paralelos

    La caracterstica ms importante de un procesador vectorial es la de contener variasALU con sus respectivos cauces de datos, y con el empleo de una sola unidad decontrol.

    El controlador encausa varias operaciones hacia las diferentes ALU, para que stassean ejecutadas en paralelo. Si a lo anterior se le aplica la segmentacin deinstrucciones, se obtendran mquinas con operaciones muy potentes y de velocidadesaltas (ver Figura 2.11).

    Figura 2.11. Procesador vectorial.

    La tcnica vectorial de mayor actualidad es la de implementar sistemas con variosmicroprocesadores en paralelo, para esto se recomienda dividir los programas ensubtareas, que se ejecutarn en paralelo.

    La tcnica anterior va acompaada de una sincronizacin muy eficiente, que coordinacada tarea (ver Figura 2.12).

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    29/494

    Figura 2.12. Procesador vectorial con varios procesadores paralelos

    Conceptos de clasificacin SISD, SIMD, MISD y MIMDExiste una clasificacin ms evolucionada de las arquitecturas y est basada en elcauce de las instrucciones y de cmo se manipulan los datos. Estos conceptos

    aparecen en el ao de 1966 y fueron propuestos por el seor Michael Flynn5.

    o SISD (Single Instruction Single Data)Rene todas las arquitecturas que ejecutan una sola instruccin por ciclo demquina y operan sobre un nico dato.

    Dentro de esta clasificacin se encuentran la mayora de los procesadores de ladcada comprendida entre los aos 1980-1990, y en la actualidad losmicroprocesadores que se encuentran en el interior de microcontroladores deaplicacin industrial.

    En esta clasificacin podemos incluir los primeros PC, estaciones de trabajo y losconceptos de segmentacin, superescalares y prebsqueda de instrucciones.

    La Figura 2.13 muestra un diagrama en bloques del flujo operativo de unamquina SISD tpica.

    5Concepto conocido como Taxonoma de Flynn.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    30/494

    Figura 2.13. Procesador SISD.

    o SIMD (Single Instruction Multiple Data)

    Dentro de esta arquitectura encajan la mayora de las mquinas actuales. Elmtodo consiste en aplicar una instruccin a un grupo de datos, como por ejemplomovimientos de datos de memoria a memoria, operaciones sobre vectores omatrices de datos, entre otras.

    En esta clasificacin podemos involucrar los computadores vectoriales ymatriciales (ver Figura 2.14).

    Figura 2.14. Procesador SIMD.

    o MISD (Multiple Instruction Single Data)Es la menos popular y su escasa aplicacin se orienta a procesos, en donde sobreun nico dato se aplican multiplicidad de operaciones como en las matricessistlicas (ver Figura 2.15).

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    31/494

    Figura 2.15. Procesador MISD.

    o MIMD (Multiple Instruction Multiple Data)Este tipo de arquitectura se est afianzando cada vez ms y est ntimamenteligada a procesadores paralelos. La tcnica consiste en hacer mltiplesoperaciones sobre grandes cantidades de datos como se hace en sistemas dememoria compartida y memoria privada (ver Figura 2.16).

    La tcnica MIMD multiplica recursos dentro de un procesador o utiliza varios demanera paralela.

    Figura 2.16. Procesador MIMD.

    Prediccin y ejecucin especulativaUn predictor de saltos es un mecanismo harware utilizado en los procesadores queutilizan segmentacin de la unidad de proceso, para reducir ciclos de parada en elpipeline.

    Los saltos condicionales introducen retardo en los procesadores, ya que normalmenteno se evala la condicin del salto hasta pasadas varias etapas. Lo anterior hace quese tenga que parar el cauce o que se puedan introducir instrucciones en el pipeline,que no deben de ser ejecutadas. Teniendo que convertirse posteriormente eninstrucciones de no operacin (NOP) y decrementando as el rendimiento delprocesador.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    32/494

    La prediccin es posible anotando el comportamiento del programa en saltosanteriores y tratando de aprender la ruta del flujo de programa, para aplicar mtodosbinarios o estadsticos y as tomar la decisin correcta del salto.

    La ejecucin especulativa es la ejecucin de cdigo por parte del procesador, que no

    tiene por qu ser necesariamente a priori.

    La ejecucin especulativa no es ms que una optimizacin y slo es til cuando laejecucin previa requiere menos tiempo y espacio que el que requerira la ejecucinposterior. Este ahorro es lo suficientemente importante como para compensar elesfuerzo gastado en caso de que el resultado de la operacin nunca llegue a usarse.

    Los procesadores modernos, que hacen uso de un pipeline, usan la ejecucinespeculativa, para reducir el costo computacional de las instrucciones de saltocondicional. Cuando el procesador se encuentra con una instruccin de saltocondicional, el procesador intenta predecir en donde es ms probable que se salte

    (tema visto en prrafos anteriores) e inmediatamente comienza a ejecutar el cdigoque empieza en esa rea.

    Si a posteriorise demuestra que la prediccin fue errnea, todo lo ejecutado despusdel salto se descarta. Esta ejecucin prematura sale realmente rentable, en el momentoen que se evite que el pipeline se detenga para conocer cual sera la prximainstruccin a ejecutar.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    33/494

    2.4. REFERENCIAS

    [1] Stallings, William. Organizacin y Arquitectura de Computadores. Ed. PrenticeHall, 5 ed. 2000.

    2.5. PREGUNTAS

    A quin se le considera el Padre de la Computacin? Describa el concepto de Programa Almacenado. Dibuje un diagrama de bloques que represente la mquina de Von Newman. Cul es la diferencia fundamental entre una mquina con arquitectura Von Newman

    y arquitectura Harvard? Para las arquitecturas Harvard y Von Newman, cul sera la afinidad con los

    conceptos CISC y RISC? Enuncie dos caractersticas importantes de la arquitectura VLIW.

    Qu es un cauce de instrucciones (pipeline)? Defina brevemente SISD, SIMD, MISD y MIMD.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    34/494

    CAPTULO 3

    Modos de Direccionamiento y Tipos de

    Instrucciones

    3.1. Los direccionamientos3.2. Lenguanjeassembler3.3. Tipos de instrucciones3.4. Directivas y/o pseudo-instrucciones3.5. Referencias3.6. Preguntas

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    35/494

    3.1. MODOS DE DIRECCIONAMIENTO

    Los diferentes modos de direccionamiento que se explicarn en ste aparte no hacenreferencia a ninguna mquina en particular y se utilizar un assemblergenrico. Aqu, setratarn de explicar la mayora de direccionamientos para las mquinas existentes en el

    mercado.Tambin como norma para el usuario, el formato de las instrucciones usadas para losdiferentes tipos de direccionamiento ser:

    ETIQUETA: INSTRUCCIN FUENTE,DESTINO ;COMENTARIO

    A la direccin resultante de un direccionamiento se le llamar la Direccin Efectiva(DE), tambin llamada direccin resultante del direccionamiento.

    Direccionamiento de registro

    Se utiliza para operaciones o movimientos de informacin entre registros de la CPU,por ejemplo:

    MOVER R1 , R0 ;Mueva al registro R0 el contenido del;registro R1 (ver Figura 3.1)

    Figura 3.1. Direccionamiento de registro.

    Direccionamiento inmediatoCuando se requiera operar o almacenar una cantidad constante en registros de la CPU,localidades de memoria o dispositivos perifricos.

    MOVER #55 , R0 ;Almacene la constante 55 en el registro R0.;El smbolo # indica que la cantidad 55 es;una cantidad constante (ver Figura 3.2).

    NOTA: Existen muchas formas de representar una constante y depende delensamblador que se utilice. Algunos no anteponen un smbolo especial, paraindicar que una cantidad es una constante (Ejm: A9H, para indicar la constantehexadecimal A9).

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    36/494

    Figura 3.2 Direccionamiento inmediato

    El error ms comn en este tipo de direccionamiento es tratar de almacenar en unaconstante algn tipo de informacin, por ejemplo:

    MOVER R5 , #0x1C78 ;Error: el contenido del registro R5 no puede ser;almacenado dentro de una constante

    Direccionamiento directo a registroEn algunas mquinas se limita ste direccionamiento a la pgina cero del mapa dememoria. La pgina cero es el rea de la memoria comprendida entre la direccin00H hasta la direccin FFH, es decir, las primeras 256 celdas.

    El direccionamiento consiste en intercambiar u operar informacin entre los registrosde la mquina y la memoria. El direccionamiento directo es, por excelencia, uno delos ms rpidos en ejecucin que tienen las mquinas. Por ejemplo:

    ADICIONE (0x004E) , R2 ;Sume el contenido del registro R2 y el contenido;de la celda 004E y el resultado almacnelo en el;registro R2. Los ( ) indican que la cantidad;0x004F no es una constante, sino una direccin de;la memoria. Es importante entender que la;direccin 0x004E pertenece a la pgina 0 de la;memoria del sistema (ver Figura 3.3).

    Figura 3.3. Direccionamiento directo a registro

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    37/494

    Direccionamiento indirectoEn ste direccionamiento se utiliza un registro como apuntador a la localidad dememoria o dispositivo E/S a ser accesado. La ventaja del direccionamiento es lamovilidad del puntero mediante operaciones matemticas de incremento ydecremento sobre ste.

    La simbologa que distingue este direccionamiento es la de encerrar al puntero entreparntesis ( ). Por ejemplo:

    INCREMENTE (R9) ;Incremente el contenido de la celda apuntada por el;puntero R9 (ver Figura 3.4).

    Figura 3.4. Direccionamiento indirecto.

    El error ms comn en este tipo de direccionamiento es olvidar los parntesis, porejemplo:

    DECREMENTE R9 ;Error: si lo que se quiere es decrementar el;contenido de la celda apuntada por R9, la;instruccin est decrementando el contenido del

    ;registro R9.

    Direccionamiento indexadoTodo tipo de direccionamiento indexado utiliza uno de los registros como punterondice. Existen diferentes modos del direccionamiento indexado y a continuacin sepresentan:

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    38/494

    o Indexado sin desplazamiento (offset): Hace referencia al contenido de la

    localidad de memoria apuntada por el registro ndice en particular sin adicionarningn desplazamiento, por ejemplo:

    ALMACENE (IX) , R0 ;Almacene en el registro R0 el contenido de;la localidad de memoria apuntada por el;ndice IX (ver Figura 3.5).

    Figura 3.5. Direccionamiento indexado sinoffset.

    o Indexado con desplazamiento relativo a registro: Hace referencia alcontenido de la localidad de memoria apuntada por el registro ndice, o base enparticular, ms un desplazamiento.

    El desplazamiento generalmente se aplica en aritmtica signada comocomplemento a dos. Lo anterior quiere decir que pueden haber desplazamientosnegativos y positivos (hacia delante o atrs en la memoria), por ejemplo:

    MOVER (IX + 0x100) , R3 ;Almacene en el registro R0 el contenido de;las celdas de memoria apuntadas por el;ndice IX ms 100 hexa-posiciones (ver;figura 3.6).

    NOTA: Para este tipo de direccionamiento y para los dems, se asumir lanotacin little endian(el ms bajo en memoria quedar almacenado en la partealta del destino).

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    39/494

    Figura 3.6. Direccionamiento indexado conoffset.

    o Indexado a base ms ndice: Utiliza como apuntadores un registro base y unregistro ndice, de tal manera que la celda a ser accesada se encuentra en lalocalidad de memoria, resultante de sumar el contenido de los dos punteros. Porejemplo:

    MOVER (R4 + IX) , R1 ;Almacenar el contenido de las celdas apuntadas por

    ;el registro base R4 ms el ndice IX, dentro del;registro R1 (ver Figura ;3.7).

    Figura 3.7. Direccionamiento a base ms ndice.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    40/494

    o Indexado a base con ndice y escalamiento: Este tipo de direccionamiento esmuy poderoso debido a la estructura de punteros que utiliza y a las propiedades deescalamiento y desplazamiento, para formar la direccin efectiva. Por ejemplo:

    MOVER (R0 + 2*IX) , R5 ;Copia en R5 el contenido de la celda apuntada por

    ;el registro base R0 ms el contenido del registro;ndice IX multiplicado por 2 (ver Figura 3.8).

    Figura 3.8. Direccionamiento a base con ndice y escalamiento.

    o Relativo a base ms ndice con desplazamiento: Hace referencia al contenidode la localidad de memoria apuntada por el registro ndice ms la base y a todoesto se suma un desplazamiento. Este desplazamiento generalmente se aplica enaritmtica signada como complemento a dos. Quiere decir que puede haberdesplazamientos negativos y positivos, por ejemplo:

    MOVER [R0 + IX + 0x100] , R5 ;Almacene en el registro R5 el contenido de;la celda de memoria apuntada por la suma;del registro base R0 y el ndice IX, ms un; offsetde 0x100 (ver Figura 3.9).

    Direccionamiento de salto relativo condicionalLa verdadera inteligencia de las mquinas radica en la toma de decisiones, lo queen un lenguaje C llamaramos las sentencias IF-ELSE. Un direccionamiento relativocondicional evala una bandera de la mquina, lgicamente despus de haberseejecutado una operacin aritmtica, lgica o de control.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    41/494

    Figura 3.9. Direccionamiento relativo a base ms ndice con desplazamiento.

    Los saltos relativos tienen dos posibilidades, la primera evala si la condicin esverdadera y se ejecuta el salto; la segunda es tomada por descarte y el programacontina con su curso normal.

    De cualquier manera el contador de programa es trasladado a la direccin del salto yel programa se sigue ejecutando a partir de la nueva direccin.

    El salto que se realiza es limitado y obedece a un salto con direccin, es decir, lamquina puede saltar hacia delante (incrementando en memoria) o hacia atrs

    (decrementando en memoria). La magnitud del salto est comprendida en un nmerode 8 o 16 bits y trabaja en aritmtica signada como complemento a dos. Por ejemplo:

    SALTE SI ACARREO 59H ;Salte 59H posiciones hacia delante si la;bandera de acarreo est en 1.

    Para evitar tener que calcular cuantas celdas hacia adelante o atrs debe saltar lamquina, los ensambladores (compiladores) permiten referenciar el sitio del saltousando etiquetas. Por ejemplo, la instruccin anterior se podra expresar:

    SALTE SI ACARREO LOOP ; Salte a LOOP si la bandera de acarreo est

    ;en 1.

    La nica condicin es que LOOP no se encuentre por fuera de la magnitud signadadel salto..

    La ventaja de este tipo de saltos es la rapidz, debido a que se hace utilizandodireccionamientos cortos (8 o 16 bits); la desventaja radica en la poca longitud delsalto (ver Figura 3.10).

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    42/494

    Figura 3.10. Direccionamiento de salto relativo condicional.

    Direccionamiento de salto absolutoSon saltos por definicin incondicionales con capacidades de salto mucho mayores alos relativos. Por ejemplo:

    SALTE INICIO ;salte a INICIO incondicionalmente (ver;Figura 3.11.

    Figura3.11. Direccionamiento de salto cercano.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    43/494

    Direccionamiento de puntero a pila (SP:stack pointer)sin desplazamientoUtiliza el puntero de pila como apuntador a memoria. Este direccionamiento es muyrpido debido a las propiedades de decodificacin y movimiento del puntero a pila.

    Por ejemplo:

    ALMACENE R0 , (SP) ;almacene el registro R0 en la celda de memoria;apuntada por el registro SP (ver Figura 3.12)

    Figura 3.12. Direccionamiento de pila sinoffset.

    o De puntero a pila con desplazamientoManipula el dato desde o hacia la direccin apuntada por el puntero de pila msun desplazamiento. Por ejemplo:

    MOVER 0x1023 (SP) , R1 ;Almacene en el registro R1 el contenido de la celda;apuntada por SP ms 0x1023 posiciones (ver;Figura 3.13)

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    44/494

    Figura 3.13. Direccionamiento de pila conoffset.

    Direccionamiento de memoria a memoriaLo interesante de este tipo de direccionamiento es que no utiliza registros de lamquina para manipular la informacin. Este direccionamiento trabaja directamentecon las localidades de memoria, proporcionando un ahorro en memoria de programay un aumento en la velocidad de ejecucin. Ejemplos:

    o De inmediato a directo: Se almacenan constantes en las posiciones de memoriacorrespondientes a la pgina cero, por ejemplo:

    MOVER #0x3D , 0x00FE ;almacene la constante 0x3D en la localidad de;memoria con nombre 0x00FE (ver figura 3.14)

    Figura 3.14. Direccionamiento inmediato a directo.

    o De directo a directo: Se accesa directamente informacin entre celdas dememoria, sin necesidad de utilizar registros de la mquina. Por ejemplo:

    MOVER 0x0037 , 0x0051 ;Almacene el contenido de la localidad de memoria

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    45/494

    ;0x0037 en la localidad 0x0051 (ver Figura 3.15).

    Figura 3.15. Direccionamiento directo a directo.

    De indexado con postincremento a directoSe copia informacin de la memoria apuntada por el registro ndice, en pgina cero, ala localidad de memoria, en pgina cero. Al final se incrementa la posicin del ndice.Por ejemplo:

    MOVER IX+ , 0x0002 ;almacene el contenido del registro apuntado por el;ndice IX en la localidad 0x0002, y despus;incremente el puntero IX (ver Figura 3.16).

    Figura 3.16. Direccionamiento indexado con postincremento a directo.

    De directo a indexado con postincrementoSe copia informacin de la localidad de memoria, en pgina cero, a la localidad dememoria apuntada por el ndice. Finalmente, se incrementa el ndice. Por ejemplo:

    MOVER 0x0034 , IX+ ;almacene el contenido de la celda 0x0034 en la;localidad de memoria apuntada por el ndice IX y

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    46/494

    ;luego incremente el puntero (ver Figura 3.17)

    Figura 3.17. Direccionamiento directo a indexado con postincremento.

    Direccionamiento Inherente o implcitoEste tipo de direccionamiento no especifica operandos en la instruccin, porqueinherente a la instruccin va el operando o la accin concreta a ejecutar. Por ejemplo:

    INCREMENTAR EL ACUMULADOR ;incrementa el acumulador de la;mquina

    NOP ;no opere

    3.2. LENGUAJEASSEMBLER

    El assemblero mal llamado ensamblador es el lenguaje ms cercano al ncleo de cadamquina, si se descarta el lenguaje de mquina como un mtodo simple y directo deprogramar la tareas que sta debe ejecutar.

    El ensamblador est desarrollado en mnemnicos que tienen una interpretacin directa enel cdigo de mquina de la CPU y que lo que convierte en el lenguaje ms rpido yeficiente, para aquellas aplicaciones en donde es necesario optimizar al mximo losrecursos de la mquina (memoria, velocidad ,consumo, etc).

    Cada ncleo de mquina tiene un assembler particular y se puede decir que nico. En estesentido el assembler es un lenguaje de poca preferencia por el programador, pero quetarde o temprano tendr que aprender si de optimizacin de cdigo se trata. De hecho, eneste texto se hace una especial recomendacin en su uso y mezcla con el lenguaje C/C++.

    Por lo general las mquinas con arquitectura Von Newman, bajo un concepto CISC, traenun amplio juego de instrucciones en assembler. Estas instrucciones toman varios ciclosde mquina en ejecutarse, pero pueden realizar operaciones medianamente complejas.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    47/494

    Las mquinas con arquitectura Harvard, bajo un concepto RISC, traen un juego reducidode instrucciones en assembler. Por lo general toman un ciclo de mquina en ejecutarse yrealizan operaciones simples.

    El formato genrico para introducir una instruccin en assembleres:

    ETIQUETA INSTRUCCIN DESTINO,FUENTE ;COMENTARIO

    En donde:

    ETIQUETA: referencia o direccin donde se encuentra esa lnea de instruccinrespecto de la memoria de cdigo. Este campo slo aparece si es necesario hacerreferencia a un nombre para identificar el lugar.

    INSTRUCCIN:comando en lenguaje ensamblador, tambin llamado cdigo deoperacin.

    DESTINO: Lugar de memoria o dispositivo E/S a donde ser aplicado eldireccionamiento o destino de la informacin. FUENTE:Lugar de memoria o dispositivo E/S de donde se toma la informacin. COMENTARIO:explicacin corta de lo que se hace en la lnea de programa.

    3.3. TIPOS DE INSTRUCCIONESLa relacin entre los modos de direccionamiento y los tipos de instrucciones es demultiplicidad, es decir, existen muchos modos de direccionamiento que se acomodan a untipo de instruccin, y muchos tipos de instrucciones que se acomodan a un tipo dedireccionamiento.

    Dependiendo de la arquitectura de la mquina, el juego de instrucciones puede ser muyamplio, moderado o justo. Existen mquinas cuyo juego de instrucciones supera las 300,otras son menores a 200 y existen mquinas con un juego de instrucciones menor a 40.

    Existe un formato binario para representar las instrucciones llamado, cdigo de operacin(opcode). El formato puede estar formado desde 1 hasta 6 bytes, dependiendo de lacomplejidad de la operacin que realiza la instruccin.

    A continuacin se definen los tipos ms comunes de instrucciones y que estn orientadashacia una mquina genrica.

    NOTA: El DESTINO y la FUENTE pueden aparecer en diferente posicin,dependiendo de la mquina a trabajar o podran no aparecer, dependiendo deltipo de instruccin.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    48/494

    Instrucciones de movimiento de datosLas instrucciones de movimiento de datos, llevan y traen datos desde o hacia la memoria,registros o dispositivos E/S. Las instrucciones de movimiento de datos se usan paraintercambiar, copiar y mover datos escalares con un ancho de 8, 16, 32 y hasta 64 bits;as como arreglos vectoriales, matriciales y cadenas de caracteres. Dentro de este grupo

    se podran destacar:

    o Instrucciones de movimiento de datos: Estas instrucciones copian datos desdeuna fuente hacia un destino. Dependiendo del modo de direccionamientoaplicado, el dato estar en un lugar especfico o podr ser una constante.

    o Instrucciones de movimientos con la pila: Este tipo de instrucciones sirven paraingresar o extraer datos hacia o desde la pila. Son instrucciones muy rpidas porestar asociadas al mecanismo de la pila y el puntero a pila. Son ampliamenteusadas en los llamados a funciones o atenciones a eventos de interrupcin.

    o Instrucciones de intercambio de datos y movimiento de bloques: Intercambianlos contenidos de registros o memoria de una mquina de manera individual ogrupal. Son ampliamente utilizadas en la transferencia de bloques de informacin.

    Instrucciones aritmticas y lgicasSi algo sabe hacer bien un procesador es sumar. Sumando, desplazando ycomplementando se obtienen las dems operaciones aritmticas en una mquina.Mquinas ms poderosas contienen unidades como las unidades multiplicadoras y deacumulacin (MAC) y unidades de operacin en punto flotante (FPU).

    Las principales operaciones aritmticas son la suma, resta, multiplicacin, divisin yalgunas adicionales como la comparacin, negacin, el incremento y el decremento.A continuacin se describen brevemente las operaciones aritmticas ms comunes.

    o La suma: Existen dos maneras de sumar en un microprocesador, a saber:- Suma sin acarreo:Para este tipo de suma no se tiene en cuenta un posible

    acarreo de entrada. Las cantidades son sumadas bit a bit y el resultado seguarda en el registro que se especifique, siendo el ms usual el acumulador dela CPU. Si el resultado sobrepasa la capacidad de almacenamiento del registrodestino, se genera un acarreo que se guarda en la respectiva bandera.

    MOVER 0x100F , R0 ;almacene en el registro R0 la cantidad 0x100FSUMAR 0xFD03 , R0 ;adicione a R0 la cantidad 0xFD03 y el resultado;almacnelo en R0

    El resultado de esta operacin, asumiendo a R0 como un registro de capacidaden 16 bits ser:

    R0 = 0D12H y la bandera de acarreo C = 1

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    49/494

    - Suma con acarreo: Para este tipo de suma se tiene en cuenta un posible

    acarreo de entrada. La instruccin es bastante til para sumas con mquinascuya capacidad operativa excede el ancho de su palabra de dato, de tal maneraque tendran que partir la suma en sumas parciales. Por ejemplo:

    Para una mquina de 8 bits de dato, hacer la suma de las cantidades 4D28H(operando 1) y 7FF3H (operando 2) no se podra hacer directamente. Entonceses necesario partir la operacin en dos partes. En la primera parte se sumaranlos bytes de menor peso de cada operando (28H + F3H), esta suma se haradel tipo sin acarreo, porque no es necesario asumir un acarreo de entrada. Lasegunda parte sera hacer una suma con acarreo de los bytes altos de losoperandos (4DH + 7FH), de esta manera se tendra en cuenta un posibleacarreo arrojado por la primera suma para llevarlo a la siguiente suma. Unprograma en assembler para una mquina genrica sera:

    MOVER 0x28 ,R0 ;cargue el registro R0 con la parte;baja del operando 1SUME 0xF3 , R0 ;sume sin acarreo la parte baja del

    ;operando 2 al registro R0 y guarde;resultado en R0

    MOVER R0 , (0x0041) ;almacene el resultado bajo de la;operacin en la celda 0x0041

    MOVER 0x4D , R0 ;cargue el registro R0 con la parte;alta del operando 1

    SUME CON ACARREO 0x7F , R0 ;adicione con acarreo la parte alta del;operando 2

    MOVER R0 , (0x0040 , R0 ;almacene resultado alto de la;operacin en la celda 0x0040

    Con la operacin de suma sin acarreo:

    Con la operacin de suma con acarreo:

    De tal manera que el resultado final es igual a: CD1BH.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    50/494

    o El incremento: Incrementar es sumar uno a la cantidad, sea un registro o una

    localidad de memoria.

    o

    La resta: Al igual que la suma, en la resta tambin se tienen las dos operaciones,con y sin acarreo.

    - Resta sin acarreo: El resultado de esta resta es almacenado en el registrodestino, que generalmente es el acumulador de la CPU. Si la operacin causaun sobreflujo, esto afectar las banderas de acarreo, sobreflujo, signo yprobablemente acarreo intermedio. Por ejemplo:

    Si se resta, en una mquina de 8 bits, de 1F3DH la cantidad 2470H, elresultado de restar la cantidad 70H de la cantidad 3DH arroja como resultadola cantidad CDH, y C = 1 (acarreo que no se tendra en cuenta para la

    siguiente operacin, de hacerse con resta sin acarreo). Seguidamente, al restarde 1FH la cantidad 24H el resultado es FBH. Finalmente el resultado de laoperacin debi haber sido FACDH y no FBCDH, por la razn de no habersetenido en cuenta el acarreo producido en la primera resta parcial, todo estodebido al empleo de la operacin de resta sin acarreo.

    - Resta con acarreo:A diferencia de la resta sin acarreo, para esta operacin setiene en cuenta el acarreo generado anteriormente. El resultado de laoperacin anterior dara como resultado FACDH, y C = 1, el cual concuerdacon el resultado verdadero.

    La operacin anterior causa, tambin, que banderas como la de signo ysobreflujo se activen.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    51/494

    o El decremento: Decrementar es restar uno a la cantidad, sea un registro o unalocalidad de memoria.

    o La multiplicacin: Hacer una multiplicacin en un procesador de 8 bits, de las

    dcadas de los 70 y 80 significaba un gran gasto de operaciones de suma, resta ydesplazamiento en forma iterativa. Con consumos de cientos de ciclos demquina. En la actualidad las mquinas pueden hacer una multiplicacin en 4ciclos de mquina o menos, con instrucciones especficas para tal propsito.

    o La divisin: Como la multiplicacin, una divisin en un procesador de 8 bits, delas dcadas de los 70 y 80 significaba un gran gasto de operaciones de suma, restay desplazamientoen forma iterativa.

    Normalmente, en los procesadores actuales no est implementada una divisininmediata por problemas que se comentarn a continuacin. Por lo general el

    dividendo duplica en capacidad al divisor, por ejemplo de 16 en 8 64 en 32,tampoco hay un comportamiento predecible de las banderas y adicionalmenteexiste el peligro de dividir por cero.

    El desbordamiento que se produce en una divisin, tambin genera resultadosconflictivos, por ejemplo, si en una mquina con acumulador de 8 bits se va adividir la cantidad 0x4567 entre el nmero 5, el cociente de dicha divisin no sepuede almacenar en el acumulador de la CPU, porque provocara undesbordamiento.

    Debido a tanto inconveniente en la implementacin de la divisin, se deja a

    control del programador hacer ms manejables los algoritmos de divisin para elusuario final de la aplicacin.

    o Operaciones en BCD (Binary Coded Decimal): La aplicacin prctica de operarcon nmeros BCD, es poder representar cantidades decimales como agrupacionesde 4 bits, haciendo referencia a las unidades, decenas, centenas, miles,.., etc., ascomo las partes fraccionarias en dcimas, centsimas, etc.

    Otra ventaja radica en la visualizacin de cantidades en dispositivos llamadosdisplayde siete segmentos (ver Figura 3.18), de tal manera que la presentacin deresultados binarios, mediante nmeros BCD, sera directa.

    La operacin ms popular para el tratamiento de cantidades BCD es la deAJUSTE DECIMAL, la cual es aplicada una vez se haya realizado la operacinaritmtica sobre la cantidad BCD. Por ejemplo:

    Si al nmero BCD 95 (10010101) se le va a sumar el nmero BCD 27(00100111), el resultado nos arroja el nmero BCD 122 (000100100010), para

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    52/494

    que esto sea posible en un procesador, es necesario hacer el ajuste decimal. Esteajuste se hace de acuerdo a la Tabla 3.1 que se detalla a continuacin:

    Figura 3.18. Aplicacin operaciones BCD.

    Tabla 3.1. Ajuste BCD segn operacin.Operacin

    anterior

    Estado

    Bandera C

    Valor de

    Bits 4 - 7

    Estado

    bandera H

    Valor

    Bits 0 - 3

    Nmero

    a sumar

    Estado Final

    del C

    SUMA 0

    0

    0

    0

    0

    0

    1

    1

    1

    0 9

    0 8

    0 9

    A F

    9 F

    A F

    0 2

    0 2

    0 3

    0

    0

    1

    0

    0

    1

    0

    0

    1

    0 9

    A F

    0 3

    0 9

    A F

    0 3

    0 9

    A F

    0 3

    00

    06

    06

    60

    66

    66

    60

    66

    66

    0

    0

    0

    1

    1

    1

    1

    1

    1

    RESTA 0

    0

    1

    1

    0 9

    0 8

    7 F

    6 - F

    0

    1

    0

    1

    0 9

    6 F

    0 9

    6 - F

    00

    FA

    A0

    9A

    0

    0

    1

    1

    Entonces para la operacin anterior:

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    53/494

    Operaciones lgicas: Las operaciones lgicas se ejecutan bit a bit, proporcionando

    control de datos a bajo nivel, estas operaciones modifican las banderas de la CPU.Las operaciones lgicas ms importantes son:

    o AND:Es el producto lgico, bit a bit, sobre dos cantidades, la operacin es muyutilizada para chequeo de bits contra una mscara o dato de chequeo.

    o OR inclusiva:Esta operacin realiza la suma inclusiva de dos cantidades, al igualque la operacin AND, tambin es muy utilizada con una mscara o dato de

    chequeo.

    o OR Exclusiva (XOR):Hace la suma exclusiva, bit a bit, de dos cantidades. LaOREX sirve como funcin comparadora de cantidades. Si se hace la XOR de unregistro sobre el mismo sera equivalente a borrar su contenido.

    o Negacin NOT: La operacin de inversin lgica es la NOT y realiza elcomplemento a 1 de una cantidad.

    o Negacin NEG: La operacin de inversin aritmtica es NEG y realiza elcomplemento a dos de una cantidad. Recordar que el complemento a dos es la

    NOT de la cantidad ms 1.

    Instrucciones de salto sin condicinEstas instrucciones permiten que el curso normal del programa ramifique hacia otradireccin, en donde se continuar el proceso, sin evaluar ningn tipo de condicin.

    Instrucciones de llamados a subrutinasSon el equivalente en C/C++ a los llamados a funciones, y trasladan el flujo deprograma a una direccin especial donde se encuentra un procedimiento compacto,que atiende la necesidad del proceso. Estos procedimientos son reutilizables y no esnecesario volverlos a digitar cada vez que se necesitan, de esta manera ahorranespacio de memoria.

    El nico inconveniente para llamar subrutinas, es que a la mquina le toma un tiempoejecutar el llamado y retornar de ste. El puntero de pila juega un papel importanteante un llamado a subrutina.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    54/494

    Es en la pila donde se guarda la direccin de retorno del programa despus de haberseatendido el proceso de la subrutina, para de esta manera devolver el flujo normal delprograma en ejecucin.

    Para retornar de una subrutina, existe una instruccin especial que le indica a la

    mquina que deber seguir con el flujo normal del programa. La Figura 3.19 muestracomo se mueve la pila, el puntero a la pila y el contador de programa ante el llamadode una subrutina.

    Figura 3.19. Movimiento del SP y el PC ante instruccin de llamado a subrutina.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    55/494

    Instrucciones de control de bajo consumo

    Este tipo de instrucciones llevan a la mquina a un estado de no operacin ohibernacin. La importancia de estos estados est en poner a la mquina a consumir lamenor cantidad de energa de la fuente de alimentacin. La aplicacin ms directa es

    para los sistemas que se encuentran soportados por bateras.

    En la mayora de dispositivos inteligentes, como celulares, calculadoras,computadoras de bolsillo, relojes, etc, la batera juega un papel importante y mientrasms dure mejor para el usuario final.

    Es por lo anterior que las mquinas deben de estar dotadas de instrucciones paraentrar en modos de bajo consumo.

    Instrucciones para manipulacin de bit

    Se utilizan para poner en 1, 0 o chequear el estado de un bit en particular. Lasinstrucciones de manipulacin de bits ayudan al procesador a establecer eventos debits, como las banderas generadas y manipuladas por el programador. Tambin sonusadas para el encendido, apagado y el chequeo del estado seales, de dispositivos deentrada y salida.

    Instrucciones de rote y desplazamientoUn simple algoritmo de multiplicacin podra implementarse haciendo que los bits deun registro roten hacia la derecha (ver Figura 3.20) y conociendo cuantas veces es elnmero a dividir mltiplo de 2. Finalmente, si el nmero no es un mltiplo de 2, se

    haran ajustes con sumas sucesivas. Un algoritmo para la divisin se hara de formasimilar, pero rotando hacia la derecha (ver Figura 3.21) y ajustando con restassucesivas.

    Figura 3.20. Multiplicacin por rote de bits.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    56/494

    Figura 3.21. Divisin por rote de bits.

    En las comunicaciones seriales es necesario transmitir y recibir bit a bit lainformacin contenida en un dato. Es por esto que ste tipo de instrucciones se hacende gran utilidad y mediante un pequeo algoritmo se implementaran los UART(Universal Asynchronous Receiver Transmitter), tan necesarios en lascomunicaciones seriales.

    Es importante anotar que la bandera de acarreo juega un papel importante en este tipode instrucciones, dando informacin sobre el desbordamiento de las cantidades o si esdel caso el valor del bit en cuestin. Algunas de las instrucciones ms importantes deste gnero son:

    Instrucciones de desplazamientoEstas a su vez se dividen en desplazamientos lgicos y aritmticos. Losdesplazamientos lgicos no tienen en cuenta el signo de la operacin, generalmentecuando se desplaza un nmero a izquierda o derecha, se inserta un cero por el bitextremo al desplazamiento (ver Figura 3.22).

    Figura 3.22. Desplazamiento a la izquierda.

    Los desplazamientos aritmticos tienen en cuenta el signo de la cantidad (ver Figura3.23), dejando ste como pivotey desplazando el resto de bits.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    57/494

    Figura 3.23. Desplazamiento signado.

    Instrucciones de roteAl igual que las de desplazamiento, las instrucciones de rote desplazan bits deizquierda a derecha y viceversa. Los rotes, a diferencia de los desplazamientos,realimentan los bits desplazados en forma circular, y en la mayora de los casos seutiliza el bit de acarreo como parte del rote. En la figura 3.24 se ilustra unmecanismo de rote.

    Figura 3.24 Rote a la derecha

    Hay casos de rotes para nibbles y bytes llamados SWAP, los cuales consisten enintercambiar los nibbles (bytes) inferior y superior de un registro (ver Figura 3.25).

    Figura 3.25. Intercambio denibbles.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    58/494

    3.4. DIRECTIVAS Y/O PSEUDO-INSTRUCCIONES

    Las directivas son instrucciones propias del ensamblador o compilador de unamquina. Estas pseudo instrucciones ayudan a controlar el proceso de ensamblado yla forma como un operando va a ser interpretado. Tambin sirven al programador

    para hacer ms fcil el entendimiento de las variables, direcciones y constantes queintervienen en un programa hecho en lenguaje de bajo y mediano nivel.

    Las mquinas no entienden las directivas, porque no forman parte del juego deinstrucciones que ste ejecuta. Las directivas se ejecutan en tiempo de compilacin oensamble.

    Las directivas ms comunes y tiles son:

    Directivas de definicin de datos: Este tipo de instrucciones se emplean para ubicardatos en secuencia y asignarles un tipo numrico. Las ms representativas en su

    gnero son:o DB (Define Byte): Define un dato tipo byte o una secuencia de bytes en la

    memoria, generalmente memoria de cdigo. Por ejemplo:

    DB 23,PEPE,$FF,00,C ;todas estas cantidades son definidas como;tipo byte.

    o DW (Define Word):igual que DB pero para datos como palabras. Por ejemplo:

    DW $F43D,1234,PEPA,OK

    o

    DD/DL (Define Double/Define Long):Igual que DB pero para una cantidad tipolong. Por ejemplo:

    DD LONG,00FF34DDH,HOLA

    Directivas de direccin inicial de programa: Establecen la direccin a partir de lacual el ensamblador establecer una serie de instrucciones o datos. Por ejemplo:

    o ORG (origen) / END (fin):La directiva ORG establece el origen a partir del cualse ubicar un proceso o cdigo de programa y la directiva END marcar el finaldel proceso de ensamble, por ejemplo:

    MAIN ORG 0x8000MOVER R0,R1ADICIONAR #34,R0 .. ..

    ENDMAIN END

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    59/494

    En ste cdigo, las instrucciones sern ubicadas y ensambladas a partir de ladireccin 0x8000. Es necesario entender que la etiqueta MAIN es equivalente a ladireccin 0x8000.

    o SEGMENT (segmento) / ENDS (fin de segmento): asigna un segmento de

    memoria y determina a donde se cierra el segmento. Por ejemplo:SEGDATOS SEGMENTDATOS8 DB $34,$66,$FEen ,$55DATOS16 DB $FF3D,ab,6784FINSEG ENDS

    Para ste ejemplo las etiquetas SEGDATOS, DATOS8, DATOS16 y FINSEG,determinan un lugar en la memoria a partir de la ubicacin del segmento a dondese almacenarn una serie de datos.

    Directiva de asignacin (EQU): La directiva EQU se utiliza para asignar a unnombre o etiqueta un valor numrico, su utilidad radica en que es mucho ms fcilhacer referencia a un nombre que a una cantidad numrica. Por ejemplo:

    MOTOR EQU 1 ;MOTOR es el bit 1 de un puerto de salidasPULSADOR EQU 2 ;PULSADOR corresponde al bit 2 de un

    ;puerto de entrada.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    60/494

    3.5. REFERENCIAS

    Mnera, Diego. Introduccin A los Microprocesadores. Ed. Universidad PontificiaBolivariana. Medelln, 2005.

    3.6. PREGUNTAS

    Qu es una direccin efectiva (DE)? Asumiendo un formto de instruccin INSTRUCCIN FUENTE , DESTINO, Qu

    tipo de direccionamiento hay en cada lnea?:o ADICIONAR #0x3FD , R3 ;R3 es un registro de la mquinao MOVER R2 , R6 ;R2 y R6 son registros de la mquinao INC (IY) ;IY es un registro ndice de la

    ;mquinao SALTAR TEXTO

    o

    SALTAR SI CERO LOOPo MOVER R3 , (IX + 0x67FD) ;R3 es un registro de la mquinao MOVER R1 , (R2 + 4*IY) ;R1, R2 e IY son registros de la

    ;mquinao PARAR

    Asumiendo un formto de instruccin INSTRUCCIN FUENTE , DESTINO,

    describir qu tipo de error hay en cada lnea?o MOVER IX , #0xFF3C ;IX es un registro de la mquinao INC (IY) ;incrementar la direccin del punteroo ADD #2 , R4 ;adicionar 2 al contenido de la celda

    ;apuntada por R4

    Enuncie cuatro tipos de instrucciones que puede ejecutar un procesador.

    Qu es una directiva?

    Puede un microcontrolador ejecutar una directiva? Justifique su respuesta.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    61/494

    CAPTULO 4

    Elementos y Herramientas Bsicas de

    Desarrollo4.1. Consideraciones de diseo con microcontroladores4.2. La codificacin4.3. El ensamble o compilacin4.4. La depuracin4.5. Herramientas de desarrollo disponibles en el mercado4.6. Otros aspectos a tener en cuenta en el diseo con microcontroladores4.7. Referencias4.8. Preguntas

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    62/494

    4.1. CONSIDERACIONES DE DISEO CON MICROCONTROLADORES

    La base de un buen producto es la concepcin inicial que de l se tenga, antes de hacerlomaterial.

    El mantenimiento, actualizacin y diseo de programas (software) en las industrias, es unproceso demorado y que consume una gran cantidad de recursos. Entre stos, uno de losms representativos es la mano de obra del ingeniero de desarrollo.

    Un programador sin mtodo y disciplina, genera productos difciles de actualizar ymantener. Muchas veces las empresas prefieren comenzar desde cero, antes de retomar eldiseo dejado por un programador de este estilo. Es por esto que en este texto se planteauna metodologa, sencilla pero eficaz, para hacer desarrollos con microcontroladores;tratando en lo posible que los desarrollos se hagan teniendo en cuenta el mantenimiento ylas actualizaciones de los programas a futuro.

    Los circuitos (hardware) debern estar diseados bajo norma e implementados concomponentes de buena calidad. La secuencia de consideraciones recomendadas paraenfrentar un diseo se plantean a continuacin y estn orientadas a la programacin enlenguajeASSEMBLER.

    Entendimiento del problemaPor lo general un cliente no expresa bien, en los trminos que un tcnico o ingenieroquisiera or, las especificaciones del producto que necesita. Sea por que faltainformacin o porque no comprende la magnitud del diseo en s.

    El diseador no slo debe entender la necesidad que se le plantea, sino tambin tratarde completar o ajustar los requerimientos del cliente.

    Entender y acotar el problema que se plantea es fundamental para garantizar el buentrmino del proyecto a realizar y de esta manera evitar los costosos reprocesos.

    Requerimientos de entrada y salida involucradas en el sistema Consiste en hacer una lista del tipo de variables de entrada y salida que sonnecesarias en el diseo, como se muestra en la Tabla 4.1.

    En esta lista deben figurar caractersticas mnimas, como: NOMBRE asignado a lavariable en el proceso, TIPOde variable, el pin o los PINESque ocupa, el RANGOy la MAGNITUDen la que est contenida la variable y una breve DESCRIPCINde la variable.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    63/494

    Tabla 4.1. Tipos de variable.NOMBRE TIPO PINES RANGO

    MAGNITUDDESCRIPCIN

    PULSADOR Digital - Out Bit 0 puerto A 0 5 VCDPulsador de inicio de

    secuencia

    TEMPERATURA Anloga - In Bit 2 puerto B 0 4.35 VMedida de la

    temperatura del hornoBUS DATOSDISPLAY

    Digital - Out Bit 0 a bit 7 puerto C 0 5 VCDBus de datos del

    display LCD

    E Digital - Out Bit 0 puerto E 0 5 VCDSeal de habilitacin

    del LCD

    RS Bit 1 puerto E 0 5 VCDSeal de Control/dato

    del LCD

    Sistemas de alimentacin de los circuitosDiseo de las fuentes de alimentacin y filtros, considerando la disipacin de losdispositivos de mayor consumo y sistemas de refrigeracin.

    El diseador debe tratar de estandarizar en las diferentes fuentes de alimentacin, encuanto a las tensiones de los sistemas electrnicos, los tipos de conectores, laadecuada puesta a tierra de los sistemas elctricos, el apantallamiento de las seales,la separacin elctrica de las diferentes fuentes de alimentacin y la codificacin delcableado.

    El diseador debe considerar el clculo y la instalacin de sistemas de disipacin yrefrigeracin en las fuentes de alimentacin.

    Consideraciones de ruido por EMI (Electro Magnetic Interference)Todo equipo electrnico, y particularmente los equipos que manipulan seales deradio frecuencia, conmutacin electrnica, entre otras, sufren el inevitable mal deruido por interferencia electromagntica.

    Las interferencias pueden ser tan leves como un simple ruido de crispeteo en unaseal de audio o tan catastrficas como la pertubacin de todo un sistema de vuelo enuna aeronave y una desafortunada colisin.

    La seal de 60Hz (50Hz) de la red de alimentacin es el factor ms comn, queperturba los sistemas electrnicos. Hoy en da los 220Hz, generados por la

    conmutacin de la fuente de los sistemas celulares, se constituyen en una de las altasfuentes contaminantes para los circuitos electrnicos.

    En los ambientes industriales se tendrn fuentes adicionales de ruido, como el ruidopor la conmutacin en dispositivos de potencia (tiristores), Armnicas producidas porlos motores y transformadores en las plantas productivas. Todas estas involucranseales fuertes para frecuencias de decenas de KHz.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    64/494

    Las conmutaciones digitales producen ruido de alta frecuencia del orden de MHz, quepodran perturbar a otros sistemas. Las etapas de RF de sistemas de radio, audio ytelevisin, son otros agentes altamente contaminantes y contaminados.

    Para minimizar el efecto de estas fuentes de ruido, se recomienda el clculo y la

    instalacin de:o Inductores de choque (ferritas), a la entrada de las lneas de potencia de los

    circuitos electrnicos.o Las tierras.o Blindaje y/o apantallamiento de los circuitos, usando recintos, cables y mallas

    especiales.o Filtros para desacople y bypass.o Filtros, para las diferentes etapas de circuitos del sistema.o Adecuados cirfcuitos impresos (PCB).

    Conocimiento de las variables a manipularEste es un factor determinante para la seguridad que brinda un sistema al usuario. Lasvariables ms importantes a considerar en un diseo son:

    o Variables vitales: Cuando se desarrollan aplicaciones orientadas a sustentar,compensar, monitorear o reemplazar rganos de los seres vivos, transporte de losmismos, mecanismos para la diversin, mquinas de produccin, herramientas ycualquier otro dispositivo que entre en contacto con seres humanos y animales, esnecesario poner especial cuidado en la seguridad que el sistema debe brindar astos.

    El diseador deber tener a la mano las normas locales o internacionales sobre lasmagnitudes elctricas peligrosas, que atenten contra la integridad de los seresvivos. Deber inclur en el diseo, las restricciones y los anuncios de seguridadpara quienes manipulan los circuitos.

    Cantidad de memoria de cdigo y datos, necesarios para el buen funcionamientodel sistema y su crecimiento a futuro. Los sistemas que manipulan variablesvitales deben tener alto grado de redundancia en sus sistemas inteligentes,actuadores y sensores, as como el soporte de batera o backup energtico.

    Tambin se debe dejar la posibilidad de la operacin manual del sistema,considerando que el automatismo puede fallar en cualquier momento.

    o Variables de valor:En aplicaciones que comprometen objetos valiosos como eldinero, los medios de pago virtuales, seguridad de locales e industrias ycualquiera otra manifestacin del trmino valor.

  • 5/20/2018 Microcontroladores de 32 Bits Freescale 51JM128

    65/494

    o Variables ambientales: Todo lo relacionado con la contaminacin del planeta,preservacin de recursos naturales, etc.

    Diagramas y algoritmos

    Los diagramas son importantes porque universalizan la programacin y sirven comoherramienta para representar en forma grfica el desarrollo de un algoritmo. Cuandolos sistemas presentan un mediano o alto grado de complejidad, es altamenterecomendado hacer un diagrama con el fin de agilizar el


Recommended