Rechercher : dans
Par :

Comment declarer un bit d'un registre en C

Dernière réponse le 6 avr 2005 à 11:23:39 sissi2003, le 4 avr 2005 à 16:21:55 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « comment declarer un bit d'un registre en C » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Les structures en langage C++ VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

SKZ81, le 5 avr 2005 à 01:26:56

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)

Répondre à SKZ81

2

 sissi2003, le 6 avr 2005 à 11:23:39

Mon assembler est un A51 .
En faire ta premiere reponse correspondait a ma question. Je te remercie de ton aide.

Répondre à sissi2003