Autor Tema: Como Comprobar el estado de un Bit dentro de un byte ?  (Leído 5786 veces)

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

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Como Comprobar el estado de un Bit dentro de un byte ?
« en: 16 de Junio de 2006, 07:31:53 »
Haber tengo que comprobar el estado de un bit  y no se como hacerlo.

en esamblador seria

btfss Status,4;

pero en CCS

hago esto y no me va

#byte DATOS=PIN_B6
byte var;
var=bit_test(DATOS,3);

el estado siempre es cero pase lo que pase.

o es q esta mal

Salu2

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #1 en: 16 de Junio de 2006, 07:53:47 »
Estas declarando tipo byte la variable y le estas asignado un bit, ademas el bit asignado es el 6 del puerto B y despues compruebas el bit 3, suponiendo que el bit 6 se asigne correctamente en esa posicion el bit 3 siempre tendra lo mismo. Puedes poner directamente:

#define DATOS pin_b6

byte var;

var=input(DATOS);

Un saludo.
« Última modificación: 16 de Junio de 2006, 08:01:02 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #2 en: 16 de Junio de 2006, 10:37:46 »
gracias por la respuesta .

A lo mejor me explique mal pero haber ahora jaja


Por la pata PIN_B6 osea la pata RB6 del chip entrar 8 bits y estos son los que quiero controlar

Gracias .


Salu2

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #3 en: 16 de Junio de 2006, 13:29:53 »
Te refieres a recibir 8 bits en serie por el pinn RB6? Podrias ampliar un poco mas que es lo que quieres hacer.

Saludos
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #4 en: 17 de Junio de 2006, 16:25:28 »
si exacto .

Lo que quiero hacer es recibir 8bits que envio atraves de serial.

Soy muy novato en esto de la programacion de pics .

Haber recibo esos 8 datos 01010101 y tengo que saber si el carry es 0 y el bit 7 es 0 si no es asi pues lo mato jajaj no en serio si no es asi pues hace una cosa y sino no la hace.

espero que me entiendas ahora.

Gracias por la ayuda tio\a

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #5 en: 17 de Junio de 2006, 16:31:55 »
Debo entender que es una comunicación serie por sonsiguiente lo que tienes que hacer es habilitar el puerto serie y recibir los datos por el mismo. La habilitación la haces con:

#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3)

Y para leer el byte recibido habilitamos la interrupcion:

#INT_RDA

con var = getc();

obtenemos el byte recivido.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #6 en: 17 de Junio de 2006, 17:19:18 »
ok  eso tambien me vale , pero , exactamente tampoco es. ( Pero muchas gracias  )

haber si yo recojo unos datos por unas de las patas , ejemplo Rb6 . Estos datos los va almacenando temporalmente en la Ram , es decir en FSR  no ?

o lo hace en en la ram pero en PCL y PCH .

Estoy un poco liado podrias explicarme esto un poco.

Salu2

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #7 en: 17 de Junio de 2006, 20:14:25 »
Cuando se realiza una comunicacion serie, se recibe la informacion por una de las patillas que nosotros definamos para el ejemplo:

#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3)

la recepción de la informacion se hace por el pin A3 que es el que hemos definido.

Cada vez que se recive un byte, se activa la interrupción INT_RDA y nosotros dentro de la interrupcion capturamos el byte transmitido de la siguiente forma:

#int_RDA
RDA_isr()
{
   valor = getc();
}
#ENDIF

Y en el programa principal (main) procesamos la variable como queramos. Por cierto hay que especificar la velocidad de transmision.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #8 en: 17 de Junio de 2006, 23:28:23 »
perdona tio por las molestias , pero creo que no me se explicar bien.


Los datos me llegan de un aparato externo pero no es un ordenador , y eston llegan en modo 5v 0v .

Me imagino que estos bits se iran almacenando en la como te dije antes no ?



Salu2

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #9 en: 17 de Junio de 2006, 23:35:55 »
Las comunicaciones serie no tienen por que ser con un ordenador pueden ser de cualquier aparato. Es necesario saber la velocidad a la que trasmite la información. La forma mas eficiente de capturar la informacion es mediante el puerto de comunicacion serie. Por ser la señal de 0 y 5V no hace falta adecuarla mediante el maxim232, si no que se pude conectar directamente a la patilla en cuestion. Por ultimo decirte que lo que quieres hacer de asignar una patilla a una variable, no funciona de ninguna de las maneras.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado overnat

  • PIC10
  • *
  • Mensajes: 12
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #10 en: 18 de Junio de 2006, 00:04:02 »
La comunicacion que hago es TTL a Entradas TTL  del pic y el envio de datos que recibe el pic son lo que quiero verificar , pero , dentro del mismo chip , no fuera desde el pc .

Creo que los bits que van entrando , por direccionamiento indirecto , van a parar a FSR no ? .

estos bits serian colocados en PCL y PCH como LSB y MSB no ? .

Joder no se si me explico bien vaya mierda.....


Salu2 y gracias por todo.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #11 en: 18 de Junio de 2006, 05:29:03 »
No estas equivocado, lo que recives en un puerto via serie lo tienes que procesar tu (tienes que definir por que pin lo recives, a que velocidad, con que protocolo, etc) y despues cada vez que recives el byte, ver como procesarlo. Si estas utilizando el mismo PIC para enviar y recivir datos puedes definir dos puertos de comunicación y unir la patilla de entra del primero con la del segundo. Los puertos de comunicacion si no pones un interface RS232, te trabajan a TTL y por consiguiente simplemente unes las patillas que hayas definido y ya esta.

No se si es esto lo que quieres o no, si no es asi por que no nos comentas cual es tu proyecto completo e intentamos buscar la solucion para  implementarlo.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #12 en: 22 de Junio de 2006, 10:06:00 »
Perdon que me meta, por lo que leo la comunicacion es solo de entrada y lo que quieres verificar son 8 bits, no es cierto??

Entonces te conviene meter cada bit en un byte por desplazamiento, pero alli necesitas una señal de clock para saber cuando esta el nuevo bit y sincronizar el desplazamiento.

Eso seria una comunicacion sincronica...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #13 en: 22 de Junio de 2006, 10:33:32 »
Buenas!!!! yo me voy a limitar a contestar el primer mensaje
Código: C
  1. #byte DATOS=PIN_B6
  2. byte var;
  3. var=bit_test(DATOS,3);

Vamos haber, primero intentas declarar un pin(el cual seria entodo caso 1 bit) como byte(es decir 8 bits) por lo tanto ya vamos malamente
Asi NO:
Código: C
  1. #byte DATOS=PIN_B6
Podria ser asi:
Código: C
  1. #bit RB6=0x106.6   //definicion pin potrb B6

Si lo que quieres es almacenar 8 bits en una variable byte, podrias hacerlo asi:
Código: C
  1. shift_right(&data,1,input(PIN_B6));  //almacena en la variable data la informacion del PIN B6

Y para compararlo, pues es como tu lo has puesto, en definitiva el programa seria algo asi:
Código: C
  1. boolean comprobacion;
  2. byte var;
  3. shift_right(&var,1,input(PIN_B6));
  4. comprobacion=bit_test(var,3);        //te puedes ahorrar la variable comprobacion y usar directamente un if....


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como Comprobar el estado de un Bit dentro de un byte ?
« Respuesta #14 en: 22 de Junio de 2006, 15:35:05 »
Hola vszener, una pregunta:

como captura 8 bits esta función:

Citar
shift_right(&var,1,input(PIN_B6));

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything