Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este documento est dirigido para aquellos que deseen empezar con el MPLAB y el
compilador C18, ambos totalmente gratuitos y por mucho, de las herramientas ms
completas para trabajar con todas las familias de microcontroladores PIC, ya que este es
creado y actualizado constantemente por Microchip. El compilador C18 utiliza el ANSI C
(ANSI 89), por lo que para aquellos con conocimientos incluso de los ms bsicos sobre el
lenguaje C, programar en MPLAB utilizando este compilador ser un proceso de lo ms
fcil y ameno.
Esto no pretende ser una gua de uso de estas herramientas, si no que busca ser un
punto de partida para aquellos entusiastas o profesionales inmiscuidos en el mundo de la
electrnica, debido a la falta de explicaciones de principios bsicos, es indispensable
contar con conocimientos previos sobre microcontroladores y el manejo de sus registros,
ya que se emplearan explicaciones simples, pero suponiendo el conocimiento previo de
ciertos temas relacionados. Se propondrn pasos muy simples para estar en cuestin de
minutos creando e implementando nuestras aplicaciones. Entonces teniendo un punto de
referencia se espera que con este documento se despierte el inters y se profundice ms
en el tema.
Las herramientas usadas para este documento son:
Pgina 2
Pgina 3
Vamos a comprobar que todas las rutas estn correctas, para ello expandimos
esta opcin de Microchip C18 Toolsuite para poder observar las rutas a los ejecutables
correspondientes a cada herramienta del compilador.
Pgina 4
Una vez comprobado que todo este correcto, hacemos click en ok, y estamos
listos para empezar a trabajar en nuestro primer proyecto.
Pgina 5
Pgina 6
Pgina 7
Pgina 8
Hay muchas formas de crear archivos, en este caso vamos a hacerlo desde el
espacio de trabajo recin creado. Creamos un nuevo archivo en File->New y este
mismo archivo lo guardamos en donde guardamos nuestro proyecto recin creado,
con el nombre main.c.
Ahora vamos a agregar este archivo al proyecto. Haciendo click con el botn
secundario del mouse sobre la carpeta Source Files que nos aparece en el rbol de
archivos del proyecto.
Pgina 9
PLLDIV
PLLDIV
PLLDIV
PLLDIV
PLLDIV
PLLDIV
PLLDIV
=
=
=
=
=
=
=
2
3
4
5
6
10
12
Divide
Divide
Divide
Divide
Divide
Divide
Divide
by
by
by
by
by
by
by
Src:
Src:
Src:
Src:
/1][96
/2][96
/3][96
/4][96
MHz
MHz
MHz
MHz
PLL
PLL
PLL
PLL
Src:
Src:
Src:
Src:
/2]
/3]
/4]
/6]
Pgina 10
Para ms detalles sobre la configuracin y la lista completa para este micro y otros
modelos, consulta el archivo de ayuda incluido con el compilador C18. Si realizaste la
instalacin estndar del C18, se instala en MCC18, y dentro de docs puedes encontrar el
archivo hlpPIC18ConfigSet con todas las opciones disponibles.
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
config
config
config
config
config
config
config
config
config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
FOSC = XTPLL_XT
PLLDIV = 1
CPUDIV = OSC1_PLL2
PWRT = OFF
BOR = OFF
VREGEN = OFF
WDT = OFF
MCLRE = ON
LPT1OSC = OFF
Una vez configurando el hardware bsico para la correcta operacin del micro, ya
podemos empezar a escribir nuestro cdigo principal.
Pgina 11
4.- El cdigo
Para nuestro primer programa, el clsico hola mundo, vamos a hacer un ciclo
infinito en el cul pongamos el puerto B a 11111111, un pequeo delay y poner el puerto
a 00000000.
Lo primero para lograr esto es configurar el puerto B. Es decir, configurarlo para
funcionar como salida digital, recordemos que algunos pines del puerto b tiene la
opcin de funcionar tanto como salidas/entradas digitales as como anagicas, por lo que
es muy importante haber ajustado de manera correcta, para el puerto B configuramos las
entradas que tienen opcin de ser analgicas para que sean digitales con la configuracin
del fusible PBADEN = OFF (#pragma config PBADEN = OFF).Entonces el cdigo ser el
siguiente:
void main(void)
{
TRISB = 0x00;
while(1)
//Ciclo infinito
{
PORTB = 0x00;
//Puerto B a ceros.
Delay10KTCYx(255);
//Delay
PORTB = 0xFF;
//Puerto B a unos.
Delay10KTCYx(255);
//Delay
}
}
Compilamos el cdigo.
Pgina 12
4. Simulando el cdigo.
Podemos probar que nuestro cdigo funcione con el simulador MPLAB SIM, en vez de
descargar el .hex al microcontrolador. Este simulador es muy bueno tambin para
optimizar el cdigo o detectar errores, ya que podemos simular paso a paso el programa,
observando el comportamiento de los registros internos del micro.
Abrimos el simulador en la barra de herramientas Debugger->Select Tool->MPLAB SI.
Pgina 13
Y nos aparecer la Watch Window. Esta herramienta, nos permite agregar una lista de
registros de inters, en la cual en la simulacin nos mostrara los valores que esos registros
vayan tomando. Tiene la propiedad de indicarnos con un cambio de color (rojo) un
registro que haya sufrido algn cambio.
Vamos a agregar los registros TRISB y PORTB, seleccionando cada registro en la lista y
haciendo click sobre el botn ADD SFR.
Despus de agregar ambos registros, la Watch Window debe estar como la siguiente
imagen.
Pgina 14
Una vez colocado el breakpoint, iniciamos la simulacin. Para esto hacer click sobre el
botn Run.
Despues de iniciar la simulacin podemos observar una flecha verde encima del
breakpoint:
Pgina 15
Esto nos indica que la simulacin se encuentra detenida en ese punto del cdigo, a
partir de este, vamos a simular lnea por lnea.
Vamos a hacer click sobre el botn Step Into para simular una lnea de cdigo, la
que corresponde a TRISB = 0x00;
Avancemos otro paso, para ejecutar la lnea que contiene el cdigo PORTB=0x00. En
caso de que el registro haya iniciado con un valor diferente a 0x00, podremos observar
cmo nos avisa del cambio a 0x00, marcando con rojo el nuevo valor. En caso de que el
registro se haya inicializado con 0x00, no marcara con rojo puesto que no hubo cambio.
Vamos un paso delante de nuevo, para llegar la funcin de retardo. Esta funcin est
contenida dentro de otro archivo el cual hemos incluido con la directiva #include
<delays.h>. As pues, al llegar a esta lnea, se abrir una ventana donde esta contenido ese
cdigo para mostrarnos la simulacin de este.
Hola mundo, MPLAB y C18.
Pgina 16
Pgina 17
config
config
config
config
config
config
config
config
config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
#pragma config
FOSC = XTPLL_XT
PLLDIV = 1
CPUDIV = OSC1_PLL2
PWRT = OFF
BOR = OFF
VREGEN = OFF
WDT = OFF
MCLRE = ON
LPT1OSC = OFF
Pgina 18
/****************************************************
P R O T O T I P O S
*****************************************************/
int ymCfgPorts(void);
/****************************************************
M A I N
*****************************************************/
void main(void)
{
int k;
ymCfgPorts();
while(1)
//Ciclo infinito
{
PORTB = 0x01;
//Puerto B a 0x01
Delay10KTCYx(255);
//Delay
for(k=0;k<7;k++)
//Ciclo for para multiplicacin (corrimiento)
{
PORTB*=2;
//PORTB= PORTB * 2;
Delay10KTCYx(255);
//Delay
}
}
}
/****************************************************
F U N C I O N E S
*****************************************************/
int ymCfgPorts(void)
{
ADCON1 = 0x0F;
TRISA = 0xFF;
TRISB = 0x00;
Pgina 19
Pgina 20