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 ---
Goto , call pile sur pic 16f
Modérateur : mazertoc
Goto , call pile sur pic 16f
Bonjour j’ai une petite question ou j’ai du mal a trouver la reponse :
Dans un pic 16f il y a apparement 8 piles (imbriquement de call) mais je vous donne un exemple :
Start
Bsf ...
Bcf ...
Call un
Un
Movlw ...
Movwf ...
Call deux
Deux
.....
.....
Dans ce cas j’imbrique un call dans un call donc je suis a 2 dans la pile
Mais si je met un goto a la place du deuxieme call (goto deux) est-ce que ma pile retombe a zero ?
J’espere que je me sus bien expliqué .... pas sur lol merci d’avance
Dans un pic 16f il y a apparement 8 piles (imbriquement de call) mais je vous donne un exemple :
Start
Bsf ...
Bcf ...
Call un
Un
Movlw ...
Movwf ...
Call deux
Deux
.....
.....
Dans ce cas j’imbrique un call dans un call donc je suis a 2 dans la pile
Mais si je met un goto a la place du deuxieme call (goto deux) est-ce que ma pile retombe a zero ?
J’espere que je me sus bien expliqué .... pas sur lol merci d’avance
Goto , call pile sur pic 16f
Bonjour Guigui02
Le pic a effectivement une pile de 8 niveaux, qui sert uniquement pour stocker 8 adresses de retour lors de sous-programmes appelés ou d'interruptions déclenchées.
Le pointeur de pile est modifié par les instructions suivantes :
+1 si CALL
+1 si démarrage d'une routine d'interruption (ISR)
-1 si RETURN
-1 si RETLW
-1 si RETFIE (sortie de la routine d'interruption)
Dans le cas où tu fais call puis goto, tu as incrémenté le pointeur de pile 1 fois, et il n'a jamais été décrémenté, donc il est resté à 1.
Un goto absolu (GOTO) modifie juste le pointeur d'instruction.
Un goto relatif (BTFSC,BTFCS,INCFSZ) le modifie aussi, en fait il exécute un nop pour sauter l'instruction qui suit.
Un call (CALL,ISR) le modifie aussi mais après avoir stocké sa valeur+1 dans la pile et incrémenté le pointeur de pile.
Un return (RETURN,RETLW,RETFIE) le modifie aussi mais après avoir décrémenté le pointeur de pile et récupéré l'adresse de retour.
sauf oubli ou erreur
Dans le datasheet, tu vas au chapitre "Instructions Set Summary" et tu cherche "TOS" (top of stack)
Le pic a effectivement une pile de 8 niveaux, qui sert uniquement pour stocker 8 adresses de retour lors de sous-programmes appelés ou d'interruptions déclenchées.
Le pointeur de pile est modifié par les instructions suivantes :
+1 si CALL
+1 si démarrage d'une routine d'interruption (ISR)
-1 si RETURN
-1 si RETLW
-1 si RETFIE (sortie de la routine d'interruption)
Dans le cas où tu fais call puis goto, tu as incrémenté le pointeur de pile 1 fois, et il n'a jamais été décrémenté, donc il est resté à 1.
Un goto absolu (GOTO) modifie juste le pointeur d'instruction.
Un goto relatif (BTFSC,BTFCS,INCFSZ) le modifie aussi, en fait il exécute un nop pour sauter l'instruction qui suit.
Un call (CALL,ISR) le modifie aussi mais après avoir stocké sa valeur+1 dans la pile et incrémenté le pointeur de pile.
Un return (RETURN,RETLW,RETFIE) le modifie aussi mais après avoir décrémenté le pointeur de pile et récupéré l'adresse de retour.
sauf oubli ou erreur
Dans le datasheet, tu vas au chapitre "Instructions Set Summary" et tu cherche "TOS" (top of stack)
Goto , call pile sur pic 16f
Ok merci beaucoup de ta reponse donc il faut que je revoie mon proggrame sniff
. Car en fait tout fonctionne bien enfin presque car le pic se bloque aleatoirement j’ai donc penssé a un debordement de la pile je vais essayer de regler ce probleme et voir si sa resout . Merci encore
Goto , call pile sur pic 16f
Avec un GOTO, tu fais un saut inconditionnel.
Un CALL appelle un sous-programme dont il faut obligatoirement revenir. Il est aussi possible d'appeler un autre s/p à partir du 1er, dans ce cas, il faut revenir 2x pour retourner au programme principal.
Un CALL appelle un sous-programme dont il faut obligatoirement revenir. Il est aussi possible d'appeler un autre s/p à partir du 1er, dans ce cas, il faut revenir 2x pour retourner au programme principal.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.
Goto , call pile sur pic 16f
Oui je vais essayer de remodifier mon programme en fait c’est une horloge avec pic 16f876 , DS1307 et 4 afficheur 8 digits et 3 petits boutons pour regler l’heure hier je l’ai mise en route et regler l’heure ce matin les digits avais buggé j’ai debranché et rebranché le pic c’est repartit a la bonne heure car le ds1307 a une memoire interne c’est juste le pic qui a buggé et depuis elle tourne nikel car c’est dans la gestion des bouton de reglages que j’ai des gotos imbriqué des des call donc j’espere pouvoir regler le probleme
Goto , call pile sur pic 16f
Rectif : je n’ai rien changé au programme et je n’ai pas touché aux boutons de reglages et beuggggg j’ai l’mpression qu’il bug toute les 9h environ ....
Goto , call pile sur pic 16f
Regarde ici, elle fonctionne avec une RTC type DS3231 (plus précise que la DS1307) et la passage été/hiver et hiver/été est automatique.
De plus, elle ne bogue pas.
De plus, elle ne bogue pas.

Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.
Goto , call pile sur pic 16f
Le proggrame est en C je connais que lassembleur mais merci
Goto , call pile sur pic 16f
Bonsoir Guigui02, Gérard, et tout le forum,
Mais nous le code, ainsi que le schéma si tu as, et on regardera ensemble
A+
Mais nous le code, ainsi que le schéma si tu as, et on regardera ensemble
Goto , call pile sur pic 16f
Guigui02 a écrit :Le proggrame est en C je connais que lassembleur mais merci
Le programme est en Basic.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

