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