Sunteți pe pagina 1din 18

GUÍA RÁPIDA PARA MPLAB 6.

X 1

MPLAB IDE 6.x. Manual de utilización

Índice:

1.- Arrancando MPLAB 6


2.- Creación del fichero fuente (.asm)
Normas de escritura del programa fuente
3.- Creación del proyecto
4.- Ensamblado del proyecto
errores, advertencias y mensajes
5.- Simulación del proyecto
6.- Observando el funcionamiento
7.- Estímulos

1.- ARRANCANDO MPLAB 6 (IDE:Integrated Development Environment: Entorno de


Desarrollo Integrado).

Para arrancar MPLAB 6 debemos correr "MPLAB IDE". El caso más común es que lo tengamos
instalado en la carpeta de "Archivos de Programa" de nuestro ordenador. Si no es así, debemos
ejecutar el fichero "mplab.exe" que se encontrará en el directorio que hayamos escogido para la
instalación, dentro de la carpeta "dlls".

Una vez arrancado nos encontramos con una pantalla como la de la figura 1.1:

- fig 1.1 -
GUÍA RÁPIDA PARA MPLAB 6.X 2

Entrando en:

Configure > Configuration Bits

Podemos escoger el tipo de oscilador (RC, LP, XT ó HS), y activar/desactivar el perro guardián,
el temporizador de arranque o la protección del programa. Cuando el fichero hexadecimal se va a
grabar en la memoria del PIC es conveniente no tener activado ni el perro guardián ni la
protección del programa.
volver a índice

2.- CREACIÓN DEL FICHERO FUENTE:

El primer paso consiste en escribir el programa fuente. A continuación, se crea un proyecto, se le


añade ese programa fuente y finalmente se ensambla y se simula.

Para generar el programa fuente se utiliza el editor del MPLAB IDE . Seleccionando:

File> New

aparece en el área de trabajo una ventana en blanco donde escribirlo. Aquí tenemos dos opciones:
1) escribir el programa, y 2) copiarlo desde otro medio si ya lo tenemos escrito.

En cualquiera de esos dos casos, hay que tener en cuenta las normas de escritura del programa
fuente, que resumimos a continuación:

Se crea con cualquier editor de texto en caracteres ASCII. Debe cumplir:

1) En cada línea puede haber hasta 4 tipos de información: etiquetas, mnemónicos,


operandos y comentarios.

2) Su orden y posición es importante:


· las etiquetas deben comenzar en la columna 1
· los mnemónicos pueden comenzar en la columna 2 (o posteriores)
· los operandos deben ir detrás de los mnemónicos
· los comentarios pueden ir detrás de los operandos, de los mnemónicos o de las
etiquetas, o pueden comenzar en cualquier columna si el primer carácter que no
sea un espacio es “ ∗ ” ó “ ; ”.

3) La anchura máxima de línea es de 255 caracteres.

4) La etiqueta y los mnemónicos, y éstos y los operandos deben estar separados por uno o
más espacios. Los operandos entre sí pueden ir separados por una “ , ”.

5) Y también:
GUÍA RÁPIDA PARA MPLAB 6.X 3

etiquetas:

· la etiqueta puede ir seguida por “ : ”, “ESPACIO”, “TAB”, o el final de la línea,


sin que se consideren parte de ella
· deben comenzar por una letra o por “ _ ”, y pueden tener caracteres
alfanuméricos, “ _ ”, y “ ? ”.
· pueden tener hasta 31 caracteres, y distinguen mayúsculas (por defecto) aunque
esta opción se puede anular con CLI

mnemónicos:

· los mnemónicos de las instrucciones de ensamblador, las directivas y las


llamadas a macros deben comenzar, al menos, en la columna 2
· si en la misma línea hay una etiqueta, deben estar separados por uno o más
espacios (valen las “TAB”)

operandos:

· los operandos deben separarse de los mnemónicos por uno o más espacios (o
“TAB”)
· los operandos que vienen en listas deben separarse por “ , “
· si un mnemónico requiere un número fijo de operandos, todo lo que venga detrás
de ellos en la misma línea se ignora (se permiten comentarios al final de la línea)
· si un mnemónico permite un número variable de operandos, el final de la lista de
operandos viene determinado por el final de la línea o por el inicio de un
comentario

comentarios:

· los comentarios al final de una línea deben estar separados del resto de la línea
por uno o más espacios (o “TAB”)
· todo lo que hay en una línea detrás del carácter de comentario y hasta el final de
ella, se ignora

Es conveniente ir guardando el texto a medida que lo vamos escribiendo:

File > Save as


ó: File > Save

Nos aparece una ventana como la de la figura 2.1. Escogemos el directorio donde guardarlo
teniendo en cuenta que debe tener la extensión .asm. Para eso hay que tener cuidado con el
formato y en la ventana "Save as type" debe estar seleccionada la opción: Assembly Source Files.
GUÍA RÁPIDA PARA MPLAB 6.X 4

- fig 2.1 -

Tras guardar el programa fuente, el texto aparece en diferentes colores, que diferencian las
instrucciones, los comentarios, directivas, etc. Esos colores se pueden configurar a gusto del
usuario. Para más información acudir a: Help > MPLAB Editor Help
volver a índice

3.- CREACIÓN DEL PROYECTO:

1) El siguiente paso consiste en la creación de un Proyecto. La forma más sencilla de


hacerlo es utilizar el "MPLAB Project Wizard", que se arranca en el menú:

Project > Project Wizard

La pantalla toma un aspecto como el de la figura 3.1:

- fig 3.1 -
GUÍA RÁPIDA PARA MPLAB 6.X 5

Seleccionar "Siguiente" para continuar.

2) Seleccionar, entre la lista de dispositivos disponibles, el procesador a utilizar (fig 3.2).

-fig 3.2 -

Seleccionar "Siguiente" para continuar.

3) Seleccionar la herramienta a utilizar que debe ser Microchip MPASM Toolsuite. Al


hacerlo nos aparece en la ventana siguiente las herramientas disponibles (fig 3.3).

- fig 3.3 -
GUÍA RÁPIDA PARA MPLAB 6.X 6

Seleccionamos la que nos interese que, para iniciarnos en el manejo del programa, debe
ser "MPASM Assembler (mpasmwin.exe")". En la ventana siguiente (Location of select
tool) debe figurar la trayectoria completa de ese ejecutable.

Si esa trayectoria está incompleta o es errónea debemos pulsar "Browse" para localizarlo.

Seleccionar "Siguiente" para continuar.

4) El siguiente paso es asignarle un nombre al proyecto (fig 3.4).

- fig 3.4 -

Seleccionar "Siguiente" para continuar.

5) La pantalla siguiente (fig 3.5) nos pregunta qué ficheros queremos añadir a nuestro
proyecto. Debemos seleccionar y añadir (pulsar en "Add") el fichero fuente
(nombre.asm).
GUÍA RÁPIDA PARA MPLAB 6.X 7

- fig 3.5 -

Seleccionar "Siguiente" para continuar.

Una vez seleccionado, el fichero se añade al proyecto (fig 3.6):

- fig 3.6 -
Seleccionar "Siguiente" para continuar.
GUÍA RÁPIDA PARA MPLAB 6.X 8

Aparece entonces una pantalla con un resumen del proyecto que queremos crear (fig 3.7):

- fig 3.7 -

Si esos datos no son correctos, debemos pulsar "Atrás" y corregirlos. Si son correctos,
debemos pulsar "Finalizar". Con eso salimos del "Project Wizard" y nos aparece una
pantalla con un aspecto como el de la figura 3.8:

- fig 3.8 -

Se pueden añadir archivos y salvar proyectos pulsando el botón derecho del ratón cuando
nos encontremos en la ventana de proyecto. Los ficheros también se pueden borrar
manualmente seleccionándolos y utilizando el botón derecho del ratón.
volver a índice
GUÍA RÁPIDA PARA MPLAB 6.X 9

4.- ENSAMBLADO DEL PROYECTO

Una vez que el proyecto está creado, debemos ensamblarlo. Para eso el entorno MPLAB utiliza el
programa mpasmwin. El procedimiento a seguir es el siguiente:

Project > Build All.

También puede utilizarse el icono correspondiente de la barra de herramientas.

El caso más común cuando se empieza a trabajar con MPLAB es que en la pantalla aparezca un
mensaje como éste:

Deleting intermediary files... done.


Executing: "C:\Archivos de programa\MPLAB IDE 6_40 \MCHIP_Tools
\MPASMWIN.EXE" /q /p16F84 "prueba1.asm" /l"prueba1.lst" /e"prueba1.err"
Warning[205] E:\PIC\EJEMPLOS\PRUEBA1.ASM 3 : Found directive in column 1.
(include)
Error[113] E:\PIC\EJEMPLOS\PRUEBA1.ASM 6 : Symbol not previously defined
(inicio)
Message[302] E:\PIC\EJEMPLOS\PRUEBA1.ASM 10 : Register in operand not in bank
0. Ensure that bank bits are correct.
Warning[207] E:\PIC\EJEMPLOS\PRUEBA1.ASM 12 : Found label after column 1.
(inc)
Error[122] E:\PIC\EJEMPLOS\PRUEBA1.ASM 12 : Illegal opcode (FSR)
Error[113] E:\PIC\EJEMPLOS\PRUEBA1.ASM 13 : Symbol not previously defined
(inicio)
Halting build on first failure as requested.
BUILD FAILED: Fri Feb 10 11:49:09 2006

En la última línea se puede leer: "BUILD FAILED", es decir, el ensamblador mpasmwin no ha


sido capaz de generar un fichero hexadecimal y por tanto tampoco podremos simular el
comportamiento de nuestro programa.

Además, en la pantalla "output" también tenemos disponible otras informaciones, como


"messages", "warnings" y "errors". De estos tres tipos, el más importante porque impide la
generación del fichero hexadecimal son los "errors", mientras que los otros dos tipos no impiden
el ensamblado del programa fuente. Pasemos a comentarlos a continuación:

• Errores (Error). Impiden la generación de código máquina y por lo tanto es


imprescindible corregirlos para poder continuar. Los más habituales, con su número de
caracterización, son:

- "[105] Cannot open file". El ensamblador no es capaz de abrir algún fichero.


Debemos asegurarnos que ese fichero existe o que tiene la trayectoria correcta.
- "[107] Illegal Digit". Hay un dígito no válido en un número. Los dígitos
válidos son:
· en binario: 0 y 1
· en octal: de 0 a 7
GUÍA RÁPIDA PARA MPLAB 6.X 10

· en decimal: de 0 a 9
· en hexadecimal: de 0 a 9, de a a f, y de A a F en hexadecimal
- "[108] Illegal Carácter". Hay un carácter no válido en una etiqueta. Los
caracteres válidos son: letras, números (siempre que no sean el primer carácter
de la etiqueta), subrayado "_" e interrogación "?".
- "[109] Unmatched (" y "[110] Unmatched )". Paréntesis sin cerrar o abrir.
- "[111] Missing Symbol". A las directivas EQU o SET no se les ha
proporcionado el valor numérico.
- "[113] Symbol not previously defined". Hacemos referencia a un símbolo
que todavía está sin definir.
- "[115] Duplicate label". Definimos la misma etiqueta para dos valores
diferentes.
- "[121] Illegal label. Este error puede proceder de dos fuentes: 1) algunas
directivas no admiten una etiqueta en la misma línea; basta con poner la
etiqueta, sola, en la línea anterior, y 2) tampoco se permiten las palabras
"HIGH", "LOW", "PAGE" ni "BANK" como etiquetas.
- "[122] Illegal opcode". El mnemónico de la instrucción no está escrito
correctamente o no existe.
- "[124] Illegal argument". El argumento de la directiva no es válido.
- "[126] Argument out of range". El argumento de la instrucción o de la
directiva es mayor del valor admisible.
- "[128] Missing argument(s)". A la instrucción le falta algún dato.

Debemos tener en cuenta que la eliminación de estos errores simplemente permite obtener
un fichero hexadecimal, pero no tenemos ninguna información acerca de si nuestro
programa funcionará o no correctamente.

• Advertencias (Warning). Estos mensajes no impiden la obtención del fichero


hexadecimal, pero advierten de algo que al ensamblador le parece extraño. Es conveniente
comprobarlos todos. Los más típicos son:

- "[202] Argument out of range. Least significant bits used". El argumento


utilizado tiene más bits de los permisibles, el ensamblador pierde el (o los) de
más peso.
- "[203] Found opcode in column 1". El mnemónico de una instrucción
comienza en la columna 1, que es el lugar reservado para las etiquetas.
- "[205] Found directive in column 1". El mnemónico de una directiva
comienza en la columna 1, que es el lugar reservado para las etiquetas.
- "[207] Found label after column 1". El mnemónico de una etiqueta no
comienza en la columna 1.
- "[215] Processor superceded by command line. Verify processor symbol".
El procesador especificado en el programa fuente no coincide con el
seleccionado en el ensamblador. Por defecto toma el del programa fuente.

• Mensajes propiamente dichos (Message), que tampoco impiden la obtención de código


máquina y añaden información adicional. Los más típicos son:
GUÍA RÁPIDA PARA MPLAB 6.X 11

- "[302] Register in operand not in bank 0. Ensure that bank bits are
correct". El PIC trabaja por defecto en el banco 0 de la memoria de datos.
Este mensaje advierte de que hemos hecho una operación fuera de ese banco y
nos recomienda asegurarnos de que eso es lo que queremos hacer.
- "[305] Using default destination of 1 (file)". Hay algunas instrucciones que
operan con registros que necesitan como dato el destino, es decir, dónde se
quiere almacenar el resultado de la operación que realiza la instrucción. El
destino es un solo bit y por tanto sólo tiene dos opciones: si es "0" el resultado
se almacena en W, y si es "1" es resultado se almacena en el registro con el que
haya operado la instrucción. Si no se especifica ese destino, por defecto, la
CPU lo toma como un "1" y almacena ese resultado en el mismo registro con
el que había trabajado. Este mensaje nos advierte de esta situación.

Para tratar los mensajes, el camino más rápido es hacer doble click en la línea del fichero
"output" en la que está el mensaje. Eso hace que el cursor se ponga en la línea del programa
fuente que da lugar a la aparición de ese mensaje y nos permite corregirlo. A continuación, el
fichero fuente se graba de nuevo, "File > Save", y se vuelve a ensamblar: "Project > Build
All". El proceso se repite hasta que estén corregidos todos, momento en el que mpasmwin
consigue generar el fichero hexadecimal, apareciendo una pantalla como la de la figura 4.1,
donde se puede leer BUILD SUCCEEDED y donde se puede ver también el nombre del fichero
obtenido (extensión .cod) y su trayectoria completa.

- fig 4.1 -

Por último, la pantalla output también informa de:

• herramienta utilizada: mpasmwin, con su trayectoria completa


• ficheros:
· nombre.asm: el programa fuente que nosotros escribimos
· nombre.lst: fichero de listado que contiene un listado completo del programa
incluyendo el programa fuente y todo tipo de mensajes (errores, advertencias y
mensajes propiamente dichos). En este fichero el mensaje aparece justo encima de
la línea que lo origina.
· nombre.err: fichero de errores que indica los errores (sólamente errores) que han
aparecido durante el ensamblado
• procesador para el que se ha ensamblado.
GUÍA RÁPIDA PARA MPLAB 6.X 12

A partir de este momento, ya disponemos de un fichero en hexadecimal (.hex) y podemos simular


el funcionamiento.
volver a índice

5.- SIMULACIÓN DEL PROYECTO

Es lógico que llegados a este punto comprobemos nuestro programa, es decir, vamos a simular su
funcionamiento.

MPLAB-SIM es un simulador para los microcontroladores PIC que viene integrado en el entorno
MPLAB IDE. Permite modificar el programa y reejutarlo a continuación, introducir estímulos
externos y observar la ejecución del programa objeto.

La velocidad de ejecución, aunque llega siempre a la máxima posible, es varios órdenes de


magnitud más baja que la del procesador real y depende del ordenador y de otros factores. Puede
llegar al orden de unos ms por instrucción (un PIC real, con un cristal de 4 MHz, emplea 1 µs por
instrucción).

Suele ser habitual entonces que una vez que nuestro programa está pensado para tiempo real,
tengamos que "acelerarlo" para que su simulación no dure excesivamente.

Como caso más común se tiene el de utilizar divisor de frecuencia. Pues bien, suele ser
conveniente desactivarlo para la simulación volviendo a activarlo para la aplicación real. Eso nos
lleva a un nuevo ensamblado en el que no debe aparecer ningún mensaje diferente a los obtenido
anteriormente.

Para arrancar el simulador debemos entrar en (fig 5.1):

Debugger > Select Tool > MPLAB SIM

- fig 5.1 -

A continuación se producen los siguientes cambios (figura 5.2):

1) La ventana de la izquierda de la barra de estado (parte inferior de la pantalla) cambia a


MPLAB SIM
2) Aparecen nuevas opciones en el menú "debugger"
GUÍA RÁPIDA PARA MPLAB 6.X 13

3) En la barra de herramientas aparecen los iconos correspondientes al simulador

- fig 5.2 -

Nuestro programa está listo para ser ejecutado.

Podemos seleccionar ahora la frecuencia que va a tener el oscilador:

Debugger > Settings > Clock

En primer lugar es conveniente que el simulador empiece por ejecutar la primera instrucción del
programa, para eso realizamos un "reset" del procesador:

Debugger > Reset

O también podemos actuar sobre el teclado o sobre el icono (figura 5.3)

- fig 5.3 -

En la pantalla (figura 5.4) nos aparece una flecha verde en el margen izquierdo de la ventana
donde está escrito el programa fuente (nombre.asm). La flecha apunta a la primera instrucción
que se va a simular en cuanto demos la orden.
GUÍA RÁPIDA PARA MPLAB 6.X 14

A partir de aquí tenemos tres posibilidades de ejecutar el programa: paso a paso, en modo
animado y total.

- fig 5.4 -

1) Paso a paso (Step). En esta modalidad, la CPU ejecuta las instrucciones una a una cada
vez que entremos en el menú:

Debugger > Step Into

O también actuando sobre la tecla F7 o sobre el icono correspondiente (fig 5.3).

Podemos observar el valor de las variables en ese instante colocando el cursor sobre ellas
(figura 5.5):

- fig 5.5 -
GUÍA RÁPIDA PARA MPLAB 6.X 15

2) Modo animado (Animate). En este caso, la CPU ejecuta las instrucciones una tras otra
sin esperar. Se activa en el menú:

Debugger > Animate

O también en el icono correspondiente (fig 5.3).

Para detener la ejecución del programa debemos actuar en:

Debugger > Halt

O también actuando sobre la tecla F5 o sobre el icono correspondiente (fig 5.3).

También en este caso podemos observar el valor de las variables en ese instante
colocando el cursor sobre ellas.

3) Total (Run). En este modo, la CPU ejecuta el programa completo, es decir desde la
primera hasta la última instrucción. Se activa en:

Debugger > Run

O también actuando sobre la tecla F9 o sobre el icono correspondiente (fig 5.3).

En barra de estado aparece la palabra "running".

Para detener la ejecución del programa debemos actuar en:

Debugger > Halt

O también actuando sobre la tecla F5 o sobre el icono correspondiente (fig 5.3).

En este caso, si colocamos el cursor sobre una variable no nos aparece el valor que tiene
en ese instante. Primero debemos detener la ejecución del programa.
volver a índice

6.- OBSERVANDO EL FUNCIONAMIENTO

Hay varias formas de observar lo que sucede al ir ejecutándose las instrucciones del programa.
Dentro del menú "View" tenemos varias posibilidades que nos van abriendo diferentes ventanas:

output: el fichero de salida, que ya conocemos


disassembly listing: listado del programa fuente (sin ensamblar)
hardware stack: estado de la pila
program memory: estado de la memoria de programa, con las instrucciones
file registers: valores almacenados en los registros
GUÍA RÁPIDA PARA MPLAB 6.X 16

EEPROM: estado de la memoria EEPROM


special function registers: estado de los registros de funciones especiales
simulator trace: almacena todos los pasos del simulador

Cualquiera de esas posibilidades nos proporciona información acerca de la ejecución del


programa. El inconveniente es que tanto el contenido de los registros como su dirección pueden
estar en hexadecimal por lo que es bastante engorroso.

Además, hay que tener en cuenta que en programas complejos pueden ser muchos los valores que
cambian con cada instrucción, lo que dificulta el seguimiento de unas pocas variables.

Para evitar este problema se puede abrir una "ventana de observación":

View > Watch

Con eso nos aparece una nueva ventana (fig 6.1) en la que podemos seleccionar tanto los
registros de funciones especiales (FSR) como los símbolos (symbol) que queremos observar.

- fig 6.1 -

Una vez que tenemos en la ventana el símbolo que queremos observar, podemos cambiar su
formato seleccionándolo y apretando el botón derecho del ratón para entrar en sus propiedades.
Ahí podremos escoger varias opciones:

símbolo
número de bits a observar
formato (aquí podemos escoger también un solo bit)
volver a índice

7.- ESTÍMULOS

El simulador evalúa los estímulos y genera todas las respuestas en los límites de cada ciclo de
instrucción (Tcy = 4·Tosc). Por ese motivo, algunos sucesos físicos no pueden simularse con
precisión, en particular los sucesos puramente asíncronos y los sucesos de periodo más corto que
un ciclo de instrucción.

Los estímulos generan señales para el simulador. Podemos poner patillas a "0" o a "1" y cargar
valores directamente en registros. Existen cuatro tipos:
GUÍA RÁPIDA PARA MPLAB 6.X 17

- Estímulos asíncronos
- Estímulos de terminales
- Estímulos de registros
- Estímulos de reloj

Nos centramos en los estímulos asíncronos.

Permite simular +5V y 0V en terminales configurados como entradas. Se activan haciendo click
en el botón correspondiente de la ventana de diálogo. Para definirlos debemos entrar en:

Debugger > Stimulus

con lo que aparecerá una ventana como la indicada en la figura 7.1:

- fig 7.1 -

Podemos entonces definir los estímulos. Es probable que tengamos que comenzar por añadir una
fila: Add Row.

La primera columna (type) nos permite escoger entre estímulo síncrono o asíncrono. Basta con
pulsar dentro del cuadro en blanco para que nos aparezcan las opciones.

La segunda columna (enable) nos habilita el estímulo, es decir, cada vez que hagamos click sobre
el icono "fire", se producirá la simulación del estímulo que estamos configurando.

La tercera columna (pin) nos permite escoger la patilla en la que queremoa simular el estímulo.

En la cuarta columna (action) escogemos la acción a simular. Tenemos cuatro posibilidades:


- high: simula una tensión "1" en la patilla seleccionada
- low: simula una tensión "0" en la patilla seleccionada
- toggle: simula un cambio, es decir, si esa patilla estaba a "1" la pone a "0" y si
estaba a "0" la pone a "1"
- pulse: simula un pulso de corta duración
GUÍA RÁPIDA PARA MPLAB 6.X 18

El resto de las columnas no son interesantes de momento.

En la figura 7.2 podemos ver un ejemplo de pantalla con una serie de estímulos definidos.

- fig 7.2 -

Si queremos eliminar un estímulo, basta con seleccionar la línea y pulsar en "Delete Row".

Una vez definidos todos los estímulos que necesitemos, mientras va corriendo la simulación
podemos activarlos a medida que pulsemos con el ratón en el botón correspondiente, por eso es
conveniente mantener abierta la ventana de los estímulos durante la simulación.

Tenemos la opción de guardar el fichero de estímulos. Basta con actuar sobre "Save" e indicar el
nombre y el directorio donde queremos guardarlo. Posteriormente podemos recuperarlo actuando
sobre "Load".
volver a índice

S-ar putea să vă placă și