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

1

Sigo aprendiendo en la programación de imágenes.

El código no tiene sentido solo para observar el comportamiento de BTFSC Cuando se usa BTFSC en una construcción de bucle, el bit de prueba se cambia, la siguiente instrucción no se omite cuando el bit de prueba es 0. ¿Qué hay de malo en mi enfoque?

 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
    
pregunta Decapod

2 respuestas

1

BTFSC prueba un bit particular de un registro de archivo particular. Se describe en la literatura como

  

BTFSC f, b

El primer argumento, 'f', es el número de un registro de archivos. En el código que publicaste, 'f' es lo que llamaste 'BYTE', presumiblemente declarado como uno de esos registros. El segundo argumento, 'b', que ha especificado como 'LOOPCOUNT', que también es un registro en el que almacenó el número 7.

Pero la instrucción no funciona de esa manera. 'b' debe ser un número, o un símbolo o etiqueta que sea equivalente a un número de bit. 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 n. ° 26, cree que lo ha dicho,

  

BTFSC BYTE, 26

Tenga en cuenta que cuando vea una instrucción como

  

ESTADO BTFSC, Z

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

    
respondido por el gbarry
0

Creo que parte de tu problema se debe a que BCF y BSF son instrucciones de lectura-modificación-escritura. Si lees la sección DS33023 del documento Microchip - 9.10 Consideraciones de programación de E / S, verás lo que está mal.

    
respondido por el HandyHowie

Lea otras preguntas en las etiquetas