bonsoir a tous,
je vous presente mon code
Code:#include <p18f4550.h> #include <delays.h> #include <stdio.h> #include "xlcd.h" #include "project.h" #pragma config WDT = OFF //watchdog OFF //definition des variables globales static char temp1 [15] = "";//variable affichage temp1 static char temp2 [15] = "HELLO";//variable affichage temp2 //alternativement static char temp1 [15] = "coucou"; //******************************************************************* // Fonction Main * //******************************************************************* void main (void) { //initialisation logicielle LcdInit(); while(1) { sprintf(temp1,"coucou");//erreur---------------------<<<< SetDDRamAddr(0x80);//debut 1ere ligne putsXLCD(temp1);//affichage de l'heure while( BusyXLCD() ); SetDDRamAddr(0xC0);//debut seconde ligne putsXLCD(temp2);//affichage de la temperature while( BusyXLCD() ); }//fin de la boucle }//fin du main //******************************************************************* // Fonctions d'Initialisation * //******************************************************************* void LcdInit(void) // initalisation du LCD sur PORTD (D0-D6) { PORTD=0x00; TRISD=0x00; LATD=0x00; OpenXLCD( FOUR_BIT & LINES_5X7 ); while( BusyXLCD() ); WriteCmdXLCD( FOUR_BIT & LINES_5X7 ); while( BusyXLCD() ); WriteCmdXLCD( DON & BLINK_OFF); while( BusyXLCD() ); } //******************************************************************* // Fonctions de temporisation * // pour les fonctions LCD * //******************************************************************* void DelayFor18TCY( void ) //50micro { Delay10TCYx(6); return; } void DelayPORXLCD(void)//15ms { Delay1KTCYx(16); return; } void DelayXLCD(void)//5ms { Delay1KTCYx(6); return; }
Donc la fonction sprintf ne marche pas sur mon PIC. Etonnament cela fonctionne tres bien sur Proteus avec le .hex en simulation.enfin!!!
En resume si j'assigne a la variable temp1 via "static char temp1 [15] = "coucou" j'ai bien "coucou" qui s'affiche a la 1ere ligne LCD
En revanche si j'assigne a temp1 via -->sprintf(temp1,"coucou") il ne s'affiche rien .
Ca me navre car par la suite tout le programme de mon logger de temperature utilise cette fonction via des pointeurs (et oui tout le programme fonctionne tres bien en simulation avec le .hex...chiotte alors).
Lors de la compile j'ai seulement un warning "type mismatch in assignment"...donc peut etre que temp1 est du mauvais format???
enfin je ne vois pas.
mercide votre aide toujours aussi precieuse.
-----