Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

2 boucles infinies dans un programme
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » mer. 9 déc. 2015 21:39

Bonsoir ,

Est ce gênant d'avoir deux boucles infinies dans un programme. Je pose la question pour savoir la "BONNE" façon de faire en fait.

En effet dans mon Compte à rebours, j’ai mon programme principale qui est une boule infinie pour mettre a jour mon chrono avec l'encodeur . Et au lancement du compte à rebours , je rentre dans une autre boucle infinie pour décompter et afficher le chrono.

est -ce gênant de procéder comme cela ? connaissez vous une autre façon plus académiques ?

bien à vous
C'est en faisant des erreurs, que l'on apprend le mieux !!!

2 boucles infinies dans un programme
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » mer. 9 déc. 2015 22:44

Quelle est l'utilité de la 1re boucle quand tu te retrouves dans la 2e boucle?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

2 boucles infinies dans un programme
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » jeu. 10 déc. 2015 07:22

Bonjour,

Aucune.

En fait , c'est une première boucle de réglage , une fois finie en va sur la deuxieme boucle d'exécution.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

2 boucles infinies dans un programme
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » jeu. 10 déc. 2015 11:26

Donc elle n'a pas lieu d'être.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

2 boucles infinies dans un programme
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » jeu. 10 déc. 2015 11:30

Donc elle n'a pas lieu d'être.

??? je ne comprends pas .???

ma boucle de réglage doit être forcement une boucle étant donné que je checke mon encodeur en permanence pour voir si on le tourne et affiché le nouveau chiffre;
Et ma deuxième boucle aussi car elle doit être mettre a jour l'affichage en permanence lors du lancement du chrono.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

2 boucles infinies dans un programme
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#6 Message par Guest » jeu. 10 déc. 2015 16:26

Bonjour

Une boucle infinie est une boucle ou le programme ne sort jamais, et donc sans modification possible de l’environnement, des variables etc.. du style allez à boucle qui te repositionne sur allez a boucle, cela peut être aussi, un joli bug qui te fait tourner en rond et pour en sortir il ne te reste qu'un RAZ.

Ce que tu décris ici est une boucle qui test ton encodeur appelons la scrutation encodeur, si action de ton encodeur tu sorts de cette boucle sinon tu retournes sur scrutation encodeur

si action encodeur allez vers une autre boucle appelons la affichage qui lorsque la boucle l'affichage sera terminé, retournera sur la boucle scrutation encodeur donc ce n'est pas des boucles infinies, puis tu as la possibilité de sortir de tes boucles et effectuer des modification de ton environnement

il y a ici une boucle principale scrutation de l'encodeur et une boucle secondaire affichage sinon si cela te fait plaisir :-) c'est le contraire

Remarque: les boucles secondaires peuvent appeler d’autres boucles tout comme les boucles principales, c'est le même principe que les spg qui peuvent appeler d’autres spg ECT.... le but final est quand même de retourner a la boucle principale ici scrutation encodeur

Le plus lisible AMHA est de partir avec une seule boucle scrutation encodeur
1/lorsque tu es en mode entrée données tu appels des spg incrémentation ou décrémentation qu'ils modifient ta variable ou tes variables qui a leur tour appel le SPG affichage puis retour à la boucle principale.

2/ lorsque tu passes en mode chrono décrémentation de ta variable ou de tes variables puis appel spg affichage et retour a ta boucle principale

Avec dans ta boucle principale priorité au chrono et oui il ne faut pas que tu puisses modifier ta variable ou tes variables et il faut aussi que tu puisses sortir de chrono même s'il ce n'est pas la fin du décomptage au cas ou... et donc faire un reset du programme

Donc en résumé: dans ta boucle il te faut:

un test si RAZ un test si chrono en tête de boucle prioritaire puis un test si + et un test si -

Je dois avoir cela en ASM si tu veux je te le post avec affichage sur un KS0108S avec trois boutons + - validation comme un encodeur


A+

PS un petit bout de code gestion clavier ou encodeur

Code : Tout sélectionner

;********************************************************************
;clavier 3 boutons PLUS , MOINS, sélection digit
;la sélection digit déclenche le décomptage si appui prolongé
;sert aussi a arrêt du décomptage au cas ou.... et la RAZ du compteur      
;********************************************************************
      
CLAVIER       BTFSS   SEL_DIG      ; selection digit
       BRA       CLAV1
      
       BTFSC   DECOMPT      ; on est en decomptage?
       BRA       DECOMP      ; oui
      
       BTFSS   PLU_DIG      ;plus
       BRA       CLAV2
      
       BTFSS   MOI_DIG
       BRA       CLAV3      ;moins
      
       BTFSS   Tcurs,2
       BRA       CLAVIER      ;gestion du curseur?
      
;********************** gestion du curseur **************************
CURSEUR       CLRF    Tcurs


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 66 invités