Comment declarer un bit d'un registre en C

Résolu
sissi2003 Messages postés 9 Statut Membre -  
sissi2003 Messages postés 9 Statut Membre -
bonjour,

J'ai longtemps programme en basic et j'ai du mal a me remettre au C.
Quelqu'un peu me dire comment on declare le bit 5 (par exemple) du registre P2. Le registre P2 a ete identifie par son adresse.
Je croyais qu'il fallait ecrire :
sbit P2_5 = P2^5; en assembleur pour pouvoir l'utiliser sous le nom P2_5 mais ca ne marche pas.

merci

2 réponses

  1. SKZ81
     
    sbit P2_5 = P2^5; en assembleur

    C'est quoi ton assembleur ?
    En C.
    int getBit (uint reg, int bitNumber) {
      int b = reg >> bitNumber; // en asm, >> est SHR
      // on décale de 5 bits vers la droite
      b &= 0x00000001; // 1 en héxa sur 32 bits
      // on masque tout les bits sauf le N°0 (ancien N°bitNumber).
    
      return b;
      // on retourne un entier qui vaut soit zéro, soit un, en fonction de la
      // valeur du bit "bit number" de "reg"
    }
    


    Tiens, je crois comprendre ce que tu voulais faire... "^" c'est bien l'opérateur "OU EXCLUSIF" du C ???

    Alors, tu voulais surement dire :
    P2_5 = P2 & (1<<5);
    //vaut zéro si le bit 5 est à zéro, 2^5, sinon...)

    (puisque TA ligne fait le XOR (c'est pas la bonne fonction) de P2 avec (en binaire sur 1 octet) 00001001)
    0
  2. sissi2003 Messages postés 9 Statut Membre
     
    mon assembler est un A51 .
    En faire ta premiere reponse correspondait a ma question. Je te remercie de ton aide.
    0