Pages: [1] 2   Go Down
Author Topic: comment fabrique un Word (16 bits)  (Read 1240 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, je  suis un nouveau

et j'ai des soucis de programmation concernant un Word

comment  fabrique un Word (16 bits) avec 1 seul bit à 0 en position i (ex: 1111011111111111) ?

Merci! smiley-mr-green
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3031
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il aurait été mieux de créer un nouveau topic.

La version longue
Code:
int monWord=0;
int i mesDecalage=11;
int monWord2 = 0xF7FF;

      monWord= 1 << mesDecalage;  // met un 1 à la position mesDecalage
      monWord2 |= monWord; // Force le bit mesDecalage à 1 dans monWord2;

La version courte
Code:
int i mesDecalage=11;
int monWord2 = 0xF7FF;

      monWord2 |= 1 << mesDecalage;  // met un 1 à la position mesDecalage dans monWord2

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut, C'est sur base de certaines règles du forum que j'ai pas créer un nouveau Topic!

Mais, je ne sais pas si quelqu'un peut mieux m'expliquer qu'est ce qu' un " Word " ?

Car, j'ai les doc dessus et je n'y comprends rien ?

Merci  smiley-lol !
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

comment  fabrique un Word (16 bits) avec 1 seul bit à 0 en position i (ex: 1111011111111111) ?
Comme cela :
Code:
valeur = 0xFFFF ^ (1 << i);

salut, C'est sur base de certaines règles du forum que j'ai pas créer un nouveau Topic!
Et bien tu ferais mieux de les relire, c'est exactement le contraire qu'on demande smiley-wink
un problème = un topic

Mais, je ne sais pas si quelqu'un peut mieux m'expliquer qu'est ce qu' un " Word " ?
"Word" en informatique = "un mot" = une valeur sur 2 octets.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, et  Merci je vais ouvrir un notre topic .   smiley

Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Heuuuu... au cas ou tu l'aurais pas remarqué, le topic à été scindé en deux et c'est déjà un nouveau sujet  smiley-mr-green
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour ,

Juste pour savoir , si je fais ceci : 
Quote
word= ~ ( 1<<i )
   Cela veut dire que j'ai créé un word qui fait quoi ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si i = 3 :
1<<3 = 1000 et ~1000 = 0111
Logged


France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3031
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Juste pour savoir , si je fais ceci :  
Quote
word= ~ ( 1<<i )
  Cela veut dire que j'ai créé un word qui fait quoi ?

 1<<i:  décale 1 de i position sur la gauche
 ~    : donne complément de la valeur en argument

donc au bout du compte ta variable word contient un mot où tous les bits sont à 1 sauf le bit i qui est à zéro.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

ok! je comprends maintenant .

donc , si je fais  : word = ~ ( 2<<i) ;  veux dire que je  décale 2 de i position vers la gauche
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait, le problème est que je dois créer au moins 4 " word "  différents dont le premier word est :  word =~ ( 1<< i );

Merci!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

donc, selon b@tto :
 si i= 4

word = 2<<i  =>  word = 0000000000100000  et  word =~ ( 2<<i); =>  word = 1111111111011111 ?

Le problème est que selon de bout du code que voici i = 16  mais devrait passer à 72 et je dois en créer plusieurs word

Quote

 byte compte_conection;
 word lecture;

     compte_conection=0;  // le compteur de sorties connectées

    for(int i=0;i<16;i++)
    {
     
      word w =~(1<<i);
     
      WritePCF16(1,w);  // envoyer ce word à'un PCF SORTIES
      delay(10);         
      lecture=ReadPCF16(0); // lecture des entrées sur un PCF ENTREES,     
      delay(10);
     
   Serial.print("Sortie ");Serial.print(i);Serial.print(": ");Serial.print(lecture,BIN);
     
      if(lecture!=0xFFFF) {
        // on à detecté une ou plusieurs entrées à 0, elles sont donc connectées à la sortie i
        liste_raccords[compte_conection].frompin=i;  // on sauvegarde la pin sortie dans la liste
        decompose(lecture,compte_conection); // on regarde et sauvegarde la ou les pin d'entrées connectées     
        compte_conection++; // et une connexion détectée de plus
       }
    }
   

merci !
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3031
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
donc , si je fais  : word = ~ ( 2<<i) ;  veux dire que je  décale 2 de i position vers la gauche
Je ne suis pas certain de comprendre ton problème. En général, cette syntaxe est utilisée pour créer des masques afin d'isoler un(ou des) bit(s).
Si tu nous expliquais clairement le besoin.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

en fait, j'utilise des expanders PCF8575 qui a l'aide de mon Arduino .Je pourrais gérer la continuité d'un certain nombre de fils qui sera relié un à un aux broches de mes expanders.
et je pense qu'avec un word je pourrais un à un vérifier la continuité entre l'entrée et la sortie d'un fils.

et dont je veux partie du code source que j'ai posté pour évoluer, il n'a pas été écrit pas moi j'essaie juste de le comprendre pour pouvoir avancer dans mon travail.

Voilà et Merci !
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si je comprends bien : tu as deux PCF, relié par un câble que tu veux tester ?
Logged


Pages: [1] 2   Go Up
Jump to: