MICROCONTROLADORES

MICROCONTROLADORES
MICROCONTROLADORES

PIC 16f84 y Primer ejercicio.

Se trata de un microcontrolador de 8 bits. Es un PIC de gama baja, cuyas características podemos resumir en:

- Memoria de 1K x 14 de tipo Flash
- Memoria de datos EEPROM de 64 bytes
- 13 líneas de E/S con control individual
- Frecuencia de funcionamiento máxima de 10 Mhz.
- Cuatro fuentes de interrupción
- Activación de la patita RB0/INT
- Desbordamiento del TMR0
- Cambio de estado en alguna patia RB4-RB7
- Fin de la escritura de la EEPROM de datos
- Temporizador/contador TMR0 programable de 8 bits
- Perro Guardián o WatchDog

Generalmente se encuentra encapsulado en formato DIP18. A continuación puede apreciarse dicho encapsulado y una breve descripción de cada una de las patitas:




- VDD: alimentación.
- VSS: masa.
- OSC1/CLKIN-OSC2/CLKOUT: conexión del oscilador.
- VPP/MCLR: tensión de programación y reset.
- RA0-RA3: líneas de E/S de la puerta A.
- RA4: línea de E/S de la puerta A o entrada de impulsos de reloj para TMR0.
- RB0/INT: línea de E/S de la puerta B o petición de interrupción.
- RB1-RB7: líneas de E/S de la puerta B.

Primer ejercicio (se muestra en el puerto B lo que hay en el puerto A).

Después de algo de teoría comenzamos a aplicar lo aprendido en páginas anteriores de este blog, es importante aclarar que para la comprensión de los ejercicios es necesario bajar y dar un vistazo al manual de Proteus que se encuentra en la zona de entradas de este blog, así como el manual del Compilador CCS. La programación se llevara acabo en el compilador CCS 4.023 el cual se tendrá que buscar y descargar en la red.

Una vez recopilados todos los recursos necesarios empezamos con nuestro primer ejercicio, se trata de un programa para el PIC 16f84, el cual, tiene como objetivo leer el dato del puerto A y mostrarlo en el puerto B.


A continuación mostramos el código del programa en C y una breve explicación del código.

#include <16f84a.h>//PIC a utilizar

#USE DELAY( CLOCK=4000000 ) //Oscilador

#FUSES XT,NOWDT,NOPROTECT,NOPUT//Ordenes para el programador

/////////Programa principal/////////////


void main(void)//Programa Principal

{

int x;//declaramo  x como entero

set_tris_b(0x00);//configuramos el puerto b como salida

set_tris_a(0xff);//configuramos el puerto a como entrada


while(true)//ciclo

{

x=input_a();//pasamos lo que hay en el puerto A a x

output_b(x);//pasamos lo que hay en x al puerto B

}

}
////////////fin del programa principal//////////////

#include <16f84a.h>: Se le indica al programa el PIC con el que se va a trabajar.



#USE DELAY( CLOCK=4000000 ) : Trabajamos con un oscilador de 4MHZ.


#FUSES XT,NOWDT,NOPROTECT,NOPUT: Se ocupa un oscilador externo de cuarzo, no se ocupa el perro guardián, no ocupamos la protección de código.


void main(void): Comienza nuestro programa. Es importante resaltar que todo lo que necesitamos que haga el PIC debe de ir dentro de esta función.


int x: Declaramos una variable llamada x como entero.


set_tris_b(0x00): Ponemos el puerto B como salida (ponemos ceros en el Tris de algun puerto para ocuparlo como salida y unos para ocuparlo como entrada).


set_tris_a(0xff): Ponemos el puerto A como entrada.


while(true): Es una de las tantas formas que tenemos en C para realizar un ciclo, es decir, toda las líneas de programación que estén dentro del While se estarán realizando de forma indefinida.


x=input_a(): Leemos el dato que se encuentra en el puerto A y lo almacenamos en x.


output_b(x): Sacamos hacia el puerto B lo que tenemos en x.

Nota: observamos en el código el uso del símbolo (//), esta es la forma de indicarle a CCS que lo que se escriba después del símbolo es un comentario que solo nos ayuda a organizar nuestro código.

Una vez explicado el programa pasamos a copiar el código en el CCS V4.023 como se muestra en la siguiente figura:


Ahora damos clic en el menú compile:



Si nuestro código no contiene errores el programa generara el .HEX necesario para programarlo en el PIC:



Por ultimo solo nos queda armar el circuito en Proteus y simularlo cargando el .HEX generado por CCS, es importante hacer énfasis que para saber como manejar Protues se necesita bajar y estudiar el manual que se encuentra en una de las entradas de este blog. El circuito es el siguiente: