X

PIC16F628A- INSTRUCCIONES BTFSS Y BTFSC

INSTRUCCIÓN BTFSS Y BTFSC.

BTFSS f,b: testea el bit de la posición “b” del registro f, si el bit es 1 entonces salta 1 instrucción ignorando la siguiente. Caso contrario una instrucción “ nop” es ejecutada.

BTFSC f, b: testea el bit de la posición “b” del registro f, si el bit es 0 entonces salta una instrucción e ignora la siguiente. Caso contrario una instrucción “nop” es ejecutada.

EJERCICIO 2. ENCENDER UN LED CON UN PULSADOR CON EL PIC16F628A.

En este ejercicio, en la primera instrucción se accede al banco 1 presionado bsf STATUS,5 con el fin de definir cual será el puerto de salida y de entrada, para este caso yo escogí el puerto 3 como salida y el puerto 1 como entrada.

¿Porqué TRISB? Porque estoy trabajando en el banco de trabajo 1 de la memoria de datos del PIC16F628A.

Una vez configurados los puertos en el banco 1, me desplazo al banco cero con la instrucción bcf STATUS,5 (bit clear file Status,5).

Para entender lo anterior, deben analizar lo del clear o lo del set en el registro status el cual ya se encuentra definido.

Luego de eso, bcf PORTB,3 inicia de esa forma ya que el led empieza apagado, es decir el LED está en cero.

Luego la instrucción btfss PORTB,1 testea el bit en el puerto 1 del microcontrolador. Lo que está haciendo es testear el registro PORTB y el bit 1 del microcontrolador. En este caso el bit es 0 y no salta a ningún lado.

Goto $-1 es un retorno a la instrucción anterior.

bsf PORTB,3 es una instrucción de cuando el led está encendido: Esto quiere decir: bit set file PORTB,3 o mejor dicho cuando el bit está activo en el registro PORTB cuya posición es 3.

Btfsc PORTB,1 me indica que de acuerdo a lo anterior, esto se cumplirá cuando el led se encuentra activo, recuerda que la lógica del microcontrolador es algo inversa. Testea el bit que esté en alto del registro PORTB de la posición 1 del puerto.

Finalmente, el programa retorna a la posición inicial y listo.

EJERCICIO 3. ENCENDER VARIOS LEDS CON UN PULSADOR CON EL PIC16F628A CON EL PUERTO RA0

Me llené de confianza y decidir encenderlo desde el puerto RA y funcionó correctamente.

El programa es un poco largo pero pienso que tiene potencial y se puede mejorar. Yo apenas estoy aprendiendo pero considero que voy por buen camino.

 

__CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_ON & _LVP_OFF & _CPD_OFF & _CP_OFF

    LIST P=16F628A

    #include <P16F628A.INC>

    org 0x00

    bsf STATUS,5; banco 1

    bcf TRISB,0; puerto 0 salida

    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

    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 prendido

    bsf PORTB,1; puerto 1 prendido

    bsf PORTB,2; puerto 2 prendido

    bsf PORTB,3; puerto 3 prendido

    bsf PORTB,4; puerto 4 prendido

    bsf PORTB,5; puerto 5 prendido

    bsf PORTB,6; puerto 6 prendido

    bsf PORTB,7; puerto 7 prendido

    btfsc PORTA,0

    goto $-1

    goto ini

    end

CONTENIDOS MÁS RELEVANTES.

Categories: MICROCONTROLADORES
fabio figueroa: soy el administrador del sitio web. si tienes alguna duda, no dudes en contactarme

Este sitio usa cookies