#include <stdint.h>
#define Elementcount 500
#if(Elementcount / 8 != 0)
#define arrayByteCount Elementcount / 8 + 1
#else
#define arrayByteCount Elementcount / 8
#endif
uint8_t myBitArray[arrayByteCount];
void write_array_bit (uint8_t array[], uint16_t elementNumber, uint8_t value)
{
if(value) //si es 1
array[elementNumber>>3] |= 1<<(elementNumber % 8); //poner a 1 el elemento correspondiente
else //sino
array[elementNumber>>3] &= ~(1<<(elementNumber % 8)); //poner a 0 el elemento correspondiente
}
uint8_t read_array_bit (uint8_t array[], uint16_t elementNumber)
{
if( array[elementNumber>>3] & 1<<(elementNumber % 8) ) return 1; else return 0;
}
void main()
{
uint8_t value;
write_array_bit(myBitArray, 0, 1); //escribimos el valor 1 en el elemento bit número 0
write_array_bit(myBitArray, 7, 0); //escribimos el valor 0 en el elemento bit número 7
write_array_bit(myBitArray, 8, 1); //escribimos el valor 1 en el elemento bit número 8
write_array_bit(myBitArray, 499, 1); //escribimos el valor 1 en el elemento bit número 499
value = read_array_bit(myBitArray, 0); //leemos el valor del elemento bit número 0
value = read_array_bit(myBitArray, 7); //leemos el valor del elemento bit número 7
value = read_array_bit(myBitArray, 8); //leemos el valor del elemento bit número 8
value = read_array_bit(myBitArray, 499); //leemos el valor del elemento bit número 499
}