Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

fonction dans mikroc 8.2



  1. #1
    xastin

    fonction dans mikroc 8.2


    ------


    bonjour à tous quelqu'un peu t-il m'aider à appeler la fonction suivante dans mon programme.

    int xastin(int x,int y) {
    PORTA=0b11111;
    delay_ms(2000);
    PORTA=0;
    kp=0;

    }

    Les arguments de ma fonction sont ils bon?
    Je dois appeler cette fonction dans ce programme:

    unsigned short kp,kp1;
    int xastin(int x,int y); // es ce que cette ligne es juste//
    void main() {
    TRISB=0b00001111;
    TRISA=0b00000000;
    keypad_Init(&PORTB);
    PORTB=0b11110000;
    debut:
    PORTA=0;
    kp=keypad_Released();
    switch (kp) {
    case 1: //xastin();
    break;

    case 2: PORTA=0b00001;
    delay_ms(2000);
    PORTA=0;
    kp=0;
    break;
    }

    MERCI

    -----

  2. Publicité
  3. #2
    xastin

    Re : fonction dans mikroc 8.2

    Merci pour l'aide je viens de trouver une solution pour mon code
    unsigned short kp,kp1;
    void xastin() {PORTA=0b00011;
    .........................
    }
    void main () {
    TRISB=0b00001111;
    TRISA=0b00000000;
    keypad_Init(&PORTB);
    PORTB=0b11110000;
    debut:
    PORTA=0;
    kp=keypad_Released();
    switch (kp) {
    case 1 astin();
    break;
    .............................. .............................
    .............................. ............................
    }

  4. #3
    F1TVB

    Re : fonction dans mikroc 8.2

    Bonjour
    Code:
    int xastin(int x,int y) {
    PORTA=0b11111;
    delay_ms(2000);
    PORTA=0;
    kp=0;
    
    }
    Cette fonction est correcte mais les arguments (x,y) ne sont pas utilisés..
    De plus cette fonction retourne un integer donc il faut écrire:
    Code:
    int xastin(int x, int y)
    {
    int kp; // variable locale à la fonction
      PORTA=0b11111;
      delay_ms(2000);
      PORTA=0;
      kp=0;
      return kp;
    }
    Code:
    int xastin(int x,int y); // es ce que cette ligne es juste
    Oui en début de programme pour définir les arguments mais même remarque pour x et y.
    Code:
    case 1: //xastin();
    Le case attend une valeur donc il faut écrire:
    si kp==1:
    Code:
    case 1:
          xastin(0,0);// les paramètres sont sans action
    break;
    Je ne vois pas l'usage de ce code, d'autre infos à venir..

  5. #4
    xastin

    Re : fonction dans mikroc 8.2

    MERCI à VOUS F1TVB
    j'aimerais savoir s'il est possible de faire exécuter la chaine suivante dans mon PIC 16F84A :
    case 2: PORTA=0b00001;
    delay_ms(2000);
    PORTA=0;
    kp=0;
    PORTA=0b00011
    break;
    car la simulation avec mikroc fonctionne mais une dans le PIC ça ne fonctionne plus. Car seul la 1er instruction "PORTA=0b00001;" est exécutée
    MERCI

  6. #5
    F1TVB

    Re : fonction dans mikroc 8.2

    Bonjour
    si kp == 2

    Code:
    case 2:
       PORTA=0b00001;  // RA0=1
       delay_ms(2000);
       PORTA=0;
       kp=0;
       PORTA=0b00011; // RA0 et RA1 = 1  il manque le ; 
    break;
    Normalement cela doit fonctionner. Suis étonné que MikroC ne donne pas une erreur en compilation...
    Je ne vois toujours pas l'usage de ce code.

  7. A voir en vidéo sur Futura
  8. #6
    xastin

    Re : fonction dans mikroc 8.2

    Citation Envoyé par F1TVB Voir le message
    Bonjour
    si kp == 2

    Code:
    case 2:
       PORTA=0b00001;  // RA0=1
       delay_ms(2000);
       PORTA=0;
       kp=0;
       PORTA=0b00011; // RA0 et RA1 = 1  il manque le ; 
    break;
    Normalement cela doit fonctionner. Suis étonné que MikroC ne donne pas une erreur en compilation...
    Je ne vois toujours pas l'usage de ce code.
    bonjour et encore merci pour tous les messages c'est beau de ne pas être seul face aux difficultés
    Ce code doit permettre de gérer un menu ;en fonction de la touche saisie le code doit permettre de faire des branchements pour pouvoir commander les sorties qui sont des LEDs.
    EN simulation le code se comporte comme je le veux mais une fois dans mon 16F84A c'est carrément autre chose.
    merci

  9. Publicité
  10. #7
    vede

    Cool Re : fonction dans mikroc 8.2

    Bonjour,

    Citation Envoyé par xastin Voir le message
    (...)
    EN simulation le code se comporte comme je le veux mais une fois dans mon 16F84A c'est carrément autre chose.
    merci
    c'est normal...
    la simu ça ne fonctionne qu'une fois que l'on maîtrise les PICS (et encore...)...
    avant ça ça ne fonctionnera jamais...

    donc pour débuter sur de bonnes bases il faut "travailler" en réel...
    et commencer par faire clignoter une led...
    puis ajouter un BP...
    puis 2...

    comment est câblé ton "keypad"?
    tu as bien mis des résistances de rappel (pull down)?

    vede
    ;O]
    _____________
    ...

  11. #8
    xastin

    Re : fonction dans mikroc 8.2

    merci .
    oui j'ais mis les résistances au niveau du clavier .
    J'aimerais rappeler que mon clavier et mon programme répondaient normalement et puis un jour plus rien. et apres je me suis fais un autre programmateur qui transfert les programmes . j'utilise ICPROG

  12. #9
    xastin

    Re : fonction dans mikroc 8.2

    SALUT à tous après avoir changé mon quartz j'ais du nouveau car le programme fais les 2 premiers instructions;il me semble que l'ancien étais déffaillant;je l'ais depuis 2ans est ce pour cela?
    je signifie que le nouveau quartz a été récupéré sur un veille ordinateur .

  13. #10
    F1TVB

    Re : fonction dans mikroc 8.2

    Bonjour
    MikroC dispose d'une bibliothèque pour gérer les boutons.
    Un exemple (que j'utilise)
    Code:
    void main()
    {
      TRISB=0;
      TRISA=0x3f; // entrée boutons
      ADCON1=0x06;
      while(1)
      {
         if (Button(&PORTA, BT1, 5, 0))
          {
            ActionBT1();
          }
         if (Button(&PORTA,BT2, 5, 0))
         {
           ActionBT2();
         }
      }
    }
    Cela doit fonctionner avec un 16F628.

  14. #11
    xastin

    Re : fonction dans mikroc 8.2

    bonjour et merci pour vos précieux conseil .
    j'ais l'impression que mon clavier n'est pas très stable malgré les résistances (8 une patte au niveau de chaque noeud entre la broche de mon PIC16F84A et le câble du clavier et l'autre reliée à la masse ) que dois-je faire pour avoir un clavier fiable

  15. #12
    xastin

    Re : fonction dans mikroc 8.2

    bonjour
    s'il vous plais quelqu'un pourrait il me donner des instructions pour faire un programme sous mikroc ,utilisant deux (2) switch pour la gestion de mon clavier
    MERCI

  16. Publicité
  17. #13
    vede

    Cool Re : fonction dans mikroc 8.2

    Salut,

    Citation Envoyé par xastin Voir le message
    bonjour et merci pour vos précieux conseil .
    j'ais l'impression que mon clavier n'est pas très stable malgré les résistances (8 une patte au niveau de chaque noeud entre la broche de mon PIC16F84A et le câble du clavier et l'autre reliée à la masse ) que dois-je faire pour avoir un clavier fiable
    (...)
    bonjour
    s'il vous plais quelqu'un pourrait il me donner des instructions pour faire un programme sous mikroc ,utilisant deux (2) switch pour la gestion de mon clavier
    MERCI
    qu'est ce que tu "entends" par "pas très stable"?
    quels sont les symptômes?

    pour le câblage j'y comprends rien...
    si t'as 2 minutes un petit schéma serait le bienvenu...
    (avec Kicad, ou FreePCB, ou...)...

    pour le code, c'est tout simple:
    tu télécharges la dernière version de MikroC (PRO v3.8),
    puis tu vas dans le menu "HELP" puis dans le "chapitre"
    MikroC PRO Libraries > 4X4 Keypad...
    tu y trouvera le code et le schéma...

    pour "ta logique" (gestion des boutons, switch...) il te faut cogiter un peu...
    mais n'hésites pas si question (précise)...

    vede
    ;O]
    ______________
    ...

  18. #14
    xastin

    Re : fonction dans mikroc 8.2

    Citation Envoyé par vede Voir le message
    Salut,



    qu'est ce que tu "entends" par "pas très stable"?
    quels sont les symptômes?

    pour le câblage j'y comprends rien...
    si t'as 2 minutes un petit schéma serait le bienvenu...
    (avec Kicad, ou FreePCB, ou...)...

    pour le code, c'est tout simple:
    tu télécharges la dernière version de MikroC (PRO v3.8),
    puis tu vas dans le menu "HELP" puis dans le "chapitre"
    MikroC PRO Libraries > 4X4 Keypad...
    tu y trouvera le code et le schéma...

    pour "ta logique" (gestion des boutons, switch...) il te faut cogiter un peu...
    mais n'hésites pas si question (précise)...

    vede
    ;O]
    ______________
    ...
    BONJOUR ET MERCI POUR L'AIDE
    MON CODE EST LE SUIVANT

    Code:
    unsigned short x,k,kp;
    void main() {
    TRISB=0b00001111;
    TRISA=0;
    keypad_Init(&PORTB);
    
    PORTB=0b11110000;
    debut:
    kp=0;
    PORTA=0;
    kp=keypad_Released();//pour definir kp com la valeur saisie au clavier
    if (kp==1) {
              PORTA=0b00001;
              delay_ms(3000);
              
              PORTA=0b00010;
              delay_ms(3000);
              }
    else  if (kp==2)
                   {
              PORTA=0b00011;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                    }
    else if (kp==3)
                     {
              PORTA=0b00111;
              delay_ms(3000);
              PORTA=0b01010;
              delay_ms(3000);
                     }
    else  if (kp==5)
                   {
              PORTA=0b01111;
              delay_ms(3000);
              PORTA=0b00100;
              delay_ms(3000);
                    }
    else if (kp==6)
                     {
              PORTA=0b00001;
              delay_ms(3000);
              PORTA=0b00010;
              delay_ms(3000);
                     }
    else  if (kp==7)
                   {
              PORTA=0b00111;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                    }
    else if (kp==9)
                     {
              PORTA=0b00001;
              delay_ms(3000);
              PORTA=0b00010;
              delay_ms(3000);
                     }
    else  if (kp==10)
                   {
              PORTA=0b00111;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                    }
    else if (kp==11)
                     {
              PORTA=0b00001;
              delay_ms(3000);
              PORTA=0b00010;
              delay_ms(3000);
                     }
    else  if (kp==13)
                   {
              PORTA=0b00111;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                    }
    else if (kp==14)
                     {
              PORTA=0b011111;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                     }
    else  if (kp==15)
                   {
              PORTA=0b00111;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
                    }
    else if (kp==16)
                     {
              PORTA=0b00011;
              delay_ms(3000);
              PORTA=0b00010;
              delay_ms(3000);
                     }
    goto debut
    }
    j'utilise MIKROC 8 1 0 0
    MERCI à tous c schéma a été fais avec paint.
    Images attachées Images attachées

  19. #15
    xastin

    Re : fonction dans mikroc 8.2

    BONJOUR
    Pour les symptômes:
    -si j'utilise mon quartz de 3,2 MGHz seul la première instruction de la condition est exécutée.
    -si j'utilise le quartz (10.000) de TXC : 10 MGHz pour les premiers essais 3 instructions d'une même condition sont exécuté mais après seul 2 instructions le sont.
    Que faire .merci à tous pour l'aide .

  20. #16
    F1TVB

    Re : fonction dans mikroc 8.2

    Bonjour
    Les if..else sont mal adaptés. Il est préférable d'utiliser un switch... case...break
    Exemple

    Code:
    while(1)
    {
        kp=keypad_Released();//pour definir kp com la valeur saisie au clavier
        switch(kp)
        {
            case 1:
              PORTA=0b00001;
              delay_ms(3000);
              
              PORTA=0b00010;
              delay_ms(3000);
              kp=0;
              break;
          case 2:
              PORTA=0b00011;
              delay_ms(3000);
              PORTA=0b00110;
              delay_ms(3000);
              break;
    // ainsi de suite.......
         default:
              action_hors_valeur();// pas obligatoire mais préférable
              break;
         }//end switch
    }end while
    Pour gérer un clavier 4x4 il existe des méthodes plus adaptées, mais je ne vais pas développer votre programme....

Sur le même thème :

Discussions similaires

  1. simulation dans MPLAB et MikroC
    Par shadyfright dans le forum Électronique
    Réponses: 1
    Dernier message: 13/06/2010, 13h55
  2. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par °Oo>>PCSI2<<oO° dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 08h16
  3. mikroC
    Par sloter dans le forum Électronique
    Réponses: 6
    Dernier message: 09/03/2009, 23h13
  4. symboles dans mikroC
    Par amgab2003 dans le forum Électronique
    Réponses: 2
    Dernier message: 25/07/2008, 09h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.