Conversion Binaire vers Decimal en MCC18
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Conversion Binaire vers Decimal en MCC18



  1. #1
    Hizaack

    Conversion Binaire vers Decimal en MCC18


    ------

    Bonjour à tous,

    Je souhaite réaliser une fonction qui convertie un nombre binaire en un nombre décimal.

    Le nombre binaire est tiré d'un registre (c'est en fait un calendrier : années, mois, jours...), pour dater des fichiers.
    Le nombre décimal devra être un int (je suppose).

    Avant que je me lance dans cette fonction, et après mes recherches dans la librairies MCC18, je n'ai pas vu de fonction qui fait cela.

    Est ce que quelqu'un connait si cette fonction est implémentée chez Microchip? Ou un bout de code qui réalise cela en C sur pic de quelqu'un?

    Merci du coup de pouce.
    Cordialement,

    -----

  2. #2
    amoniaque

    Re : Conversion Binaire vers Decimal en MCC18

    Hello,

    Que ton chiffre soit en binaire ou autre il aura toujours la même valeur, c'est juste sa représentation qui diffère.

    Donc 0b00101101 = 0x2D = 0d2D ...

  3. #3
    DAUDET78

    Re : Conversion Binaire vers Decimal en MCC18

    Citation Envoyé par amoniaque Voir le message
    Donc 0b00101101 = 0x2D = 0d2D ...
    Oui, mais 0b00101101 =45 en décimal = 0x34 0x35 en ASCII
    J'aime pas le Grec

  4. #4
    Hizaack

    Re : Conversion Binaire vers Decimal en MCC18

    Bonjour,

    Voila je voudrais convertir par exemple 10001 en 17, pour avoir le jour de l'année.
    En fait c'est pour mettre ca dans la fonction
    logFile = FSfopenpgm("log.csv",WRITE);
    à la place de log.csv, je voudrais YearMonthDayHoursMinSec.csv à chaque création du fichier, le nom du fichier doit donc êtres une variable. Cette variable est le résultat de la concaténation de tout les registre de "temps" en décimal.
    Je vais continuer de chercher dans cette voie.

    Merci pour votre aide.

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

    Re : Conversion Binaire vers Decimal en MCC18

    Citation Envoyé par Hizaack Voir le message
    Voila je voudrais convertir par exemple 10001 en 17, pour avoir le jour de l'année.
    ......chaque création du fichier, le nom du fichier doit donc êtres une variable. Cette variable est le résultat de la concaténation de tout les registre de "temps" en décimal.
    Ta question est mal posée ..... tu veux convertir un entier en chaine de caractére .

    Je ne sais pas ce que tu utilise comme soft, mais algorithme est simple

    Entier =10001
    • Tu divises par 0x0A (10 en décimal)
    • Tu obtiens un quotient : 0x01 auquel tu ajoutes 0x30 et tu obtiens 0x31 qui est le code ASCII du "1"
    • Tu obtiens un reste : 0x07 auquel tu ajoutes 0x30 et tu obtiens 0x37 qui est le code ASCII du "7"
    J'aime pas le Grec

  7. #6
    Hizaack

    Re : Conversion Binaire vers Decimal en MCC18

    Oui exact, c'est bien en chaine de caractere, car j'ai bien le ".csv" à rajouter ^^
    Je suis en C (C18) sous Mplab.

  8. #7
    Hizaack

    Re : Conversion Binaire vers Decimal en MCC18

    J'ai regarder en MCC18, il y a la fonction btoa qui convertie un entier de 8 bits signé en chaîne de caractère.
    Ça devrait me convenir?
    Je test.

  9. #8
    Hizaack

    Re : Conversion Binaire vers Decimal en MCC18

    En fait, le plus difficile sera de remplacer le "log.csv" par une variable...
    soit avec un #define NomFichier 01234567890.csv
    soit avec char NomFichier "01234567890.csv";
    et
    logFile = FSfopenpgm(NomFichier,WRITE);

    Mais ca ne fonctionne pas.
    Est ce que quelqu'un aurait une astuce pour créer des fichiers, avec un nom de fichier variable?

    Toute aide est la bienvenue...

    Merci.

  10. #9
    amoniaque

    Re : Conversion Binaire vers Decimal en MCC18

    Citation Envoyé par DAUDET78 Voir le message
    Oui, mais 0b00101101 =45 en décimal = 0x34 0x35 en ASCII
    Hum oui pas faux, d'ailleurs ça prouve bien que j'ai écrit trop vite (j'ai mis 0d2D = 0x2D à la place de 0d45 = 0x2D. Mais sa question était trompeuse car il a bien dit
    Le nombre binaire est tiré d'un registre[...]Le nombre décimal devra être un int.
    j'avais donc exclu une quelconque conversion en ascii ...

  11. #10
    Hizaack

    Re : Conversion Binaire vers Decimal en MCC18

    Oui, mais javais oublié l'extension ".csv" qui est bien une chaine de caractere ^^

    Ceci dit, ma priorité (enfin plus gros probleme, j'essaie de résoudres les probleme du plus au moins complexe) est d'utiliser une varaible comme nom de fichier avec FSfopenpgm.

  12. #11
    sdec25

    Re : Conversion Binaire vers Decimal en MCC18

    Bonjour,
    D'après ton autre topic tu as trouvé la solution : sprintf.
    sprintf est je pense la meilleure solution dans ton cas (formater une chaîne avec des paramètres).
    Sinon tu peux refaire toi-même des fonctions avec l'algo que t'a donné DAUDET (qui est le même quelque soit la base), ou utiliser les fonctions standard qui peuvent convertir un nombre en chaîne : btoa, itoa, ltoa, ultoa. Il existe aussi des fonctions qui font l'inverse (chaîne -> nombre) par exemple atoi.
    En terme de rapidité, printf est assez lent, ltoa est plus rapide que printf mais sachant que les divisions sont très lentes sur un PIC18 la méthode la plus rapide pour convertir un entier 16 bits est de faire des soustractions par 10000, puis 1000, 100 et enfin 10 pour retrouver les chiffres dans l'ordre.

    Enfin, dans ton cas c'est quand même sprintf qui est le plus simple est le plus lisible.

Discussions similaires

  1. Conversion decimal vers hexadécimal
    Par invitee1deb610 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 27/02/2011, 19h36
  2. Conversion décimal -> binaire
    Par invite2ee4bcad dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 10/05/2010, 19h50
  3. Code VHDL pour conversion du décimal au binaire
    Par invitea9f621f9 dans le forum Électronique
    Réponses: 0
    Dernier message: 25/04/2010, 14h03
  4. Conversion de binaire à décimal
    Par invitee50a1bfa dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 09/02/2008, 22h11
  5. Conversion Binaire(résultat conv AD) en décimal
    Par jorg1n dans le forum Électronique
    Réponses: 7
    Dernier message: 20/11/2007, 07h26
Découvrez nos comparatifs produits sur l'informatique et les technologies.