Aide pour programmation d'un PIC (Hexa => D)

TheFullMetal -  
 TheFullMetal -
Bonjour,
Alors voila j'ai le probleme suivant:
Pour un exercice je doit afficher la tension que me fournie une source sur un afficheur LCD 2*16. Pour cela je dispose d'un pic 16F8777.
On ma donc donné le programme suivant:

#include <16F877.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=20000000)



#include <lcd.c>

void main() {

   int i;

   long value, V;

	lcd_init();

   setup_port_a( ALL_ANALOG );

   setup_adc( ADC_CLOCK_INTERNAL );

   set_adc_channel( 0 );

   do {

      V=0xffff;

      for(i=0; i<=30; ++i) {

         delay_ms(100);

         value = Read_ADC();

           V=value;

      }

      printf(LCD_PUTC,"\n\r V: %4LX ",V);

   } while (TRUE);

}


Ce n'est pas moi qui l'ai réalisé n'ayant pas de connaissance en programmation de micro-contrôleur.

Néanmoins, je sais qu'il fonctionne suivant se principe :

-Si ma source est à 0V sur mon afficheur j'aurais 00

-Si ma source est à 5V sur mon afficheur j'aurais FF (je ne dois pas dépasser les 5Volts)

Donc par exemple: si ma source est à 2.5V sur mon afficheur j'aurais 7F .....

Mais le problème est que je ne veux pas que mon afficheur m'affiche 7F mais 2.5V.

Je voudrais donc modifier mon programme pour que celui-ci convertisse ma variable V en décimale puis je n'aurais plus que la multiplier par 5/255 pour avoir ma valeur en Volt.

Seulement je ne vois pas comment convertir V de l'hexadécimale vers le décimale.

Alors, si quelqu'un veut bien me guider je lui en serais reconnaissant.
A voir également:

3 réponses

loupius
 
Heu je connais pas trop le C sur PIC, mais comme tu possède 'printf', le compilateur doit sûrement comprendre quelque chose du genre:
 printf(LCD_PUTC,"\n\r V: %2.2LF",(float)V*5/255);
J'ai mis LF car tu avais mis LD, c'est peut-être autre chose, vois dans ta doc.
0
TheFullMetal
 
Merci pour ta réponse loupious, donc lorsque tu met:
V: %2.2LF"

V sera en Décimale c'est bien sa?
Si V est en décimale lorsque que je la déclare je peux laisser
long value, V
0
loupius
 
Heu, j'ai été méfiant; je n'ai pas dit que c'était la solution.
Pourquoi? Tout simplement parce que le compilateur pour le PIC n'est pas aussi complet (du moins ceux que, jusqu'ici, j'ai utilisé) que celui pour PC. J'ai donc suggéré une solution et t'ai demandé de t'en assurer dans la doc.
Désolé de rester aussi vague.
0
TheFullMetal > loupius
 
Non c'est pas grave, j'ai au moins une piste a explorer. Malheureusement je n'est pas la doc avec moi mais j'essayerais sa demain.
0
TheFullMetal
 
J'ai essayer la modification mais malheureusement sa ne marche pas.
0