MPASM programacion pic

6
MPASM, el ensamblador de Microchip Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 1 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm MPASM, el ensamblador de Microchip Debido a la flexibilidad del IDE de Microchip, MPLAB, tenemos la posibilidad de programar en lenguajes como "C" o "Basic". Pero lo cierto es que con el ensamblador tenemos un codigo puro y compacto. El ensamblador de Microchip que viene con MPLAB es el MPASM. Generación de código absoluto La generación de código absoluto es el modo definido por defecto del ensamblador MPASM. Este proceso se muestra a continuación: Cuando un archivo fuente se ensambla de esta manera, todas las variables y rutinas utilizadas en el el archivo fuente deben definirse dentro de este, o en archivos explícitamente incluidos por el archivo fuente. Si el ensamblado se realiza sin errores, se generará un archivo hexadecimal .HEX que contiene el código máquina ejecutable para el dispositivo designado. Este archivo puede utilizarse con un simulador para probar la ejecución del código o cargarse en el microcontrolador mediante un programador. Archivos de entrada/salida Éstas son las extensiones de archivo predefinidas utilizadas por el ensamblador y su función. Archivos de entrada: o Código fuente (.asm): Archivo fuente de entrada al ensamblador. o Archivo include (.inc): Archivo de inclusión o cabecera. Archivos de salida: o Archivo de listado (.lst): Archivo del listado generado por el ensamblador. o Archivo de error (.err): Archivo de errores de ensamblado. o Archivo hexadecimal (.hex, .hxl, .hxh): Archivo hexadecimal con código ejecutable. o Archivo de referencias cruzadas (.xrf): Archivo para las referencia cruzadas de los archivos ensamblados. o Archivo de símbolos y depuración (.cod). o Archivo objeto (.o). Código fuente (.asm) El ensamblador es un lenguaje de programación para desarrollar código fuente en una aplicación con PIC. El archivo de código fuente puede crearse y editarse con cualquier editor de texto ASCII. El código fuente debe seguir las siguientes pautas básicas:

description

programacion PIC

Transcript of MPASM programacion pic

Page 1: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 1 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

MPASM, el ensamblador de Microchip

Debido a la flexibilidad del IDE de Microchip, MPLAB, tenemos la posibilidad de programar en

lenguajes como "C" o "Basic". Pero lo cierto es que con el ensamblador tenemos un codigo puro y

compacto. El ensamblador de Microchip que viene con MPLAB es el MPASM.

Generación de código absoluto

La generación de código absoluto es el modo definido por defecto del ensamblador MPASM. Este proceso se muestra a continuación:

Cuando un archivo fuente se ensambla de esta manera, todas las variables y rutinas utilizadas en el

el archivo fuente deben definirse dentro de este, o en archivos explícitamente incluidos por el archivo

fuente. Si el ensamblado se realiza sin errores, se generará un archivo hexadecimal .HEX que contiene

el código máquina ejecutable para el dispositivo designado. Este archivo puede utilizarse con un

simulador para probar la ejecución del código o cargarse en el microcontrolador mediante un programador.

Archivos de entrada/salida

Éstas son las extensiones de archivo predefinidas utilizadas por el ensamblador y su función.

Archivos de entrada:

o Código fuente (.asm): Archivo fuente de entrada al ensamblador.

o Archivo include (.inc): Archivo de inclusión o cabecera.

Archivos de salida:

o Archivo de listado (.lst): Archivo del listado generado por el ensamblador.

o Archivo de error (.err): Archivo de errores de ensamblado.

o Archivo hexadecimal (.hex, .hxl, .hxh): Archivo hexadecimal con código ejecutable.

o Archivo de referencias cruzadas (.xrf): Archivo para las referencia cruzadas de los

archivos ensamblados.

o Archivo de símbolos y depuración (.cod). o Archivo objeto (.o).

Código fuente (.asm)

El ensamblador es un lenguaje de programación para desarrollar código fuente en una aplicación con

PIC. El archivo de código fuente puede crearse y editarse con cualquier editor de texto ASCII.

El código fuente debe seguir las siguientes pautas básicas:

Page 2: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 2 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

Cada línea del archivo fuente puede contener cuatro tipos de información:

Etiquetas

Operación, Mnemónicos (intrucciones), Directivas y Macros

Operandos

Comentarios

El orden y posición de éstos es importantes. Para facilitar la depuración, se recomienda que la

etiqueta se coloque en la primera columna y que los mnemónicos se coloquen una o dos columnas más

allá. Los operandos siguen al código mnemotécnico. Los comentarios pueden seguir a los operandos,

mnemónicos o etiquetas, y pueden comenzar en cualquier columna. La anchura de columna máxima es de 255 carácteres.

Un espacio en blanco debe separar la etiqueta del código mnemotécnico, y también un espacio en

blanco deba separar el código mnemotécnico y los operandos. Los operandos múltiples deben separarse

por comas.

Se considera como un espacio en blanco uno o más espacios o tabulaciones. El espacio en blanco se

utiliza para separar las partes de una línea del código fuente. El espacio en blanco debe utilizarse para

hacer el código más fácil de leer. Cualquier número de espacios en blanco o tabulaciones son exactamente igual que uno.

Page 3: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 3 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

Etiquetas

Una etiqueta se usa para representar una línea o grupo de código, o un valor constante. Se

necesitan para las instrucciones de salto.

Las etiquetas deben empezar en la columna 1. Pueden terminar en "dos puntos" (:), espacio,

tabulación o fín de línea. Las etiquetas deben comenzar por un carácter alfabético o por un guión bajo (_) y puede contener carácteres alfanuméricos, guión bajo (_) y el signo de interrogación (?).

Las etiquetas no deben:

Comenzar por dos guiones bajos, ejem., __config.

Comenzar por un guión bajo y un número, ejem., _2NDLOOP.

Ser palabras reservadas del ensamblador (ver Section 3.3 “Reserved Words and Section Names” de MPASM, MPLINK, MPLIB User's Guide).

Las etiquetas pueden tener como mucho 32 carácteres. Por defecto se distinguen mayúsculas y

minúsculas, pero esto puede anularse con la opción en línea de comandos (/c). Si se utiliza "dos

puntos" (:) al definir una etiqueta, se le trata como un operador de la etiqueta y no como parte de la

propia etiqueta.

Mnemónicos, directivas y macros

Los mnemónicos le dicen al ensamblador qué instrucciones de código máquina (códigos de

operación) deben utilizarse. Por ejemplo, suma (add), ir a (goto) o movimientos (movwf). A

diferencia de las etiquetas que creamos nosotros mismos, los mnemónicos los proporciona el lenguaje

ensamblador que se utilice. Los mnemónicos no son en ningún caso sensibles a mayúsculas/minúsculas.

Las directivas son órdenes del ensamblador que aparecen en el código fuente pero que normalmente

no son traducidas directamente a códigos de operación. Se utilizan para controlar al ensamblador: sus

entradas, salidas y asignación de datos. Las directivas no son en ningún caso sensibles a mayúsculas/minúsculas.

Algunas de las directivas más utilizadas son:

Directiva EQU

El nombre viene de la palabra "equal", (igual)". La directiva EQU permite al programador "igualar"

nombres personalizados a datos o direcciones. Los nombres utilizados se refieren generalmente a

direcciones de dispositivos, datos numéricos, direcciones de comienzo, direcciones fijas, posiciones de

bits, etc. Un nombre es más descriptivo que una simple dirección y la tarea de programar se hará

mucho más sencilla. También podemos asignar un nombre a una instrucción que repitamos varias

veces a lo largo de un algoritmo, de manera que sea mucho más sencilla la programación. A estos

nombre que asignamos mediante esta directiva se les denomina constantes, ya que el registro al que apuntan no variará durante el programa. Ejemplos:

temp equ 12

DATO EQU 22

PORT_A EQU 5

Bank_1 EQU BSF STATUS,RP0

Page 4: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 4 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

Directiva ORG

Esta directiva dice al ensamblador a partir de que posición de memoria de programa se situarán las

siguientes instrucciones. Rutinas de comienzo, subrutinas de interrupción y otros programas deben

comenzar en locaciones de memoria fijados por la estructura del microcontrolador. Recordemos que el

16F84 sólo tiene 1024 posiciones de memoria flash para código.

La directiva ORG hace al compilador colocar el código que le sigue en una nueva dirección de

memoria (la salida del compilador no solo coloca los códigos de operación sino también las direcciones

de cada instrucción del programa). Usualmente se la utiliza para: reset, programas de servicios de interrupción, programa principal, subrutinas.

Ejemplos:

1) Inicia el programa en la posición cero:

ORG 0x00

2) Inicia el programa en la posición 0000h y luego pasa a la 0005h para no utilizar la posición del

vector de interrupción (0004 h)

ORG 0x00 ; El programa comienza en la dirección 0 y

GOTO inicio ; salta a la dirección 5 para sobrepasar

ORG 0x05 ; el vector de interrupción, situado en la posición 4

Inicio xxx...

Directiva #INCLUDE

Esta directiva indica que archivos deberán tomarse en cuenta a la hora de compilar el código.

Normalmente se usa para incluir el archivo de PIC que el ensamblador tiene entre sus archivos, con el

cual el compilador será capaz de reconocer todos los registros especiales y sus bits. Su uso nos recordará al #include del lenguaje C. Esta línea debe colocarse al principio, y tiene la siguiente sintaxis:

#INCLUDE ; Lista de etiquetas de microchip

En ciertas ocasiones gran cantidad errores son debidos a que el nombre del archivo puesto entre

comillas no se escribe correctamente.

Directiva LIST

Este comando sirve para que el compilador tenga en cuenta sobre qué procesador se está

trabajando. Este comando debe estar en todo proyecto, situado debajo del "include", con la siguiente sintaxis.

LIST P=PIC16F877A

Directiva END

Al igual que las dos anteriores, esta debe ir incluida una sola vez en todo el programa. En concreto,

esta debe situarse al final, para indicar al ensamblador que el programa ha finalizado. Esta siempre

debe estar presente, aunque el flujo de nuestro programa acabe en un bucle.

Page 5: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 5 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

Macros

Las macros son conjuntos de instrucciones y directivas definidas por el usuario que se insertarán en el código fuente al realizar el ensamblado siempre que la macro se invoque.

Mnemónicos

Los mnemónicos de las instrucciones del ensamblador, las directivas y las llamadas a macros deben

colocarse de la segunda columna en adelante. Si hay una etiqueta en la misma línea, las instrucciones deben separarse de esa etiqueta por "dos puntos", o por uno o más espacios o tabulaciones.

Operandos

Los operandos dan información a la instrucción sobre los datos que deben utilizarse y donde se

encuentran. Los operandos debe separarse de los mnemónicos por uno o más espacios, o tabulaciones. Los operandos múltiples deben separarse por comas.

Comentarios

Los comentarios son texto que explica el funcionamiento de una línea o líneas de código. El

ensamblador MPASM trata lo que esté después de un punto y coma como un comentario. Todos los

caracteres que siguen al punto y coma se ignoran hasta el final de la línea. Las constantes del cadena que contienen un punto y coma se permiten y no se confunden con comentarios.

Archivo include (.inc)

Un archivo "include" o cabecera (header) es cualquier archivo que contenga código ensamblador

válido. Normalmente, el archivo contiene equivalencias sobre registros específicos del dispositivo a

utilizar y asignaciones de bits. Este archivo puede ser “incluido” en el código para que pueda ser

reutilizado por muchos programas.

Como ejemplo, para añadir el archivo de cabecera para el dispositivo PIC16F877A en el código ensamblador de nuestro programa, pondremos:

#INCLUDE P16F877A.inc

O #INCLUDE<P16F877A.INC>

Los archivos de cabecera se encuentran en el directorio de instalación de MPASM o de MPLAB.

Archivo hexadecimal (.hex, .hxl, .hxh)

El archivo hexadecimal es, por así decirlo, el archivo que contiene el ejecutable para el microcontrolador.

Page 6: MPASM programacion pic

MPASM, el ensamblador de Microchip

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Página 6 de 6 Y http://perso.wanadoo.es/pictob/ensamblador.htm

Sistemas de numeración

La convención utilizada por MPASM es la siguiente:

Hexadecimal: es la numeración por defecto. Para mayor claridad para el programador se utiliza una letra H al final del número. Por ejemplo: 0100H, 0A0H, 5H, 66h.

Importante: Como ésta es la numeración por defecto hay que tener mucho cuidado al colocar

números en decimal. Por ejemplo la instrucción MOVLW 64 no utilizará el número 64 decimal sino el 100 decimal (64 hex = 100 dec)

Binario: Para escribir números en binario utilizar B'xxxxxxxx' (utilizar comillas simples). Por ejemplo: B'10011001' , b'01110000'.

Decimal: podemos utilizar la forma D'120' (también con comillas simples) o la forma corta

anteponiendo un punto al número decimal. Esta es la forma utilizada en todos los programas realizados

por Microchip. Por ejemplo: D'112' d'10' .200 .100

Tener en cuenta siempre el tamaño de datos con el que se está trabajando. En la mayoría de los

casos, se utilizará un número para almacenarlo en el acumulador y éste es de 8 bits. Por lo tanto el número utilizado no debe exeder de 255 decimal o FF hexadecimal.

Tipo Sintaxis Ejemplo Comentario

Decimal D'' D'100' D puede ser minúscula

. .100

Hexadecimal

H'' H'64' H puede ser minúscula

0x 0x64

64 Por defecto

Octal O'' O'144' O puede ser minúscula

Binario B'' B'01100100' B puede ser minúscula

ASCII A'' A'C' A puede ser minúscula

'' 'C'

Este artículo es una modificación a dos artículos de Emilio Toboso en

http://perso.wanadoo.es/pictob/mpasm.htm y http://perso.wanadoo.es/pictob/ensamblador.htm

Para mayores referencias, revisar los artículos completos o acudir directamente a la documentación de Microchip:

MPASM™ Assembler, MPLINK™ Object Linker, MPLIB™ Object Librarian User’s Guide http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf