PIC 16F628A: ENCENDER LOS LEDS PARES CON RA0 Y LOS IMPARES CON RA1

Para este circuito se planteó la siguiente lógica:

Al pulsar BTN1, se deben activar los leds ubicados en los puertos RB0, RB2, RB4, RB6.

Luego de pulsar BTN1, se pulsa BTN2 y se deben activar los leds ubicados en los puertos RB1, RB3, RB5 y RB7.

Como estamos en proceso de aprendizaje, para el circuito propuesto se elaboró el siguiente código en assembler (El cual se puede mejorar más adelante).

__CONFIG _FOSC_EXTRCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

LIST P=16F628A

#include <P16F628A.INC>

org 0x00

    bsf STATUS,5; banco 1

    bcf TRISB,0; puerto 0

    bcf TRISB,1; puerto 1 salida

    bcf TRISB,2; puerto 2 salida

    bcf TRISB,3; puerto 3 salida

    bcf TRISB,4; puerto 4 salida

    bcf TRISB,5; puerto 5 salida

    bcf TRISB,6; puerto 6 salida

    bcf TRISB,7; puerto 7 salida

    bsf TRISA,0; puerto 0 entrada

    bsf TRISA,1; puerto 1 entrada

    bcf STATUS,5; banco 0

ini bcf PORTB,0 ;puerto 0 apagado

    bcf PORTB,1 ;puerto 1 apagado

    bcf PORTB,2 ;puerto 2 apagado

    bcf PORTB,3 ;puerto 3 apagado

    bcf PORTB,4 ;puerto 4 apagado

    bcf PORTB,5 ;puerto 5 apagado

    bcf PORTB,6 ;puerto 6 apagado

    bcf PORTB,7 ;puerto 7 apagado

    btfss PORTA,0

    goto $-1

    bsf PORTB,0; puerto 0 encendido

    bsf PORTB,2; puerto 2 encendido

    bsf PORTB,4; puerto 4 encendido

    bsf PORTB,6; puerto 6 encendido

    bcf PORTB,1; puerto 1 apagado

    bcf PORTB,3; puerto 3 apagado

    bcf PORTB,5; puerto 5 apagado

    bcf PORTB,7; puerto 7 apagado

    btfsc PORTA,0

    goto $-1

    bcf PORTB,0 ;puerto 0 apagado

    bcf PORTB,1 ;puerto 1 apagado

    bcf PORTB,2 ;puerto 2 apagado

    bcf PORTB,3 ;puerto 3 apagado

    bcf PORTB,4 ;puerto 4 apagado

    bcf PORTB,5 ;puerto 5 apagado

    bcf PORTB,6 ;puerto 6 apagado

    bcf PORTB,7 ;puerto 7 apagado

    btfss PORTA,1

    goto $-1

    bcf PORTB,0; puerto 0 off

    bcf PORTB,2; puerto 2 off

    bcf PORTB,4; puerto 4 off

    bcf PORTB,6; puerto 6 off

    bsf PORTB,1; puerto 1 on

    bsf PORTB,3; puerto 3 on

    bsf PORTB,5; puerto 5 on

    bsf PORTB,7; puerto 7 on

    btfsc PORTA,1

    goto $-1

    goto ini

    end

Este programa funciona se analiza de la siguiente forma:

Nos desplazamos al banco # 1 de la memoria de datos del microcontrolador PIC16F628A, inicialmente se configuran los puertos como entradas y salidas con la instrucción TRIS.

Posteriormente nos vamos por medio del registro STATUS al banco de trabajo 0 y procedemos a determinar el estado de los puertos de salida y los de entrada.

Para el primer caso se hace un testeo de bit cuando el pulsador está en 1 lo que ocurre (encienden los LEDS pares) RA0

Luego evalúa el estado del pulsador cuando este se encuentra en 0, para este caso no ocurrirá ningún encendido de LEDS.

Preguntamos nuevamente el estado de los LEDS y con el pulsador ubicado en RA1, replicamos lo que se mencionó anteriormente con el puerto RA0.

En este caso si usted presiona cualquier pulsador, no le va a funcionar debido a que este circuito es secuencial y para que funcione el pulsador 2, necesariamente el programa se debió haber ejecutado en el pulsador 1.

De momento esa es la lógica establecida. Espero les guste.

POSTDATA: PONTE LAS PILAS CRAG.

 

CONTENIDOS MÁS RELEVANTES.

soy el administrador del sitio web. si tienes alguna duda, no dudes en contactarme

Un comentario en «PIC 16F628A: ENCENDER LOS LEDS PARES CON RA0 Y LOS IMPARES CON RA1»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.