Está en la página 1de 12

Directivas del MPLAB

Curso de Microcontroladores
PIC

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

Directivas
„ Son comandos insertados en el programa
que controlan el proceso de ensamblado
„ No tienen traducción al código máquina
„ También se les denomina
“pseudoinstrucciones”.
„ Suelen escribirse en la segunda columna y
en mayúsculas, aunque no es obligatorio.

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

1
END
„ End Program Block. Indica fin de
programa.
„ Es la única directiva obligatoria ya que el
ensamblador necesita saber donde
termina el proceso de ensamblado.
„ Se pone en la última línea del programa.
Todas las líneas posteriores a la línea en la
que se encuentra esta directiva son
ignoradas y no se ensamblan.

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

ORG
(Set Program Origin). Su sintaxis es:
[<label>] ORG <expr>
„ Indica al programa ensamblador a partir
de que posición de memoria de programa
tiene que ensamblar las instrucciones.
„ Ejemplo: ORG 0x04
„ Si las instrucciones de un programa
comienzan a escribirse sin indicar ORG, el
ensamblador toma por defecto ORG 0x00
„ Pueden escribirse varios ORG en el mismo
programa
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

2
EQU
(Define an Assembler Constant). Su sintaxis
es:
<label> EQU <expr>
„ Es una etiqueta de asignación. El valor
<expr> es asignado a la etiqueta <label>.
„ Usualmente las asignaciones EQU se
ponen al principio del programa (antes
que las instrucciones)
„ Siempre que <label> aparece en el
programa es sustituido por el valor
numérico de la expresión que se le haya
asignado.
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

_ _ CONFIG
„ Esta directiva indica la configuración elegida para
el proceso de grabación del microcontrolador.

„ Ejemplo:
__CONFIG _CP_OFF
_CP_OFF & _WDT_OFF
_WDT_OFF & PWRTE_ON & _XT_OSC
_XT_OSC

En este caso la configuración elegida es:


• No hay protección de código (_CP_OFF
(_CP_OFF))
• No se habilita el Watchdog (_WDT_OFF
(_WDT_OFF))
• Se habilita el Reset mediante Power-
Power-up Timer
(_PWRTE_ON
(_PWRTE_ON). ).
• Se utiliza el oscilador por cristal de cuarzo (_XT_OSC
(_XT_OSC))

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

3
LIST P= <tipe>
„ Indica el tipo de procesador utilizado.
„ Ejemplo:
LIST P=16F84A

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

INCLUDE
„ Incluye ficheros fuente adiccionales
„ El archivo especificado se lee como
código fuente.
„ El efecto es igual que si el texto
entero del archivo INCLUDE se
pusiera aquí.
„ Ejemplo:
INCLUDE <P16F84A.INC>
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

4
MESSG
„ Permite crear mensajes definidos por
el usuario que aparecen al finalizar el
proceso de ensamblado y en el
fichero listable *.lst
„ El mensaje puede tener hasta 80
caracteres.
„ Su sintaxis es:
MESSG “<message_text>”
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

ERROR
„ Genera un mensaje de error idéntico a
cualquier error del ensamblador MPASM.
„ Si el proceso de ensamblado ejecuta esta
directiva, aparece una pantalla de error.
„ El texto del mensaje no puede tener mas
de 80 caracteres.
„ Su sintaxis es:
ERROR “<text string>”

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

5
(1)
ERRORLEVEL
„ Set Message Level: Situa el nivel de
Error. Define los tipos de mensajes
que se guardan en el fichero lst y de
errores.
„ Sintaxis:
Errorlavel 0|1|2|<+|-> <msgnum>

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

(2)
ERRORLEVEL
Errorlavel 0|1|2|<+|-
|1|2|<+|-> <msgnum
<msgnum>
>

Si se pone Afecta

0 mensajes., advertencias e imposición


de errores
1 Se imprimen advertencias y errores

2 Imprime errores

-<msgnum>
msgnum> Inhibe impresión del mensaje
<msgnum>
msgnum>
+<msgnum
+<msgnum>
> Habilita impresión del mensaje
<msgnum>
msgnum>
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

6
(1)

IF y ENDIF
„ Estas directivas limitan el principio y el final de
un bloque condicional de ensamblado
„ Su sintaxis es:
IF <expr
<expr> >
...............
ENDIF
„ Si <expr
<expr> > es verdad, el código inmediato al IF se
ensamblará. En caso contrario las instrucciones
siguientes se saltan hasta encontrar un directiva
ELSE o una directiva ENDIF.

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

(2)

IF y ENDIF
„ Ejemplo:

..............................................
IF (Fin_Tabla
(Fin_Tabla>0xFF)
>0xFF)
ERROR “Cuidado!:La tabla ha superado el tamaño de la pagina de los”
los”
MESSG “primeros 256 bytes de memoria ROM. No funcionará correctamente”
correctamente”
MESSG “Para solucionarlo, procurad situar esta subrutina de manera
manera que”
MESSG “no supere est posición o leer nota de aplicación AN566”
ENDIF

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

7
ELSE
„ Usada junto la directiva IF para
proporcionar un camino alternativo
de ensamblado si al evaluar la
condición es falsa. ELSE puede
usarse dentro de un bloque de
programa o en una macro.

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

DE
„ Reserva palabras de memoria de 8 bits en
la memoria EEPROM de datos.
„ Sintaxis:
[<label
[<label>]
>] DE <expr>[,<
expr>[,<expr
expr>,
>, ...<expr
...<expr>]
>]
„ Cada expresión reserva un valor de 8 bits.
„ Cada carácter de una expresión se guarda
en una posición separada.
„ Ejemplo:
ORG 0x2100 ;Corresponde con la zona
;de memoria EEPROM
DE “Programa EEPROM_04 Versión 2.5 5 de Junio de 2004”, 0x00

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

8
DEFINE
„ Define un cadena de sustitución de texto.
Donde quiera que se encuentre <name>
en el ensamblador se sustituirá por
<string>
„ Sintaxis:
#DEFINE <name> [<string>]
„ Ejemplo:
#DEFINE LED PORTA,4 ;El led se conecta en la línea 4
..................
bsf LED ;Enciende el LED
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

DT
„ Genera durante la fase de ensamblado tanta instrucciones
retlw como caracteres u octetos la acompañan.
„ Sintaxis
DT “mensaje”,0x10,.15
Esta directiva genera los códigos de operación de las
siguientes instrucciones:
retlw 0x06 ; (‘m’ en ASCII)
retlw 0x65 ; (‘e’ en ASCII)
retlw 0x6E ; (‘n’ en ASCII)
retlw 0x73 ; (‘a’ en ASCII)
retlw 0x61 ; (‘s’ en ASCII)
retlw 0x6A ; (‘j’ en ASCII)
retlw 0x65 ; (‘e’ en ASCII)
retlw 0x10
retlw 0x0F ; (15 en decimal)
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

9
CBLOCK
„ Define una lista de constantes. A cada <label
<label>
> se le asigna un
valor inmediatamente superior que al anterior <label
<label>.
>.
„ El propósito de esta directiva es asignar direcciones a muchas
etiquetas.
„ La lista de etiquetas finaliza cuando se encuentra una directiva
ENDC
„ Sintaxis
CBLOCK <label>[:<
label>[:<increment
increment>][<
>][<label
label>][:<
>][:<increment
increment>]]
>]]
ENDC
„ Ejemplo:
CBLOCK 0x20 ;Las variables se posicionan a partir de la posición 0x20
Unidades ;La variable Unidades ocupa la posición 0x20 de RAM
Decenas ;La variable Unidades ocupa la posición 0x21 de RAM
Centenas ;La variable Unidades ocupa la posición 0x22 de RAM

ENDC

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

ENDC
„ Se escribe al final de una lista de
constantes CBLOCK.
„ Debe escribirse para indicar el fin de
la lista.
„ Mirar directiva CBLOCK

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

10
(1)

MACRO
„ Una macro define el conjunto de instrucciones a
las que se les asigna un nombre.
„ Si el programa fuente incluye el nombre de la
macro, todas las instrucciones que las componen
quedan insertadas en el momento de realizar el
ensamblado formado parte del programa.
„ Sintaxis
<label>
label> MACRO [<arg
[<arg>,<
>,<arg
arg>,....<
>,....<arg
arg>]
>]
............
............
ENDM

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

(2)

MACRO
;MACRO “INCREMENTA”-------------
“INCREMENTA”-------------
;Incrementa el valor (Registro). Pueden ocurrir dos cosas
;- Que (Registro) no supere el valor “Maximo”, entonces salta
; a la etiqueta apuntada por el argumento “Salto”. El flag
; Carry se pone a “1”.
;- Que (Registro) supere el valor “Máximo”, entonces se
; inicializa con el valor del argumento “Minimo”. El carry se
; pone a “0”.
Incrementa MACRO Registro, Minimo,Maximo,Salto
incf Registro,F
movf Registro,W
sublw Maximo
btfsc STATUS,C
goto Salto
movlw Minimo
movwf Registro
ENDM
IES Juan de la Cierva (Madrid). Desarrollo
de Productos Electrónicos

11
ENDM
„ Termina una definición del macro
comenzada por la directiva MACRO.
„ Sintaxis
ENDM

IES Juan de la Cierva (Madrid). Desarrollo


de Productos Electrónicos

12

También podría gustarte