MPASM Programacion Pic

MPASM, el ensamblador de Microchip MPASM, el ensamblador de Microchip Debido a la flexibilidad del IDE de Microchip, MP

Views 34 Downloads 0 File size 436KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • lucho
Citation preview

MPASM, el ensamblador de Microchip

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:

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 1 de 6

MPASM, el ensamblador de Microchip 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.

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 2 de 6

MPASM, el ensamblador de Microchip

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 DATO PORT_A Bank_1

equ EQU EQU EQU

12 22 5 BSF STATUS,RP0

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 3 de 6

MPASM, el ensamblador de Microchip

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.

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 4 de 6

MPASM, el ensamblador de Microchip

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 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.

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 5 de 6

MPASM, el ensamblador de Microchip

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 Decimal

Hexadecimal

Sintaxis Ejemplo

Comentario

D''

D'100'

D puede ser minúscula

.

.100

H''

H'64'

0x

0x64

H puede ser minúscula

64

Por defecto O puede ser minúscula

Octal

O''

O'144'

Binario

B''

B'01100100' B puede ser minúscula

A''

A'C'

''

'C'

ASCII

A puede ser minúscula

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

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm Y http://perso.wanadoo.es/pictob/ensamblador.htm

Página 6 de 6