Code pour microcontroleur

Résolu
develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009 - 4 août 2008 à 06:27
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 4 août 2008 à 21:15
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

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2008 à 20:40
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
3
develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009
4 août 2008 à 20:49
Merci Racpp,


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


Merci

DevelSoft
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2008 à 21:15
De rien develdelphi.
Je pense que tu devrais cliquer sur "Réponse acceptée" correspondant à ma réponse. Cela pourrait être utile à certains.
0
Rejoignez-nous