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 : 148
Enregistré en : novembre 2018
Localisation : Lyon

#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
Expert
Expert
Messages : 1225
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 : 148
Enregistré en : novembre 2018
Localisation : Lyon

#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
Expert
Expert
Messages : 1225
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 : 148
Enregistré en : novembre 2018
Localisation : Lyon

#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:

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#46 Message par nondediode » mar. 15 déc. 2020 10:51

Bonjour à tous,

Je reviens sur le sujet pour une petite anomalie dans le programme et aussi pour vous montrer le projet fini.

Commençons par le projet.

Souvenez vous, j'avais comme projet de construire un méga ampli à lampe avec (pour sortir de l'ordinaire) une partie totalement numérique pour piloter et afficher les états des commandes par 5 boutons poussoirs et une télécommande. J'étais parti sur un pic 16f877 en asm et 1 afficheur LCD de récup 4 lignes x 40 caractères. Grâce à votre aide, j'étais parvenu à faire tourner ce programme et cela m'a permis d'aboutir au projet final. Il tourne depuis 1 mois et c'est une pure merveille à l'écoute. Avec un poids de + de 70kg et 1 volume impressionnant (60cm de large X 55 de profondeur et 50 de haut on pourrait reprendre ce que disait Pathé Marconi à propos de son matériel ; Le poids de son Maître! Je l'ai quand même baptisé le Minotaure! et il a grand succès auprès de tous les audiophiles avec qui je partage cette passion.

Minotaure S55.JPG




Minotaure S63.JPG



Côté anomalie, je constate depuis hier soir un bog à l'allumage, j'ai déjà eu ce phénomène lors de la mise au point de l'ampli mais j'avais pensé que la cause était liée aux désordres filaires autour de l'ampli. ça ne s'était jamais reproduit depuis sauf hier soir et ce matin.
Pour remédier au pb je dois faire plusieurs tentatives ou débrancher et rebrancher le 220 et au bout d'un moment tout rentre dans l'ordre sans trop savoir pourquoi.

A la mise sous tension, le programme fait n'importe quoi, il démarre direct sans avoir à appuyer sur la touche "ON" et il revient sur "OFF" et il fait ça en boucle.

Voir le programme [url=#29 par nondediode » sam. 15 déc. 2018 19:06]#29 par nondediode » sam. 15 déc. 2018 19:06[/url]

Je me rappelle avoir rencontré ce problème de bog de démarrage sur un autre ampli mais différent; c'était l'afficheur qui restait en off. J'avais corrigé le pb en rajoutant une tempo juste avant le départ du programme; du coup ça me donnait un blanc 1 ou 2 secondes et ensuite le programme se déroulait normalement.


Je pense lui faire la même punition ou y a-t-il une modif à faire plus simple ?

Encore merci à vous

JP
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

LCD origine inconnu
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#47 Message par satinas » mar. 15 déc. 2020 12:09

Bonjour,
il est vraiment beau, bravo, en fonctionnement il doit l'être encore plus.
Tu devrais joindre le programme actuel car il y eu pas mal de modifications depuis.

Il est câblé comment le bouton ?
Ce serait pas le problème abordé précédemment, des variables placées à des adresse inférieures à 0x20 ?

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#48 Message par nondediode » mar. 15 déc. 2020 12:53

Bonjour Satinas,

Je vais regardé tout ça et je te joindrai le schéma autour du PIC

JP

LCD origine inconnu
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#49 Message par Jérémy » mar. 15 déc. 2020 12:54

Ou petite broche laissé en l'air !! dehors!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

LCD origine inconnu
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#50 Message par nondediode » mar. 15 déc. 2020 13:36

J'arrive pas à poster le fichier

j'ai cette remarque

Votre message contient 71275 caractères.
Le nombre maximum de caractères autorisés est de 60000.


??????


voici le schéma


PP845 version 2019.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Roger et 43 invités