Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Rotation de bits en C



  1. #1
    gcortex

    Rotation de bits en C


    ------

    Bonjour,

    J'essaye de lire un numéro de série avec un pic18 en one wire avec une pin à usage général et une résistance de pull up.
    Peut on utiliser le flag de retenue pour regrouper les bits en octets plutôt que ce bout de code qui semble ne pas fonctionner ?

    Code:
    val=0;
               for (b=0;b<8;b++)
                            {
                            value = read()>>b;
                            val = val | value;
                            };
    J'ai toujours 255.
    Merci.

    -----

  2. Publicité
  3. #2
    Vincent PETIT
    Animateur Électronique

    Re : Rotation de bits en C

    Salut,
    Je pense que tu as fait une erreur dans ce code, ici tu décales read() vers la droite au lieu de la gauche.

    Ceci devrait fonctionner :

    Code:
     unsigned int value = 0;
     unsigned int b;
    
     for(b = 0; b < 8; b++)
       value = value | (read() << b);
    Là où il n'y a pas de solution, il n'y a pas de problème.

  4. #3
    gcortex

    Re : Rotation de bits en C

    merci mais c'est le 7ème bit de read().
    A l'oscillo, çà a l'air de cracher...

  5. #4
    Vincent PETIT
    Animateur Électronique

    Re : Rotation de bits en C

    Je ne comprends pas bien ce que tu veux dire ?

    Tu veux dire que read() envoie le bit de poids fort en premier ? Si oui alors, il suffit d'ajuster les index dans la boucle for comme ceci :

    Code:
     unsigned int value = 0;
     unsigned int b;
    
     for(b = 7; b >= 0; b--)
       value = value | (read() << b);
    Là où il n'y a pas de solution, il n'y a pas de problème.

  6. A voir en vidéo sur Futura
  7. #5
    Seb.26

    Re : Rotation de bits en C

    Sans les type des variables ni les prototypes/description des fonctions c'est dur de t'aider ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #6
    gcortex

    Re : Rotation de bits en C

    çà marche ! Il faut juste lire et écrire à l'envers,
    mais je souhaite quand même utiliser le carry_flag !
    Merci.

  9. Publicité

Discussions similaires

  1. Programme 32 bits sur Windows 7 Home premium edition 64 bits
    Par AgatheJ dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 10/02/2012, 19h08
  2. Réponses: 0
    Dernier message: 08/02/2012, 17h03
  3. soustraction 16 bits,deux registres 8 bits, assembleur
    Par indiannajones dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2011, 20h59
  4. Convertir 12 bits série en 7 bits paralléle avec un HC11 ?
    Par djsat dans le forum Électronique
    Réponses: 2
    Dernier message: 03/03/2005, 09h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.