Code pour microcontroleur [Résolu]

Signaler
Messages postés
97
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
20 avril 2009
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour,


J'ai un code pour microcontroleur,
et je ne comprend pas certaines lignes
et il s'agit d'opérations sur bits que voici:


le programme:

////////
//variables&fonctions definitions:
...
unsigned long DELAI;
...
inline void delai_cmd(unsigned char t);






//code:
...
/* ajout command pour apres                                  */
/* ------------------------------------------------------------------------- */
inline void delai_cmd(unsigned char t)
{
 DELAI |= ((unsigned long)1) << t;   // ?
}                                                                             
...



//////
avec t etant des #defines pouvant être un chiffre entre 0 et 22 selon conditions.


ce code DELAI &= ((unsigned long)1) << t;
signifie quoi? 

Et avec un & a la place ça fera quoi:  DELAI &= ((unsigned long)1) << t; ?




Merci
 

DevelSoft

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
((unsigned long)1) << t; signifie que la valeur 1 subit un décalage de t bits à gauche.
1= 00000000000000000000000000000001
Si t =5 par exemple on aura 00000000000000000000000000100000

DELAI | = ((unsigned long)1) << t; équivaut à:
DELAI = DELAI | ((unsigned long)1) << t;
Ici la nouvelle valeur de DELAI sera son ancienne valeur à laquelle on a appliqué un OU binaire avec 1 décalé à gauche de t bits.
Supposons que DELAI vaut 8 et t vaut 5:
DELAI =00000000000000000000000000001000
1 << 5= 00000000000000000000000000100000
En appliquant le OU binaire on aura:
DELAI = 00000000000000000000000000101000
En remplaçant | par & on appliquera un ET binaire et on aura:
DELAI= 00000000000000000000000000000000
Messages postés
97
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
20 avril 2009

Merci Racpp,


Je crois qu'on ne peut être plus clair :)


Merci

DevelSoft
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
De rien develdelphi.
Je pense que tu devrais cliquer sur "Réponse acceptée" correspondant à ma réponse. Cela pourrait être utile à certains.