Está en la página 1de 26

MICROCONTROLADOR PIC I

CLASE II
INTRODUCCIN A LOS MICROCONTROLADORES PIC
16F
COMPILADOR XC8 EN MPLABX
DESARROLLO DE LENGUAJE C

INTRODUCCION A LOS MICROCONTROLADORES


PIC
Qu es un
microcontrolador?
Diferencias frente a un
microprocesador?
Capacidad de clculo, donde
nos ubicamos en el universo
de marcas y modelos.
Fuente imagen : Mikro C
PIC_I: LENGUAJE C

CIDIACCTEC

INTRODUCCION A LOS MICROCONTROLADORES


PIC
Qu es un microcontrolador?
Es un circuito integrado capaz de realizar tareas en forma autnoma, las cuales
fueron programadas previamente en un entorno de desarrollo en el
computador y luego grabadas en la memoria interna del circuito integrado para
su ejecucin en la aplicacin.
Un microcontrolador est compuesta de 3 etapas:
Micro-procesador: Seccin dedicada a los clculos(tareas) matemticos que procesan datos o
direcciones de memoria.
Perifricos Internos: Secciones adicionales que brindan apoyo al procesador realizando
clculos(tareas) especficos, liberando a este ltimo de dicho trabajo para realizar otras tareas.
Entradas y salidas de propsito general(GPIO): son las salida y entradas al microcontrolador
para transmitir o enviar datos al mundo exterior, pueden ser digitales(0 y 1) o analgicas.
PIC_I: LENGUAJE C

CIDIACCTEC

ESTRUCTURA INTERNA PIC16F


Fuente: datasheet 16F877A

Rojo: procesador
Azul: perifricos
Verde: entradas y salidas

PIC_I: LENGUAJE C

CIDIACCTEC

PROCESADOR
El procesador cuenta con diversos elementos que permiten
configurar su trabajo de procesar datos, estn disponibles de ser
usados en forma de instrucciones que se almacenan en la
memoria de Programa y que son cargadas luego en ejecucin.
La forma de configurar el microcontrolador a travs de
instrucciones es llamada programacin en bajo nivel, conocida
como ensamblador y utiliza la direccin de memoria (registros)
para la carga de datos que configuran las etapas del procesador,
perifricos, entradas y salidas del microcontrolador.
En el presente curso haremos uso del lenguaje C,
especficamente con el compilador XC8 de Microchip, por estos
3 motivos:
Utilizamos un lenguaje de Alto nivel para programar al microcontrolador
haciendo uso de sus registros(bajo nivel).
Conoceremos la funcionalidad del microcontrolador a travs de la
configuracin de sus registros para los perifricos externos y las entradas y
salidas de datos.
El entorno de desarrollo as como el compilador son de uso gratuito y
brindados por el mismo fabricante.

PIC_I: LENGUAJE C

CIDIACCTEC

REGISTRO DE TRABAJO Y ALU

W: Registro de Trabajo
ALU: Unidad aritmtica lgica

PIC_I: LENGUAJE C

CIDIACCTEC

INSTRUCCIONES

Memoria de Programa: Almacena instrucciones que ejecutar el PIC


Memoria de Datos: Almacena temporalmente los datos del proceso del PIC
Operaciones de byte orientado a los registros

PIC_I: LENGUAJE C

CIDIACCTEC

INSTRUCCIONES

Operaciones de bit orientados a registros

Operaciones de literales y control

PIC_I: LENGUAJE C

CIDIACCTEC

MPLABX Y COMPILADOR LENGUAJE C XC8

Para al creacin de los programas


a realizar en el microcontrolador
PIC, haremos uso del software de
desarrollo
MPLABX
de
Microchip. Imagen 1.
Dentro del entorno crearemos un
nuevo proyecto, nos dirigimos a
File > New Project. Imagen 2.

PIC_I: LENGUAJE C

CIDIACCTEC

MPLABX Y COMPILADOR LENGUAJE C XC8

En la nueva ventana seleccionamos


en
categories>Microchip
Embedded
y
luego
en
Projects>Standalone Project y
Next. Imagen 1.
Luego en a la siguiente ventana
seleccionamos la familia y modelo
de PIC del cual haremos uso, en este
caso ser: Mid Range 8-bit MCUS
y el modelo PIC16F877A, luego
Next. Imagen 2.

PIC_I: LENGUAJE C

CIDIACCTEC

MPLABX Y COMPILADOR LENGUAJE C XC8

A continuacin seleccionamos las


herramientas de la que haremos uso
para el programa desarrollado y
elegimos simularlo o directamente
programarlo. Esto en funcin del
software y hardware que tengamos
disponible. Seleccionamos pickit2 o
simulator, luego en Next. Imagen 1.
Luego seleccionamos el compilador
para el desarrollo del programa para
el
PIC,
tenemos
disponible
el
assembler o el XC8, elegimos el que
ms nos convenga, luego Next.
Imagen 2.

PIC_I: LENGUAJE C

CIDIACCTEC

MPLABX Y COMPILADOR LENGUAJE C XC8

Finalmente debemos escribir el


nombre de nuestro proyecto, as
como su ubicacin, el standard de
codificacin
lo
dejamos
por
defecto.
En la parte superior izquierda del
IDE MPLABX aparece un elemento,
es nuestro proyecto, que al
desplegarlo
muestra
las
subcarpetas
que
contendrn
nuestro cdigo.
En la parte inferior podemos
observar estadsticas relacionadas
al programa y el microcontrolador,
PIC_I: LENGUAJE
como C tamao
de
programa,
CIDIACCTEC

PRIMEROS PROGRAMAS
Dentro
de
nuestro
proyecto
podemos
crear
directamente
nuestro primer programa en C.
En la carpeta Sources, damos
click derecho y selecionamos
new> C Main File, nos pedir que
ingresemos un nombre y si
deseamos cambiar la ubicacin.
En la imagen 1, podemos
observar el contenido de dicho
archivo, el cual modificaremos
para nuestro diseo.
PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

En el archivo principal que hemos creado,


tenemos dos partes definidas:
Bibliotecas: Agregan archivos adicionales
que nos permiten utilizar funciones en C
para la configuracin del microcontrolador
PIC, o para la manipulacin de datos de un
programa en C.
Funcin principal: Aqu es donde
escribiremos nuestro programa el cual ser
posteriormente compilado, convertido en un
archivo *.asm y luego en un *.hex,
siendo este ltimo el cual se carga en el
microcontrolador o en la simulacin.

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

En este nuevo archivo agregaremos las siguientes sentencias.


#include <xc.h> : biblioteca que contiene las
definiciones de nombres de los registros especiales de
memoria, que nos permiten configurar el PIC para su
uso, adems de funciones adicionales para la operacin
de los perifricos del microcontrolador.
#define _XTAL_FREQ XXXXXXXX: Velocidad
Cristal
#pragma FUSESX: Configuracin de Bits de Fuses, nos
permite establecer los valores iniciales de los fuses del
microcontrolador, ests opciones estn disponibles en
todo el PIC, independiente del funcionamiento del
mismo.
void main() {}: Aqu escribiremos el cdigo que
ejecutara el PIC, pero solo una vez.
While(1){}: Es una funcin ubicada dentro main(){},
permite ejecutar el cdigo indefinidamente, para la
ejecucin repetitiva del microcontrolador.

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

Para nuestro primer programa haremos que


el microcontrolador PIC encienda y apague
un led en el pin B0 del puerto B(Proteus),
durante segundo en cada estado. Imagen
1 >>

PIC_I: LENGUAJE C

CIDIACCTEC

En el cdigo hacemos uso de las sentencias:


TRISX: configurar modo del puerto X
PROTX : establece valor en el puerto X
Adicionalmente de la funcin __delay_ms(x),
el cual proporciona retardos por software en el
orden de milisegundos. Finalmente compilamos
haciendo click en el icono
<< Imagen 2

PRIMEROS PROGRAMAS

Cargamos el archivo *.hex creado en el


simulador, este archivo se encuentra en la
carpeta de trabajo donde se guardo el
proyecto,
en
la
ruta
dist\default\production\CLASE11.X.produ
ction.hex.
Luego observamos el encendido del led en
el simulador.
En la parte inferior derecho observamos las
estadsticas del programa que acabamos de
compilar, donde se resalta el uso de
memoria de programa y datos, por parte del
PIC para dicho programa compilado, es
importante tomarlo en cuenta.

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

Podemos incluir otro archivo C main, para un


nuevo programa pero eliminando el anterior, sin
embargo al hacer esta tarea deberemos incluir un
archivo de cabecera llamado XC8.h el cual
contiene la configuracin de bits de fuses y
velocidad del cristal.
Podemos crear un archivo cabecera *.h con
estos cdigos incluidos, as solo nos limitaremos
a crear los programas de ejecucin para el PIC.
Para ello damos click en Header File, y clic
derecho para agregar un C Header File, con las
siguientes sentencias. Imagen 1 >>

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

Ahora en nuestro archivo principal, bastar


con el cdigo siguiente, ya que el resto est
implcito en la llamada.
Observar en la imagen el cdigo y la
inclusin de la biblioteca XC8.h antes
creada.
Finalmente comprobamos en a simulacin
en Proteus o en nuestro hardware la
equivalencia de acciones del cdigo.

PIC_I: LENGUAJE C

CIDIACCTEC

LENGUAJE C
El lenguaje C, es un lenguaje de programacin
estructurado, ya que est basado en los siguientes 4
aspectos principales del paradigma de programacin
estructurado:
Funciones: printf(), atoi(), etc.
Bloques de secuencia(rutinas): funciones propias
Seleccin: IF-ELSE,
SWITCH-CASE
Bucle: While(), FOR(;;);
PIC_I: LENGUAJE C

CIDIACCTEC

FUNCIONES
Son aquellas rutinas que reciben valores y/o
devuelven valores, o que actan como
procedimientos.
Son desarrolladas en las bibliotecas pre-definidas por
defecto:
Printf(), sqrt(),
Scanf(), pow(),
For(;;), while(), etc.

O pueden ser desarrolladas por el programador.


PIC_I: LENGUAJE C

CIDIACCTEC

SUBRUTINAS(FUNCIONES
PROPIAS)

Son bloques de cdigos declarados


en el programa principal, pero que
son llamados como si fueran un
cdigo.
Es similar a la funcin.
PIC_I: LENGUAJE C

CIDIACCTEC

ESTRUCTURAS DE DECISIN
IF-ELSE: Verifica
veracidad de
expresin(condicin)
verdadero o falso.
SWITCH-CASE:
Seleccin mltiple de
opciones de una misma
expresin(condicin).
PIC_I: LENGUAJE C

CIDIACCTEC

CONEXIN PIC
Alimentacin de 5V
Reset
desactivado(MCLR=1)

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

Lectura de estado de un pulsador y con su estado en


valor 1(high) encendemos un LED.
Hacemos uso de la sentencia de decisin IF-ELSE.
Verificando el estado del registro PORTB, configurando
previamente el registro TRISB como entrada, cargando el
valor 1 en el bit correspondiente en el pin.

PIC_I: LENGUAJE C

CIDIACCTEC

PRIMEROS PROGRAMAS

Lectura con antirebote de estado de un pulsador y


con su estado en valor 1(high) encendemos un LED.
Hacemos uso de la sentencia de decisin IF-ELSE.
Verificando el estado del registro PORTB, configurando
previamente el registro TRISB como entrada, cargando el
valor 1 en el bit correspondiente en el pin.

PIC_I: LENGUAJE C

CIDIACCTEC

También podría gustarte