Au secours!!!

Résolu
cs_serge14 Messages postés 1 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 11 juillet 2005 - 11 juil. 2005 à 23:54
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 12 juil. 2005 à 08:40
Bonjour.je suis en sstage et je dois coder un protocole de transmission /reception de donées avec
le pic 18f4550.malgré mes efforts pour comprendre les 400 pages de la doc et ce programme que j'au ecrit:

rom char mess[]="";



//indique qu'un char est dans le RCREG
char data_recue(void)
{
if(PIR1bits.RCIF)//char en reception
{
PIR1bits.RCIF=0;//on attend un autre message
return 1;}
else return 0;
}


//envoie un char sur URSAT


void putch(unsigned char c)
{
while(!TXSTAbits.TRMT);//si tsr est plein,tourner en boucle
TXREG=c;//transmission au terminal de c
while(!PIR1bits.TXIF);//tourner en boucle tt que TXREG est plein
}



//envoie une chaine en rom


void putchaine(rom char* chaine)
{
while(*chaine)putch(*chaine); //essai sans la bloucle.
}





void main(void)
{
SPBRG=129;
TXSTA=0x20;
RCSTA=0x90;
putchaine(mess);//initialisation
while(1){
if (data_recue())putch(RCREG);//renvoie ce qu'e l'utilisatieur tape.
}
je ne reçois par le charactere que j'ai tapé.Il me renvoie tjrs autre chose.cela fait1e semaine que je reflechis là dessus.Si quelqu1 peut m'aider,franchement je le remercie sincerement.merci!!!

2 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
12 juil. 2005 à 08:40
Et puis j'allais oublier, ta boucle n'a aucun sens ! Tu n'initialises pas ta chaine, et tu demandes de boucler tant que *mess == a un certain caractere, or ici, tu ne boucleras jamais puis ce que *mess == 0;
Donc initialise ta chaine avec ce que tu desires envoyer.

+2(p - n)
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
12 juil. 2005 à 08:37
rom char mess[]="";

mess n'est la qu'un pointeur, il faut lui 'allouer' une certaine taille (celle que tu desires), par exemple 512 octets :

rom char mess[512];

+2(p - n)
0
Rejoignez-nous