Comment declarer un bit d'un registre en C
Résolu/Fermé
sissi2003
Messages postés
9
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
30 avril 2014
-
4 avril 2005 à 16:21
sissi2003 Messages postés 9 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 30 avril 2014 - 6 avril 2005 à 11:23
sissi2003 Messages postés 9 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 30 avril 2014 - 6 avril 2005 à 11:23
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
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
A voir également:
- Comment declarer un bit d'un registre en C
- Registre windows - Guide
- Cle windows 10 professional 64 bit gratuit - Guide
- Poweriso 32 bit - Télécharger - Gravure
- 32 bit - Guide
- Format factory 64 bit - Télécharger - Conversion & Codecs
2 réponses
sbit P2_5 = P2^5; en assembleur
C'est quoi ton assembleur ?
En C.
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)
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)
sissi2003
Messages postés
9
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
30 avril 2014
6 avril 2005 à 11:23
6 avril 2005 à 11:23
mon assembler est un A51 .
En faire ta premiere reponse correspondait a ma question. Je te remercie de ton aide.
En faire ta premiere reponse correspondait a ma question. Je te remercie de ton aide.