Escrito originalmente por vszener
Si esa es una solucion, otra es leer los pines donde estan conectados los led"s y almacenar su resultado en una variable int leds=0b000; por ejemplo asi, declaras una variable leds y se inicializa por ejemplo a 0, significa que los tres leds estan apagados, lees por el puerto los leds y la almacenas en la variable leds=portb; quedaria por ejemplo leds=0b101, significa que hay dos encendidos y uno apagado, y despues con la funcion bit_test puedes comprobar a la siguiente lectura si estan encendidos o apagados y modificarlos....mas lioso pero esta digamoslo en un "falso vector" todos los estados de los led, falso vector ya que en realidad es una variable que contiene un numero que coresponde al estado de los leds conectados al puerto correspondiente
A ver todo esto viene porque programando en un pic tenemos una memoria muy recortada y usar un int para guardar el estado de 3 leds pues es un derroche impresionante, porque un int necesita de 32 bits para almacenarse, en todo caso seria mejor usar un tipo byte que necesita pues 8 bits. Date cuenta que tengo que guardar el estado de 100 leds que se encienden a través de registros de desplazamientos que se deben iluminar alrededor de 50 veces por segundo para que de la impresión de continuidad por lo que necesito consultar su estado en una matriz o calcularlo de alguna manera. Intenta declarar una matriz de 100 int y verás que no entra en la memoria dle pic.
Entonces mi intención era la de guardar exclusivamente aquello que necesitaba... y lo que necesitaba era un vector de booleanos... que por lo visto el compilador no acepta. Pero vaya lo he solucionado de otra manera y es crear un tipo enumerado de 5 estados que se corresponde con el tamaño de las columna de matrices de led que estoy usando y 20 elementos en el array que es el tamño de las filas.
1 saludo y gracias por la ayuda y el tiempo.
EDITO:
Parece ser que en ccs los tipos tienen el siguiente espacio en memoria
Especificadores de tipo:
unsigned define un número de 8 bits sin signo
unsigned int define un número de 8 bits sin signo
int define un número de 8 bits sin signo
char define un número de 8 bits sin signo
long define un número de 16 bits sin signo
long int define un número de 16 bits sin signo
signed define un número de 8 bits con signo
signed int define un número de 8 bits con signo
signed long define un número de 16 bits con signo
float define un número de 32 bits en punto flotante
short define un bit
short int define un bit