Bonjour,
voila je réalise un projet avec un PIC18F4685, et je rencontre un petit problème :
j'envois en RS232 depuis l'hyperterminal de l'ordi des nombres compris entre 0 et 999 (ces valeurs n'ont pas d'importance car mon problème a lieu plus loin).
J'utilise un écran 2 lignes 16 caractères pour visualiser ce que je reçois, sur la première ligne les 3 caractères, et sur la deuxième une variable qui est le résultat de l'addition de ces 3 caractères. jusqu'à 255 je reçois bien ce que j'envois sur les deux lignes, mais si par exemple je passe à 300 ou plus les caractères sont toujours OK, mais la variable est fausse. voilà ce que j'ai comme code :
Je ne vois pas d'où vient le problème puisque ma variable est en 16 bits, et en fixant value1 à 500, value2 à 40 et value3 à 8 j'obtiens bien 548 donc pas de problème de dépassement, et j'ai bien fait la conversion caractère/décimal en enlevant 30 aux caractères (caractère '0') pour avoir des valeurs décimales correspondant : '6' => 6...Code:long value1; // variable 16 bits long value2; // variable 16 bits long value3; // variable 16 bits long value; // variable 16 bits value1 = (100 * (buffer_RS232 [0]-'0'); // centaines value2 = (10 * (buffer_RS232 [1]-'0'); // dizaines value3 = (buffer_RS232 [2]-'0'); // unités value = (value1 + value2 + value3); // valeur à afficher lcd_gotoxy (1, 1); // ligne 1 char. 1 LCD printf(lcd_putc, "%c%c%c", buffer_RS232 [0], buffer_RS232 [1], buffer_RS232 [2]);// affichage indépendant des caractères lcd_gotoxy (1, 2); // ligne 2 char. 1 LCD printf(lcd_putc, "%Lu", value); // affichage de la variable
Si quelqu'un pouvait m'aider ce serait sympa
merci!
-----