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 :

chenillard à 8 leds


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut chenillard à 8 leds
    Bonjour ! je suis en électronique et on nous demande de faire l'algorigramme et l'algorithme d'un chenillard à 8 leds sur un pic 16f87x.
    Voilà le sujet :
    Les leds sont connectées sur la portC sont allumées une à une toutes les 0.5s. Le déplacement s'effectue de droite à gauche, de RC7 à RC0, et ainsi de suite.
    Un bouton poussoir est connecté sur la broche RB0/INT. Une action arrête le défilement, une nouvelle action sur le bouton poussoir permet de continuer le défilement. Cette broche peut etre utilisée en tant qu'interruption, c'est à dire dès qu'il y a un évènement (front) le programme principal s'arrête et un sous programme d'interruption s'exécute. A la fin de ce sous programme, le programme principal reprend son travail. Au niveau du microcontroleur, dès une action active sur la broche RB0/INT est présente, un drapeau (flag), le bit INTF du registre INTCOM se metà 1. Le pic sauve dans la pile le PC et certains registres, par exemple W, et va éxecuter le sous programme dont l'adresse se trouve à l'adresse 04h du plan mémoire. Il faut remettre ce drapeau à 0 pour la prochaine fois. Pour utiliser cette interruption il faut autoriser les interruptions globales, bit GIE, et l'interruption du périphérique utilisé, bit INTE.

    Comment on fait ça ? Je suis vraiment nulle et il faut que je rende ça lundi matin.

    Merci

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Il faut voir les fonctions que tu as a ta disposition pour lire et écrire sur ta carte.

    Voici a quoi cela pourrait ressembler


    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    //** constantes utilisées **//
    #define VERS_DROITE  1
    #define VERS_GAUCHE  2
    #define BOUTON_ACTIF  1
    #define BOUTON_INACTIF  2
    #define NB_LED 8
     
    //** prototypes des fonctions utilisées **//
     
    //renvoi l'etat du bouton
    unsigned int LireEtatBouton();
    //allume la led dont le numéro est passé en paramétre
    void AllumeLed(unsigned int);
     
    int main(void){
     
        unsigned int etat_bp =BOUTON_INACTIF;
        unsigned int pos_chenillard = 1; //premier LED
        unsigned int sens_chenillard =VERS_DROITE;
     
        //boucle principal
        while(1) {
     
             //lecture du bouton poussoir
             etat_bp=LireEtatBouton();
     
            //si le bouton est actif on affiche le chennillard sinon ne rien faire
             if(etat_bp==BOUTON_ACTIF) {
                //on regarde dans quel sens on doit aller
                switch(sens_chenillard) {
                    case VERS_DROITE :
                    pos_chenillard++;
                    if(pos_chenillard >NB_LED) {
                        sens_chenillard=VERS_GAUCHE;
                        pos_chenillard--;
                    }
                    break;
     
                    case VERS_GAUCHE :
                    pos_chenillard--;
                    if(pos_chenillard <1) {
                        sens_chenillard=VERS_DROITE;
                        pos_chenillard++;
                    }
                    break;
                }
                //on allume la led
                AllumeLed(pos_chenillard);
             }
     
             //ajouter une temporisation
     
        }
     return 0;
     }
     
     
    void AllumeLed(unsigned int led) {
        //eteindre  toutes les leds et
        //allumer la led dont le numéro est passé en paramètre
    }
     
    unsigned int LireEtatBouton() {
        unsigned int etat_bp;
        //lire le registre qui va bien avec la fonction qui va bien et stocker
        //le resultat dans etat_bp
        return etat_bp;
    }

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par turttle41
    Comment on fait ça ? Je suis vraiment nulle et il faut que je rende ça lundi matin.
    Ca veut dire quoi exactement "Je suis vraiment nulle" ?
    • J'ai un QI de limace ?
    • Je n'aime pas cette matière ?
    • C'est mal expliqué ?
    • J'ai pas le temps de le faire et je cherche un gogo pour le faire à ma place ?

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    <...>
    J'ai pas le temps de le faire et je cherche un gogo pour le faire à ma place ?
    Tu dis cela pour moi ou quoi ?

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    nan ça veut juste dire que le prof est un gros ***, il en a rien à foutre de nous, il nous file pas les cours et donne direct les TP, donc on a un peu de mal a y arriver.
    ça fait 2 semaines que je bosse dessus y a 5 programmes à faire et j'en ai fait 3.

    merci à hegros, je sais à peu près comment partir maintenant.

Discussions similaires

  1. Comment changer la couleur d'une Led
    Par vantoff dans le forum C++Builder
    Réponses: 6
    Dernier message: 11/07/2006, 12h21
  2. LED Clavier
    Par LordBob dans le forum Linux
    Réponses: 5
    Dernier message: 15/03/2006, 14h44
  3. Affichage LED
    Par chourmo dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/02/2006, 16h15
  4. [Débutant creation de composant] Créer une LED numérique
    Par C_Marteau dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/06/2005, 21h23
  5. [TP]Créer une animation leds clavier
    Par Thomas748 dans le forum Turbo Pascal
    Réponses: 16
    Dernier message: 27/11/2004, 20h18

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