Microprocesadores. Guía 1 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Laboratorio de Microprocesadores (Edificio 3, 2a planta). Uso de la herramienta de desarrollo y los modos de direccionamiento del HC12. Objetivos generales • • Aplicar de forma efectiva las diferentes capacidades del programa CodeWarrior. Utilizar de forma efectiva los diferentes modos de direccionamiento que posee el HC12. Objetivos específicos • • • • • Identificar los diferentes elementos que posee un código fuente escrito en lenguaje ensamblador. Crear aplicaciones simples utilizando las facilidades que ofrece el IDE que posee el programa CodeWarrior. Ejecutar una aplicación simple desarrollada en el IDE del CodeWarrior. Realizar de forma efectiva los procesos de depuración y simulación de una aplicación desarrollada en el IDE del CodeWarrior. Aplicar la sintaxis adecuada al utilizar los diferentes modos de direccionamiento que posee un microprocesador. Introducción teórica Uso de la herramienta de desarrollo CodeWarrior. CodeWarrior es un Ambiente Integrado de Desarrollo (IDE) que permite utilizar los diferentes productos que ofrece la compañía Freescale, entre ellos los microcontroladores de la familia HC12. Cuando se trabaja con microcontroladores es importante contar con herramientas que faciliten procesos tales como: la generación del código, el mecanismo para programar la memoria del dispositivo y la capacidad de poder verificar la correcta operación del código (depuración). CodeWarrior las posee aparte de la capacidad compilar los programas tanto en lenguaje ensamblador como en lenguaje C; adicionalmente brinda recursos de simulación, emulación y diferentes librerías para interactuar con dispositivos concretos como pantallas LCD, memorias, etc. Microprocesadores. Guía 1 2 Materiales y equipo • • Computadora con Windows 98 o superior con el software CodeWarrior IDE. Tabla (set) de instrucciones del microcontrolador HC12. Procedimiento PARTE I: Creación de código en CodeWarrior IDE. Para crear un nuevo código en CodeWarrior se debe proceder de la siguiente manera: 1. Ejecute el programa dando doble clic en el icono del escritorio. 2. Seleccione el botón <Crear New Proyect> para inicializar el asistente que le ayudará a crear el nuevo código. 3. En la página de bienvenida presione el botón <Siguiente> . 4. En la siguiente ventana seleccione el núcleo con que desea trabajar (el asistente le mostrará una buena lista con opciones), esta acción hará que se incluya en su código el archivo de encabezado adecuado, en este caso particular selecciones la opción <MC9S12XDT512>. 5. A continuación se le consulta si desea emular multinúcleos (opción XGATE), para el caso seleccione la opción <Single Core (HCS12X)>. 6. Luego se consulta sobre el lenguaje de programación que se empleará (la herramienta soporta aparte del ensamblador el lenguaje C), seleccione <Assembly>. 7. También se le consultará si el programa se colocará en memoria de forma absoluta o relativa. La primera opción implica conocimiento de la arquitectura donde se ejecutará el código, seleccione la opción <Absolute Assembly>. 8. El último paso del asistente implica seleccionar la arquitectura donde se ejecutará el código, pensando en el proceso de depuración, estas pueden ser simuladores o tarjetas de desarrollo. Para este caso seleccione <Full Chip Simulation>. 9. Una vez en este punto el IDE generará un árbol para describir el proyecto completo, como se muestra en la Figura 1. 10. Este árbol contiene el archivo main.asm, que usará como plantilla de trabajo para crear su propio código así como todos los elementos y archivos necesarios para realizar la posterior simulación. NOTA: Es muy importante tener en cuenta que la plantilla contiene muchos elementos propios para desarrollar el código por lo que es fundamental sólo modificar el texto concreto que se necesita editar y dejar lo demás tal como está. Microprocesadores. Guía 1 1 Fig. 1. Arbol del proyecto completo. 11. En el archivo main.asm ubique la sección en que se declaran los datos con los que trabajará el programa, esta contiene el siguiente texto: ORG RAMStart ; Insert here your data definition Counter DS.B 1 FiboRes DS.B 1 12. Sustituya los datos declarados por los siguientes: DatoByte1 DS.B 1 ;Declara y reserva 1 byte en la memoria RAM DatoWord1 DS.W 1 ;Declara y reserva 2 bytes en la memoria RAM Array1DS.B 5 ;Declara y reserva 5 bytes en la memoria RAM 13. En el mismo archivo ubique la sección en que se escribe el código a ejecutar. Esta inicia con las siguientes líneas: ; code section ORG ROMStart 14. Ubique las siguientes 2 líneas que delimitan la sección de código (estas dos líneas no son consecutivas): mainLoop: RTS LDX #1 ;resul in D ;X countains counter 4 Microprocesadores. Guía 1 15. Sustituya el bloque delimitado por las líneas anteriores (las dos incluidas) con el siguiente código: Etiqueta1: ; Ejemplo de direccionamiento inmediato LDAA #%01010101 ;Carga en el registro A el dato binario 01010101 (85 decimal) LDAB #'A' ;Carga en el registro B el dato ASCII 'A' (65 decimal) LDX #$2000 ;Carga en X (16 bits) el dato 2000 hexa (8192 decimal) ;Este valor es la dirección donde inicia el arreglo declarado ANDA #15 ;Realiza la operación AND con el registro A y el dato 15 Dec. ; Ejemplo de direccionamiento extendido STAB DatoByte1 ;Almacena el contenido de B en el dato DatoByte1 (dirección) STX DatoWord1 ,Almacena el contenido de X (16 bits) en el dato DatoWord1 ADDA DatoByte1 ;Suma el registro A con el de DatoByte1, salva resultado en A LDY DatoWord1 ;Guarda el valor de DatoWord1 en el registro Y ; Ejemplo de direccionamiento indexado STAA 0,Y ;Guarda el contenido de A en la dirección a la que apunta el registro Y STAB 1,X ;Guarda el contenido de B en la dirección efectiva formada por la ;suma del contenidos de Y más uno equivalente a $WWWW STX 2,Y ;Guarda el contenido de X en la dirección efectiva formada por la ;suma del contenidos de Y más dos equivalente a $WWWW (la parte ;alta) y en la siguiente la parte baja. ; Ejemplo de direccionamiento inherente: ABA ;Suma el contenido de A más el de B y almacena el resultado en A INCA ;Incrementa en uno el registro A DECB ;Decrementa en uno el registro B CLRA ;Borra el registro A CLC ;Borra la bandera de acarreo ; Ejemplo de direccionamiento relativo: BRA Etiqueta1 ;Salto incondicional a la etiqueta (similar a GOTO). PARTE II: Compilación, depuración y simulación 16. Compile el código fuente, para lograrlo despliegue, en la barra de menú, la opción “Project” y seleccionar “Make”, otra opción es presionar la tecla <F7>. Microprocesadores. Guía 1 1 17. Luego de la compilación (si no se detectan errores) proceda a depurar el código. En la opción “Project” seleccione ahora “Debug”, o presione <F5>. 18. Se abrirá el entorno de simulación con múltiples ventanas que le facilitarán la depuración del código, entre ellas se encuentran: la Ventana Sources, Ventana Data, Ventana Command, Ventana Assembly, Ventana Register y Ventana Memory. 19. Para facilitar el trabajo se tienen algunos botones muy útiles, que se describen en la Figura 2. 20. Reinicie el programa presionando el botón de Reset. 21. Ejecute el programa paso a paso analizando la ejecución de cada una de las instrucciones si hay algo que no comprende por favor consulte con su instructor de laboratorio. 22. Muestre a su instructor de laboratorio que ha concluido esta parte de la práctica. Reset (Ctrl+R): Efectúa un Reset del programa y ubica el puntero en el inicio del programa. Start (F5): Ejecuta el programa completo desde la linea que apunta el contador de programa hasta encontrar un breakpoint. Single step (F11): Ejecuta una sola instrucción o linea ejecutable, se detiene dentro de subrutinas. Halt (F6): Detiene la ejecución del código, este botón se activa solo mientras se está ejecutando el programa. Fig. 2. Botones del entorno de simulación. PARTE III: Ejercicios Modifique el código fuente para se sumen dos datos (de 8 bits cada uno) almacenados en Dato1 y Dato2. El resultado se debe guardar en el dato llamado Respuesta, el cual debe tener un tamaño adecuado. PARTE IV: Desafío corto. Modifique el código para sumar tres números de 8 bits, cada uno almacenados en memoria. El resultado se debe guardar en el dato llamado Respuesta, el cual debe tener un tamaño adecuado. Bibliografía • • • J. C. Vesga Ferreira y otros “Microcontroladores Motorola-Freescale: programación, familias y sus distintas aplicaciones en la industria”, Alfaomega 20081. MOTOROLA “CPU12 Reference Manual” Ayuda de programa CodeWarrior IDE. 6 Microprocesadores. Guía 1 Hoja de cotejo: 1 Guía 1: Uso de la herramienta de desarrollo y los modos de direccionamiento del HC12. Alumno: Maquina No: Docente: GL: Fecha: EVALUACION % 1-4 5-7 8-10 CONOCIMIENTO 25% Conocimiento deficiente de los fundamentos teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos APLICACIÓN DEL CONOCIMIENTO 70% No termina el procedimiento planteado en la guía 10% Termina el procedimiento con bastante asistencia 10% Termina el procedimiento de forma independiente 10% No modifica el programa 30% Modifica el programa no interpreta correctamente los resultados 30% Modifica el programa interpretando correctamente sus resultados 30% Sus respuestas son incompletas 30% Sus respuestas son correctas y completas 30% No responde a preguntas de retroalimentación 30% ACTITUD TOTAL 2.5% Es un observador pasivo. Participa ocasionalmente o lo hace constantemente pero sin coordinarse con su compañero. Participa propositiva e integralmente en toda la práctica. 2.5% Es ordenado; pero no hace un uso adecuado de los recursos Hace un uso adecuado de los recursos, respeta las pautas de seguridad; pero es desordenado. Hace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e higiene. 100% Nota
© Copyright 2024