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. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut problème de programmation
    salut, je suis débutant point de vue programmation PIC16F877A sous le compilateur PCWHD. Alors, mon travail consiste à afficher sur un écran LCD relié au PIC16F877A un message défilant, dont j'arrive à le faire, et c'est comme ça "veuillez entre le code" et ceci pour une porte de voiture, ainsi je n'arrive pas à taper le code que je veux qu'il soit masqué sachant que j'ai relié un clavier pour saisir le code correctement j’espère mais ceci ne marche pas malgré que mon programme soit opérationnel alors je ne sais pas ou est le problème alors l'aide sera le bienvenue et merci d'avance et voila mon programme que j'ai écrit:

    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
    #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
    int touche;
    void envoie_commande(char commande)
        {
          E=0;
          RS=0;
          PORTB=commande;
          E=1;
          delay_us(50);
          E=0;
        }
    void envoie_caractere (char caractere )
       {
          E=0;
          RS=1;
          PORTB=caractere;
          E=1;
         delay_us(50);
          E=0;
       }
    #int_timer0
    void 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);}
    }   
    void init_LCD()
       {
          delay_ms(15);
          envoie_commande(0x3c);
          delay_ms(5);
     
          envoie_commande(0x3c);
          delay_ms(100);
     
          envoie_commande(0x0E);
          delay_ms(5);
     
          envoie_commande(0x01);
          delay_ms(5);
       } 
    void main()
    {
       TRISB=0x00;
       TRISC=0xFC;
       TRISD=0x87;
       setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
       init_LCD();
     
       while(true)
          {
          if(touche!='\n')
             {
             envoie_caractere(touche);
             touche='\n';
             }
     
          else envoie_commande(0x89);
                envoie_caractere("Veuillez entrer le code");
          }
     
     
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Malgré votre message très peu compréhensible ... je crois que l'erreur c'est que vous n'appelez pas la fonction 'clavier()' dans le main().
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut salut
    Je crois que je l'ai fait et c'est comme ça que je l'ai appelé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while(true)
          {
          if(touche!='\n')
             {
             envoie_caractere(touche);
             touche='\n';
             }
     
          else envoie_commande(0x89);
                envoie_caractere("Veuillez entrer le code");
          }

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    Oui et il n'y a pas d'appel à la fonction clavier() (celle dont je suppose qui lit le clavier :p)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    alors comment dois je le faire ? s'il vous plait aidez moi....

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Tu as écris une fonction qui s'appelle clavier non ? Ce code pour qu'il soit exécuter il faut bien l'appeler à un moment ? Tu pensais qu'il s'exécuterait quand ?

    C'est plus une question d'algo d'abord avant d'implémentation, soit clair sur ton algo et l'implémentation devrait couler de source...

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    juste après l'affichage de "veuillez entrer le code" , j'aurais acces au clavier mais ça marche pas. Que dois-je faire?

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    ben insère un appel à la fonction clavier() à cet endroit...

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    @killerbee:
    Là .... à ce point, je crois que c'est un cours de C que vous devriez lire, par exemple: http://melem.developpez.com/tutoriel...ion-langage-c/

    clavier, est une fonction définie dans le programme. Pour appeler une telle fonction, il faut écrire:
    quelque part d'adéquat dans le programme. Sachant quand dans les parenthèses, des paramètres peuvent être passés. Cela dépend de la définition de la fonction.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    j'ai parvenu à modifier le programme de tel sorte qu'il appelle la fonction clavier en boucle conditionnelle " if ..... else" mais une erreur reste toujours visible en compilant et c'est "Line92(5,9): a numeric expression must appear here" mais je n'ai pas eu utilisé une expression numérique ainsi est mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(touche!='\n')
          {
             envoie_caractere(touche);
             touche='\n';
     
        else
          envoie_commande(0x80); 
          for(i=0;i<24;i++)  envoie_caractere(texte[i]);
          delay_ms(200);
          rotation(texte);
          }

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    C'est quoi ce else perdu au milieu de nulle part ?

  12. #12
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut @jeroman
    ce "else",selon mon croyance, est destiné pour visualiser le message de "entrer le code" jusqu'à ce que une touche sera appuyé non? s'il vous corriger le moi si j'ai tort et merci d'avance!!!

  13. #13
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Un if ça marche comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (...) {
        ...
    } else {
       ...
    }
    Soit il te manque des accolades ( "}" avant le "else" et "{" après le "else" ), soit tu as un "else" en trop.

  14. #14
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    désolé, mais ça n'a pas marché.... j'ai besoin de quoi car j'ai tout fait mais rien!!
    je n'arrive pas à régler ce problème alors un peu d'aide s'il vous plait? voici mon programme :

    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
    #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 touche;
    void envoie_commande(char commande)
        {
          E=0;
          RS=0;
          PORTB=commande;
          E=1;
          delay_us(50);
          E=0;
        }
    void envoie_caractere (char caractere )
       {
          E=0;
          RS=1;
          PORTB=caractere;
          E=1;
         delay_us(50);
          E=0;
       }
    #int_timer0
    void 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);}
    }   
    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);
          envoie_commande(0x3c);
          delay_ms(5);
     
          envoie_commande(0x3c);
          delay_ms(100);
     
          envoie_commande(0x0E);
          delay_ms(5);
     
          envoie_commande(0x01);
          delay_ms(5);
       } 
    void main()
    {
       TRISB=0x00;
       TRISC=0xFC;
       TRISD=0x87;
       setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
       init_LCD();
     
       while(true)
          {
           if(touche!='\n') 
          {
             envoie_caractere(touche);
             touche='\n';
     
          }else {
     
               touche=envoie_caractere(touche);
               envoie_caractere(touche);
          }
     
          }
     
     
    }

  15. #15
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ca serait plus facile si tu donnais le message d'erreur exact (et qui correspond au source que tu as donné, pas à une version différente que tu as chez toi).

    C'est quoi ce GLOBAL qui n'est défini nul part ?

  16. #16
    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
    Salut,

    Citation Envoyé par matafan Voir le message
    C'est quoi ce GLOBAL qui n'est défini nul part ?
    je pense que c'est une constante définie dans "16F877A.h" représentant une combinaison de bits validant toutes les interruptions.

    Killerbee, je pense que le bas niveau est tellement incrusté dans ton application qu'on n'y comprend plus rien. Toutes tes fonctions - y compris le main - invoquent des registres, comment veux tu qu'on puisse t'aider? Donne au moins le message d'erreur correspondant au code que tu viens de poster.

    La fonction decodage n'est visiblement pas appelée. La fonction clavier est censée être une interruption? Dans ton source, non, elle n'est pas déclarée en tant que telle, elle ne se déclenchera donc jamais.

    C'est à peu près tout ce qu'on peut en dire avec les infos que tu as donné.

  17. #17
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut Salut,
    tout d'abord, merci de m'avoir aidé et l'errer est: "ERROR 51 LINE 104(42,43): A numeric expression must appear here".
    mais encore comment dois-je faire pour qu'elle soit une interruption? et merci d'avance de m'aider!!!!

  18. #18
    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
    tout d'abord, merci de m'avoir aidé et l'errer est: "ERROR 51 LINE 104(42,43): A numeric expression must appear here".
    mais encore comment dois-je faire pour qu'elle soit une interruption? et merci d'avance de m'aider!!!!
    envoi_charactere ne retourne rien puisqu'il est préfixé par void. Or tu essaies ligne 104 d'affecter à la variable touche quelquechose qui n'est pas retourné par envoi_charactere.

    Pour déclarer ton interruption, la façon de procéder est différente pour chaque compilateur pour processeur embarqué. Il faut donc se plonger dans la doc, analyser les programmes d'exemples fournis et potasser les registres. Il n'y a que toi qui pourra le faire.

    Je ne pourrais pas t'aider plus car je ne comprends rien à ton soft. J'ai juste vaguement vu qu'il y avait une interruption qui scannait un petit clavier lignes/colonnes ainsi qu'un lcd en parallèle passant par un port du micro mais c'est tout.

    Je viens de retrouver un bout de code PIC32 que j'ai écrit il y a quelques années. Ça pourrait te servir de point de départ sur la façon de déclarer une interruption. Pour le reste... Lire les docs!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __ISR(_INPUT_CAPTURE_1_VECTOR, ipl3) InputCapture1_Handler (void)

  19. #19
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    salut,
    j'ai lit les docs mais toujours rien j'ai tout essayé mais l'interruption que tu m'as proposé d'implémenter n'est pas compréhensible du tout. je vous demande encore de l'aide avec ce programme amélioré mais qui n'affiche seulement le clavier et pas le message désiré...

    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
    #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()
    {
       TRISB=0x00;
       TRISC=0xFC;
       TRISD=0x87;
       setup_timer_0 (RTCC_DIV_128|RTCC_INTERNAL);
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
       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';
             }
      }
    }

  20. #20
    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
    l'interruption que tu m'as proposé d'implémenter n'est pas compréhensible du tout.
    Elle est pourtant standard en PIC32.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __ISR(_INPUT_CAPTURE_1_VECTOR, ipl3) InputCapture1_Handler (void)
    A la place de InputCapture1_Handler, tu mets le nom de ta function à toi, clavier je crois. Comme c'est une interruption, il y a bien un void pour les paramètres d'entrée et un void en retour, c'est à dire pas de sortie et pas d'entrée.
    void __ISR siignifie que la fonction est une interruption (Interrupt Sub Routine). Pour les paramètres _INPUT_CAPTURE_1_VECTOR et ipl3, je suppose qu'il s'agit du registre hardware et le numéro de bit qui doit déclencher l'interruption. Encore une fois, c'est du standard en embarqué.

    Citation Envoyé par killerbee Voir le message
    ce programme amélioré mais qui n'affiche seulement le clavier et pas le message désiré...
    Ce n'est pas très clair... les appuis sur le clavier ne sont pas affichés? Le message n'est pas affiché?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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