Autor Tema: Funcion de Boolean (novatadas)  (Leído 6035 veces)

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

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Funcion de Boolean (novatadas)
« en: 25 de Febrero de 2010, 09:47:24 »
Holas amigos!
bien tengo un ejemplo de programas y quiero salir de dudas, porque creo que boolean es una directiva de variable o me equivoco.
Pje esto
Código: [Seleccionar]
   struct PB_pin_mapa{
             
                          boolean unusedRB0;               // poner el puerto RB0 a cero?
                          boolean unusedRB1;              // poner el puerto RB1 a cero
                          boolean rx;                            //     aqui usamos rx como variable? 

he estado buscando informacion de boolean y en los codigo nadie explica su funcion, porque lo que veo y creo es para designar variable.
por favor sacarme de dudas
gracias


Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Funcion de Boolean (novatadas)
« Respuesta #1 en: 25 de Febrero de 2010, 09:58:50 »
boolean es igual a int1..... es una variable de 1 bit... 0 o 1 para condiciones logicas.

Saludos!
LAS MALVINAS SON ARGENTINAS!

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Funcion de Boolean (novatadas)
« Respuesta #2 en: 25 de Febrero de 2010, 10:16:35 »
gracias amigo Cerebro por la informacion, era lo que yo me imaginabas, lo que veo tambien que esa variable se usa tan poco ya que usando el buscador encontre muy poca cosas siendo asi muchas infomaciones se quedaron en el olvido de Miel_d@ arroba  :D :D, algunas buscando me salia mensaje que ya no existen.
un Saludos

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Funcion de Boolean (novatadas)
« Respuesta #3 en: 25 de Febrero de 2010, 15:07:03 »
boolean es un tipo de datos, y vaya que se usa bastante, sobre todo para acceso múltiple por ranura de tiempos (hacer varios procesos en "simultaneos")

otros nombres que tienen: bandera o flag por software

en ccs, es válido decir que 1=true y 0=false

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Funcion de Boolean (novatadas)
« Respuesta #4 en: 25 de Febrero de 2010, 15:39:17 »
Pero ten cuidado con su uso porque no forma parte del Ansi C y sólo es soportado por determinados compiladores.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Funcion de Boolean (novatadas)
« Respuesta #5 en: 25 de Febrero de 2010, 15:50:18 »
Pero ten cuidado con su uso porque no forma parte del Ansi C y sólo es soportado por determinados compiladores.

Si señor!!

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Funcion de Boolean (novatadas)
« Respuesta #6 en: 25 de Febrero de 2010, 15:56:27 »
Pero ten cuidado con su uso porque no forma parte del Ansi C y sólo es soportado por determinados compiladores.

Sr Manuel, en este caso su uso para compilador CCS lo estoy usando, osea como decia el amigo Cerebro solo para variable de 1Bit.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcion de Boolean (novatadas)
« Respuesta #7 en: 25 de Febrero de 2010, 16:23:45 »
Si lo utilizas en una estructura y para hacerlo compatible con otros compiladores se puede hacer de la siguiente manera:

Código: C
  1. struct PB_pin_mapa{
  2.                           char unusedRB0:1;               // poner el puerto RB0 a cero?
  3.                           char unusedRB1:1              // poner el puerto RB1 a cero
  4.                           char rx:1;


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Funcion de Boolean (novatadas)
« Respuesta #8 en: 25 de Febrero de 2010, 16:38:26 »
Muchas gracias Suky
lo tendre en cuenta, tengo la media parte de mi primer programa andando como yo queria  :-/ :-/, voy a comentarlo bien para subirlo a mis proyectos DMX  :mrgreen:
Saludos


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcion de Boolean (novatadas)
« Respuesta #9 en: 25 de Febrero de 2010, 16:48:25 »
El resto de código no se ve, pero para asignarle una estructura a un registro lo haces de la siguiente manera:

Por ejemplo se asigna a LATB:

Código: C
  1. struct{
  2.    char bit0:1;
  3.    char bit1:1;
  4.    char 2bits:2;
  5.    char Nible:4;
  6. }Control;
  7.  
  8. #byte Control=getenv("SFR:LATB")


Si quieres asignar la misma estructura a más de un registro:

Código: C
  1. typedef struct{
  2.    char bit0:1;
  3.    char bit1:1;
  4.    char 2bits:2;
  5.    char Nible:4;
  6. }MAP_PIN_Control;
  7.  
  8. MAP_PIN_Control Control_LAT, Control_PORT;
  9.  
  10. #byte Control_LAT=getenv("SFR:LATB")
  11. #byte Control_PORT=getenv("SFR:PORTB")


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Funcion de Boolean (novatadas)
« Respuesta #10 en: 25 de Febrero de 2010, 21:03:05 »
una preguntilla :oops: , siendo INT1 una variable de un 1bit, como se traduce esa variable en el ASM generado por CCS, utiliza un registro de 8bits de los cuales solo afecta el estado de 1?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcion de Boolean (novatadas)
« Respuesta #11 en: 25 de Febrero de 2010, 21:08:42 »
una preguntilla :oops: , siendo INT1 una variable de un 1bit, como se traduce esa variable en el ASM generado por CCS, utiliza un registro de 8bits de los cuales solo afecta el estado de 1?


bsf o bcf 0xXX,bit.

Directamente modifica el bit de un registro reservado para tales variables.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Funcion de Boolean (novatadas)
« Respuesta #12 en: 02 de Abril de 2010, 02:35:37 »
Una pregunta amigos,

Estoy intentando controlar una LCd standar 2x16, funciona sin problemas, pero estoy intentando lograr una libreria que se ANSI-c para empezar a aplicar con FreeRTOS. Sucede que tengo el bus de datos de la LCD en pines de diferentes puertos.

D0...E5
D1...E6
D2...E7
D3...F5
D4...G3
D5...A0
D6...A1
D7...A2

Mi intención es empaquetarlos de alguna manera que al programar se vean como si fuera un puerto nuevo creado por mi, de 8 bits. Sin tener que estar pendientes que son de diferentes.

Pensé que de alguna manera en una structura seria la solución, pero intente de varias formas y no creo saber como hacerlo.


CCS usa algo como esto:

Citar
typedef struct 
{                            // This structure is overlayed
   BOOLEAN enable;           // on to an I/O port to gain
   BOOLEAN rs;               // access to the LCD pins.
   BOOLEAN rw;               // The bits are allocated from
   BOOLEAN unused;           // low order up.  ENABLE will
   int     data : 4;         // be LSB pin of that port.
} LCD_PIN_MAP;


Pero precisamente CCS no es ANSI-C y para empezar BOOLEAN ya no es compatible, entonces recordé este hilo, pero mis intentos son fallidos.

CCS creo ese nuevo tipo de dato, con el cual se vale para crear después esto:

Citar
   // these definitions only need to be modified for baseline PICs.
   // all other PICs use LCD_PIN_MAP or individual LCD_xxx pin definitions.
/*                                    EN, RS,   RW,   UNUSED,  DATA  */
 const LCD_PIN_MAP LCD_OUTPUT_MAP =  {0,  0,    0,    0,       0};
 const LCD_PIN_MAP LCD_INPUT_MAP =   {0,  0,    0,    0,       0xF};



La verdad no se me ocurre manera de lograrlo. ¿Ustedes me pueden guiar por favor?

SALUDOS!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Funcion de Boolean (novatadas)
« Respuesta #13 en: 02 de Abril de 2010, 10:39:43 »
Si los pines están de forma tan aleatoria con una estructura no lo veo posible, porque esta coloca sus datos de forma consecutiva en la memoria en la posición que se le asigne  :?

De la forma que planteas los pines creo que no queda otra que usar mascaras y rotaciones  :(


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Funcion de Boolean (novatadas)
« Respuesta #14 en: 02 de Abril de 2010, 11:17:46 »
Si, es cierto.. La verdad trabaje hasta tarde pero no funciono, ya ahora en la mañana decidí encararlo exactamente como dices.

SALUDOS!