Probleme de programmation pic C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Probleme de programmation pic C



  1. #1
    pdevel

    Unhappy Probleme de programmation pic C


    ------

    Bonjour
    J'ai commence un prog sous Mplab compilateur cc5x(debutant)

    1 led1 sallume et s'teind au bout de 1s ok
    j'appuis sur 1 bouton bp1 qui allume ou eteind led2 ok
    mais j'aimerais que le bouton alume d'abord la led1tempo et s'eteigne et ensuite la led 2 s allume si je relache le bouton et que je rapuis je redemarre le cycle .Sa parait simple mais je seche depuis plusieurs jours

    Quelqu'un peut m'aider a realiser ce projet en c
    sous flowcode ca fonctionne tres bien mais des que je transfere dans le pic ca bug totale alors j'essaye de le faire en c mais.....
    mon prog en c:
    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define led RB1
    #define start RB0

    void main(void)
    {
    debut:;
    sortie=0;
    TRISB=0B10000000;

    start=1;
    delay_10ms(200);
    start=0;
    while(1){

    if(bp1==1){
    led=1;
    }
    else{
    led=0;
    }
    }
    }
    Merci d'avance

    -----

  2. #2
    freepicbasic

    Re : Probleme de programmation pic C

    Code:
    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define led RB1
    #define start RB0
    
    void main(void)
    {
      debut:;
      sortie=0;
      TRISB=0B10000000;
    
      start=1;
      delay_10ms(200);
      start=0;
    
      while(1){
        while(bp1==1){
           start =1;
           }
        if (start==1) {
           start=0;
           led=1;
           delay_10ms(200);
           led=0;
         }
       }
      }
    A+, pat

  3. #3
    pdevel

    Re : Probleme de programmation pic C

    Merci Pat d'etre aussi rapide
    Je pense que j'ai du mal m'expliquer
    quand j'appuis sur le bouton 1 (je reste appuyer)la led1 s'allume et s'eteint apres tempo et la led2 s allume quand je relache le bouton tout s'eteind et apres si on rapuis sur le bouton on recommence le cycle
    c'est ca le plus dure
    phil

  4. #4
    freepicbasic

    Re : Probleme de programmation pic C

    Code:
    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define led RB1
    #define start RB0
    
    void main(void)
    {
      debut:;
      sortie=0;
      TRISB=0B10000000;
    
      start=1;
      delay_10ms(200);
      start=0;
    
      while(1){
        if(bp1==1){
           start =1;
           delay_10ms(200);
           start =0;
           led=1;
           while(bp1==1);
           led=0;
         }
       }
    A+, pat

  5. A voir en vidéo sur Futura
  6. #5
    pdevel

    Re : Probleme de programmation pic C

    Merci PAT ca fonctionne
    il manquait juste une accolade au code
    Mais j'ai compris le principe et maintenant je vais pouvoir le faire pour 4
    boutons
    Ci-joint le code avec l'acollade manquante

    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define led RB1
    #define start RB0

    void main(void)
    {
    debut:;
    sortie=0;
    TRISB=0B10000000;

    start=1;
    delay_10ms(200);
    start=0;

    while(1){
    if(bp1==1){
    start =1;
    delay_10ms(200);
    start =0;
    led=1;
    while(bp1==1);
    led=0;


    }
    }
    }
    Merci encore au personnes comme Pat qui aide les debutant

  7. #6
    freepicbasic

    Re : Probleme de programmation pic C

    utilise les balise pour le code qui conservera ses tabulations

    à la fin
    [/CODE]
    au début
    [CODE]

    (ici ,mis à l'envers pour les voir)
    le texte CODE et /CODE en majuscule
    A+, pat

  8. #7
    pdevel

    Re : Probleme de programmation pic C

    je vais le faire
    Si je rajoute un 2 eime bouton poussoir avec la meme configuration,je ne peux fais soit 1 action sur bp1 ou bp2 mais pas les 2 en meme temps .Je pense que c'est due a la fonction while(bp1==1) qui tourne en boucle tant que le bouton bp1 n'est pas relacher
    Que faut il faire pour que je puisse actionner mes 2 boutons en meme temps avec la meme configuration
    Voici le code que pat a fait et j'ai rajouter le bp2,mais je ne peux pas actionner les 2 en meme temps

    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define bp2 RA1
    #define led1 RB1
    #define led2 RB2
    #define start RB0

    void main(void)
    {

    sortie=0;
    TRISB=0B10000000;
    debut:;
    start=1; // allume led rb0
    delay_10ms(200); // tempo sur led rbo
    start=0; // eteind la led rb0

    for(;{
    // bouton poussoir bp1
    if(bp1==1){
    start =1; // allume led rb0
    delay_10ms(200); // tempo sur led rbo
    start =0; // eteind la led rb0
    led1=1;
    while(bp1==1);
    led1=0; //eteind led rb1

    }

    // bouton poussoir bp2
    if(bp2==1){
    start =1; // allume led rb0
    delay_10ms(200); // tempo sur led rbo
    start =0; // eteind la led rb0
    led2=1; // allume led rb2
    while(bp2==1);
    led2=0; //eteind led rb2
    }


    } // fin de boucle de for(;
    } // fin de boucle de programme principale

  9. #8
    freepicbasic

    Re : Probleme de programmation pic C

    à vérifier je n'ai pas testé...
    On ajoute 2 flags qui pourrait être booléen , là c'est des char.
    On agit sur les transistions.
    pendant le flashled pas de control
    Si on veux plus de précision il faudra gérer aussi le flash en changement de transition avec un compteur et des tempos plus petites, exemple 1ms avec un compteur de 100 pour faire 100ms.
    Le temps de réaction du multitâche serait alors de 1ms en mode flash.


    Code:
    #include "delay.c"
    #define sortie PORTB
    #define bp1 RA0
    #define bp2 RA1
    #define led1 RB1
    #define led2 RB2
    #define start RB0
    
    void main(void)
    {
    char bp1on,bp2on;
    sortie=0;
    TRISB=0B10000000;
    debut:;
    start=1; // allume led rb0
    delay_10ms(200); // tempo sur led rbo
    start=0; // eteind la led rb0
    led1=0; //eteind led rb1
    led2=0; //eteind led rb2
    bp1on=0;
    bp2on=0;
    
      while(1) {
      // bouton poussoir bp1
        if (bp1==1) {
    		if (bp1on!=1) {
    			bp1on=1;
    			flashLed();
    			}
    		}
    	if (bp2!=1)){
    		if (bp2on!=1) {
    			bp2on=1;
    			flashLed();
    			}
    		}
    
    	if(bp1==0){
    		led1=0; //eteind led rb1
    		bp1on=0;
    		}
    	if(bp2==0){
    		led2=0; //eteind led rb2
    		bp2on=0;
    		}
    
    
      } // fin de boucle de while(1)
    
    flashLed()
    {
      start =1; // allume led rb0
      delay_10ms(200); // tempo sur led rbo
      start =0; // eteind la led rb0
    }
    
    } // fin de boucle de programme principal
    A+, pat

  10. #9
    pdevel

    Re : Probleme de programmation pic C

    Merci Pat
    ca ne marche pas ,je vais corriger les erreurs(si jy arrive) et j'ai compris l idee,je vais essayer de le faire moi meme pour apprendre.Quand j'aurais reussi,je le mettrai sur le post
    a++ phil

Discussions similaires

  1. Problème PPE - programmation PIC
    Par invite6d31420f dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2010, 16h42
  2. probléme programmation PIC
    Par invite9f33ad6d dans le forum Électronique
    Réponses: 0
    Dernier message: 01/11/2009, 10h29
  3. Pic 16f877 problème de programmation
    Par invite4bffdc16 dans le forum Électronique
    Réponses: 11
    Dernier message: 06/08/2009, 08h21
  4. PIC - 12f629 - problème de programmation
    Par invited3e0cf9f dans le forum Électronique
    Réponses: 0
    Dernier message: 25/03/2009, 13h29
  5. Problème programmation pic
    Par KHEOPS1982 dans le forum Électronique
    Réponses: 6
    Dernier message: 24/03/2006, 14h57
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...