Boucle While qui ne veut pas se terminer ?!
KunGu
Messages postés
1231
Date d'inscription
Statut
Membre
Dernière intervention
-
.N Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
.N Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
Salut tout le monde,
j'ai une petite question pour un petit problème qui me parait bien bizarre ...
Voici ma boucle :
Comme vous pouvez voir, à la fin j'ai mis 1 dans la variable arretboucle, la boucle devrait s'arrêter non ??
Pourtant elle continue de s'exécuter comme si arretboucle avait la valeur 0.
Quelqu'un aurait-il la solution ?
Merci :)
--
Quand un problème est résolu, marquez le sujet en RÉSOLU ! Simple non ?
j'ai une petite question pour un petit problème qui me parait bien bizarre ...
Voici ma boucle :
while(arretboucle==0)
{
LED2=1;
while(CCPR1L<0xFF)
{
CCPR1L = CCPR1L + 1;
Delay10KTCYx(1);
}
while(incrementation<tempsmarche && BP1==1)
{
Delay10KTCYx(250);
incrementation++;
}
incrementation = 0;
LED2=0;
CCPR1L = 0;
while(incrementation2<tempsarret && BP1==1)
{
LED2=1;
Delay10KTCYx(250);
LED2=0;
Delay10KTCYx(250);
incrementation2++;
}
incrementation2 = 0;
arretboucle = 1;
}
Comme vous pouvez voir, à la fin j'ai mis 1 dans la variable arretboucle, la boucle devrait s'arrêter non ??
Pourtant elle continue de s'exécuter comme si arretboucle avait la valeur 0.
Quelqu'un aurait-il la solution ?
Merci :)
--
Quand un problème est résolu, marquez le sujet en RÉSOLU ! Simple non ?
A voir également:
- Boucle While qui ne veut pas se terminer ?!
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Impossible de terminer les mises à jour - Forum Windows 10
- Mon PC s'allume puis s'éteint tout seul. Que faire ? ✓ - Forum Matériel & Système
- La numérisation n'a pas pu se terminer - Forum Windows XP
- Impossible de terminer l'opération car le fichier contient un virus ✓ - Forum Virus
1 réponse
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;