Autor Tema: Como puedo recorrer un byte de una variable??  (Leído 2026 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kurdo22

  • PIC10
  • *
  • Mensajes: 48
Como puedo recorrer un byte de una variable??
« en: 14 de Octubre de 2004, 08:48:00 »

     Muy buenas. Estoy intentando recorrer el byte de una variable, es decir, leer bit a bit los 8 bits de una variable cualquiera. ¿Alquien sabe como se puede hacer esto de una forma sencilla?

Un saludo

Desconectado kurdo22

  • PIC10
  • *
  • Mensajes: 48
RE: Como puedo recorrer un byte de una variable??
« Respuesta #1 en: 14 de Octubre de 2004, 08:52:00 »

   Se me olvidaba que decir que estoy programando en ensamblador.

Un saludo

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Como puedo recorrer un byte de una variable??
« Respuesta #2 en: 14 de Octubre de 2004, 12:36:00 »
Simple:

BTFSS Registro,Numero de bit
GOTO es0
GOTO es1

Y si lo quieres alreves:

BTFSC Registro,Numero de bit
GOTO es1
GOTO es0

Las instrucciones son BTFSS (Bit Test, Skip if Set) y BTFSC (Bit Test, Skip if Clear), y saltan la siguiente instruccion, dependiendo de si el bit esta seteado o no, respectivamente.

salu2

PD: Me acabo de acordar, que tu usas un 18F8720, creo que estos tienen instrucciones booleanas mas concretas, mira en el datasheet, porque son una delicia para manejar bits. No obstante lo que te he dicho creo que sirve.

Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: Como puedo recorrer un byte de una variable??
« Respuesta #3 en: 14 de Octubre de 2004, 17:13:00 »
TIENES 2 FORMAS DE HACERLO!!!!...... UNA ES ASI COMO TE SEÑALO EL AMIGO Q SERIA:



   BTFSS       REGISTRO,0
   GOTO        ES_CERO
   GOTO        ES_UNO
...
...
...
   BTFSS    REGISTRO,7
   GOTO     ES_CERO
   GOTO     ES_UNO



CLARO ESA ES LA MANERA MAS ARCAICA LO MEJOR ES ROTAR EL REGISTRO A TRAVES DEL CARRY Y BRICAR SEGUN CARRY ME EXPLICO:

                   BCF       STATUS,C
                    RRF       REGISTRO
                   CALL      PRUEBA
                   RRF        REGISTRO
                   CALL      PRUEBA
.....
.....
.....
                   ESTO 8 VECES RECORRE EL REGISTRO EN TODAS SUS POSICIONES

PRUEBA      BTFSS   STATUS,C
                  GOTO     ES_CERO
                  GOTO     ES_UNO



ES_CERO     HAGO SI ES CERO
                    RETURN


ES_UNO      HAGO SI ES UNO
                  RETURN

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Como puedo recorrer un byte de una variable??
« Respuesta #4 en: 15 de Octubre de 2004, 04:41:00 »
Hola chicos

Otra forma de comprobar el estado de un bit o de varios bits dentro de un byte, es hacer una máscara y una operación XOR. Así:

Imaginad que queremos comprobar el estado del tercer bit de más peso del puerto B. Hacemos una máscara: 00100000

movlw 0x20 ;Comprobamos el tercer bit
xorwf PORTB,W ;si está a uno todos, saltamos a SALIDA
btfsc STATUS,Z
goto SALIDA

Así podrías ir recorriendo todo el byte. Pero este mecanismo de la máscara es muy efectivo, sobretodo, para en casos que quieras comprobar muchos bits de golpe, no una por uno. Así por ejemplo, para comprobar los primeros 4 bits haríamos esto:

movlw 0xF0 ;Comprobamos los 4 bits más altos
xorwf PORTB,W ;si están a uno todos, saltamos a SALIDA
btfsc STATUS,Z
goto SALIDA

Espero que te sirva.