Conversion BCD/decimale et decimale/BCD en C - Ressources > Mathématiques et traitement du signal - Articles et téléchargements
Conversion BCD/decimale et decimale/BCD en C - Ressources > Mathématiques et traitement du signal - Articles et téléchargements
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
Catégories
 
   
             
 
Recherche
 
   
 
Articles-et-telechargements > Ressources > Mathématiques et traitement du signal > Conversion BCD/decimale et decimale/BCD en C

Conversion BCD/decimale et decimale/BCD en C

Publié par david le 10/09/2006 (4265 lectures)
Ce soft permet de convertir une valeur BCD provenant par exemple d'une RTC de pouvoir la lire sur un écran LCD ou via une liaison SCI

unsigned char SciDec2Bcd(void)
  {
    unsigned char DIZAINES;
    unsigned char UNITES;
    unsigned char TRAITEMENT;
   
    for(;;)
      {
        TRAITEMENT=SciLireCar();
   
        if (TRAITEMENT>=0x30 & TRAITEMENT<=0x39)
          {
            SciEnvoieCar(TRAITEMENT);
            DIZAINES=(TRAITEMENT-0x30)<<4;
            break;
          }
      }

    for(;;)
      {
        TRAITEMENT=SciLireCar();
   
        if (TRAITEMENT>=0x30 & TRAITEMENT<=0x39)
          {
            SciEnvoieCar(TRAITEMENT);
            UNITES=(TRAITEMENT-0x30) & 0x0F;
            break;
          }
      }

    TRAITEMENT=UNITES+DIZAINES;
   
    return TRAITEMENT;
  }


Dans ce cas on envoi la conversion decimal vers BCD (aquisition de data en RAM par exemple), on fait l'aquisition depuis la SCI
Attention: la valeur est limite à 99 mais on peut aller beaucoup plus loin si on veut


void SciBcd2Dec(unsigned char VAL_BCD)
  {
    unsigned char DIZAINES=0;
    unsigned char UNITES=0;
   
    DIZAINES=VAL_BCD & 0xF0;
    DIZAINES=(unsigned char)(DIZAINES/0x10);
    SciEnvoieCar((unsigned char)(DIZAINES+0x30));
   
    UNITES=VAL_BCD & 0x0F;
    SciEnvoieCar(UNITES+0x30);
  }
Dans ce cas on envoie la conversion BCD vers décimal (extraction de data en RAM par exemple), on fait l'envoie vers la SCI
Attention: la valeur est limite à 255 mais on peut aller beaucoup plus loin si on veut

Article précédent Article suivant
Article précédent Convertisseur decimal/BCD et BCD/decimal en ASM Convertion analogique/numérique, filtrage et sur-échantillonnage Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Conversion BCD/decimale et decimale/BCD en C - Ressources > Mathématiques et traitement du signal - Articles et téléchargements