domingo, 1 de junio de 2014

Primeros pasos con el PIC16F84A



Vamos a empezar a toquetear el PIC 16F84A. Es un microcontrolador algo antiguo pero qué nos puede servir para ir tomando contacto con este mundillo.

La idea es ir programandolo aunque sea con una tarea bastante sencilla para ir familiarizandonos con esto. A continuación vemos la disposición de las patillas.


Lo primero que tenemos que hacer es conectarlo tal y como se indica en la siguiente figura.

Una vez conectado nos queda algo como esto:


El microcontrolador se alimenta con una fuente de 5 voltios que la podemos sacar fácilmente con 4 pilas normales(pilas AA). La alimentación va conectada a los pines 5 y 14 del microcontrolador (vss y vdd).

En los pines 15 y 16 deberemos de conectar un reloj. Ponemos un cristal de cuarzo a 4 megahercios conectado a tierra con dos condensadores de 22 picofaradios.

En el pin 4 vamos a poner un pulsador que nos sirva de reset del microcontrolador.

Ahora vamos a crear las entradas y salidas. Para la entrada vamos a poner un pulsador en la pata RA1. Las salidas son dos leds en las patas RA2 y RA3 ( los LED tenemos que ponerle unas resistencias de 330 ).

Una vez tenemos montado el circuito en nuestro protoboard podemos programar el microcontrolador.

Vamos a empezar con un sencillo ejemplo que solamente enciende y apaga los leds de la salida dependiendo si se pulsa o no el pulsador.

El código ensamblador queda de la siguiente manera.

    ; **** Encabezado ****

    list p=16F84A

    #include P16F84A.inc

    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC



    ;**** declaración de variables ***

    CONT EQU 0CH ;Las variables deben de ser a partir de la dirección 0Ch

    CONT2 EQU 0DH

    CONT3 EQU 0EH

;Las declaraciones de las anteriiores variables es a modo de ejemplo, ya que no las usamos en este programa.



    ;**** Configuracion de puertos ***

    Reset org   0x00 ; Aqui comienza el micro.-

    goto  Inicio ; Salto a inicio de mi programa.-

    org   0x05 ; Origen del codigo de programa.-

    Inicio

    bsf   STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-

    movlw b'10011'  ; RA0 y RA1 entrada (1), RA2 y RA3 salida(0)

    movwf TRISA ; Cargamos en TRISA.-

    bcf   STATUS,RP0 ; Paso del Banco 1 al Banco 0



    Estado1

    bsf   PORTA,2 ; encendemos led1

    bcf   PORTA,3 ; Apagamos led2





    Bucle1

    btfss PORTA,1 ; Preguntamos si esta en 1 logico (si es 1 se ignora la siguiente).-

    goto  Estado2 ; Esta a 1 logico, Apagamos Led.-

    goto  Bucle1 ; Testeamos nuevamente la condición del Pulsador.-



    Estado2

    bcf   PORTA,2 ; apaga led1

    bsf   PORTA,3 ; enciende led2



    Bucle2

    btfsc PORTA,1 ; Preguntamos si esta en 0 logico.-

    goto  Estado1 ; Esta a 1 logico, Apagamos Led.-

    goto  Bucle2 ; Testeamos nuevamente la condicion del Pulsador.-


Como se puede ver  existen dos bucles (Bucle1 y Bucle2) que lo que hacen es esperar a que se presione o se suelte el pulsador para saltar al otro bucle y encender o apagar los leds.

El funcionamiento se puede ver en el siguiente video:


Como se puede comprobar, conforme se pulsa en la entrada (introducimos un 0 o 1 lógico), se cambia la salida encendiendo y apagando los led's correspondientes. El pulsador de abajo es el de reset, que hace que se empiece el programa desde el principio.

No hay comentarios:

Publicar un comentario