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 ---
- 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 ---
Modérateur : Gérard
Combien de if avant plantage?
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Bonjour,
Je crois avoir trouvé une erreur dans un programme où 5 if se suivent. Est ce que c'est trop? C'est pour un 16F877.
Merci pour vos retours.
Je crois avoir trouvé une erreur dans un programme où 5 if se suivent. Est ce que c'est trop? C'est pour un 16F877.
Code : Tout sélectionner
IF MOIS_RTC = %00010000 THEN '10 en BCD, soit octobre
IF BIT_HIVER = 0 THEN 'on est en été
IF JOUR_RTC = 7 THEN 'dimanche
IF DATE_RTC > %00100100 THEN '24 en BCD
IF H_RTC = 3 THEN 'il est 3h?
H_RTC = 2 'alors H_RTC = 2
BIT_HIVER = 1 'màj bit hiver
'màj RTC
I2C1_START()
I2C1_WR(RTC_WR) 'adresse RTC
I2C1_WR(2) 'adresse heures
I2C1_WR(H_RTC) 'mise à l'heure d'hiver
I2C1_STOP()
'màj bit_hiver
EEPROM_WRITE(0, BIT_HIVER) 'EEPROM du PIC
DELAY_MS(20)
END IF
END IF
END IF
END IF
END IF
Merci pour vos retours.
Combien de if avant plantage?
Combien de if avant plantage?
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
En fait, dans la mise à jour de l'heure pour l'hiver, il y a 5 if et pour l'été, il n'y en a que 4. Sachant que ça fonctionne pour l'été, la seule explication que je vois (sans être sûr que ce soit çà) c'est le 5e if.
Ta remarque est judicieuse, je vais essayer. Le problème, c'est que cette horloge est chez ma fille à 100km ...
Ta remarque est judicieuse, je vais essayer. Le problème, c'est que cette horloge est chez ma fille à 100km ...
Combien de if avant plantage?
Bonjour
Car la procédure ete/hiver est soumise au même contrainte, sauf que c'est le mois qui change et tu peux simplifier la chose ,sans le test bit ete/hiver car la condition de basculement Ete ou Hiver ne ce produit qu'une fois par an.
Je vois comme cela:
Ete->hiver Test M= 10 ET Dernier dimanche ET 03.00.00 H changement. sinon on SORT
Hiver->ete Test M= 3 ET Dernier dimanche ET 03.00.00 H changement. sinon on SORT
Après, je ne sais pas comment tu calculs le dernier dimanche.
A+
PS question rapidité et occupation mem programme, il vaut mieux faire un pres test M10 ou M3 procédure de changement, sinon on sort. Mais a toi de voir.... Allez crayon papier
Bien et amha il est la le problème.Gérard a écrit :En fait, dans la mise à jour de l'heure pour l'hiver, il y a 5 if et pour l'été, il n'y en a que 4.
Car la procédure ete/hiver est soumise au même contrainte, sauf que c'est le mois qui change et tu peux simplifier la chose ,sans le test bit ete/hiver car la condition de basculement Ete ou Hiver ne ce produit qu'une fois par an.
Je vois comme cela:
Ete->hiver Test M= 10 ET Dernier dimanche ET 03.00.00 H changement. sinon on SORT
Hiver->ete Test M= 3 ET Dernier dimanche ET 03.00.00 H changement. sinon on SORT
Après, je ne sais pas comment tu calculs le dernier dimanche.
A+
PS question rapidité et occupation mem programme, il vaut mieux faire un pres test M10 ou M3 procédure de changement, sinon on sort. Mais a toi de voir.... Allez crayon papier
Combien de if avant plantage?
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Bonjour,
La contrainte été --> hiver n'est pas la même que hiver --> été. En effet, il faut tester le bit hiver avant modif, comme on passe de 3h à 2h, si pas ce test du bit hiver, on boucle entre 2 et 3h sans en sortir, c'est pour cette raison que le test du bit hiver est obligatoire.
Est ce que les tests avec des IF demandent des places dans la pile de retour? Et les tests avec des ET aussi ou pas ?
Pour le calcul du dernier dimanche :
les mois 3 et 10 ont 31 jours, donc le dernier dimanche est obligatoirement > 24
Concernant rapidité et occupation mémoire, ce sont les derniers de mes soucis, ça va toujours assez vite et il me reste toujours assez de place de flash.
La contrainte été --> hiver n'est pas la même que hiver --> été. En effet, il faut tester le bit hiver avant modif, comme on passe de 3h à 2h, si pas ce test du bit hiver, on boucle entre 2 et 3h sans en sortir, c'est pour cette raison que le test du bit hiver est obligatoire.
Est ce que les tests avec des IF demandent des places dans la pile de retour? Et les tests avec des ET aussi ou pas ?
Pour le calcul du dernier dimanche :
les mois 3 et 10 ont 31 jours, donc le dernier dimanche est obligatoirement > 24
Concernant rapidité et occupation mémoire, ce sont les derniers de mes soucis, ça va toujours assez vite et il me reste toujours assez de place de flash.
Combien de if avant plantage?
BONJOUR
Depuis 1996 le changement se fait a la même heure 03:00:00 voir ici https://fr.wikipedia.org/wiki/Heure_d%27%C3%A9t%C3%A9
Donc, mes conditions de test sont toutes à fait valables.
Heu.. la, petit problème de compréhension de ta part sur la pile.Tu utilises la pile UNIQUEMENT lors des appels a des SPG et utilisation de INTERRUPTION. Pour les tests, tu peux remplir la flash de tests, si cela te fait plaisir, à la fin,tu auras le résultat d'une condition VRAI ou faux
Donc tu dois faire un test du style si jour >24 ET dimanche et cela pendant tout le mois de mars et tout le mois d'octobre.
c'est bien dommage, de ne pas se poser cette question, cela rend ton programme bien plus fluide et stimule ta logique. Mais si pour toi le programme se résume à : Le principale c'est que cela fonction , il va de soit,que l' affaire est réglé.
Perso je règle le problème de basculement été/hiver, avec 1 test MOIS 3 OU 10 qui ne dirige soit sur été /hiver, soit, je Sort.
Et 1 test ,sur jour ET heure locale NON on sort, OUI, inversion de variable ajout qui passe donc de 1 a -1, ou vis et versa et je rajoute a l'heure locale.
Pas la même philosophie que tes 5 +4 tests imbriqués, mais si cela te convient à moite aussi
A+
La contrainte été --> hiver n'est pas la même que hiver --> été. En effet, il faut tester le bit hiver avant modif, comme on passe de 3h à 2h, si pas ce test du bit hiver, on boucle entre 2 et 3h sans en sortir, c'est pour cette raison que le test du bit hiver est obligatoire.
Depuis 1996 le changement se fait a la même heure 03:00:00 voir ici https://fr.wikipedia.org/wiki/Heure_d%27%C3%A9t%C3%A9
Donc, mes conditions de test sont toutes à fait valables.
Est ce que les tests avec des IF demandent des places dans la pile de retour? Et les tests avec des ET aussi ou pas ?
Heu.. la, petit problème de compréhension de ta part sur la pile.Tu utilises la pile UNIQUEMENT lors des appels a des SPG et utilisation de INTERRUPTION. Pour les tests, tu peux remplir la flash de tests, si cela te fait plaisir, à la fin,tu auras le résultat d'une condition VRAI ou faux
Pour le calcul du dernier dimanche :
les mois 3 et 10 ont 31 jours, donc le dernier dimanche est obligatoirement > 24
Donc tu dois faire un test du style si jour >24 ET dimanche et cela pendant tout le mois de mars et tout le mois d'octobre.
Concernant rapidité et occupation mémoire, ce sont les derniers de mes soucis, ça va toujours assez vite et il me reste toujours assez de place de flash.
c'est bien dommage, de ne pas se poser cette question, cela rend ton programme bien plus fluide et stimule ta logique. Mais si pour toi le programme se résume à : Le principale c'est que cela fonction , il va de soit,que l' affaire est réglé.
Perso je règle le problème de basculement été/hiver, avec 1 test MOIS 3 OU 10 qui ne dirige soit sur été /hiver, soit, je Sort.
Et 1 test ,sur jour ET heure locale NON on sort, OUI, inversion de variable ajout qui passe donc de 1 a -1, ou vis et versa et je rajoute a l'heure locale.
Pas la même philosophie que tes 5 +4 tests imbriqués, mais si cela te convient à moite aussi
A+
Combien de if avant plantage?
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
maï a écrit :BONJOURLa contrainte été --> hiver n'est pas la même que hiver --> été. En effet, il faut tester le bit hiver avant modif, comme on passe de 3h à 2h, si pas ce test du bit hiver, on boucle entre 2 et 3h sans en sortir, c'est pour cette raison que le test du bit hiver est obligatoire.
Depuis 1996 le changement se fait a la même heure 03:00:00 voir ici https://fr.wikipedia.org/wiki/Heure_d%27%C3%A9t%C3%A9
Donc, mes conditions de test sont toutes à fait valables.
Non, pour passer à l'heure d'été, on va de 2h à 3h. Pour l'heure d'hiver, on va de 3h à 2h. Quand tu passes à l'heure d'hiver et que tu ne tiens pas compte du fait que tu es maintenant en hiver, à 3h tu repasses à 2h et ainsi de suite. C'est pour ça que ce passage demande un if de plus.
maï a écrit :Est ce que les tests avec des IF demandent des places dans la pile de retour? Et les tests avec des ET aussi ou pas ?
Heu.. la, petit problème de compréhension de ta part sur la pile.Tu utilises la pile UNIQUEMENT lors des appels a des SPG et utilisation de INTERRUPTION. Pour les tests, tu peux remplir la flash de tests, si cela te fait plaisir, à la fin,tu auras le résultat d'une condition VRAI ou faux
C'était la question que je me suis posé. Donc non, pas d'utilisation de la pile avec des if.
maï a écrit :Pour le calcul du dernier dimanche :
les mois 3 et 10 ont 31 jours, donc le dernier dimanche est obligatoirement > 24
Donc tu dois faire un test du style si jour >24 ET dimanche et cela pendant tout le mois de mars et tout le mois d'octobre.
C'est bien ce que je fais avec la ligne ci-dessous.
IF DATE_RTC > %00100100 THEN '24 en BCD
maï a écrit :Concernant rapidité et occupation mémoire, ce sont les derniers de mes soucis, ça va toujours assez vite et il me reste toujours assez de place de flash.
c'est bien dommage, de ne pas se poser cette question, cela rend ton programme bien plus fluide et stimule ta logique. Mais si pour toi le programme se résume à : Le principale c'est que cela fonction , il va de soit,que l' affaire est réglé.
Parce qu'un programme optimisé et place mémoire et en temps d'exécution est plus "fluide"? C'est quoi un programme fluide? Et en quoi ça stimule ma logique?
maï a écrit :Perso je règle le problème de basculement été/hiver, avec 1 test MOIS 3 OU 10 qui ne dirige soit sur été /hiver, soit, je Sort.
Et 1 test ,sur jour ET heure locale NON on sort, OUI, inversion de variable ajout qui passe donc de 1 a -1, ou vis et versa et je rajoute a l'heure locale.
Pas la même philosophie que tes 5 +4 tests imbriqués, mais si cela te convient à moite aussi
Je n'ai pas tout compris de tes tests.
maï a écrit :A+
A+
Combien de if avant plantage?
Combien de if avant plantage?
Combien de if avant plantage?
Tres heureux,de t'avoir apporté quelques lumières sur la pile, puisque la question était :Combien de if avant plantage , mais c'est vrai tu as fait beaucoup de breloques .Je trouves sympa breloques,cela fait montre à gousset .
C'est pas grave Gerad, comme tu fais c'est très bien c'est toi qui a un problème pas moi.
PS:
C'est pas grave Gerad, comme tu fais c'est très bien c'est toi qui a un problème pas moi.
PS:
Par contre je vois très bien comment, tu fais le passage E/H.Et pour mon lien, fait un temps arrêt sur 1996 puisque mon fil #8 de toute évidence ne ta pas convaincuJe ne sais pas sur quoi est réglé ta breloque
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 62 invités