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 :

problème de programmation


Sujet :

C

  1. #21
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    tout d'abord, merci pour l'explication. ensuite, le message de "veuillez saisir le code" ne s'affiche pas, le pic exécute directement la saisie du clavier comme si il ignore la condition de choix du bouclage...

  2. #22
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    j'ai essayé votre solution mais il y'a des tons d'erreurs, s'il vous plait pourquoi?
    voici la liste d'erreur ainsi le programme et en compilant tu verras qu'il y a 43 erreurs!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    #include "16F877A.h"
    #use delay(clock=10M)
    #byte PORTB= 0x06
    #byte PORTC= 0x07
    #byte TRISB= 0x86
    #byte TRISC= 0x87
    #byte PORTD= 0x08
    #byte TRISD= 0x88
    #bit E =PORTC.0
    #bit RS=PORTC.1
    #bit C1=PORTD.0
    #bit C2=PORTD.1
    #bit C3=PORTD.2
    char texte[28]="veuillez saisir le code    ";
    int i;
    char touche;
     
    void envoie_commande(char commande)
    {
       E=0;
       RS=0;//mode commande
       PORTB=commande;
       E=1;
       delay_us(50);
       E=0;
    }
    void envoie_caractere(char caractere)
    {
       E=0;
       RS=1;//mode affichage
       PORTB=caractere;
       E=1;
       delay_us(50);
       E=0;
    }
    #int_timer0
     
    char clavier()
    {
       touche='\n';
       PORTD=0x08;//Selection de la ligne A
       if(C1==1){touche='1';while(C1==1);}
       if(C2==1){touche='2';while(C2==1);}
       if(C3==1){touche='3';while(C3==1);}
       PORTD=0x10;//Selection de la ligne B
       if(C1==1){touche='4';while(C1==1);}
       if(C2==1){touche='5';while(C2==1);}
       if(C3==1){touche='6';while(C3==1);}
       PORTD=0x20;//Selection de la ligne C
       if(C1==1){touche='7';while(C1==1);}
       if(C2==1){touche='8';while(C2==1);}
       if(C3==1){touche='9';while(C3==1);}
       PORTD=0x40;//Selection de la ligne D
       if(C1==1){touche='*';while(C1==1);}
       if(C2==1){touche='0';while(C2==1);}
       if(C3==1){touche='#';while(C3==1);}
      return touche;
    }
    //!void decodage(char touche)
    //!{
    //!   switch(touche)
    //!   {
    //!      case '0': PORTB=0x3F;break;
    //!      case '1': PORTB=0x06;break;
    //!      case '2': PORTB=0x5B;break;
    //!      case '3': PORTB=0x4F;break;
    //!      case '4': PORTB=0x66;break;
    //!      case '5': PORTB=0x6D;break;
    //!      case '6': PORTB=0x7D;break;
    //!      case '7': PORTB=0x07;break;
    //!      case '8': PORTB=0x7F;break;
    //!      case '9': PORTB=0x6F;break;
    //!   }
    //!}
     
    void init_LCD()
    {
       delay_ms(15);//attendre le démarrage du LCD
       envoie_commande(0x3C);//Mode 8bits, 2ligne, 5*10 font
       delay_ms(5);
       envoie_commande(0x3C);//Mode 8bits, 2ligne, 5*10 font
       delay_ms(100);
       envoie_commande(0x0E);//display on, Corseur on, blink off
       delay_ms(5);
       envoie_commande(0x01);// clear dispaly
       delay_ms(5);
    }
    void rotation(int texte[26])
    {
      int A;
      A=Texte[0];
      for(i=0;i<25;i++)  texte[i]=texte[i+1];
      texte[24]=A;
    }      
     
    void main()
    {
       void __ISR(PORTD,0x08) clavier(void)
       TRISB=0x00;
       TRISC=0xFC;
       TRISD=0x87;
       setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
       enable_interrupts(clavier);
       init_LCD();
       while(touche)
        {
         envoie_commande(0x80);
         for(i=0;i<24;i++)  envoie_caractere(texte[i]);
            {
             delay_ms(200);
             rotation(texte);
             }
     
     
         }
    //! while(touche)
    //!  {
    //!if (touche!='\n')
    //!         {
    //!         envoie_caractere(touche);
    //!         touche='\n';
    //!         }
    //!  }
    }

  3. #23
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Citation Envoyé par killerbee Voir le message
    en compilant tu verras qu'il y a 43 erreurs!
    Je n'ai pas de compilo pour PIC32 sous la main. Il me semblerait plus logique que tu donnes ces messages d'erreur.

    Dans ta boucle for, tu appelles bien une fonction envoie_caractere: il y a de fortes chance chances que ton problème soit dans le dialogue avec le LCD. Un port dans le mauvais sens, un timing non respecté, je ne sais pas, en tout cas des choses bien imbriquées dans le hardware que toi seul peut vérifier. Ça veut dire oscilloscope et deboggueur.

    Au lieu de dire que tu as 43 messages d'erreur, ne pourrais tu pas plutôt essayer de les comprendre? Ton problème est là, tu n'essaies pas de comprendre. Exemple type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     enable_interrupts(clavier);
    Ca, c'est écrit au petit bonheur, ça ne veut rien dire, et dans tes 43 erreurs, il y en a au moins une qui se rapporte à ça.

  4. #24
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Par défaut
    Plutôt que de compter sur les autres pour débugger ton code ouvre un tuto, fait des recherches sur internet. Jusqu'à maintenant la plupart de tes réponses ressemblent à "aidez-moi, je comprend pas". Fais une bonne sieste, reprend ton code à tête reposée et essaye de l'analyser pas par pas pour comprendre ce qu'il se passe à chaque étape et si l'enchainement des étapes est logique. A priori c'est toi qui l'a écrit ce code donc tu devrais savoir à quoi correspond chaque fonction et chaque étape. Pour ce qui est des erreurs de compilo, va voir sur google ce que veulent dire ces erreurs ensuite rend toi à la ligne correspondante et analyse. La programmation c'est encore plus dur si on ne fait pas l'effort de chercher et de comprendre.

  5. #25
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    salut,
    Je vous remercie pour votre aide...

  6. #26
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    salut encore,
    je viens de réaliser la saisie du clavier mais mon nouveau problème consiste à comparer deux tableaux d'entier l'un d'eux est prédéfini (dans mon cas est "1234") avec le tableau des valeurs qui sera saisi à partir du clavier, ainsi, si le code est correct il affiche le message "code correct" sinon "code incorrect" mais en simulation il affiche toujour "code incorrect" malgré que le code que j'ai saisi est "1234". j'ai rein compris du tout, j'ai tout essayé mais rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    #include "16F877A.h"
    #use delay(clock=10M)
    #byte PORTB= 0x06
    #byte PORTC= 0x07
    #byte TRISB= 0x86
    #byte TRISC= 0x87
    #byte PORTD= 0x08
    #byte TRISD= 0x88
    #bit E =PORTC.0
    #bit RS=PORTC.1
    #bit C1=PORTD.0
    #bit C2=PORTD.1
    #bit C3=PORTD.2
    char texte[28]="veuillez saisir le code    ";
    char Tvrep[13]="code correct";
    char Tfrep[15]="code incorrect";
    int i;
    char touche=' ';
    void envoie_commande(char commande)
    {
       E=0;
       RS=0;//mode commande
       PORTB=commande;
       E=1;
       delay_us(50);
       E=0;
    }
    void envoie_caractere(char caractere)
    {
       E=0;
       RS=1;//mode affichage
       PORTB=caractere;
       E=1;
       delay_us(50);
       E=0;
    }
    #int_timer0
    void clavier()
    {
       touche=' ';
       PORTD=0x08;//Selection de la ligne A
       if(C1==1){touche='1';while(C1==1);}
       if(C2==1){touche='2';while(C2==1);}
       if(C3==1){touche='3';while(C3==1);}
       PORTD=0x10;//Selection de la ligne B
       if(C1==1){touche='4';while(C1==1);}
       if(C2==1){touche='5';while(C2==1);}
       if(C3==1){touche='6';while(C3==1);}
       PORTD=0x20;//Selection de la ligne C
       if(C1==1){touche='7';while(C1==1);}
       if(C2==1){touche='8';while(C2==1);}
       if(C3==1){touche='9';while(C3==1);}
       PORTD=0x40;//Selection de la ligne D
       if(C1==1){touche='*';while(C1==1);}
       if(C2==1){touche='0';while(C2==1);}
       if(C3==1){touche='#';while(C3==1);}
    }
    void init_LCD()
    {
       delay_ms(15);//attendre le démarrage du LCD
       envoie_commande(0x3C);//Mode 8bits, 2ligne, 5*10 font
       delay_ms(5);
       envoie_commande(0x3C);//Mode 8bits, 2ligne, 5*10 font
       delay_ms(100);
       envoie_commande(0x0E);//display on, Corseur on, blink off
       delay_ms(5);
       envoie_commande(0x01);// clear dispaly
       delay_ms(5);
    }
    void rotation(int texte[26])
    {
      int A;
      A=Texte[0];
      for(i=0;i<25;i++)  texte[i]=texte[i+1];
      texte[24]=A;
    }      
     
    void main()
    {
       int T[4]={1,2,3,4};
       int Ts[4];
       int cmp,j,code;
       TRISB=0x00;
       TRISC=0xFC;
       TRISD=0x87;
       setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
       init_LCD();
     
       func1:
       while(touche==' ')
       {
          disable_interrupts(INT_TIMER0);
          envoie_commande(0x80);
          for(i=0;i<24;i++)  envoie_caractere(texte[i]);
         {
          delay_ms(200);
          rotation(texte);
          }
          enable_interrupts(INT_TIMER0);
       }
       envoie_commande(0x01);// clear dispaly
       delay_ms(5);
     
       for(cmp=1;cmp<5;cmp++)
       {   
     
       func2: if (touche!=' ')
          {
             envoie_caractere('*');
             touche=' ';
             Ts[cmp]=touche;
          }
          else {goto func2;}
       }
       for (j=1;j<5;j++)
       {  
          if (Ts[j]==T[j])
          {
             code=1;
          }
       else{code=0;}
       }
       while(true)
       {
          if(code==0)
          {
     
     
          disable_interrupts(INT_TIMER0);
          envoie_commande(0x80);
          for(i=0;i<24;i++)   envoie_caractere(Tfrep[i]);
         {
     
          delay_ms(1000);
          rotation(texte);
          }
          enable_interrupts(INT_TIMER0);
          goto func1;
          }
       else
       {
          disable_interrupts(INT_TIMER0);
          envoie_commande(0x80);
          for(i=0;i<24;i++)  envoie_caractere(Tvrep[i]);
         {
     
          delay_ms(1000);
          rotation(texte);
          }
          enable_interrupts(INT_TIMER0);
    }
       }
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Petit problème de programmation.
    Par willow.A dans le forum C
    Réponses: 3
    Dernier message: 08/01/2007, 16h36
  2. Problème en programmant un GUI swing
    Par kaelem dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/01/2007, 11h59
  3. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  4. problème finalisation programme
    Par depelek dans le forum Installation, Déploiement et Sécurité
    Réponses: 9
    Dernier message: 02/05/2006, 16h17
  5. Réponses: 1
    Dernier message: 26/09/2005, 19h29

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