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.
-----