Escolar Documentos
Profissional Documentos
Cultura Documentos
Saludos:
Pero primero:
Por qu XC8?
Pues bien, no hay otra opcin. Cuando Microchip lanz las primeras versiones de MplabX,
sta utilizaba los compiladores C18 y C30 para la programacin en C. La versin ms
reciente (2.15) trabaja con XC8, XC16 y XC32, as que no nos queda ms que aprender a
utilizar las nuevas herramientas.
Por eso tambin me toc aprender el XC8, es una pena que se cambie tan rpido (en menos de
2 aos) las herramientas de desarrollo, pero qu ms podemos hacer?
Pues es la ms fcil de aprender, y adems estos microcontroladores son los que se pueden
conseguir en Cuenca-Ecuador. Si quieres que haga un tutorial sobre otro microcontrolador,
pues sus regalos sern bienvenidos ;-).
Utilizar las herramientas de Microchip para proyectos de baja complejidad, es decir, a los
proyectos en los cuales no se requiera exactitud en tiempos, altas velocidades, etc. Esto pues
si queremos que un retardo dure exactamente un segundo, ni un microsegundo ms,
requeriremos realizar la programacin en ensamblador, y no en C como se tiene planificado.
Pero no te desanimes, se toparn temas complejos como la utilizacin de LCDs grficos a
colores, memorias SD, etc. Siempre teniendo en cuenta el funcionamiento real del
microcontrolador. A qu quiero llegar con esto?, pues bien, si tu objetivo es meramente
utilizar un mdulo GPS, GSM, USB, GLCD o similar, sin saber a fondo cmo enva los datos
el micro, pues este tutorial no es para ti. Para eso se utiliza Arduino o Pinguino ( los cuales
abarcaremos en otra oportunidad).
Primero instalamos MPLabX, y luego el compilador XC8. Una vez hecho iniciamos el
programa y veremos la siguiente pantalla:
A continuacin nos pedir el tipo de conexin para el debugger, para el cual seleccionamos
"None" y damos click en siguiente. Despus no pedir la herramienta de depuracin a
utilizar, para la cual seleccionamos "Simulador" (esto puede ser diferente si tienes un
programador que pueda realizar depuracin).
Hacemos click en Finalizar, y se crear el directorio base para nuestro proyecto, el cual se
muestra en la figura.
Borramos el contenido por defecto que crea MPLABX en el archivo de encabezado para
cargar nuestro propio cdigo. En este archivo ingresaremos los bits de configuracin del
microcontrolador, es decir, las directivas para programacin en alto o bajo voltaje, la
configuracin del oscilador, etc. Para esto existe una herramienta que nos permite generar el
cdigo requerido, la cual se encuentra en Window>PIC Memory Views>Configuration Bits
MCLRE: desactivado
LVP: desactivado
2)
Crear
un
archivo
fuente
con
el
cdigo
del
programa
Una vez creado el encabezado, podemos crear el cdigo fuente de la aplicacin, para lo cual
hacemos click derecho en Source Files>New>C Main File
Le damos un nombre al archivo e ingresamos el cdigo fuente del mismo. Dicho cdigo es el
siguiente:
/*
* File: hmheader.h
* Author: JosDarw
*
* Created on 21 de enero de 2017, 11:07 p.m.
*/
// PIC16F628A Configuration Bit Settings
// 'C' source line config statements
#include <xc.h>
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC
oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on
RA7/OSC1/CLKIN)
#pragma config WDTE = OFF
disabled)
___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
___
/*
* File: hmmain.c
* Author: JosDarw
*
* Created on 21 de enero de 2017, 11:28 p.m.
*/
#include <stdio.h>
#include <stdlib.h>
#include "hmheader.h"
#define
_XTAL_FREQ
cristal para los retardos
4000000
/
*============================================
==================================
Inicializar puertos, esta funcin es llamada luego en el main().
=============================================
=================================*/
void initPorts(void)
{
TRISB = 0b00000000;
PORTB = 0;
}
/
*============================================
==================================
Bucle principal
=============================================
=================================*/
int main(void)
{
// Inicializar puertos y perifricos
initPorts();
// Repetir indefinidamente
while(1)
{
// prender puerto B
PORTB = 0b11111111;
_delay(1000000); //retardo de 1 milln de pulsos de reloj
// apagar puerto b
PORTB = 0b00000000;
_delay(1000000);
}
}
___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
___
segundo de retardo con el oscilador interno de 4MHz. Esto se debe tener en cuenta,
pues si utilizamos un oscilador de 20 MHZ, un retardo de 1 milln de pulsos de reloj
nos equivale a 200ms.
El tiempo de retardo se calcula de la siguiente manera:
Volvemos a iniciar la simulacin, y veremos que el lo que deba haber durado 2 segundos, en
realidad dur 2.000033 segundos.
Pues bien, este resultado no es una sorpresa para los que ya han programado en ensamblador,
pues los retardos se calculan en funcin del nmero de ciclos que toma cada directiva del
cdigo, y el tiempo de ciclo del reloj, pero es algo que quera recalcar pues muchos
estudiantes o aficionados inician su aprendizaje en MPLABX y desconocen que si en el
cdigo le digo al micro que se demore 1 segundo en una actividad, esto puede no ser siempre
Por ltimo, haciendo doble click sobre el micro, cambiamos la velocidad del oscilador, y
cargamos el archivo .hex de la carpeta "dist>default>production" del proyecto.