LAB 02 MPLAB Introduction
LAB 02 MPLAB Introduction
LAB 02 MPLAB Introduction
Este laboratorio le presenta el Entorno de Diseño Integrado de Microchip MPLAB X (MPLAB X Integrated Design
Environment – IDE). Las tareas en este laboratorio son:
▪ Descomprimir el archivo y utilizar MPLAB X para simular el programa en lenguaje ensamblador PIC24
en el proyecto mptst_word para familiarizarse con el entorno MPLAB X.
▪ Realizar algunas tareas de programación sencillas usando el lenguaje ensamblador PIC24.
Si aún no lo ha hecho, descargue y descomprima el siguiente archivo ZIP. El cual es el archivo de código completo
para el curso, esta practica de laboratorio utiliza los archivos del directorio chap3/.
Vea el video tutorial (relacionado a continuación), antes de ingresar al laboratorio y en el laboratorio demuestre,
al Estudiante Monitor del curso y/o Profesor, las acciones del video en su propia PC.
▪ Introducción a MPLAB X: Este tutorial presenta el Entorno de Diseño Integrado (IDE) MPLAB X y analiza la
simulación del programa mptst_word.
Esta parte de la guía de laboratorio es una Introducción al entorno MPLAB X y Usted será capaz de demostrar al
Monitor y/o Profesor que puede usar MPLAB X para ensamblar y simular un programa en lenguaje ensamblador.
Basado en lo visto en clase y en los videos que ha visto, debe poder demostrar lo siguiente al Monitor y/o Profesor:
Microprocesadores y Microcontroladores
▪ Abrir la ventana “file registers” para ver los datos de su programa, los cuales inician en la dirección 0x1000.
▪ Abrir la ventana “watches” y luego agregue u16_i, u16_j, u16_k, y WREG0, WREG1, WREG2.
▪ Use el simulador para ejecutar el programa paso a paso. Observe las locaciones de la memoria de programa y
las locaciones de la ventana “watch”, y correlacione sus valores cambiantes con las instrucciones que se están
ejecutando.
Modifique la asignación i = 2047 para que sea los cuatro dígitos de su código de estudiante. Vuelva a ensamblar
el programa y vuelva a simularlo. Tome una captura de pantalla, después de ejecutar el programa, de los contenidos
de la ventana “watch” y de la memoria de datos (ventana “file registers”). En su informe, debe mostrar los cálculos
que verifiquen que los valores de la captura de pantalla coinciden con el resultado esperado (advertencia, i =
2047 está en decimal, al igual que los últimos cuatros dígitos de su código de estudiante; los valores en la captura
1. Haga clic derecho sobre el proyecto mptst_word en la ventana “Projects” y seleccione copiar (Copy…),
luego ingrese myadd como el nombre del proyecto.
2. Abra mptst_word.s y seleccione File > Save As… e ingrese myadd.s.
3. En la ventana “Projects” en myadd > Source Files, haga clic derecho sobre mptst_word.s y seleccione
Remove From Project. Ahora, haga clic derecho sobre Source Files y elija Add Existing Item…, luego
seleccione myadd.s (el cual se encuentra un directorio arriba de la ubicación predeterminada del
subdirectorio del proyecto).
4. Edite myadd.s, eliminando el código desde la instrucción mov #2047, W0 hasta la instrucción mov
W0, u16_k. Elimine las declaraciones .space arriba del código. Ahora puede usar este archivo como
inicio para un nuevo programa.
Su código de estudiante es un número decimal de 9 dígitos: Y8Y7Y6Y5Y4Y3Y2Y1Y0. Escriba un programa para sumar
el numero hexadecimal de cuatro dígitos formados por 0xY 3Y2Y1Y0 con el numero hexadecimal de cuatro dígitos
0xY7Y6Y5Y4. Reserve espacio, en el espacio de datos, para dos variables de 16 bits llamadas u16_lsp y u16_msp
para guardar los valores hexadecimales 0xY3Y2Y1Y0 y 0xY7Y6Y5Y4 respectivamente. Reserve espacio para una
variable llamada u16_sum para guardar la suma de u16_lsp y u16_msp.
El siguiente código C describe nuestro programa. Usted debe traducir cada línea del programa C a instrucción (es)
en ensamblador. Debe incluir, en comentarios, una asignación de registro seguida de una línea de código C,
seguida de su traducción a ensamblador.
uint16_t u16_lsp;
uint16_t u16_msp;
uint16_t u16_sum;
u16_lsp = 0xY3Y2Y1Y0; // Note that this is a hex value
u16_msp = 0xY7Y6Y5Y4; // Same as above
u16_sum = u16_lsp + u16_msp;
La sección 3 del documento manual de referencia de programación contiene el conjunto de instrucciones para la
Microprocesadores y Microcontroladores
familia PIC24. El manual esta disponible en el classroom del curso.
Use la ventana watch para ver las variables u16_lsp, u16_msp, y u16_sum. También, utilice la ventana de memoria
de datos para monitorear las locaciones de memoria correspondientes a dichas variables. Escriba su programa, simúlelo, y verifique
que obtiene los resultados correctos.
Tome una captura de pantalla del contenido de las ventanas watch y memoria de datos (File Registers) después
de ejecutar el programa. En su informe, debe mostrar los cálculos que verifiquen que los valores de la captura de
pantalla coinciden con el resultado esperado. También tome una captura de pantalla de su “program listing” (Ver
las instrucciones al final de esta guía) y adjunte myadd.s en la entrega de su laboratorio. En su informe, hágalo
de una manera sencilla para que el Monitor y/o Profesor pueda comprobar fácilmente que ha verificado los valores
de la pantalla: ¡muestre sus cálculos!
Cree un proyecto llamado mysub usando el mismo procedimiento dado en la Tarea 2 (Project > Copy…, etc.) con el
correspondiente archivo en lenguaje ensamblador llamado mysub.s. Usando los dígitos de su código de estudiante, escriba
un programa en lenguaje ensamblador que realice el siguiente programa C. Debe traducir cada línea del programa C a instrucción (es)
en ensamblador.
uint8_t u8_i;
uint8_t u8_j;
uint8_t u8_k;
uint8_t u8_l;
uint8_t u8_m;
u8_i = Y1Y0;
u8_j = Y3Y2;
u8_k = Y5Y4;
u8_l = u8_i + u8_j;
u8_m = u8_k – u8_l;
Las variables u8_i a la u8_m son todas variables de 8 bits (byte). Luego todas las operaciones son operaciones en
tamaño byte.
Use la ventana watch para ver las variables u8_i a la u8_m. También, utilice la ventana de memoria de datos para
monitorear las locaciones de memoria correspondientes a dichas variables. Escriba su programa, simúlelo, y verifique que obtiene los
resultados correctos. (En la ventana watch vea las variables i, j, k, l como decimal sin signo de 8 bits y m como decimal con signo de 8
bits. Si el valor m esperado en su caso es inferior a -128, la ventana watch lo mostrará como valor positivo debido al subdesbordamiento
– underflow (el rango para un número de 8 bits con signo es -128 a +127) en ese caso, mencione esto en el informe de laboratorio).
Tome una captura de pantalla del contenido de las ventanas watch y memoria de datos (File Registers) después
de ejecutar el programa. En su informe, debe mostrar los cálculos que verifiquen que los valores de la captura de
pantalla coinciden con el resultado esperado. Adjunte mysub.s en la entrega de su laboratorio. En su informe,
hágalo de una manera sencilla para que el Monitor y/o Profesor pueda comprobar fácilmente que ha verificado los
valores de la pantalla: ¡muestre sus cálculos!
Microprocesadores y Microcontroladores
E. Informe
Su informe debe tener los requisitos de informe (Reporting Requirements) necesarios para las tareas (Tasks) 1, 2
y 3. El profesor y/o Monitor sacará una cantidad significativa de puntos (20 puntos, un cero para el informe
de laboratorio) si su fuente en lenguaje ensamblador no tiene los comentarios necesarios. Los comentarios
deben indicar qué líneas fuente en lenguaje ensamblador implementan qué declaraciones C y dar una asignación
de registro para cada línea de C.
F. Notas
▪ No use como nombres de variable a o b, ya que son nombres reservados para los acumuladores de 40 bits
utilizados por las instrucciones DSP. Su uso dará errores durante el montaje (assembly).
Algunas versiones de MPLABX hacen bastante difícil abrir el archivo “program disassembly listing” (listado de
desensamblaje de programa). A continuación, se muestra una manera para ver dicho archivo utilizando MPLABX
versión 5.05.
Asegúrese de que su proyecto se este ejecutando presionando “Debug Main Project” o seleccione “Debug Main
Project” después de presionar “Alt+D”. A continuación, navegue a la ventana de desensamblaje (disassembly)
Una vez que se abre la ventana “Disassembly”, puede encontrar allí su lista de desensamblaje “disassembly listing”.
Si la ventana de “Disassembly” está vacía, haga clic derecho en cualquier lugar dentro de la ventana de
“Disassembly” y seleccione “Disassembly Listing File”, una nueva ventana llamada “listing.disasm” debe aparecer y
Microprocesadores y Microcontroladores
puede encontrar su “disassembly listing” allí. En dicha lista, el desensamblado generedo por el compilador está en
la columna de la izquierda, el código correspondiente que escribió está en la columna derecha.