Déclaration d'une variable un peu spéciale en C
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Déclaration d'une variable un peu spéciale en C



  1. #1
    inviteba7165a5

    Exclamation Déclaration d'une variable un peu spéciale en C


    ------

    Salut à tous !

    Je travaille sur un projet d'écran à diodes commandé par un PIC16f877. Les ports C et E sont utilisées en sortie, le port A en entrée analogique, je compte utiliser le port D pour les entrées provenant d'un interface utilisateur.

    Entre autres, sur ces entrées, il y aura des sélections de plages d'éclairement, de brillance etc... autrement dit certaines entrées seront codées sur plusieurs bits (et commandées par des roues codeuses).

    Ma question est la suivante : est-il possible de déclarer comme variable un groupement de deux ou plusieurs bits quelconques ? en l'occurrence ici des bits du port D. Y a-t-il éventuellement un autre moyen de tester la valeur prise par un ensemble de bits sans les tester l'un après l'autre par des if imbriqués ?

    Merci par avance,
    ThiuT

    -----

  2. #2
    SuperTux

    Re : Déclaration d'une variable un peu spéciale en C


  3. #3
    JPL
    Responsable des forums

    Re : Déclaration d'une variable un peu spéciale en C

    Déplacé : les question sur la programmation de PIC sont généralement mieux placées en Électronique.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  4. #4
    invite6ea6d79a

    Re : Déclaration d'une variable un peu spéciale en C

    Citation Envoyé par SuperTux Voir le message
    tout cela est bien beau, mais je n'ai jamais trouvé de façon de l'utiliser pour y attribuer des pins de différents port d'un PIC. Mes amis du support technique de Microchip non plus d'ailleur.

    Thiut, tu n'auras probablement pas le choix que de le faire "à bras" à chaque fois.

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

    Re : Déclaration d'une variable un peu spéciale en C

    Il faut faire un masque avant de tester la valeur de ton octet...

    Même si tu arrivais à déclarer une variable comme tu veux, de toute façon, en ASM, le PIC serait obligé de faire le masque.

    Tu peux par contre, te faire une macro qui intègre le masque et l'utiliser comme si...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    inviteba7165a5

    Re : Déclaration d'une variable un peu spéciale en C

    J'étais en train de préparer un post de remerciements, disant que j'allais arreter de me compliquer la vie au lieu de prendre 1minute pour ecrire quelques if imbriqués...

    ...et je viens de me rendre compte que je vais devoir travailler sur des groupements de 4 bits ! (ce qui fait un paquet de if ^^)

    Par chance, j'ai eu quelques idées salvatrices :

    - première idée : mettons que j'aie sur le port B de mon PIC 11000101. Je veux récuperer une valeur entière B codée sur les 4 bits de poids faible et une valeur entiere H codée sur les 4 bits de poids fort. Voici ma méthode :

    int A;
    A=PORTB&"00001111"; // je récupere les 4 LSB (A = 00000101)
    B=A; // et j'ai directement la valeur 5 (0101)
    A=PORTB&"11110000"; // je recupere les 4 MSB (A = 11000000)
    H=A>>4; // H vaut A décalé de 4 bits vers la droite (00001100)
    // soit 12

    - 2ème idée : plus compliquée mais peut etre plus passe partout :
    #bit b0=PORTB.0
    etc... sur les 8 bits du port B
    B = (8*b3) + (4*b2) + (2*b1) + b0;
    H = (8*b7) + (4*b6) + (2*b5) + b4;

    Je vais de ce pas tester ces deux possibilités (et commander d'ores et deja deux roues hexa sur radiospares ^^).

    Merci pour votre aide, si vous avez des suggestions quand à ces deux idées, lachez vous !

  8. #7
    Seb.26

    Re : Déclaration d'une variable un peu spéciale en C

    bah oui, tu fais des masques quoi ...

    > Si tu veux lire certains bit d'un octet, tu fais un AND sur l'octet lu.

    > Si tu veux mettre à 0 certains bits d'un octet, tu fais un AND avec l'inverse des bits à mettre à 0.

    > Si tu veux mettre à 1 certains bits d'un octet, tu fais un OR avec les bits à mettre à 1.

    > Si tu veux inverser certains bits d'un octet, tu fais un XOR avec à 1 les bits à inverser.

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

Discussions similaires

  1. Commande IR un peu speciale....
    Par invite1506df5a dans le forum Électronique
    Réponses: 5
    Dernier message: 04/02/2008, 17h30
  2. équation différentielle un peu spéciale
    Par invite7ab34564 dans le forum Mathématiques du supérieur
    Réponses: 15
    Dernier message: 07/11/2007, 16h03
  3. Déclaration Variable C
    Par jorg1n dans le forum Électronique
    Réponses: 6
    Dernier message: 16/10/2007, 18h01
  4. Déclaration variable en C
    Par jorg1n dans le forum Électronique
    Réponses: 7
    Dernier message: 20/09/2007, 07h45
  5. Force de Magnus un peu spéciale
    Par invitec27d7834 dans le forum Physique
    Réponses: 0
    Dernier message: 30/03/2007, 14h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.