Bonjour à tous,


je programme actuellement un PIC 18f4520 avec le compilateur CCS.

Je souhaiterai convertir un char qui se trouve à un endroit précis d'un tableau (ex: string[4] = '7') et convertir le '7' en float (7.00).

Le manuel de CCS propose bien un atof avec cette synthaxe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
#include <stdlib>.h
 
char string[10];
float x;
 
strcpy(string,"123.456");
x = atof(string);

voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
#include <18F4520.h>
#include <stdlib.h>
#include <inputc.c>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=40000000)
#use rs232(baud=9600,  parity=N, xmit=PIN_C6, rcv=PIN_C7, stream=PORT1, bits=8,)
 
float x=1;                       // 1 par défaut
float total;
 
#define STRING_SIZE 40
 
void main(void);
   {
   while(1)
      {
      get_string(reception, STRING_SIZE-1);
 
      if (reception[0]=='O')
         {
         total = (5*x);
         printf("%f", total);
         }
      else if (reception[0]=='x')
         {
         x=atof(reception[1]); //on change la valeur de x pour afficher un resultat different ci-dessus. supposons que reception[1] = '7'.
         }
      }
   }

Ca compile sans problème. Après avoir lancé le programme, et envoyé depuis mon PC (rs232) la chaine "x7", la fenetre qui m'affiche les valeurs des variables m'indique que x reste toujours égale à 1. Je comprend pas.

Quelqun pourrait m'expliquer comment faire svp ?


Merci bien, en espèrant que ma problèmatique est clair :s