16F84, question sur le programme.
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

16F84, question sur le programme.



  1. #1
    invite713fbb16

    16F84, question sur le programme.


    ------

    Bonjour, c'est mon tout premier message sur le forum

    Bon voici mon programme :

    Code:
    int i,T; // Déclaration des deux variables.
    
    
    void main()
    {
    
     TRISB = 0x00; // Je met le port B en sortie.
     TRISA = 0xFF; // Je met le port A en entrée.
    
     T = 1000; // Je met la variable T sur 1000.
    
    do {
    
      for(i=0;i<255;i++)
         {
    
         if (PORTA.RA1=1)
            {
            T=T+200;
            }                              // Si l'utilisateur appui sur RA1, T augmente de 200.
    
         if (PORTA.RA2=1)
            {
            T=T-200;
            }                              // Si l'utilisateur appui sur RA2, T baisse de 200.
    
         if (T<=0)
            {
            T=10;
            }                             // On fixe une valeur minimale a T, qui est de 10.
    
         PORTB = i;                 // Le port B prends la valeur de i (qui varie de 0 a 255), donc on a un compteur.
    
         vDelay_ms(T);           // Le PIC laisse le port B allumé pendant T (en millisecondes ) avant de passer a l'instruction suivante.
    
         if (PORTA.RA0=1) break;    // Si l'utilisateur appui sur RA0, le programme arrête le comptage et sort de la boucle for.
         }
      }
    while(1);        // Quand i atteint 255, on a le cycle qui recommence de 0 indéfiniment.
    }
    Le programme marche très bien, mon soucis, c'est que pour un T = 1 seconde, quand le programme est a l'instruction "vdelay(T)", il est en attente, et donc, pendant ce moment, je ne peux pas changer la valeur de T.

    Ce que je voudrais faire, c'est de changer la valeur de T quelque soit la ligne ou en ai arrivé le programme, un peu une sorte de changement de variable... dynamique si le mot est juste.

    Une aide s'il vous plait ?
    J'en voudrais aussi une pour l'interruption si possible ^^


    Je suis nouveau avec les PIC et c'est mon tout nouveau programme

    -----
    Dernière modification par HULK28 ; 07/11/2011 à 12h52. Motif: ajout des balises CODE/CODE pour meilleure lisibilité

  2. #2
    amoniaque

    Re : 16F84, question sur le programme.

    Bonjour,

    La solution serait d'utiliser un timer et non pas une fonction (blocante) de delays.
    Ça te permettrait de mettre à jour les registres du timer n'importe quand.

    A+

  3. #3
    invite713fbb16

    Re : 16F84, question sur le programme.

    Je suis encore nouveau dans le domaine et je comprends toujours pas comment sa s'utilise x)

    Je pourrais avoir une idée du programme ? ou juste de "comment le commencer" ?

  4. #4
    freepicbasic

    Re : 16F84, question sur le programme.

    met des delay plus petit , exemple 1ms, et fait une boucle avec le T.
    A l'intérieur de la boucle test les boutons.
    A+, pat

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

    Re : 16F84, question sur le programme.

    Pas maaaaaaaaaaaaaaaal l'idée

    Merci beaucoup pour l'astuce, sinon, mon prof m'a parlé d'une certaine fonction

    void interrupt(), j'ai cherché, j'ai lu, mais toutes les explications sont limite en chinois pour moi x)))

    Je pourrais avoir une explication en français pour nouveaux s'il vous plait ?

  7. #6
    freepicbasic

    Re : 16F84, question sur le programme.

    il va falloir regarder la doc du compilateur pour utiliser le timer et consulter les exemples,
    programmer le timer avec le prescaler et son temps et autoriser les interruptions.
    Ou utiliser l'interruption du portb qui reagit au changement
    Au niveau de la routine il faudra gérer l'événement .
    A+, pat

  8. #7
    remy01

    Re : 16F84, question sur le programme.

    Salut,
    juste une remarque sur ton programme : en C, l'égalité se teste avec ==
    EX : if (PORTA.RA1==1) ....
    A+ ....Rémy.

Discussions similaires

  1. conversion de programme d'un 16F628 à un 16F84
    Par sidali01 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/03/2010, 17h39
  2. aide pour programme 16f84
    Par barth69 dans le forum Électronique
    Réponses: 5
    Dernier message: 07/02/2009, 15h34
  3. question de debutant sur le 16f84
    Par kaiser89 dans le forum Électronique
    Réponses: 4
    Dernier message: 04/01/2007, 23h19
  4. programme en C pour pic 16F84
    Par le fouineur dans le forum Électronique
    Réponses: 14
    Dernier message: 20/04/2006, 13h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.