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
Partager