Professional Documents
Culture Documents
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 más
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 más básicos sobre el
lenguaje C, programar en MPLAB utilizando este compilador será un proceso de lo más
fácil y ameno.
Esto no pretende ser una guía 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
electrónica, debido a la falta de explicaciones de principios básicos, 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 propondrán pasos muy simples para estar en cuestión de
minutos creando e implementando nuestras aplicaciones. Entonces teniendo un punto de
referencia se espera que con este documento se despierte el interés y se profundice más
en el tema.
Una vez comprobado que todo este correcto, hacemos click en “ok”, y estamos
listos para empezar a trabajar en nuestro primer proyecto.
Ahora vamos a agregar este archivo al proyecto. Haciendo click con el botón
secundario del mouse sobre la carpeta “Source Files” que nos aparece en el árbol de
archivos del proyecto.
Ahora que ya tenemos configurado todo, podemos empezar a escribir nuestro código.
Lo primero que vamos a hacer es establecer los valores de las palabras de configuración
del microcontrolador y agregar las directivas de preprocesador.
#include <p18f2550.h>
#include <delays.h>
Una vez configurando el hardware básico para la correcta operación del micro, ya
podemos empezar a escribir nuestro código principal.
Para nuestro primer programa, el clásico “hola mundo”, vamos a hacer un ciclo
infinito en el cuál pongamos el puerto B a 11111111, un pequeño 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
opción de funcionar tanto como salidas/entradas digitales así como anaógicas, por lo que
es muy importante haber ajustado de manera correcta, para el puerto B configuramos las
entradas que tienen opción de ser analógicas para que sean digitales con la configuración
del fusible PBADEN = OFF (#pragma config PBADEN = OFF).Entonces el código será el
siguiente:
void main(void)
{
TRISB = 0x00; //Bits del puerto B configurado como salidas.
Compilamos el código.
Podemos probar que nuestro código funcione con el simulador MPLAB SIM, en vez de
descargar el .hex al microcontrolador. Este simulador es muy bueno también para
optimizar el código 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.
Vamos a agregar los registros TRISB y PORTB, seleccionando cada registro en la lista y
haciendo click sobre el botón ADD SFR.
Después de agregar ambos registros, la Watch Window debe estar como la siguiente
imagen.
Una vez colocado el breakpoint, iniciamos la simulación. Para esto hacer click sobre el
botón “Run”.
Despues de iniciar la simulación podemos observar una flecha verde encima del
breakpoint:
Vamos a hacer click sobre el botón “Step Into” para simular una línea de código, la
que corresponde a TRISB = 0x00;
Avancemos otro paso, para ejecutar la línea que contiene el código PORTB=0x00. En
caso de que el registro haya iniciado con un valor diferente a 0x00, podremos observar
cómo 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 función de retardo. Esta función está
contenida dentro de otro archivo el cual hemos incluido con la directiva #include
<delays.h>. Así pues, al llegar a esta línea, se abrirá una ventana donde esta contenido ese
código para mostrarnos la simulación de este.
#include <p18f2550.h>
#include <delays.h>
/****************************************************
P R O T O T I P O S
*****************************************************/
int ymCfgPorts(void);
/****************************************************
M A I N
*****************************************************/
void main(void)
{
int k;
/****************************************************
F U N C I O N E S
*****************************************************/
int ymCfgPorts(void)
{
ADCON1 = 0x0F; //Todas los pines disponibles para anaógico/digital
//condigurados como digitales.
TRISA = 0xFF; //Bits del puerto A configurado como entradas.
TRISB = 0x00; //Bits del puerto B condigurado como salidas.
}