Tableau de bit et d'octet(Programmation PIC)

Fermé
zozizon Messages postés 674 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 6 juin 2017 - 17 avril 2008 à 10:03
 amlne Guedd ETT - 8 juil. 2008 à 00:28
Bonjour à tous.
Je travaille sur un afficheur LCD 64x128 commandé par un PIC16F877.
Je cherche à remplir un tableau de 64bits avec des 1 placés a la position 0-63 dans mon tableau afin de placer les pixels sur la ligne voulue.
Mais je voudrai aussi que ce même tableau soit un tableau de 8 octets afin d'afficher ces pixel page par page.

Union serrait peut être la solution mais je ne vois pas comment procéder.

Pour le moment voila ce que j'utilise


unsigned char ColLCD[8]=0;
LigneLCD=MesureAN0>>2; //passe de 256 à 64
Page=0;
while (LigneLCD>8)
{
LigneLCD=LigneLCD-8;
Page++;
}
LignePage=1;
while (LigneLCD!=0)
{
LignePage=LignePage<<1;
}
ColLCD[Page]=ColLCD[Page]|LignePage;


Dans mon cas je voudrais pouvoir écrire ColLCD[NuméroBit]=1 mais aussi que ColLCD[NuméroOctet] soit possible et pointe sur le même tableau.
Le nom ColLCD n'est pas important. par contre "bit toto0[64]" et "octet toto1[8]" doivent utiliser la même adresse mémoire.

Je pense que ce n'est pas possible du fait qu'il est impossible de pointer sur un Bit mais je demande à tout hasard.

Merci de votre aide
A voir également:

3 réponses

zozizon Messages postés 674 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 6 juin 2017 41
17 avril 2008 à 10:58
Re.
En fait c'est un tableau ou l'on pourrait accéder bit a bit par exemple tab[63]=1 soit par octet tab[7]=0x08. Cela me permet par exemple d'afficher un signal coder sur 64 bits de manière simple :
tab[signal]=1

puis j'affiche le résultat en faisant une boucle pour écrire page par page :
while( i >=8 )
{
SelectionDeLaPage(i);//je sélectionne la page
Page=tab[i];// j'écrie l'octet dans cette page.
i++;//de même pour les page suivantes.
}
Merci de ton aide
1
bonjour,

je n'ai pas trop compris ce que tu veux afficher mais il on peut facilement sélectionner les bits d'un octet, par une macro comme: #define bitText(octet, i) ((octet&(1<<i))!=0) qui renvoie 1 si le i-ème bit de l'octet vaut 1 et 0 sinon.
J'espère que ça te sera utile.
0
amlne Guedd ETT
8 juil. 2008 à 00:28
bonjour,j'ai devlleoper une algorithme qui permet de commander un robot mobil qui évite les obstacle avec des entrées analogique (pour un premier pas),mé jarive pas a le compiler en C, je cherche quelque astuse et des cour facile a aprandre,merci bcp
0