Bonjour a tous,
Je suis actuellement en train de perfectionner mon programme d'émission. Et je me confronte a un petit problème, j'aimerais rassembler deux fonctions qui font la même chose mais sur des variables differentes "tableau". Mais lorsque j'essaye j'ai une erreur.
Je pense que je doit mal m'y prendre.
La première fonction :
Et la deuxieme fonction :Code:/*************************************************************************************************/ // Fonction codage - passage du binaire en Manchester /*************************************************************************************************/ void donnees_manchester(int X) { int l=0; for (l=0;l<X;l++) { //codage d'un 0 - front montant if (bin[l]==0) //si le bit vaut 0 { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } } //codage d'un 1 - front descendant else { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } } } }
Comme vous pouvez le voir la difference entre les deux fonction est minim. C'est pour cela que j'aimerais n'en faire qu'une seule. de cette forme la :Code:/*************************************************************************************************/ // Fonction codage - passage du binaire en Manchester /*************************************************************************************************/ void donnees_manchester2(int X) { int l=0; for (l=0;l<X;l++) { //codage d'un 0 - front montant if (bin2[l]==0) //si le bit vaut 0 { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } } //codage d'un 1 - front descendant else { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } } } }
Voila comment j'appelais les deux première fonction dans le main :Code:/*************************************************************************************************/ // Fonction codage - passage du binaire en Manchester /*************************************************************************************************/ void donnees_manchester2(int X,int Y[]) { int l=0; for (l=0;l<X;l++) { //codage d'un 0 - front montant if (Y[l]==0) //si le bit vaut 0 { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } } //codage d'un 1 - front descendant else { set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_high(PIN_A1); //mise a 1 de la pin A1 } set_timer1(0); //mise a 0 du timer1 while ( get_timer1() < 50 ) //pendant 50 incrementation du timer { output_low(PIN_A1); //mise a 0 de la pin A1 } } } }
Et voila comment j'aimerais que cela se fasse :Code:donnees_manchester2(compt_flag); //codage manchester du flag donnees_manchester(compt_bits); //codage manchester des données
J'ai a ce moment la un message d'erreur qui me dit "a numeric expression must appear her". Lorsque je mets un indice dans le tableau "bin et bin2", MPLAB arrive a compiler mais le résultat est faux.Code:donnees_manchester(compt_flag,bin2[]); //codage manchester du flag donnees_manchester(compt_bits,bin[]); //codage manchester des donnees
Je pense que mon erreur doit venir dans l'utilisation des tableau... J'espère qu'en voyant ce pavé cela ne va pas vous découragé à lire car c'est une erreur qui me semble simple...
Cordialement EtAlors!
-----