Está en la página 1de 13

LIBRERÍA PARA MICROCONTROLADORES

PIC 16F628A

El pic16F628A es un microcontrolador de 8 bit, Posee una arquitectura RISC avanzada, así como un juego
reducido de 35 instrucciones (Instrucciones posibles a utilizar, si se programa en lenguaje ensamblador).

En pocas palabras la arquitectura RISC: Son computadoras con un conjunto de instrucciones reducido.

Este microcontrolador es el remplazo del obsoleto pic16f84a, por ende, el pic16f628a es compatibles con el
pic16f84a, gracias a eso se puede cambiar los proyectos que hayan hecho para en f84 al f628 sin ningún
problema.

La distribución de los pines de entradas y salidas del PIC es:

LIBRERIAS EN CCS COMPILER

Las librerías son un grupo de archivos que tienen una funcionalidad pre-construida por terceros, y que puede
ser usadas por cualquier ejecutable.

Las librerías contienen en su interior variables y funciones, se conoce como librerías (o bibliotecas) a cierto
tipo de archivos que podemos importar o incluir en nuestro programa.

Ing. William Manuel Tapia Cruz


PASOS PARA CREAR UN PROYECTO USANDO LIBRERÍA CREADA

Para crear un proyecto usando librería creada vamos a utilizar este circuito esquemático

Es el mismo proyecto que lo hemos venido realizando solo agregaremos un botón pulsador el cual consiste
en crear dos efectos (juego de luces) diferentes los cuales serán controlados por el pulsador.

Creamos una carpeta donde ira nuestro programa y nuestro circuito simulado en proteus

Vale recordar anteriores programas que realizaban diferentes efectos de luces del auto fantástico

Ing. William Manuel Tapia Cruz


Programa juego de luces del auto fantástico (luces secuenciales de izquierda a derecha)

#include <16f628a.h> //pic a utilizar


#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //órdenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(B) //puerto B como salida

void main(void)
{
int i,cont; //variables definidas
set_tris_b(0x00); //portb como salida
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
do{ //bucle...
cont=1; //inicializar...

for(i=1;i<8;i++){ //led"s on derecha


output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont*2;
}

for(i=1;i<8;i++){
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}

}while(TRUE); //...infinito
}

Programa juego de luces del auto fantástico (luces tipo cortina)

#include <16f628a.h> //pic a utilizar


#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(B) //puerto B

///PROGRAMA
void main(void)
{
signed char i; //variable indice
int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s

set_tris_b(0x00); //portb como salida


disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //bucle...

for(i=0;i<4;i++){ //led"s on fuera-dentro


output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}
for(i=3;i>-1;i--){ //led"s on dentro-fuera
output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}

}while(TRUE); //...infinito
}

Ing. William Manuel Tapia Cruz


Los 2 programas simulados e implementados funcionando correctamente

Ahora integraremos los dos programas mediante una librería creada considerando que el pulsador hará el
cambio de efectos.

Ing. William Manuel Tapia Cruz


Utilizamos ccs compiler

Vamos a New después Source File

Ing. William Manuel Tapia Cruz


Comprobamos que estamos en la carpeta que creamos dentro de la carpeta crear un archivo.h en este caso
cree el archivo luces.h le damos guardar

Nos queda algo así

Ahí escribiremos los dos programas anteriores dentro de la librería para luego ser llamado por el programa
principal (archivo.C)

Ing. William Manuel Tapia Cruz


CODIGO:

#include <16f628a.h> //pic a utilizar


#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //órdenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(B) //puerto B como salida

void main(void)
{
int i,cont; //variables definidas
set_tris_b(0x00); //portb como salida

Ing. William Manuel Tapia Cruz


disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //bucle...
cont=1; //inicializar...

for(i=1;i<8;i++){ //led"s on derecha


output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont*2;
}

for(i=1;i<8;i++){
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}

}while(TRUE); //...infinito
}

#include <16f628a.h> //pic a utilizar


#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(B) //puerto B

void main(void)
{
signed char i; //variable indice
int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s

set_tris_b(0x00); //portb como salida


disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //bucle...

for(i=0;i<4;i++){ //led"s on fuera-dentro


output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}
for(i=3;i>-1;i--){ //led"s on dentro-fuera
output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}

}while(TRUE); //...infinito
}

Lo que esta con Amarillo no va por lo que en el programa principal ya está contemplado el microcontrolador,
los fuses y la frecuencia de reloj.

Lo que está en verde es un buble infinito por eso no está contemplado en la librería.

Lo que está en rojo main ya no será la función principal al tener un programa principal (archivo.c) no puede
haber varios y se cambia por un nombre el cual en el programa principal serán llamados.

Ing. William Manuel Tapia Cruz


Procedemos a guardar la librería creada

Ahora creamos el programa principal al cual llamaremos main (principal en español)

Nosnos vamos de nuevo a File + New + Source File

Ing. William Manuel Tapia Cruz


Entonces escribimos main.c y le damos guardar si vemos la carpeta podemos observar que la librería luces ha
sido creada y está en la misma carpeta

Escribimos el programa principal en main.c luego compilamos y debe de compilar correctamente creando el
archivo main.hex.

Ing. William Manuel Tapia Cruz


CODIGO:

#include <16f628a.h> //pic a utilizar

#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador


#use delay (clock=4000000) //Fosc=4Mhz
#include <luces.h> //nuestra libreria para las funciones
#use standard_io(B)
#use standard_io(A)

///PROGRAMA
void main(void)
{
set_tris_a(0xFF); //porta como entrada
set_tris_b(0x00); //portb como salida
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //bucle...
if(!input(PIN_A0)) //¿switch cerrado?
juego_luces_1(); //SI ->ejecuta coche fantastico(kit)
else
juego_luces_2(); //NO ->ejecuta juego luces
}while(TRUE); //...infinito
}

Para comprobar si funciona:

Presionamos click derecho dentro del microcontrolador nos vamos a edit Properties

Nos dirigimos a Program file

Ing. William Manuel Tapia Cruz


Buscamos dentro de la carpeta donde se compilo el programa y se creó el archivo.hex (main.hex) y lo damos
abrir

Una vez que se cargó le damos ok

Ing. William Manuel Tapia Cruz


Le damos play y comprobamos el primer programa Juego_luces_1

Presionamos el botón para que cambie a Juego_luces_2

Ing. William Manuel Tapia Cruz

También podría gustarte