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 ---
Forum général en BASIC et PASCAL !

Modérateur : Gérard

Combien de if avant plantage?
Claudius
Avatar de l’utilisateur
Amateur
Amateur
Messages : 118
Enregistré en : septembre 2015

#11 Message par Claudius » mar. 22 nov. 2016 20:35

Bonsoir,

Si un nombre "importants" et encastrés de if / else fait exploser la pile, changez tout de suite d'interpréteur et/ou de compilateur car vraiment pas normal pour moi ... Allez voir le code assembleur généré peut s'assurer du contraire ;-))

Combien de if avant plantage?
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 804
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace

#12 Message par Gérard » mar. 22 nov. 2016 22:12

maï a écrit :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 :wink: .Je trouves sympa breloques,cela fait montre à gousset .

C'est pas grave Gérard, comme tu fais c'est très bien c'est toi qui a un problème pas moi.

PS:
Je ne sais pas sur quoi est réglé ta breloque
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 convaincu :sifflotte:


Ce sera cool de ne pas déformer mon prénom.
Je ne vois pas comment je réglerais des breloques, je n'en ai pas ... :langue:
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

Combien de if avant plantage?
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 804
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace

#13 Message par Gérard » mar. 22 nov. 2016 22:50

Claudius a écrit :Bonsoir,

Si un nombre "importants" et encastrés de if / else fait exploser la pile, changez tout de suite d'interpréteur et/ou de compilateur car vraiment pas normal pour moi ... Allez voir le code assembleur généré peut s'assurer du contraire ;-))



Bonjour,
Les 16F ont 8 niveaux de pile et certains sont réservés au compilateur. Ceci dit, j'ai regardé le fichier .lst, les if ne provoque pas d'incrément de la pile. Seul les appels I2C que je fais dans ce S/P le font.
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

Combien de if avant plantage?
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 804
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace

#14 Message par Gérard » sam. 26 nov. 2016 17:34

Bonjour,

Personne n'a d'idée?
maï, tu boudes?
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

Combien de if avant plantage?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#15 Message par Guest » sam. 26 nov. 2016 18:41

Gérard a écrit :maï, tu boudes?

NON pas tres dispo, je monte une cabane au fond de mon jardin, je ne fais que passer :sifflotte:

Pour revenir a ton fil, c'est donc pas les IF donc pour moi affaire réglé .
Après sur ta méthode, tu sais très bien ce que j’en pense.Donc perso je laisse tomber,allez courage je suis sur que tu vas trouver :wink:

A+

Combien de if avant plantage?
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 804
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace

#16 Message par Gérard » jeu. 29 déc. 2016 21:27

Bonjour,
J'ai modifié les tests et ça fonctionne.
Eté --> hiver :

Code : Tout sélectionner


    IF 
(MOIS_RTC = 16) and (BIT_HIVER = 0) and (JOUR_RTC = 7) and (DATE_RTC > 36) and (H_RTC = 3) then
      H_RTC 
= 2
      BIT_HIVER 
= 1

      
'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


Hiver --> été :

Code : Tout sélectionner


   IF 
(MOIS_RTC = 3) and (JOUR_RTC = 7) and (DATE_RTC > 36) and (H_RTC = 2) then
      H_RTC 
= 3
      BIT_HIVER 
= 0
            
      
'màj RTC
      I2C1_START()
      I2C1_WR(RTC_WR)                            '
adresse RTC
      I2C1_WR
(2)                                 'adresse heures
      I2C1_WR(H_RTC)                             '
mise à l'heure d'été
      I2C1_STOP
()
            
      
'màj bit_hiver
      EEPROM_WRITE(0, BIT_HIVER)                 '
EEPROM du PIC
      DELAY_MS
(20)
    END IF


Les tests après le "if" ont supprimé le problème.
Quelques explications :
les valeurs sont codées en BCD par la RTC donc mois = 16 (BCD) = 10 (décimal), DATE_RTC > 36 (BCD) correspond à 24.
JOUR_RTC = 7 pour dimanche.
Maintenant l'horloge à 4 afficheurs 7 segments bleus de 1.8 inch fonctionne parfaitement.
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

Combien de if avant plantage?
HULK28
Avatar de l’utilisateur
Amateur
Amateur
Messages : 106
Enregistré en : août 2015
Localisation : IdF

#17 Message par HULK28 » jeu. 12 janv. 2017 21:25

Bonsoir Gérard,

j'ai lu plus haut que certains conseillent de changer de compilateur si cette situation survient.
En réalité la gestion de la pile n'est pas à la charge du compilateur mais bel et bien du programmeur.

Il n'est pas du tout normal d'utiliser une ribambelle de if imbriqués dans un code.
Sans vouloir vexer personne, la programmation c'est pas pisser du code sans regarder les voyants, un peu comme pour la conduite on ne regarde pas son volant mais ce qui se passe autour.
Comme pour l'électronique hardware, tout se calcule et se définit au préalable.

Par exemple en C on dispose de l'instruction switch, trop rarement utilisée par les hobbystes, mais bien plus élégante dans la plupart des cas.
J'ignore si il y a un équivalent en basic.
Il y a bien d'autres astuces également pour éviter les codes spaghettis.

Je regarderai de plus près ton code et te donnerai mon avis quand j'aurai un peu plus de temps.
@+
"Pour la carotte, le lapin est la parfaite incarnation du mal" -Robert Shecley-

Combien de if avant plantage?
HULK28
Avatar de l’utilisateur
Amateur
Amateur
Messages : 106
Enregistré en : août 2015
Localisation : IdF

#18 Message par HULK28 » jeu. 12 janv. 2017 21:27

Bon ben je vois que tu t'en es sorti, bizarrement je n'avais pas ton dernier message avant d'écrire le mien, alors qu'il date du 29 dec... dehors!!
"Pour la carotte, le lapin est la parfaite incarnation du mal" -Robert Shecley-

Combien de if avant plantage?
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 804
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace

#19 Message par Gérard » jeu. 12 janv. 2017 21:44

HULK28 a écrit :Bon ben je vois que tu t'en es sorti, bizarrement je n'avais pas ton dernier message avant d'écrire le mien, alors qu'il date du 29 dec... dehors!!


Ici tu trouveras le code complet en #22
Non , ne sors pas, tes conseils seront toujours les bienvenus. Je m'en suis sorti avec les "and" dans la ligne "if".
"Switch" existe en BasicMikro.
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

Combien de if avant plantage?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#20 Message par Guest » ven. 13 janv. 2017 09:02

Pas bien saisis,que vient faire la gestion de la pile :?: Donc les GOTOS ou et BRA(18F) influent sur la pile, à BON..... car si je ne trompe pas, un test est du style:

Code : Tout sélectionner

    BTFSS    Temp,1            ;
    GOTO    Digit30            ;IDEM        


Maintenant que certains compil ont des restrictions, niveau opérandes, peut-être,est la c'est bien LE COMPIL.Mais la, on est loin du jeux instructions,car à ce niveau, je te remplis la flash .OK c'est pas beau.


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

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