Boucle While qui ne veut pas se terminer ?!
Fermé
KunGu
Messages postés
1168
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
-
16 mars 2011 à 20:48
.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 - 16 mars 2011 à 22:10
.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 - 16 mars 2011 à 22:10
A voir également:
- Boucle While qui ne veut pas se terminer ?!
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- La numerisation n'a pas pu se terminer - Forum Imprimante
- Nous n'avons pas pu terminer les mises à jour ✓ - Forum Windows 10
- Redmi note 10 redemarre en boucle - Forum Xiaomi
- Freebox redémarre en boucle ✓ - Forum Freebox
1 réponse
.N
Messages postés
25
Date d'inscription
samedi 12 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
544
16 mars 2011 à 22:10
16 mars 2011 à 22:10
Effectivement, tout devrait marcher comme sur des roulettes, avec ton code. Donc, le seul endroit ou je vois qu'il peut y avoir un problème est avec la fonction :
Mais je te suggère de faire ceci, pour tester l'exécution de ton code (un printf debugging typique) :
Ah, et au fait, pas besoin de faire while(arretboucle==0)...;
tu peux carrément écrire while(!arretboucle)...;
ou encore mieux, initialiser arretboucle à 1, et utiliser : while(arretboucle)...;
(Dans ce cas, tu peux aussi peut-être changer le nom pour continuerboucle). Dans ce cas, on fait arretboucle=0; pour sortir, évidemment.
Mais ceci dit, ta fameuse boucle (de premier niveau) est carrément obsolète, puisque qu'elle ne s'exécute forcément qu'une fois, la dernière instruction de la boucle falsifiant la condition du while. Bref, c'est comme un do {;} while(false); sans aucun break... bref totalement désuet, à moins qu'il n'y ait quelque chose que je ne vois pas...
Donc, tu peux faire ceci :
?? Delay10KTCYx(??);
Mais je te suggère de faire ceci, pour tester l'exécution de ton code (un printf debugging typique) :
while(arretboucle==0) { printf("Printf 01\n"); LED2=1; while(CCPR1L<0xFF) { printf("Printf 02\n"); CCPR1L = CCPR1L + 1; Delay10KTCYx(1); } printf("Printf 03\n"); while(incrementation<tempsmarche && BP1==1) { printf("Printf 04\n"); Delay10KTCYx(250); incrementation++; } printf("Printf 05\n"); incrementation = 0; LED2=0; CCPR1L = 0; while(incrementation2<tempsarret && BP1==1) { printf("Printf 06\n"); LED2=1; Delay10KTCYx(250); LED2=0; Delay10KTCYx(250); incrementation2++; } printf("Printf 07\n"); incrementation2 = 0; arretboucle = 1; }
Ah, et au fait, pas besoin de faire while(arretboucle==0)...;
tu peux carrément écrire while(!arretboucle)...;
ou encore mieux, initialiser arretboucle à 1, et utiliser : while(arretboucle)...;
(Dans ce cas, tu peux aussi peut-être changer le nom pour continuerboucle). Dans ce cas, on fait arretboucle=0; pour sortir, évidemment.
Mais ceci dit, ta fameuse boucle (de premier niveau) est carrément obsolète, puisque qu'elle ne s'exécute forcément qu'une fois, la dernière instruction de la boucle falsifiant la condition du while. Bref, c'est comme un do {;} while(false); sans aucun break... bref totalement désuet, à moins qu'il n'y ait quelque chose que je ne vois pas...
Donc, tu peux faire ceci :
printf("Printf 01\n"); LED2=1; while(CCPR1L<0xFF) { printf("Printf 02\n"); CCPR1L = CCPR1L + 1; Delay10KTCYx(1); } printf("Printf 03\n"); while(incrementation<tempsmarche && BP1==1) { printf("Printf 04\n"); Delay10KTCYx(250); incrementation++; } printf("Printf 05\n"); incrementation = 0; LED2=0; CCPR1L = 0; while(incrementation2<tempsarret && BP1==1) { printf("Printf 06\n"); LED2=1; Delay10KTCYx(250); LED2=0; Delay10KTCYx(250); incrementation2++; } printf("Printf 07\n"); incrementation2 = 0;