1 votos

uso de BTFSC con pic16f627a/628a/648a no está claro

Aún estoy aprendiendo a programar pic.

El código no tiene sentido sólo para observar el comportamiento de BTFSC Cuando se utiliza BTFSC en una construcción de bucle el bit de comprobación se cambia la siguiente instrucción no se salta cuando el bit comprobado es 0.¿Qué hay de erróneo en mi planteamiento?

 AGAIN
    MOVLW  B'01010100'
    MOVWF   BYTE
    MOVLW H'07'
    MOVWF LOOPCOUNT
LOOP

    BTFSC BYTE,LOOPCOUNT
    BCF PORTA,OUTPUT
    BSF PORTA,OUTPUT
    DECFSZ LOOPCOUNT    
    GOTO LOOP

    GOTO AGAIN

1voto

Todd Smith Puntos 145

BTFSC comprueba un bit concreto de un registro de archivo determinado. Se describe en la literatura como

BTFSC f, b

El primer argumento, 'f', es el número de un registro de archivo. En el código que has publicado, 'f' es lo que has llamado 'BYTE', presumiblemente declarado como uno de esos registros. El segundo argumento, 'b', lo has especificado como 'LOOPCOUNT', que también es un registro en el que has almacenado el número 7.

Pero la instrucción no funciona así. 'b' debe ser un número, o un símbolo o etiqueta que sea equivalente a un número de bits. De la forma en que lo usaste, está usando el valor asociado con el número de registro. Por ejemplo, si LOOPCOUNT es el registro #26, entonces piensa que dijiste,

BTFSC BYTE, 26

Tenga en cuenta que cuando vea una instrucción como

ESTADO DEL BTFSC, Z

Parece magia, pero 'STATUS' es realmente un registro con su propio número especial, y 'Z' es un símbolo cuyo valor simplemente describe qué bit de 'STATUS' es el bit 'Z'. Z' se define en algún lugar del ensamblador o en un archivo de inclusión.

0voto

Meitham Puntos 151

Creo que parte de tu problema se debe a que BCF y BSF son instrucciones de lectura-modificación-escritura. Si lees el documento de Microchip DS33023 sección - 9.10 I/O Programming Considerations verás lo que está fallando.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X