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 :

Sauvegarde et comparaison des codes dans une eeprom


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut Sauvegarde et comparaison des codes dans une eeprom
    Salut,
    j'ai un projet concernant la sauvegarde d'un code spécifié dans une eeprom et la comparaison des codes entrés avec ce dernier.
    C'est à peu près comme le programme du code PIN sur téléphone. Après une petite recherche j'ai trouvé que ça sera programmé en C et comme je suis nuuule là-dessus j'ai recours à vous svp des idées.

  2. #2
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Eh bah....

    Tu peux commencer par te renseigner sur ton eeprom, le microcontrôleur qui va l'utiliser, et le compilateur qu'il faut utiliser pour tout ça !
    Il y aura sûrement des exemples fournis avec, et tu pourras démarrer une lecture/écriture dans l'eeprom pour t'approprier le langage "un tout petit peu"
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    Tu as besoin d'idées pour quoi exactement ?

    T'améliorer en C ?
    Alors, lis les différents tutoriels disponibles, avec une entrée ici.

    Tu n'arrives pas à écrire ton programme ?
    Dans ce cas, fournis-nous au moins un début de code ou de pseudo-code ou décris les soucis spécifiques que tu rencontres ...

    Bref, expose un peu plus concrètement ton problème !

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut
    merci pour vos réponses.
    en fait c'est une serrure à code, j'ai son 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
    unsigned short kp,CB[4]={4,4,9,4},CT[4],i,P;
     
    // Keypad module connections
    char  keypadPort at PORTB;
    // End Keypad module connections
    void main()
    {
      PORTB = 0;
      PORTA = 0;
      TRISA  = 0;
      TRISB  = 0xFF;
      Keypad_Init();
     
        while (1)
    {
        i=0;
        kp = 0;
        P=0;
        do
        {
        a:do{
        kp = Keypad_Key_Click();
        }while (!kp);
        switch (kp) {
     
          case  1: kp = 1; break; // 1        // Uncomment this block for keypad4x4
          case  2: kp = 4; break; // 2
          case  3: kp = 7; break; // 3
          case  5: kp = 2; break; // 4
          case  6: kp = 5; break; // 5
          case  7: kp = 8; break; // 6
          case  9: kp = 3; break; // 7
          case 10: kp = 6; break; // 8
          case 11: kp = 9; break; // 9
          case 4: kp = 42; break; // *
          case 8: kp = 0; break; // 0
          case 12: kp = 35; break; // #
              }
        CT[i] = kp ;
        i++;
        if(kp==35)
       {
       CT[4]=0;break;
       }
        }while(i<=3);
        if ((CT[0] == CB[0])&&(CT[1] == CB[1])&&(CT[2] == CB[2])&&(CT[3] == CB[3])&&(RA3_BIT == 0))
        {
        RA2_BIT = 0;
        RA0_BIT = 1 ;
        RA3_BIT = 1 ;
        Delay_ms(5000);
        RA0_BIT = 0 ;
        P=1;
        i=0;
        CT[4] = 0 ;
        goto a ;
        }
        if ((CT[0] == CB[0])&&(CT[1] == CB[1])&&(CT[2] == CB[2])&&(CT[3] == CB[3])&&(RA3_BIT == 1))
        {
        RA3_BIT = 0;
        RA2_BIT = 0;
        RA1_BIT = 1 ;
        Delay_ms(5000);
        RA1_BIT = 0 ;
        P=0;
        CT[4] = 0 ;
        }
        else 
        {
        RA2_BIT = 1;
       delay_ms(1000);
       RA2_BIT = 0 ;
       }
       }
    }
    je le compile sur miKroC et comme vous le constatez si on entre le code '4494' la serrure va s'ouvrir et une LED1 donnant l'ordre au moteur de tourner s'allume sinon une LED2 s'allume.
    Je veux ajouter des instructions pour qu'on valide le code et que, si on clique sur * après l'entrée du code correcte on peut le modifier et avoir un nouveau code.

  5. #5
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    Bon, pour commencer ce serait sympa de nous préciser à quoi correspondent P, RA0_BIT, RA1_BIT, RA2_BIT et surtout RA3_BIT sur lequel tu effectues un test.
    Certes, on peut essayer de deviner, mais ce n'est pas très pro ...

    Ensuite, et dans la même idée, même si ton code est court, ce serait pas mal de le commenter un peu plus pour que l'on comprenne bien les actions de ton code et le pourquoi des modifications de valeur de tes variables.

    Enfin, tu as un très vilain goto a; que je te suggèrerais de remplacer par un code un peu plus structuré, et tu mets à 0 la valeur de CB[4] alors que CB[4] est au-delà de la réservation de mémoire effectuée pour ton tableau (tu as réservé 4 emplacements de CB[0] à CB[3]).

    Pour répondre à ta question, de ce que je comprends de ton code, celui-ci se borne à tester la pression de 4 touches, cette saisie pouvant être réinitialisée à tout moment par la pression de la touche #, puis si le code entré est différent de 4494 alors on recommence, et si le code est bien 4494 alors il y a deux possibilités dépendant de la valeur de RA3_BIT dont la première recommence le cycle avec P=1, alors que la seconde recommence avec P=0 (ouverture et fermeture, peut-être ?) ...

    Ce que tu veux, c'est tester la touche * après une entrée correcte du code, afin d'entrer dans une fonction de modification du code (celui-ci étant stocké dans le tableau CB).
    Quelle est la difficulté ?

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 3

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/09/2014, 10h25
  2. selection par comparaison des mois dans une date
    Par squal83 dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2009, 10h36
  3. Réponses: 19
    Dernier message: 04/06/2007, 17h12
  4. Creer des user par code dans une base de donnees Interbase
    Par dachir dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/07/2006, 14h55
  5. Réponses: 5
    Dernier message: 14/05/2006, 12h57

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