IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Unions et tableau


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut Unions et tableau
    Bonjour
    J'écrit pour un microcontrolleur (jm60 de freescale)
    pour faire des entrés sortie il y a un beau fichier .h qui définie les pin comme des bytes de grandeurs 1 dans une union sur le port de 8 bit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    /*** PTBD - Port B Data Register; 0x00000002 ***/
    typedef union {
      byte Byte;
      struct {
        byte PTBD0       :1;                                       /* Port B Data Register Bit 0 */
        byte PTBD1       :1;                                       /* Port B Data Register Bit 1 */
        byte PTBD2       :1;                                       /* Port B Data Register Bit 2 */
        byte PTBD3       :1;                                       /* Port B Data Register Bit 3 */
        byte PTBD4       :1;                                       /* Port B Data Register Bit 4 */
        byte PTBD5       :1;                                       /* Port B Data Register Bit 5 */
        byte PTBD6       :1;                                       /* Port B Data Register Bit 6 */
        byte PTBD7       :1;                                       /* Port B Data Register Bit 7 */
      } Bits;
    } PTBDSTR;
    extern volatile PTBDSTR _PTBD @0x00000002;
    #define PTBD                            _PTBD.Byte
    #define PTBD_PTBD0                      _PTBD.Bits.PTBD0
    #define PTBD_PTBD1                      _PTBD.Bits.PTBD1
    #define PTBD_PTBD2                      _PTBD.Bits.PTBD2
    #define PTBD_PTBD3                      _PTBD.Bits.PTBD3
    #define PTBD_PTBD4                      _PTBD.Bits.PTBD4
    #define PTBD_PTBD5                      _PTBD.Bits.PTBD5
    #define PTBD_PTBD6                      _PTBD.Bits.PTBD6
    #define PTBD_PTBD7                      _PTBD.Bits.PTBD7
    donc pour faire un IO on a qu'a faire: PTBD_PTBD7 = 1; par example
    mais j'aurais besoin d'un tableau du style: char out[] = {PTBD_PTBD7, PTBD_PTBD5, PTAD_PTAD5};
    pour pouvoir faire un IO comme ceci: out[1] = 1;

    Mais je ne sais pas comment définir mon tableau
    est-ce seulement possible?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si je comprend bien, en faisant dans ton exemple out[1] = 1, tu voudrais que cela soit équivalent à faire PTBD_PTBD5 = 1
    Je ne crois pas cela possible :
    Suppose un problème analogue avec 3 int. On pourrait imaginer vouloir modifier une des trois variables par l'intermédiaire d'un tableau. Pour la modifier, on a besoin de son adresse, et on pourrait procéder par le schéma suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a,b,c;
    int * tab[] = {&a, &b, &c};
    *tab[1] = 1; // ou b=1
    Or dans ton cas
    - les "variables" sont des champs de bits : elles n'ont pas d'adresse
    - ces "variables" ne sont pas toutes des variables : PTBD_PTBD7 est une valeur, pas un champ de bits.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Merci de la réponse
    Tu avais très bien compris la question

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Mise en forme conditionnelle d'un tableau et requete union
    Par Errebey dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/01/2014, 10h33
  2. Union requete = tableau Croisé
    Par yaboki dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/08/2007, 16h11
  3. [Tableaux] Lister le tableau avec UNION => Problème
    Par tutomania dans le forum Langage
    Réponses: 4
    Dernier message: 25/09/2006, 19h20
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo