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 sur l'Assembleur !

Modérateur : mazertoc

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 100
Enregistré en : novembre 2018
Localisation : Entre l'emetteur et le collecteur

#41 Message par nondediode » dim. 16 déc. 2018 15:18

J'ai vu que je pouvais intervertir RB3 et RB0 :sifflotte:
Je vais donc de ce pas récrire le prg avec une interruption sur RB0 et là Adieu les pbs!
A bientôt!

LCD origine inconnu
satinas
Passioné
Passioné
Messages : 391
Enregistré en : novembre 2015

#42 Message par satinas » dim. 16 déc. 2018 16:02

L'interruption ne changera rien, elle se produira à tout moment, et elle ne pourra pas plus revenir en début de programme que la version actuelle.
Soit STOP est un sous-programme et il ne peut finir en GOTO INIT, soit c'en est pas un et tu ne peux lui mettre un return derrière.

Code : Tout sélectionner

STOP  BCF     STATUS,C
      BTFSS   PORTB,3
      RETURN
      CALL    TEMPO2
      BCF     STATUS,C
      BTFSS   PORTB,3
      RETURN
      CALL    ARRET
      ...
      BSF     STATUS,C
      RETURN

STOP2 idem

Chaque fois que tu appelles STOP

      CALL    STOP
      BTFSC   STATUS,C
      GOTO    INIT
      ...

Appel de CLIGNOTE

      CALL    CLIGNOTE
      BTFSC   STATUS,C
      GOTO    INIT
      ...

CLIGNOTE
      ...
      CALL    STOP2
      BTFSC   STATUS,C
      RETURN
      ...
      BCF     STATUS,C
      RETURN


Les sous-programmes STOP, STOP2, CLIGNOTE retournent C = 1 si l'arrêt est demandé et confirmé.

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 100
Enregistré en : novembre 2018
Localisation : Entre l'emetteur et le collecteur

#43 Message par nondediode » dim. 16 déc. 2018 17:07

C'est ce que je me rends compte avec l'interruption

Par contre :+1: :bravo: et Merci !
Ces petits bouts de prg fonctionnent merveilleusement bien

Me voilà avec un prg rassurant grâce à toi!

Mais pourrais tu m'expliquer comment fonctionne cette cde parce que là j'ai un méga train de retard :oops:

LCD origine inconnu
satinas
Passioné
Passioné
Messages : 391
Enregistré en : novembre 2015

#44 Message par satinas » dim. 16 déc. 2018 17:36

La carry C est un flag du registre STATUS mis à jour par le pic en retour d'opération add, sub, ...
Mais on peut aussi le modifier soi-même et ainsi s'en servir de flag pour stocker une information.
les sous-programmes STOP et STOP2 mettent C à 1 si il y a appui prolongé OFF, sinon ils font C = 0

Dans toute la partie de programme jusqu'au sous-programme CLIGNOTE, on a le droit d'y faire GOTO INIT car aucun sous-programme n'est en cours d'exécution.

Dans le sous-programme CLIGNOTE, on a plus le droit au GOTO INIT, donc on remonte l'information C = 1 en sortant aussitôt par return. Il ne faut pas oublier de faire C = 0 juste avant la fin de CLIGNOTE, puisqu'il n'y a pas eu arrêt.

Pour MENU_B, cela serait bien d'enlever le test du bouton arrêt, sinon il faudra faire pareil que CLIGNOTE.

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 100
Enregistré en : novembre 2018
Localisation : Entre l'emetteur et le collecteur

#45 Message par nondediode » dim. 16 déc. 2018 18:08

Dans MENU_B la cde ne sert à rien et d'ailleurs dans aucun des écrans il a lieu d'exister.
Je l'ai donc supprimer
A présent j'ai un programme clean qui marche mieux qu'une Rolls!

Merci pour l'explication et je vais regarder le cours Bigonof sur le sujet et m’entraîner avec qq exemples
Quand je pense que je me suis nourri d'assembleur ttes mes journées depuis mon retour d'hosto :lol: :lol: :lol:
Mais j'adore :razz:

Encore un grand merci à toi :wink:


Retourner vers « Langage ASM »

Qui est en ligne

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