Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/12/2010 #1

Avatar de jgarcam

Problema en CCS con valor booleano
Hola que tal, pues de nuevo por aqui con una dudilla, tengo una función en CCS a la cual le paso como argumento un valor tipo booleano de tamaño un bit (int1).
La variable que paso como argumento es el modulo de un numero dividido entre 2, es decir en mi programa descompongo un numero decimal de 8 bits (0-255) en sus componentes binarias las cuales almaceno en un arreglo de tipo int1 (p.e. 4 = 0,0,0,0,1,0,0,0), y despues paso cada componente a una función para ke los ponga uno por uno en un pin del PIC y así los manda a un registro de desplazamiento.
Mi problema es que en la linea que descompone el numero decimal, la operación del módulo regresa un valor de 8 bits (supongo), en teoría ya que es el módulo entre 2 la operación que hago solo me regresa 1 o 0, pero en mi variable al ser de un bit (int1) al parecer no guarda correctamente dicho valor (o no lo acepta como un bit).:enfadado:
Mi duda es si existe alguna función predefinida que devuelva un valor tipo bit (int1) cuando le pase como argumento un valor (0 o 1 tipo int).
13/12/2010 #2

Avatar de seaarg

asumiendo que "valor" es unsigned int8:

booleana = (int1)valor;

Proba eso a ver que pasa. Esto se llama "cast" y es convertir forzadamente entre tipos de datos.

Sino:

booleana = FALSE;
if (valor) booleana = TRUE;

Eso funcionaria seguro.

Por mi experiencia en CCS, es bastante delicado con los tipos de datos, hay veces que no da ni error ni warning pero el programa no anda como se espera, y es por conversiones o tipos.
13/12/2010 #3

Avatar de ByAxel

Prueba usando:
shift_left()
shift_right()

junto a
output_bit()

Ejemplo del CCS...
Código:
for(i=0;i<8;++i)
   output_bit(PIN_A0,shift_right(&data,1,0));
PD: Espera tranquilo por los bugs que el CCS los tiene varios

salu2.
13/12/2010 #4

Avatar de jgarcam

Muchas gracias por sus prontas respuestas, la solución temporal que utilizé fue una función a la cual le paso como argumento el resultado del módulo (0 o 1 tipo int) y me devuelve un valor bit (int1) después de evaluar el resultado con condicionales:

Código:
int1 int2bool(int value)
{
if(value>0)
return(1);
else
return(0);
}
de esa manera aseguro el retorno de un valor tipo int1 el problema por supuesto es la optimización de memoria , probare con sus sugerencias y les comentaré cual me funciona mejor.

P.D. Y si aunque CCS es muy bueno los bugs son inevitables, afortunadamente la paciencia esta en mis virtudes.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.