Está en la página 1de 45

UNMSM-FIE-CEUPS

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


FACULTAD DE INGENIERÍA ELECTRÓNICA

TUTORIAL DEL MPLAB


CURSO MICROCONTROADORES PIC16F87X

DESARROLLADO POR: JESUS ANTONIO COTRINA MATTA


CRHISTIAN ALMEYDA ORELLANA

ASMRSYSTEMS

e-mail: jcotrinamatta@hotmail.com

Profesor: Jesús Cotrina Matta


1
UNMSM-FIE-CEUPS

MPLAB

El MPLAB es un ambiente de desarrollo integral basado en Windows para realizar la simulación de las
diferentes familias de microcontroladores PIC, los cuales son fabricados por la empresa Microchip. MPLAB le
permite escribir, poner a punto y perfeccionar las aplicaciones con los microcontroladores PIC. MPLAB incluye
editor de texto, simulador y manejador de proyecto, también proporciona soporte a los emuladores MPLAB-
ICE y PICMASTER, a los programadores PICSTART Plus y PRO MATE II, y otras herramientas de sistemas
de desarrollo de Microchip y de terceros.

HERRAMIENTAS DE DESARROLLO DEL MPLAB

El MPLAB IDE integra varias herramientas con la finalidad de proporcionar un marco de desarrollo completo:
• MPLAB Project Manager
Se usa el Project Manager para crear un proyecto y trabajar con los archivos específicos relacionados al
proyecto. Al usar un proyecto, el código fuente se reconstruye y transmite al simulador o emulador con
tan sólo un click del mouse.
• MPLAB Editor
Se usa el Editor del MPLAB para crear y editar los archivos de texto como los archivos fuente, código y
archivos de script de linker.
• MPLAB-SIM Simulador
El Simulador del software modela la ejecución de las instrucciones así como las entradas/salidas de los
microcontroladores PIC.
• MPLAB-ICE Emulador
El emulador MPLAB-ICE usa el hardware para emular PICmicro en tiempo real, con o sin un sistema
designado.
• MPLAB-ICD Depurador
El MPLAB-ICD es un programador para la familia de PIC16F87X así como un depurador del mismo in-
circuit.
• MPASM Assembler Universal/MPLINK Relocatable Linker/MPLIB Librarian
El ensamblador MPASM permite ensamblar el código fuente sin dejar el MPLAB. MPLINK crea la
aplicación final enlazando los módulos relocalizables del MPASM y MPLAB-C17/C18. MPLIB maneja las
librerías personalizadas para el máximo reuso del código.
• Compiladores de C de MPLAB-C17/C18
Los compiladores C MPLAB-C17/C18 proveen soluciones de código fuente de alto nivel basados en
ANSI para los dispositivos PIC17CXXX y PIC18CXXX respectivamente. Proyectos complejos pueden
usar una combinación de C y archivos de fuente ensamblados para obtener los beneficios máximos de
velocidad y mantenimiento.
• Programadores PRO MATE II y PICSTART Plus
Desarrollar el código con el simulador o un emulador, compilar, y luego usar una de estas herramientas
para programar los dispositivos. Esto puede ser realizado con el MPLAB. A pesar de que el PRO MATE II
no requiere del MPLAB para operar, la programación es más fácil con el MPLAB.
Al utilizar el PICSTART Plus, éste se comunica con el computador a través del puerto serial previa
elección del COM. Este módulo grabador se energiza con 9Vdc.
• Emuladores PICMASTER Y PICMASTER-CE
El emulador PICMASTER usa el hardware para emular PICmicros en tiempo real, con o sin sistema
designado. La versión CE está disponible para los países de la Unión Europea (EU). El MPLAB-ICE es el
más reciente emulador de Microchip.
• Muchas otras compañías tienen las herramientas de desarrollo para los productos de Microchip que
trabajan con MPLAB.

Profesor: Jesús Cotrina Matta


2
UNMSM-FIE-CEUPS

CARACTERÍSTICAS DEL EDITOR MPLAB

TAMAÑO DEL ARCHIVO


El Editor de MPLAB solo está limitado por la cantidad de memoria disponible en su sistema. No hay ningún
límite en el número de archivos a editar o en el número de ventanas abiertas. El Editor del MPLAB no tiene
ningún límite en el tamaño de archivo que puede abrir, así como en el número de líneas de programa a editar.

Windows MDI Convenciones


El Editor del MPLAB adhiere al Windows las convenciones de MDI:
• Invoca la mayoría de las órdenes y medios de los menús.
• Los movimientos alrededor con un mouse o con los atajos del teclado normal
• Cortar y pegar del portapapeles

Al abrir el MPLAB a través de la ventana de inicio o del icono en el escritorio previamente establecido,
aparece la pantalla siguiente:

Figura: 01 Escritorio del MPLAB

Antes de comenzar a editar los programas primero debemos seleccionar el modo de trabajo, el cual por
defecto se encuentra en modo editor, seleccionando el botón Options del menú principal

Profesor: Jesús Cotrina Matta


3
UNMSM-FIE-CEUPS

y del menú secundario la opción Developement Mode aparece una ventana en la cual se puede seleccionar
el modo de trabajo y el procesador a utilizar.

Figura 02: Selección del Modo de trabajo y el procesador

Es decir debemos seguir la secuencia: Options/Development Mode para luego escoger


MPLAB – SIM Simulator y el microcontrolador en la subventana rotulada como Processor.

CREACIÓN DE UN PROYECTO

Ahora creamos un proyecto, para lo cual se siguen los pasos siguientes:


Activamos la opción File>New, también se puede utilizar el icono de crear nuevo documento o en su defecto
podemos teclear: ctrl. + N; luego de elegir cualquiera de estas opciones aparece la siguiente ventana de
diálogo:

Figura 03: No hay ningún proyecto abierto


¿Quiere crear un nuevo proyecto?

Al dar un click en Yes aparece un cuadro de diálogo en el que podemos elegir la carpeta donde guardar un
proyecto el cual tendrá la extensión pjt; en este caso, de modo demostrativo, crearemos la carpeta de trabajo

Profesor: Jesús Cotrina Matta


4
UNMSM-FIE-CEUPS

en MPLAB con el nombre de PIC y nuestro proyecto con el nombre de primero.pjt

Figura 04: Creación del Proyecto primero.pjt

Luego de dar un clic sobre OK aparece la siguiente ventana de diálogo:

Figura 05: Propiedades de edición del Proyecto

Profesor: Jesús Cotrina Matta


5
UNMSM-FIE-CEUPS

Al pulsar el botón OK aparece la ventana (Figura 06) de edición del programa fuente estando en condiciones
de escribir nuestro primer Proyecto

Figura 06: Ventana para escribir nuestro primer Proyecto

Edición del programa fuente

Iniciamos la edición del programa en lenguaje ensamblador teniendo en cuenta el uso de las diferentes
librerías implementadas por MPLAB, así como el microcontrolador a utilizar.
Luego de terminada la edición del programa éste se guarda en la carpeta creada con una extensión asm.
Observamos que la primera columna del editor está destinada para las etiquetas las cuales son expresiones
alfanuméricas escogidas por el usuario y asignadas a posiciones de memoria destinada a los Registros de
Propósito General. (GPR).

Debemos de tener especial cuidado en la designación de los GPR con el propósito de no utilizar las palabras
reservadas por el ensamblador:

• Nombres de Registros de Función Especial (SFR)


• Directivas del propio ensamblador
• Instrucciones
• Nombre de los bits de los registros de función especial

Al igual que en otros lenguajes de programación en el MPLAB también se tiene la opción de agregar
comentarios, los cuales sirven de guía en el proceso de editar el archivo fuente.

Profesor: Jesús Cotrina Matta


6
UNMSM-FIE-CEUPS

Para que el MPLAB interprete un escrito como comentario, éste deberá ir precedido de un punto y coma(“;”).
Se recomienda escribir el programa siguiendo ciertas pautas como son el uso de mayúsculas y minúsculas
por citar algunas tanto para los Registros de Función Especial (SFR) como para los comandos propios del
assembler, también se debe fijar las posiciones de las diferentes etapas del programa, como son:

Zona de etiquetas
Zona de inicio de las líneas del programa
Zona de comentarios.

Todo esto se establece con el objetivo de mantener una línea ordenada de programación lo cual conlleva a
maximizar el proceso de compilación y simulación del programa.

Figura 07: Programa fuente editado

Profesor: Jesús Cotrina Matta


7
UNMSM-FIE-CEUPS

Cuando se termina de escribir el programa, éste debe ser guardado en la carpeta PIC anteriormente creada;
para ello activamos File del menú principal para luego dar click a la opción:
Save As...(File>Save As...) apareciendo el cuadro de diálogo de la figura 08.

Figura 08: Cuadro de diálogo para guardar el programa editado

En este cuadro de diálogo colocamos el nombre del programa “primero.asm” dentro de la carpeta de trabajo
“PIC”.

Figura 09: Guardar primero.asm en la carpeta PIC

luego de dar click en OK se reemplaza el texto :

C:\ARCHIV~1\MPLAB\PIC\PRIMERO.PJT – [Untitled1] por


C:\ARCHIV \MPLAB\PIC\PRIMERO.PJT – [c:\archiv~1\mplab\pic\primero.asm]

Profesor: Jesús Cotrina Matta


8
UNMSM-FIE-CEUPS

Dentro de la ventana siguiente:

Figura 10: Programa editado primero.asm

Luego de haber salvado el programa fuente en la carpeta de trabajo “PIC”, procedemos a completar la
secuencia que involucra la creación de nuestro primer proyecto.

Profesor: Jesús Cotrina Matta


9
UNMSM-FIE-CEUPS

Después se debe volver a editar el proyecto primero.pjt siguiendo la secuencia Project>Edit Project...
Crtl+F3, apareciendo el siguiente cuadro menú:

Figura 11: Ventana de edición del Proyecto

En esta presentación (Figura 10) aparece una ventana rotulada como Project Files, donde todos los botones
excepto el botón Add Node... aparecen de color gris.

Luego al pulsar sobre primero[.hex] se activa el botón Node Properties... ; acto seguido damos un click
sobre este botón apareciendo una ventana, donde se presenta las propiedades del nodo así como la opción
de seleccionar tanto los ficheros como los formatos que se obtendrán al ensamblar el programa.

Como estamos programando en el MPLAB y éste utiliza el MPASM como lenguaje ensamblador, entonces no

Profesor: Jesús Cotrina Matta


10
UNMSM-FIE-CEUPS

se necesita realizar cambios al respecto y en cuanto a las demás opciones es preferible no realizar
modificaciones, luego pulsamos OK.

Figura 12: Propiedades del nodo del proyecto PRIMERO.PJT

Luego de pulsar OK aparece nuevamente la ventana de la figura 10 con el botón Add Node… sombreado.
En esta ventana pulsamos el botón Add Node... el cual aparece en negrita a diferencia de la presentación
anterior, apareciendo el siguiente cuadro de diálogo:

Figura 13: Nombre del archivo a incluir en el proyecto ejer1.asm

Profesor: Jesús Cotrina Matta


11
UNMSM-FIE-CEUPS

En esta ventana seleccionamos primero.asm y seguidamente pulsamos el botón Aceptar, apareciendo la


ventana:

Figura 14: Ventana de edición del proyecto incluída primero.asm

Se observa la adición del archivo “primero.asm” a Projects Files y los botones de esta subventana en color
gris, es decir, deshabilitadas.

Profesor: Jesús Cotrina Matta


12
UNMSM-FIE-CEUPS

Procedemos a pulsar OK lo cual nos llevará a la ventana siguiente:

Figura 15: Proyecto PRIMERO.PJT programa fuente primero.asm

Ahora nos encontramos en condiciones de poder ensamblar el programa, para lo cual el MPLAB utiliza el
MPASM.

Para ensamblar el programa se sigue la secuencia: Projects>Buill All... Crtl+F3 o se pulsa cualquiera de los
siguientes botones:

Figura 16: Icono para


ensamblar el proyecto

Profesor: Jesús Cotrina Matta


13
UNMSM-FIE-CEUPS

durante el proceso de ensamblado aparece el siguiente cuadro de diálogo:

Figura 17: Proceso de ensamblado del programa fuente

En este cuadro de diálogo se presenta el ensamblado del programa en forma progresiva expresado en
porcentaje para luego obtener el número de errores, warning, mensajes y líneas ensambladas.

Figura 18: Pantalla del MPLAB luego de haber ensamblado el programa

Profesor: Jesús Cotrina Matta


14
UNMSM-FIE-CEUPS

Si el reporte no presenta ningún error entonces se realiza la simulación del programa.


En caso de existir errores o warning, debemos proceder a su corrección, para ello basta con dar un doble click en
la línea que especifica el error y éste nos llevará a la línea de programa donde debemos corregir, repetir este
paso para cada uno de los mensajes de errores o warning cometidos; una vez solucionados todos los
inconvenientes debemos realizar nuevamente el proceso de ensamblado después de haber guardado todos los
cambios realizados.

Menús del MPLAB y sus funciones

Los Menús del MPLAB permiten acceder a todas las funciones del MPLAB.
Menú File

• New
Seleccionar File>New permite crear un ventana nueva para escribir un programa
Para crear con rapidez una nueva ventana de edición de programas, hacer clic en el

Icono de la barra de herramientas.


Al seleccionar File>Save As el Editor del MPLAB crea una ventana donde aplica
el juego de modos que se definen para los “nuevos archivos”.

• Open
Para revisar uno o más de los archivos existentes, seleccionar File>Open .
Abre un cuadro de diálogo normal para seleccionar los archivos a revisar. Si un archivo seleccionado ya está
abierto, el Editor del MPLAB activa la ventana que está mostrando el archivo actualmente.

• View
Seleccionar File>View permite abrir uno o más de los archivos existentes pero sólo para el
modo de lectura. Se puede examinar sus volúmenes, pero no alterarlos.

• Save
Para guardar los archivos al disco se tiene tres opciones:

‰ Se selecciona File>Save para guardar el contenido de la ventana actual al disco. El Editor del MPLAB
reemplaza el archivo con los contenidos de la ventana actual. Si el archivo actual es anónimo, el Editor del
MPLAB solicita un nombre para el archivo. Si un archivo del mismo nombre ya existe, el Editor del MPLAB
pregunta si desea remplazar el archivo ya existente ahorrándose de esta manera el archivo actual.
‰ Seleccionar File>Save As guarda el contenido de los archivos en el disco, permitiendo definir el nombre del
mismo. El Editor del MPLAB confirma si se sobrescriben o no los archivos existentes:
™ Usar el Driver y las listas del directorio para seleccionar una unidad de disco y el directorio donde
guardar el archivo.
™ Tipear el nombre del archivo o seleccione el nombre de un archivo existente que se desee sobrescribir.
™ Pulsar el botón OK para guardar los datos al archivo. Si se especifica el nombre de un archivo existente,
el Editor del MPLAB confirma si se sobrescribe o no.

• File>Save All, guarda todos los archivos alterados.


Menu Options
Contiene varias opciones para la configuración del sistema.

• Development mode
☺ Tools
☺ Ports
☺ Clock

Profesor: Jesús Cotrina Matta


15
UNMSM-FIE-CEUPS

☺ Memory
☺ Configuration
☺ Power
☺ Pins
☺ Break Options
• Window Setup
• Current editor settings
• Reset editor modes
• Environment setup(Ctrl+F7)
• Programmer options

Windown
Memoria de programa

Seleccionar Window>Program Memory para desplegar la memoria de programa. La ventana de memoria de


programa puede desplegar posiciones en el rango de la memoria de programa para el procesador actualmente
seleccionado. Usted puede dejar la ventana de Memoria de Programa abierta en todo momento, mover y
redimensionar la ventana.
La memoria del programa puede desplegarse de tres maneras. El formato deseado es escogido a través del
menú del sistema.

• Hex Code Display.- Esto despliega la memoria de programa como data hex. Esta opción es muy útil al usar
un programador de dispositivo.

• Machine Code Display.- Esto despliega el código hex desemsamblado sin la información simbólica.

• Disassembly Display.- Esto despliega el código hex desemsamblado con símbolos.

La ventana de Memoria de programa sólo está disponible en el modo Emulador y simulador.


Cuando está en el modo de emulador de MPLAB-ICE, la Memoria del Programa muestra los datos que están en
la memoria de emulación del seno del MPLAB-ICE.

Esta memoria es leída por el MPLAB-SIM cuando usted corre, el paso simple, o trace usando el emulador.
Cuando en el modo simulador o el modo sólo editor, la ventana de Memoria de Programa refleja los contenidos
de un buffer de memoria en el PC. Esta memoria se lee por MPLAB-SIM cuando usted corre, el paso a paso, o
trace.

Cuando un programador (por ejemplo, PICSTART Plus) es habilitado, la ventana de Memoria de Programa se
abrirá en el formato de Código de Hex, si no ha sido ya abierto.

Si usted leyera la memoria del programa con un programador mientras que está en el modo emulador o
simulador, éste sobrescribirá la memoria del programa que está siendo emulada o simulada.

Esto puede causar las “desigualdades” entre la memoria del programa y la información de debug si usted tiene un
proyecto de MPLAB abierto. Se le dará una opción para cerrar el proyecto de MPLAB actual o continuar y leer la
memoria del dispositivo en la ventana de Memoria de Programa.

Después de que usted importa un archivo hex, la ventana de Memoria de Programa contendrá el código hex de
ese archivo.

Profesor: Jesús Cotrina Matta


16
UNMSM-FIE-CEUPS

Cuando esta ventana está en el modo Machine Code Display o Disassembly Display mode, la instrucción en la
dirección del contador de programa actual será resaltado.

Otras características del MPLAB pueden alterar el despliegue de la ventana de memoria de programa.

Al activar esta opción de la barra de menús aparece el siguiente menú desplegable:

Figura 19: Menú desplegado de opción


Window

Al click sobre la opción Program Memory aparece una pantalla con el programa residente en la Memoria de
Programa

Profesor: Jesús Cotrina Matta


17
UNMSM-FIE-CEUPS

.
Figura 20: Memoria de Programa

En esta pantalla se observa las posiciones de memoria de cada una de las instrucciones, el código de 14 bits
(expresado en hexadecimal) generado por cada una de las líneas de programa así como la posición de memoria
de cada una de las etiquetas utilizadas en el programa.

Profesor: Jesús Cotrina Matta


18
UNMSM-FIE-CEUPS

En la parte superior izquierda de esta ventana se encuentra el icono que permite desplegar un submenú con
las opciones de visualización de las líneas de código.

.
Figura 21: Despliegue del menú del sistema

El formato deseado es escogido a través del menú del sistema.

• Hex Code Display.- Esto despliega la memoria de programa como data hex. Esta opción es muy útil al usar
un programador de dispositivo (Figura 19).

• Machine Code Display.- Esto despliega el código hex desemsamblado sin la información simbólica (Figura
18).

• Disassembly Display.- Esto despliega el código hex desemsamblado con símbolos (Figura 20).

Profesor: Jesús Cotrina Matta


19
UNMSM-FIE-CEUPS

Figura 22: Hex Code Display

Figura 23: Disassembly Display


Profesor: Jesús Cotrina Matta
20
UNMSM-FIE-CEUPS

Trace Memory

La ventana de trace memory toma una "instantánea" de la ejecución de su programa. Para emuladores que
tienen un trace buffer, esto muestra cómo su programa corre a toda velocidad.
Nota: Si usted está usando un ICE, note las diferencias del Trace Memory del MPLAB-ICE. Si usted está usando
un PICMASTER, note las diferencias del Trace Memory del PICMASTER .
El trace buffer es una herramienta para probar esas aplicaciones (como los sistemas de control de motor) eso no
puede detenerse. Algunos bugs no ocurren durante el paso a paso a través del código y sólo puede aparecer
cuando la aplicación está ejecutándose.
MPLAB continuamente captura los ciclos de bus seleccionados en el trace buffer.
La información de estado capturada en el trace buffer se agrupa como sigue:

• 16 Bits de dirección (ejemplo: 00A5)


• 16 Bits de opcode/data (ejemplo: 2808)
• Las etiquetas (ejemplo: start, loop)
• Los datos de la instrucción (ejemplo: goto loop)
• Stamp de Tiempo, registros cambiados y pila
• 8 Bits de datos de prueba de trace externo

En el simulador, el trace buffer es útil para coleccionar un registro largo de ejecución del programa que usted
puede analizar después. En el simulador, el buffer de traza o memoria de traza, es útil para visualizar un regis-tro
a lo largo de la ejecución del programa, de manera, que se puede registrar por donde pasa el programa y
después analizarlo. El simulador mostrará la información ligeramente diferente que el trace del emulador.

Para usar el trace buffer del simulador

1. En la ventana de Memoria de Programa, seleccione el código que usted quiere seguir.


2. Pulse el botón derecho mouse. Esto displayará un menú.
3. Selecione Trace Point(s) del menú del atajo.
4. Restablezca y ejecute el código, entonces deténgalo después de que éste corra para unos segundos.
5. Seleccionar Window>Trace Memory para desplegar los contenidos del trace buffer. Esta ventana se puede
dejar abierta en todo momento, y puede moverse y redimensionarse.
El simulador pone una time stamp en cada línea y también muestra cualquier registro que se cambió a lo largo de
sus valores.
6. Para guardar los contenidos del trace buffer a un archivo, seleccionar File>Export>Export Trace Buffer.

Todos estos pasos se muestran en la Figura 21.

Contenidos del Trace buffer

Primer campo.- Una Dirección en hex.

Segundo campo.- Opcode (o data) en hex.

Tercer campo.- La Etiqueta del Programa en el formato simbólico. Usted puede incrementar el ancho del
displayado de las etiquetas en la etiqueta General del diálogo de Environment Setup.

Cuarto campo.- Código de Máquina, código desensamblado, o código fuente.

Quinto campo.- Emulador: El estado en las Líneas de prueba de Lógica Externas. Los campos de estado se
despliegan en el lado derecho de la ventana. Simulator: Información de time stamp y registro cambiado.

Profesor: Jesús Cotrina Matta


21
UNMSM-FIE-CEUPS

Profesor: Jesús Cotrina Matta


22
UNMSM-FIE-CEUPS

Al seleccionar la opción Trace Point(s) aparecen resaltadas las líneas seleccionadas de un color diferente
(Figura 22, rojo para nuestro caso, depende del color seleccionado en Opciones>Environment Setup…

ctrl+F7 ), seguidamente se activa la ejecución en tiempo real (Debug>run>run F9) o con el icono .

Luego de unos segundos detenemos la ejecución del programa con el icono del semáforo rojo o con la
secuencia Debug>run>Halt F5.

Después de detener la ejecución del programa visualizamos la traza obtenida siguiendo la secuencia:
Window>Trace Memory apareciendo la ventana de Trace Memory (Figura 23).

Figura 25: Selección de las líneas a supervisar en la ventana Trace Memory

Figura 26: Traza de memoria obtenida

Los valores obtenidos en la ventana de traza se pueden displayar en tres formatos diferentes activando el icono
superior izquierdo de esta ventana (Figura 24):
1. Disassembly Display

Profesor: Jesús Cotrina Matta


23
UNMSM-FIE-CEUPS

2. Source Code Display


3. Source and Disassembly Display

Figura 27: Selección del formato en la ventana trace Memory

EEPROM Memory

Seleccionar de Window>EEPROM memory para desplegar la ventana de memoria de datos EEPROM para un
dispositivo microcontrolador que tiene memoria de datos EEPROM . Los PIC16F87X son un ejemplo de
dispositivos que contienen memoria de datos EEPROM.
La ventana de EEPROM puede mantenerse abierta en todo momento, movido alrededor, y redimensionada. Esta
ventana sólo es para la información y usted no puede cambiar los valores de esta ventana. Seleccione
Window>Modify para modificar la EEPROM.
La ventana de EEPROM despliega la información hex de la data/opcode del procesador particular siendo
emulado. Cuando un valor de registro de la EEPROM cambia o el procesador se detiene, los datos en la ventana
de EEPROM se actualizan.

Figura 28: Memoria de datos EEPROM Hex Display

Profesor: Jesús Cotrina Matta


24
UNMSM-FIE-CEUPS

Profesor: Jesús Cotrina Matta


25
UNMSM-FIE-CEUPS

Opciones de Botones de Sistema


Pulse el botón del sistema en la esquina izquierda superior de la pantalla de la Memoria EEPROM para displayar
las opciones siguientes:

Toggle Line Numbers.- Intercambio de campo por desplegar los números de la línea.
Hex Display.- Despliega información de la memoria de programa como data hex (Figura 25).
ASCII Display.-Despliega el carácter de ASCII a cada situación de memoria (Figura 26).

Figura 29: Memoria EEPROM ASSCII Display

Absolute listing

Seleccionar Window>Absolute Listing para desplegar la lista de archivos *.LST y para singularizar el paso a
través del archivo *.LST generado por MPASM o un compilador de C compatible. El Absolute Listing despliega
códigos fuente con el código del objeto generado.

Use esta función para desplegar código en C y el código ensamblado que corresponden al código en C. El
Absolute Listing le da una buena idea de cómo el compilador de C llevó acabo su código. Si no se está usando el
C, MPASM generará un listing similar.

Al final de este archivo se muestra información sobre las etiquetas utilizadas en el programa, en línea de

Profesor: Jesús Cotrina Matta


26
UNMSM-FIE-CEUPS

programa se encuentra, la memoria utilizada, la memoria libre, como también los errores , warning y mensajes
generados por el ensamblador.

Figura 30: Archivo primero.lst

File Registers

Seleccionar Window>File Registers para desplegar una ventana de todos Registros (GPR y SFR).
Pueden desplegarse los registros del archivo en uno de tres formatos. El formato deseado es escogido a través
del menú del sistema. El menú del sistema se accede pulsando el botón ubicado en la esquina de la ventana de
File Register.

Profesor: Jesús Cotrina Matta


27
UNMSM-FIE-CEUPS

Al desplegarse esta ventana se presenta una lista con todos los GPR del dispositivo emulado.

Figura 31: Listado de los Registros del sistema

Este listado de registros se presentar bajo 3 formatos:


1. Hex Display
2. simbolic Display
3. ASCII Display.- Esta opción presenta un listado de los registros de propósito general con el contenido de
los datos en código ASCII. Se puede modificar el contenido de uno o varios registro en esta ventana.
Par ello se pone el puntero del ratón sobre el primer registro que se quiere modificar y pulsando el botón
izquierdo se marca el bloque de los registros que se quieren alterar, si sólo se quiere modificar, bastará
con ponerse encima de él, seguidamente se pulsa el botón de la derecha y se activa la opción
Fill Regiter(s), lo que hará aparecer la ventana de la Figura 29, en la que se puede ver como aparece
la dirección del registro a modificar.

Profesor: Jesús Cotrina Matta


28
UNMSM-FIE-CEUPS

Stack
El contenido de la pila se visualiza con la opción: Window>Stack. El contenido de la Pila puede mostrarse con o
sin número de línea.El formato de presentación se selecciona a través del menú del sistema.Si la Pila se
desborda,
el MPLAB muestra el mensaje:

Figura 32: Desbordamiento de la Pila

Al menú del sistema se accede pulsando el botón de la esquina de la ventana Stack.

Figura 33: Ventana de la Pila

Registros de Función Especial

Seleccione Window>Special Function Registers para mostrar los contenidos de los registros de función
especial del procesador que esta siendo emulado.
OBS: Si un registro de memoria no está implementado físicamente en un dispositivo PIC18CXX no aparecerá en
la lista FSR.
El formato provisto por esta ventana es más útil para la observación de los SFR que la ventana de los registros
de archivo normal, desde que cada nombre SFR esta incluido y un gran número de formatos son presentados.
Cada vez que un break ocurre, los contenidos de los Registros de Función Especial son actualizados.
OBS: Si Freeze Peripherals On Halt es seleccionado en el cuadro Break Options bajo Options>Development
Mode los bits del puerto I/O en el FSR en la watch windows no se actualizará durante un paso simple. El pin
será modificado pero la petición de lectura para devolver el nuevo valor es bloqueado por el freeze y no puede
ser actualizado hasta un nuevo paso o un comando de ejecución.
Los SFRs pueden ser desplegados con o sin número de línea. El formato deseado es escogido a través del menú
del sistema. El menú del sistema es accesado haciendo un click en la esquina superior izquierda de la ventana
de la memoria de programa.

Profesor: Jesús Cotrina Matta


29
UNMSM-FIE-CEUPS

Esta ventana puede ser dejada abierta todo el tiempo, movida alrededor, y redimensionada.
Campo uno Nombre del Registro de Función Especial
Campo dos Datos como valor hexadecimal
Campo tres Datos como valor decimal
Campo cuatro Datos como valor binario
Campo cinco Datos como caracteres ASCII

Para modificar los contenidos de un Registro de Función Especial


• Doble click en un nombre de registro en esta ventana para desplegar el cuadro de diálogo Modify con el
símbolo/dirección y campos de datos ya llenados, o
• Seleccionar Window>Modify
OBS: Los nombres y direcciones de SFR son diferentes para cada dispositivo

Figura 34: Registros de Función Especial

Profesor: Jesús Cotrina Matta


30
UNMSM-FIE-CEUPS

Show Symbol List (Mostrar la Lista del Símbolos)

Seleccione Window>Show Symbol List para mostrar los símbolos de su código fuente. Estos símbolos son del
archivo *.COD de su proyecto e incluyen todos los símbolos conocidos por el MPLAB. Los símbolos incluyen
constantes y etiquetas utilizadas en su proyecto. Show Symbol List es una información únicamente del cuadro de
diálogo.
OBS: Para desplegar Show Symbol List, un proyecto debe ser abierto y compilado.
Los símbolos desplegados en este cuadro de diálogo representan los símbolos importados desde su código
fuente después de compilado y ensamblado.

Figura 35: Lista de símbolos utilizados en el proyecto

Variable, Address
Despliega las variables desde la memoria de archivos de registro y la dirección de cada variable
Label, Address
Despliega las etiquetas de la memoria de programa y las direcciones de cada etiqueta
Constants
Constantes definidas en el código fuente pueden ser usadas en la ejecución del opcode y como operandos para
instrucciones en Modify.

Stopwatch

Selecione Window>Stopwatch para desplegar el valor actual del contador de ciclo. El stopwatch del sistema
cuenta el número de ciclos de reloj que ejecuta el procesador. La cuenta ocurre en ejecución de tiempo real. El
temporizador se dispara en cada ciclo de una instrucción (Figura 33).
El stopwatch le permite medir el tiempo de ejecución del código. El stopwatch calcula el tiempo basado en la
frecuencia de reloj del PICmicro.
OBS: La función de stopwatch no es siempre exacta cuando se hace un paso simple. En particular, usando el
stopwatch durante un paso simple puede no exactamente representar el tiempo del emulador o simulador
PICMASTER. En los principales dispositivos de 12 bits, el stopwatch no puede incrementar en algunas
instrucciones para el emulador. Para ambos el PICMASTER y el MPLAB-SIM, el usar el Debug>Run>Step Over
causará un ciclo extra a ser contado en el stopwatch. Para conseguir resultados exactos con el stopwatch use el
Debug>Run>Run enves de Debug>Run>Step.

Profesor: Jesús Cotrina Matta


31
UNMSM-FIE-CEUPS

Cycles
Desplegar el número de ciclos que el procesador ejecuta.
Time
Despliega el tiempo del stopwatch en segundos. Calculado desde el número de ciclos ejecutados y desde la
frecuencia del procesador
Zero
Haga un click en Zero para resetear el contador de ciclo a cero. Puede resetear el temporizador en cualquier
momento cuando el procesador esta detenido.
OBS: Usted puede usar este temporizador para precisar las mediciones de tiempo.
Si usted necesita medir el tiempo exacto que toma la ejecución de una subrutina, simplemente resetear el
temporizador antes de entrar a la subrutina y ponga un punto de ruptura al final de esta subrutina. El
temporizador despliega el número total de ciclos ejecutados en la subrutina y también despliega el tiempo de
ejecución.
Processor Frequency
Despliega la frecuencia del procesador seleccionado para cambiar la frecuencia seleccione
Options>Development Mode y dele un click en el cuadro de Clock (Figura 34).

Figura 36: Stopwatch

Figura 37: Selección del tipo de reloj y la frecuencia de trabajo

Project

La ventana de proyecto sólo esta disponible cuando un proyecto esta abierto. Este despliega la lista de los
actuales archivos en el proyecto. Si el proyecto ha sido compilado, la ventana de proyectos desplegará una lista

Profesor: Jesús Cotrina Matta


32
UNMSM-FIE-CEUPS

de todos los archivos incluidos en el proyecto.

De otra manera, la ventana de proyectos sólo desplegará el archivo de proyecto principal. Un doble clic en
cualquier archivo resaltado en la ventana del proyecto, abrirá dicho archivo para su revisión.

Figura 38: Ventana de Proyecto

Watch Windows

El Watch Windows le permite monitorizar los símbolos de su programa mientras este se encuentra en ejecución.
Ud puede desear monitorizar ciertas variables mientras corre un programa.
OBS: Si Freeze Peripherals On Halt es seleccionado en el cuadro Break Options bajo Options>Development
Mode los bits de puerto I/O en la ventana SFR o en los watch windows no se actualizarán durante el paso simple.
Seleccione Window>Watch Windows>New Watch Window del menú del MPLAB para añadir una Watch
window y desplegar el símbolo de diálogo Add Watch.
También se pueden anular los símbolos poniendose sobre ellos y pulsando el botón izquierdo del mouse y
seguidamente el botón Delet .
Cuando ya se hayan seleccionado todos los registros pulsar el botón Close y aparecerá una ventana, Watch_1.

Figura 39: Ventana de adición de símbolos

Profesor: Jesús Cotrina Matta


33
UNMSM-FIE-CEUPS

Figura 40: Ventana Watch_1

Es posible cambiar el formato de presentación de los registros, para ello habrá que pulsar el botón de Properties
el cual inicialmente aparece de color transparente (no habilitado) poniéndose de color negro una vez que se ha
seleccionado uno de los símbolos a visualizar, apareciendo la ventana de la Figura 41.

Figura 41: Ventana de Propiedades

En esta ventana por defecto el formato de presentación del símbolo es:


• Sistema: Hexadecimal
• Tamaño: 8 bits
• Orden de presentación del Byte: High:Low
• Visualización de bits específicos: Deshabilitado

Profesor: Jesús Cotrina Matta


34
UNMSM-FIE-CEUPS

Modify: Al activar la opción Window>Modify… aparece el cuadro de diálogo Modify como el que se muestra en
la Figura 39. En esta ventana se permite leer y escribir una posición de memoria o el rango de una posición de
memoria.

Modify puede trabajar en las áreas de memoria siguientes:


•Data
•Stack
•Program
•EEPROM (Si tiene)

Figura 42: Ventana Modify.

Debug

Activando Debug aparece un menú desplegable con todas las opciones a explorar (Figura 43).

Figura 43: Menú de la opción Debug

Profesor: Jesús Cotrina Matta


35
UNMSM-FIE-CEUPS
Run.- Al seleccionar Run aparece el siguiente menú desplegable:

Figura 44: Menú desplegable de Run

Opciones de esta ventana:


¾ Run F9
¾ Reset F6
¾ Halt F5
¾ Halt Trace Shift + F5
¾ Animate Ctrl + F9
¾ Step F7
¾ Step Over F8
¾ Update All Registers
¾ Change Program Counter…

Debug>Run>Run.- Al activarse esta opción el programa se ejecuta en el “modo tiempo real”, sin embargo
sabemos que en software la ejecución en tiempo real es mucho más lenta que en el hardware.

Esta opción también se pude activar a través de la tecla F9 o con al pulsar el ícono del semáforo verde
apareciendo el fondo de la barra de estado de color celeste (depende de la elección del usuario:
Option>Environment Setup… ctrl. + F7>Colors) y no se actualizan los registros.
Para detener la ejecución es a través de DEbug>Run>Halt F5 o pulsando el semáforo de color rojo (Stop).

Debug>Run>Reset.- Esta opción inicializa el sistema.


Al generar un reset el registro PC (Contador de Programa) se carga con 0x0000 que es el Vector de
Reinicialización.

Esta acción también puede ser activada con la tecla F6 o con el ícono de la barra de herramientas.

Debug>Run>Halt.- Con esta acción se detiene la ejecución del programa.

Tambien se puede activar esta acción a través de la tecla F5 o pulsando el ícono .


Al detener la ejecución del programa, la barra de estado se pone de color blanco actualizándose los registros con
los valores correspondientes a la última instrucción ejecutada.

Debug>Run>Halt Trace.- Permite al emulador cargar el buffer de memoria con los datos de los registros en los
puntos marcados con Trace Point(s).

Profesor: Jesús Cotrina Matta


36
UNMSM-FIE-CEUPS

Debug>Run>Animate.- En esta opción el programa se ejecuta en forma animada desde la dirección


especificada por el registro PC hasta finalizar con el programa.
Bajo esta opción la barra de estados también se torna de color celeste.
Esta opción también se puede activar a través de las teclas Ctrl + F9.
Para detener la ejecución del programa en un determinado punto se debe utilizar el Break Point o punto de
ruptura , para lo cual se coloca el puntero del mouse sobre la línea de programa donde queremos detener su
ejecución, pulsamos el botón derecho desplegando un pequeño submenú (Figura 45), seleccionándose la opción
Break Point, quedando resaltada la línea de color verde (el color depende de la elección del usuario), donde se
detendrá la ejecución del programa cuando esta en el modo Animate o Run.

Figura 45: Selección del


Break Point(s)

Profesor: Jesús Cotrina Matta


37
UNMSM-FIE-CEUPS

Figura 46: Ejecución del programa (color celeste) y punto de ruptura (color verde)

Si deseamos ver la evolución del microcontrolador al ejecutarse una determinada instrucción, debemos hacer una
Traza, es decir, registrar los valores que van tomando los registros deacuerdo a la instrucción que la modifica.
Entonces se debe activar la opción Trace Point(s) (Figura 47) antes de iniciar la simulación de la ejecución del
programa.

Figura 47: Selección del


Trace Point(s)

Profesor: Jesús Cotrina Matta


38
UNMSM-FIE-CEUPS
Esta acción pone de color negro la línea de programa seleccionada.
Para ver la evolución del contenido de los registros a los que afecta esta instrucción, se debe abrir la ventana
Windows>Memory Trace.

• Figura 48: Ventana de Trace Memory Disassembly Display

Es posible visualizar esta información en diferentes formatos, para ello esta ventana presenta un ícono en la
parte superior izquierda en la cual tenemos las siguientes opciones:
• Disassembly Display
• Source Code Display
• Source and Disassembly Display

Debug>Run>Step.- Esta acción ejecuta la instrucción cuya dirección de memoria coincida con el valor al que
apunta el Contador de Programa (PC) antes de activarla.

Al pulsar la tecla F7 o si se activa el ícono de la barra de herramientas se produce el mismo efecto que al
ejecutar la secuencia anterior.
Esta opción nos permite realizar un seguimiento paso a paso a los cambios registrados en los diferentes registros
involucrados en nuestro programa.

Debug>Run>Step Over.- Se ejecuta paso a paso las instrucciones de igual forma que la opción anterior, pero
cuando llega a la ejecución de una subrutina (por ejemplo call) ésta se ejecuta de igual forma que si fuera una
sola instrucción, si es una subrutina larga como una temporización, ésta tardará más tiempo en ejecutarse que
una sola instrucción.

Esta opción también es activada a través de la tecla F8 o pulsando el ícono de la barra de herramientas.

Profesor: Jesús Cotrina Matta


39
UNMSM-FIE-CEUPS

Debug>Run>Update All Registers.- Esta opción actualiza el contenido de los registros después de haber
ejecutado una instrucción.
Los registros se actualizan cuando se está ejecutando el programa en modo paso a paso, pero si se desea dejar
registrada una traza del programa y tenemos abierta la ventana de memoria de traza cuando se ejecuta la
instrucción en la que se quiere registrar la traza, esta no se actualiza al no ser que se active la opción
Debug>Run>Update All Registers.

Debug>Run>Change Program Counter…. - Al activar esta opción aparece la siguiente ventana:

Figura 49: Ventana para realizar cambios en PC

En el campo de PC, podemos poner cualquier posición de memoria de programa o bien , si se activa la fecha, se
despliega un menú con todas las etiquetas utilizadas por el programa.
Si luego de ello se activa el botón Change, el programa salta a la posición de memoria indica por el PC para
realizar la ejecución de dicha línea en el siguiente ciclo de instrucción.
Esta opción es de mucha utilidad en la fase de depuración del programa ya que evitará que este ingrese a
realizar la ejecución de bucles anidados, de los cuales sólo es posible salir si se cumple con las condiciones
propias del programa como por ejemplo las temporizaciones, donde intervienen el registro de temporizaciones y
una serie de GPR’s.

Esta opción también se activa con el ícono .

Execute

Esta opción del menú permite controlar el estado de los registros durante la ejecución y el firmware del
procesador designado.
Al activarse se despliega el menú 50.

Figura 51: Menú desplegable de Execute

Profesor: Jesús Cotrina Matta


40
UNMSM-FIE-CEUPS

Execute An Opcode….- Con esta opción se ejecuta una sola instrucción o una serie de instrucciones sin
modificar el programa código objeto de la memoria.
Después de ejecutar la instrucción, se puede seguir ejecutando el programa desde el estado actual de la
memoria de programa.

Figura 52: Ventana de Execute an Opcode

Para utilizar esta ventana primero se escribe una instrucción en el campo Opcode, luego se pulsa el botón
Execute produciendo la ejecución de la instrucción.

Condicional Break… .- Fija un punto de ruptura condicional, deteniendose la ejecución del programa cuando se
ha cumplido con la condición prefijada.
Si se activa la opción Debug>Execute>Condicional Break, se despliega un cuadro de diálogo como el se
muestra en la figura 53.

Figura 53: Cuadro de diálogo de la opción Condicional Break

Se puede ejecutar parte del programa de forma automatizada.


La ejecución comienza al pulsar el botón de Start y se ejecuta hasta que se de la condición de parada o se
active el botón de Halt del cuadro de diálogo.
Significado de cada uno de los campos de esta ventana:
Conditions.- El MPLAB se detendrá en un Break Point si en el cuadro de diálogo se activaron algunas de las
siguientes condiciones:
− Halt.- Se ejecuta el programa hasta que se active el botón Halt en el cuadro de diálogo de
Condicional Break o se dé la condicional de parada.

Profesor: Jesús Cotrina Matta


41
UNMSM-FIE-CEUPS

− Multiple Cycles.- Al activar esta opción, se activa el botón Break Setting que hasta este instante
estaba deshabilitado. Cuando se pulsa este botón aparece el siguiente cuadro de diálogo:

Figura 54: Ventana Break Point Settings

Trace Data.- La Traza de datos permite rastrear el valor de los registros en el cuadro de diálogo de los puntos de
ruptura condicionales.

Single Cycle.- En el modo de ciclo único del MPLAB, se ejecutan las instrucciones del µC cuando se cumple la
condición de parada.

Multiple Cycles.- Se cumple lo siguiente:


− Condicional Break, ejecuta las instrucciones en tiempo real (en el emulador), el usuario
selecciona los puntos de parada , se verifica la condición especificada y el µC continúa
ejecutando las instrucciones hasta que encuentre la condición especificada.
− Los valores que deben tomar los registros para que se produzca un Break Point se especifican
en el cuadro de diálogo de Condicional Break.

Simulator Stimulus

la función de Simulación de estímulos simula la generación de señales de entrada en las patitas de µC, los
cuales se pueden poner a nivel alto o bajo, además de inyectar los valores directamente en los registros.
Hay cuatro modos de generar estímulos:

1. Asynchronous Stimulus (Estímulo Asíncrono), abre un cuadro de diálogo interactivo para controlar
las señales de entrada en los pines de entrada del microcontrolador.

2. Pin Stimulus (Archivo de estímulos en los pines), mediante un archivo de texto se describen las
señales de entrada en los pines.

3. Clock Stimulus (Señalñes de Reloj), genera una señal cuadrada programable.

4. Register Stimulus (Archivo de registro de Estímulos), se usa el contenido de un archivo de texto


para poner directamente a uno o cero cada uno de los 8 bits de un registro.

Opciones de cada uno de los modos de generar estímulos:


Debug>Simulator Stimulus>Asynchronous Stimulus.- Al activar esta opción aparece un cuadro de diálogo

Profesor: Jesús Cotrina Matta


42
UNMSM-FIE-CEUPS

como el de la figura 55, en el que aparecen una serie de botones a ser definidos por el usuario como una de las
tantas patitas de entrada del µC.

Figura 55: Ventana de diálogo de Estímulos Asíncronos

Si se activa con el botón de la derecha del mouse cualquiera de 12 botones de estímulos aparece una ventana
como la mostrada en la figura 56.

Figura 56: Ventana de asignación de pines y tipo de impulso

Luego si se selecciona Assign Pin … aparece un menú como el de la figura 57, donde se muestra un listado con
todos los pines de entrada del microcontrolador.

Figura 57: Cuadro de diálogo de asignación de pines

Profesor: Jesús Cotrina Matta


43
UNMSM-FIE-CEUPS

Teniendo desplegado este menú podemos seleccionar cualquiera de los pines mostrados, para ello sólo basta
colocar el puntero del mouse sobre un pin y sobre el botón izquierdo del mouse damos doble clic apareciendo la
siguiente ventana:

Figura 58: Selección del pin RB6

El siguiente paso será indicar al simulador el tipo de señal de entrada que vamos a producir cada vez que se
pulse en el botón seleccionado.
Para ello en el menú de la figura 56 se selecciona cualquiera de las siguientes posibilidades:
1. Pulse.- Un solo pulso
2. Low.- Un nivel bajo
3. High.- Un nivel alto
4. Togle.- Cada vez que se pulsa cambia de estado y permanece en ese valor hasta que se vuelve a pulsar
(1Æ 0 o 0Æ 1: valores lógicos)

Profesor: Jesús Cotrina Matta


44
UNMSM-FIE-CEUPS

Profesor: Jesús Cotrina Matta


45

También podría gustarte