MPLAB IDE | ||
---|---|---|
Información general | ||
Tipo de programa | Ensamblador | |
Desarrollador | Microchip Technology Inc. | |
Licencia | Software propietario | |
Información técnica | ||
Programado en | C++ | |
Versiones | ||
Última versión estable | 8.84 ( 24 de febrero de 2012 (12 años, 8 meses y 23 días)) | |
Archivos legibles | ||
| ||
Archivos editables | ||
| ||
Enlaces | ||
MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip. Este editor es modular, permite seleccionar los distintos microcontroladores soportados, además de permitir la grabación de estos circuitos integrados directamente al programador.
Es un programa que corre bajo Windows, Mac OS y Linux. Presenta las clásicas barras de programa, de menú, de herramientas de estado, etc. El ambiente MPLAB® posee editor de texto, compilador y simulación (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir son:
Una vez realizado esto, se está en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC.
Las directivas son palabras reservadas para indicarle al MPLAB® que funciones debe configurar cuando compile nuestro programa. Las indispensables para la correcta compilación del programa son:
Directiva |
Descripción |
Sintaxis |
CBLOCK |
Defina un Bloque de Constantes. |
cblock [<expr>] |
#DEFINE |
Defina una Etiqueta de Substitución de Texto |
define <name> [<value>] define <name> [<arg>,...,<arg>] <value> |
DT |
Defina Tabla |
[<label>] dt <expr>[,<expr>,...,<expr>] [<label>] dt “<text_string>”[,”<text_string>”,...] |
ELSE |
Empieza el bloque alternativo de un IF |
Else |
END |
Fin de bloque de programa |
End |
ENDIF |
Fin del bloque de condiciones ensambladas |
Endif |
ENDM |
Fin de la definición de una Macro |
Endm |
ENDW |
Fin de un bucle de While |
Endw |
EQU |
Define una constante para el ensamblador |
<label> equ <expr> |
IF |
Empieza un bloque de código condicional |
if <expr> |
#INCLUDE |
Incluye Ficheros fuentes adiccionales |
include <<include_file>> |“<include_file>” |
LIST |
Opciones listado |
list [<list_option>,...,<list_option>] |
MACRO |
Declara la Definición del Macro |
<label> macro [<arg>,...,<arg>] |
ORG |
Pone el Origen del Programa |
<label> org <expr> |
WHILE |
Realiza el bucle Mientras la Condición es Verdadera |
while <expr> |
Una vez escrito y depurado el programa, se procede a la compilación. Para esto, desde el menú PROJECT se elige la opción BUILD ALL (construir todo) que, si no existen errores, devolverá un mensaje como BUILD SUCCESFULL. Los errores que muestra el compilador son del tipo sintácticos, es decir que si el programa "construido" llegara a tener un error, por ejemplo que esperase a que se ponga un bit en “0” y nunca pasase, se estará en un bucle infinito a pesar de que el compilador compilará perfectamente porque no hay error de sintaxis.
También existen mensajes y advertencias; los mensajes pueden ser, por ejemplo, que se está trabajando en un banco de memoria que no es el bank 0, etc. Las advertencias tienen un poco más de peso, por ejemplo: el PIC seleccionado no es el mismo que está definido en el programa, etc. En ambos casos, mensajes y advertencias, la compilación termina satisfactoriamente pero hay que tener en cuenta siempre lo que nos dicen estos para prevenir errores.
Terminada la compilación el MPLAB® nos genera un archivo de extensión .hex el cual es completamente entendible para el PIC. Es decir, solo resta grabarlo al PIC por medio de una interfaz como por ejemplo el programador Picstart Plus de microchip. Una vez completado esto, se alimenta al mismo y el programa ya se estará ejecutando.
Ejemplo:
LIST P = 16F84A; El pic que utilizamos. INCLUDE <p16f84a.inc>;
cblock 0x20;
Dividendo Divisor Cociente Resto Temp; // Dividendo .. para el cociente Temp1; // Para guardar las sumas parciales, en el resto.
endc;
ORG 0 ; Inicio
movlw .13; movwf Dividendo; movlw .4; movwf Divisor; call pcCociente; call pcResiduo; goto $
pcCociente
; Haciendo restas susesivas hallamos el cociente
clrf Cociente; movf Dividendo,0; movwf Temp; movf Divisor,0; bucle subwf Temp,1; btfss STATUS,C; goto Menor incf Cociente,1; goto bucle Menor return
pcResiduo ; Multiplicando el divisor con el cociente , R = D - d*q
clrf Resto; clrf Temp1; movf Cociente,0; movwf Temp; incf Temp,1; movf Divisor,0; bucle1 decfsz Temp,1; goto tried; movf Temp1,0; subwf Dividendo,0 movwf Resto; return
tried addwf Temp1,1; goto bucle1 end