http://www.terra.es/personal/fremiro/directivas.htm
DIRECTIVAS DEL MPLAB Directiva
_ _ BADRAM BADRAM
Descripción
Sintaxis
CBLOCK CODE _ _CONFIG CONSTANT
Especifique las posiciones del RAM inválidas _ Genera el el código código que selecciona el banco de memoria de memoria RAM para direccionamiento direccionamiento indirecto Genera el código que selecciona el código de memoria RAM Defina un Bloque de Constantes Empieza la sección del código ejecutable Especifica los bits de configuración configuración Declara los Símbolos de las Constantes
DATA
Crea Datos numéricos y de Texto
cblock [
] [] code [] [] _ _config _config constant [=,...,[=< [=,...,[=] expr>] ] [] data ,[,,...,,[,,...,] r>]
Declare Datos de un Byte
[] data ´µ[,µµ,...] [] db[,,...,[,,...,] pr>]
Defina los Datos de EEPROM
[] db ´µ[,µµ,...] [] de [,,...,[,,...,] >]
Defina una Etiqueta de Substitución de Texto
[] de ´µ[,µµ,...] define []
Defina Tabla
define [,...,,...,] g>] [] dt[,,...,[,,...,] >]
Declare Datos de un Word
[] dt ´µ[,µµ,...] [] dw[,,...,[,,...,] r>]
BANKISEL
BANKSEL
DB
DE
#DEFINE
DT
DW
_badram bankisel
banksel
[] dw ´µ[,µµ,...]
ELSE END ENDC ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND EXTERN FILL GLOBAL IDATA _ _ IDLOCS IDLOCS IF IFDEF IFNDEF #INCLUDE
LIST LOCAL MACRO _ _ MAXRAM MAXRAM MESSG NOEXPAND NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET SPACE
Empieza el bloque alternativo de un IF Fin de bloque de programa Acaba un Bloque Constante Automático Fin del bloque de condiciones condiciones ensambladas Fin de la definición de una Macro Fin de un bucle de While Define una constante para el ensamblador ensamblador Manda un mensaje de error Sitúa el nivel del error
Else End Endc Endif Endm Endw equ equ error ´µ errorlevel 0|1|2| <+|-> Salida de una Macro Exitm Expande una lista de Macro expand Declara una etiqueta externa extern[ extern[ ,] Llena la memoria [] fill , Exporta una etiqueta definida global [ ,] Comienza una sección de identificadores identificadores (ID) [] idata [] [] Especifica donde están colocados los _ _idlocs _idlocs Identificadores (ID) Empieza un bloque de código condicional if Ejecutar si el símbolo ha sido definido ifdef Ejecutar si el símbolo no ha sido definido ifndef Incluye Ficheros fuentes adiccionales include <> |´µ Opciones listado list [,...,] [,...,] Declara una Macro Variable como local local [,] [,] Declara la Definición del Macro macro [,...,] [,...,] Especifique la dirección del RAM máxima _ _maxram Crea Mensajes definidos por el usuario messg ´µ ´µ Termina la Expansión del Macro Noexpand Termina el Listado del Rendimiento Nolist Pone el Origen del Programa org org Inserta el número de página del listado Page Genere el código de selección de la página de pagesel ROM El Tipo del Procesador Procesador fijo processor Especifique Radix Predefinido radix Reserve la Memoria [] res Defina Variable de ensamblador ensamblador set Inserta líneas en blanco space
ELSE END ENDC ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND EXTERN FILL GLOBAL IDATA _ _ IDLOCS IDLOCS IF IFDEF IFNDEF #INCLUDE
LIST LOCAL MACRO _ _ MAXRAM MAXRAM MESSG NOEXPAND NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET SPACE
Empieza el bloque alternativo de un IF Fin de bloque de programa Acaba un Bloque Constante Automático Fin del bloque de condiciones condiciones ensambladas Fin de la definición de una Macro Fin de un bucle de While Define una constante para el ensamblador ensamblador Manda un mensaje de error Sitúa el nivel del error
Else End Endc Endif Endm Endw equ equ error ´µ errorlevel 0|1|2| <+|-> Salida de una Macro Exitm Expande una lista de Macro expand Declara una etiqueta externa extern[ extern[ ,] Llena la memoria [] fill , Exporta una etiqueta definida global [ ,] Comienza una sección de identificadores identificadores (ID) [] idata [] [] Especifica donde están colocados los _ _idlocs _idlocs Identificadores (ID) Empieza un bloque de código condicional if Ejecutar si el símbolo ha sido definido ifdef Ejecutar si el símbolo no ha sido definido ifndef Incluye Ficheros fuentes adiccionales include <> |´µ Opciones listado list [,...,] [,...,] Declara una Macro Variable como local local [,] [,] Declara la Definición del Macro macro [,...,] [,...,] Especifique la dirección del RAM máxima _ _maxram Crea Mensajes definidos por el usuario messg ´µ ´µ Termina la Expansión del Macro Noexpand Termina el Listado del Rendimiento Nolist Pone el Origen del Programa org org Inserta el número de página del listado Page Genere el código de selección de la página de pagesel ROM El Tipo del Procesador Procesador fijo processor Especifique Radix Predefinido radix Reserve la Memoria [] res Defina Variable de ensamblador ensamblador set Inserta líneas en blanco space
SUBTITLE
Especifique el Subtítulo del Programa Programa
subtitle ´µ
TITLE
Especifique el Título del Programa Programa
title ´µ
UDATA
Empieza la sección de datos no inicializados
[] udata [] []
UDATA_OVR Empieza la sección de datos no inicializados superpuestos UDATA_SHR Empieza la sección de datos no inicializados compartidos
[] udata_ovr []
#UNDEFINE
Anula una Etiqueta de la Substitución
#undefine #undefine
VARIABLE
Declara un símbolo como variable
WHILE
Realiza el bucle Mientras la Condición es Verdadera
variable [=,...,[=< [=,...,[=] expr>] ] while
[] udata_shr []
Detalles de las directivas
En las siguientes líneas nos dedicaremos a la descripción detallada del directivas utilizadas por MPASM. Cada definición mostrará:
Sintaxis
Descripción
Ejemplo
_ _ _ BADRAM BADRAM
.±Identifica las posiciones de RAM invalidas
Sintaxis _ _BADRAM [-] [, [-]] Descripción
Las directivas _ _ _ MAXRAM MAXRAM y _ BADRAM juntas acceden a los flag de los registros no implementados. las posiciones _ _ _ BADRAM BADRAM define las
de las direcciones RAM inválidas.
_ _ BADRAM está diseña para el uso con co n la directiva __MAXRAM. La directiva __ BADRAM debe ir ir precedida de una directiva __ MAXRAM. Cada debe ser al menos igualar al valor especificado por __MAXRAM. Una vez se utiliza utiliza la directiva _ _MAXRAM, se habilitan habilitan las direcciones de RAM y se inhabilitan posici po siciones ones de RAM utilizando la directiva _ _BADRAM.
Ejemplo ; definición DE RAM para el PIC16F84
__ MAXRAM MAXRAM H¶CF¶ __ BADRAM H¶07¶,H50¶-H¶7F¶,H87¶
Mirar también en:
_ _ _ MAXRAM MAXRAM Volver a la tabla de directivas d irectivas
BANKISEL ±Genera el código que selecciona el banco de memoria RAM para el direccionamiento Indirecto. Sintaxis
bankisel Descripción
Se usa para generar el archivo objeto. Esta directiva es una instrucción para el linkador linkador para que seleccione seleccione el banco de memoria memoria adecuado para acceder directamente a la especificada. La debe ser especificada sola. No puede realizarse ninguna operación delante de la . La debe estar definida previamente.
El linkador generará el banco apropiado que selecciona el código. En esencia para los dispositivos de 14 bits, la instrucción genera el set/c lear del bit apropiado en el IRP de registro de STATUS. Para los dispositivos de 16-bits, MOVLB o MOVLR son las que lo generan. Si el usuario puede especificar la dirección indirecta completamente sin estas instrucciones, no se genera ningún código. Para más información, refiérase a Capítulo 4, ³Usando MPASM Create RelocatableObjects.´ Ejemplo
movlw
Var1
movwf FSR
bankisel
Var1
... movwf INDF
Mirar también en
PAGESEL
BANKSEL
Volver a la tabla de directivas
BANKSEL.- Genera el código que selecciona el código de memoria RAM Sintaxis
banksel Descripción
Se utiliza para generar un archivo objeto. Esta directiva da instrucción al linkador para que seleccione el banco de memoria adecuado para acceer directamente a la etiqueta. La etiqueta debe especificarse sola. Ninguna operación puede realizarse delante de la etiqueta. La etiqueta debe haberse definido previamente. El linkador genera el banco apropiado que selecciona el código . En esencia para los dispositivos de 12 bits, las instrucciones de set/clear se generan los bit apropiados en el FSR. Para los dispositivos de 14 bits, se generan las instrucciones de set/clearde los bit del registro de STATUS. Para los dispositivos de 16 bits, se generan instrucciones MOVLB o MOVLR . Para dispositivos de 16 bits reforzados se generan MOVLB. Si el dispositivo contiene sólo un banco RAM, no se genera ninguna instrucción. Para más información ver el Capítulo 6. Ejemplo:
banksel
Var1
movwf Var1 Mirar también en: BANKISEL PAGESEL
Volver a la tabla de directivas
CBLOCK± Define a Block of Constants Sintaxis cblock []
[:][,[:]] endc Descripción
Defina una lista de constantes definidas (por un nombre). A cada se le asigna un valor inmediatamente superior que al anterior . El propósito de esta directiva es asignar direccines a muchas et iquetas. La lista finaliza cuando se encuentra la directiva ENDC.
indica el valor de arranque para el primer nombre del bloque de etiquetas. Si no se asigna en la expresión, la primera variable recibirá un valor superior al de la variable final del CBLOCK anterior. Si el primer CBLOCK en el archivo fuente no tiene ningún , los valores asignados empiezan con el cero. Si se especifica, entonces a la próxima se le asigna el valor de superior a la anterior . Pueden darse los nombres múltiples en una línea, separada por las comas. Ejemplo
cblock 0x20
; a la primera variable se le asigna el valor 20
name_1, name_2
; name_2, se le asigna el valor 21
name_3, name_4
; name_4 se le asigna 23.
endc cblock 0x30 TwoByteVar: 0, TwoByteHigh, TwoByteLow Queue: QUEUE-SIZE QueueHeadmQueueTail Double1:2, Double2:2 endc
Mirartambiénen ENDC
Volver a la tabla de directivas
CODE ±Empieza la sección de código de un Archivo Objeto
Sintaxis
[] CODE [] Descripción
Se usa para generar un archivo del objeto. Declara el principio de una sección de código del programa. Si < etiqueta> no se especifica, la sección se nombra .code. empezando en la dirección siguiente a la dirección especificada o se asignará al eslabón tiempo si ninguna dirección se especifica.
Ejemplo
RESET
code H¶01FF¶ goto START
Mirar también en: EXTERN
GLOBAL
UDATA _ OVR
IDATA
UDATA
UDATA _ ACS
UDATA _ SHR
Nota: Dos secciones del mismo archivo fuente no pueden tener el mismo nombre.
Volver a la tabla de directivas
_ _ CONFIG ± Configuración de los bit de configuración de procesador Sintaxis
_ _config OR _ _config,
Descripción
Fija los bit de configuración del procesador con el valor descrito por la expresión Para los dispositivos PIC18CXX, la dirección de la palabra de configuración también debe ser especificada por . Ver en el manual de referencia de los microcontroladores la descripción elos bit de la palabra de configuración para cada microcontrolador. Antes de utilizar esta directiva, debe declararse med iante la directiva LIST o la directiva PROCESSOR. Si esta directiva se usa en la familia de los PIC17CXX, el archivo Hexadecimal debe ponerse en formato INHX32 utilizando la directiva LIST.
Ejemplo LIST P=12ce519 ,n=66 INCLUDE _ CONFIG CP_OFF&WDT_ON & MCLRE _ ON &IntRC_OSC
La primera línea de directivas indica que el número de líneas que se incluirá en el listado de una página. La segunda línea indica al compilador el fichero que deberá incluir en la compilación, en este caso es el archivo que incluye las declaraciones para el microcontrolador PIC12C519. En la tercera línea apararen los bit para la configuración del modo de funcionamiento. Al compilar el programa estos bits se configuran por defecto y se incluyen en el archivo hexadecimal que se genera, el cual se traslada al microcontrolador en la fase de grabación. Se puede deducir fácilmente que con esta línea la configuración queda de la siguiente manera: no se protege el código, se habilita el WDT, el MCR será externo y el tipo de oscilador será interno por RC.
Mirar también en:
_ _ IDLOCS
LIST
PROCESSOR
Volver a la tabla de directivas
CONSTANT.- Declara los símbolos de las constantes Sintaxis
constant= [...,=] Descripción
Crea los símbolos para el uso de las expresiones del MPASM. No pueden ponerse a cero las constantes una vez se ha inicializado, y la expresión deber ser totalmente admitida en el momento de la asignación. Esta es la diferencia principal entre las constantes (CONSTANT) y aquellas que se definen co mo variables (VARIABLE) o aquellas creadas por la directiva SET. Por otra parte pueden usarse constantes y variables intercambiables en las expresiones. Ejemplo
variableRecLength=64
; Poner por defecto ; RecLength
constantBufLength=512
; InitBufLength
.
; RecLength may
.
; be reset later
.
; inRecLength=128
.
;
constantMaxMem=RecLength+BufLength ;CalcMaxMem
Mirar también en: SET
VARIABLE
Volver a la tabla de directivas
DATA ± Crea Datos numéricos y de Texto Sintaxis
[]data ,[,,...,] []data ³´[,´´,...] Descripción
Esta directiva inicializa una o más palabras de memoria de programa con los datos de la expresión. Estos datos pueden ser en forma de constantes, reubicable o etiquetas externas, o expresiones formadas por cualquiera de las anteriores. Los datos también pueden ser un carácter ASCII, , entre comillas simples para caracteres o entre dobles comillas para cadenas de caracteres. Ejemplo
data reloc_label+10
; constante
data 1,2,ext_label
; constante, esterna
data ³hola 1,2,3´
;cadena de caracteres
data µN¶
; carácter sencillo
datastart_of_program ; etiquetarecolocable Mirar También en: DW
DB
DE
DT
IDATA
Volver a la tabla de directivas
DB ± Declara datos de un Byte Sintaxis
[] db[,,...,] Descripción
Reserva memoria de programa para palabras de tamaño 8 bits. Las expresiones múltiples continúan llenando los bytes de memoria de forma consecutiva hasta el final de las expresiones. Si el número de datos de las expresiones es impar, el último byte será el cero. Al generar un archivo del objeto, esta directiva también puede usarse para declarar los valores de los datos de inicialización. Para mas información mirar la directiva IDATA. Ejemplo
DB t ,0x0f, µe¶, 0x0f, µs¶ , 0x0f, µt¶ , µ\n¶ Mirar También en: DATA DW
DE
DT
Volver a la tabla de directivas
DE± Define datos en la EPROM Sintaxis
[] de [,,...,