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
http://www.ybdesign.fr/index.php?option=com_content&task=view&id=26&Itemid=90
Pseudo : Pass : se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
MENU
 
   
             
 
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 (1759 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

Naviguer à travers les articles
Article précédent Routines de multiplication et division complexes Comprendre et corriger les erreurs électroniques Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
Parlez en à vos amis :    
   
     
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