Convertir 3 variables BCD
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Convertir 3 variables BCD



  1. #1
    Seitech

    Convertir 3 variables BCD


    ------

    Bonjour a toutes et a tous.
    J'explique ma situation.
    J'ai 3 variable en bcd (chiffre1, chiffre2 et chiffre3 qui correspondes aux touches appuyer d'un clavier), et qui apparait sur un afficheur 3 digits (chiffre1 sur digit3, chiffre2 sur digit2 et chiffre3 sur digit1) qui sont écrit grâce a un MAX7219. (j'ai déjà toutes les fonction qui permette l'écriture, l'effacement des chiffres et tous marche).

    Je voudrais convertir les 3 variable en une seul (chiffre1=centaine, chiffre2=dizaine et chiffre3=unite que je nommerai chiffre_afficher) que je pourrai comparer sous cette forme:
    Code:
    if (chiffre_afficher>Valeur_max_autorise);
    ...

    J'ai fait quelque recherche, j'ai donc réussi a convertir mes 3 variables en Dec16 , mais je sait pas quoi faire après.


    Code:
    chiffre1Dec16 = Bcd2Dec16(chiffre1) ;
    chiffre2Dec16 = Bcd2Dec16(chiffre2) ;
    chiffre3Dec16 = Bcd2Dec16(chiffre3) ;

    J'utilise comme logiciel mikroC pro.

    Voila une parti du code que j'ai fait avec se que je souhaite remplacer:
    Code:
    //// on rentre dans cette fonction a chaque foi qu'une touche est appuyer
    
    
    void clavier(void)
    {
    counter++               ;   //ajoute 1 au counter
    if (counter == 1)
                 {
                 MAX7219_efface(void)               ;
                 chiffre1=touche                    ;
                 MAX7219_ecrire(0x03, chiffre1)       ;    // écrit la touche appuyer sur le digit3
                 delay_ms(100)                      ;
                 }
    if (counter == 2)
                 {
                 chiffre2=touche                    ;
                 MAX7219_ecrire(0x02, chiffre2)     ;  // écrit la nouvelle touche appuyer sur le digit3
                 MAX7219_ecrire(0x03, chiffre1)     ;  // écrit la le chiffre1 appuyer sur le digit3
    
                 delay_ms(100)                      ;
                 }
    
    if (counter == 3)
                 {
                 chiffre3=touche                    ;
                 MAX7219_ecrire(0x01, chiffre3)     ;
                 MAX7219_ecrire(0x02, chiffre2)     ;
                 MAX7219_ecrire(0x03, chiffre1)     ;
    
                 delay_ms(100)                              ;
    
    //////// Je souhaite remplacer cela /////////
    
                  if (chiffre1==5 && chiffre2==5 && chiffre3>0 )  //  remplace tout les chiffres de 551 a 559 par EEE
                      {
                       MAX7219_ecrire (0x01 ,0x0f);           // efface digit1
                       MAX7219_ecrire (0x02 ,0x0f);           // efface digit2
                       MAX7219_ecrire (0x03 ,0x0f);           // efface digit3
                       }
    
                    if (chiffre1==5 && chiffre2>5)               //  remplace tout les chiffres de 560 a 599 par EEE
                      {
                       MAX7219_ecrire (0x01 ,0x0f);           // efface digit1
                       MAX7219_ecrire (0x02 ,0x0f);           // efface digit2
                       MAX7219_ecrire (0x03 ,0x0f);           // efface digit3
                      }
                    
                    if (chiffre1>5 )       // remplace tout les chiffres de 600 a 999
                      {
                       MAX7219_ecrire (0x01 ,0x0f);           // efface digit1
                       MAX7219_ecrire (0x02 ,0x0f);           // efface digit2
                       MAX7219_ecrire (0x03 ,0x0f);           // efface digit3
                      }
    
    //////// Jusqu'à ici /////////
    
                 counter = 0                      ;
                 }
    }


    Excuser moi si je me suis mal exprimer et que vous ne comprenez pas se que je veux faire, dite le moi j'essayerai de l'expliquer d'une autre manière.

    -----

  2. #2
    ftorama

    Re : Convertir 3 variables BCD

    valeur=chiffre1*100 +chiffre2*10 +chiffre3;

    tu as tout décrit, je ne comprends pas que tu n'aies pas trouvé ça
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  3. #3
    Seitech

    Re : Convertir 3 variables BCD

    Mais pour pouvoir faire valeur=chiffre1*100 +chiffre2*10 +chiffre3;
    il faut que chiffre1, chiffre2 et chiffre3 soit en Decimal et non en Bcd ou Dec16 (hexa) ?
    Dernière modification par Seitech ; 08/05/2010 à 08h40.

  4. #4
    Jack
    Modérateur

    Re : Convertir 3 variables BCD

    Citation Envoyé par Seitech Voir le message
    Mais pour pouvoir faire valeur=chiffre1*100 +chiffre2*10 +chiffre3;
    il faut que chiffre1, chiffre2 et chiffre3 soit en Decimal et non en Bcd ou Dec16 (hexa) ?
    de 0 à 9, la valeur sur 4 bits en BCD est la même que la valeur en binaire naturel.

    Par exemple 8 en BCD se code 1000 et 8 en binaire naturel se code également 1000. Donc pas de problème.

    Si tu avais essayé, tu aurais pu le constater.

    A+

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Decodeur bcd
    Par invite1e07004b dans le forum Électronique
    Réponses: 3
    Dernier message: 25/01/2009, 15h37
  2. Influence des variables d'une fonction à 2 variables
    Par invitee2a62e92 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 18/07/2008, 01h54
  3. need help bcd to 7 segments
    Par invite1fb10cc0 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/12/2007, 21h45
  4. Conversion binaire --> BCD
    Par invitea3d69760 dans le forum Électronique
    Réponses: 2
    Dernier message: 17/09/2006, 18h12
  5. Binaire BCD
    Par invitea3d69760 dans le forum Électronique
    Réponses: 4
    Dernier message: 09/06/2006, 19h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.