IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

prog atmega 8


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Par défaut prog atmega 8
    Salut,
    J'apprend a programmer sur les avr (atmega8) et, j'ai rencontré un probleme avec le code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PORTC = sequence[pos];
    		if(sens==HORAIRE){ 
                   /*ligne qui pause problem : */
    			((++pos)%4) ;
    j'ai à la compilation l'avertissement suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     warning: value computed is not used
    je l'ai dabord ignoré, mais ça a fait n'importe quoi, alors je l'ai ensuite remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ++pos;
    if (pos==4) pos=0;
    Et sa marche tres bien .

    Du coup j'ai été pris d'un doute et j'ai essayer cette instruction dans un programme normal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int i, pos=0; 
    	for (i=0; i<10; i++)
    		printf("%i\n",((++pos)%4) );
    ce qui ne pause aucun probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    1
    2
    3
    0
    1
    2
    3
    0
    1
    2
    Quelqu'un peut il m'expliquer pourquoi cette instruction ne marche pas sur l'atmega?
    et que se passe-t-il quand je depasse la dimension du tableau ?
    merci bien !

  2. #2
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    ((++pos)%4) incrémente pos, puis calcule pos % 4, qui dans le premier cas n'est pas utilisée. Et surtout n'est pas affectée à pos.
    Dans le printf(), ((++pos)%4) est calculé (dans un temporaire) pour être envoyé à printf().

    Pourquoi pas: ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Par défaut
    oulala et je l'avais pas vu !
    ça n'avait donc rien de mystique !
    merci

Discussions similaires

  1. [TP]Compiler un prog sans entrer dans TP7
    Par poppels dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 23/10/2002, 18h46
  2. Réponses: 8
    Dernier message: 17/10/2002, 12h52
  3. redémarrer un prog à partir d'un bouton
    Par yokito dans le forum Langage
    Réponses: 5
    Dernier message: 06/09/2002, 13h19
  4. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo