Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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
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++){
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}
}while(TRUE); //...infinito
}
///PROGRAMA
void main(void)
{
signed char i; //variable indice
int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s
do{ //bucle...
}while(TRUE); //...infinito
}
Ahora integraremos los dos programas mediante una librería creada considerando que el pulsador hará el
cambio de efectos.
Ahí escribiremos los dos programas anteriores dentro de la librería para luego ser llamado por el programa
principal (archivo.C)
void main(void)
{
int i,cont; //variables definidas
set_tris_b(0x00); //portb como salida
do{ //bucle...
cont=1; //inicializar...
for(i=1;i<8;i++){
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}
}while(TRUE); //...infinito
}
void main(void)
{
signed char i; //variable indice
int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s
do{ //bucle...
}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.
Escribimos el programa principal en main.c luego compilamos y debe de compilar correctamente creando el
archivo main.hex.
///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
}
Presionamos click derecho dentro del microcontrolador nos vamos a edit Properties