bonjour, voila, je cherche à décrémenter le pcl d'1 pas, esce que je peux utiliser cette instruction :
decf pcl,f
merci
-----
bonjour, voila, je cherche à décrémenter le pcl d'1 pas, esce que je peux utiliser cette instruction :
decf pcl,f
merci
Oui mais tu peux faire aussi
GOTO $-1.
Un peu plus de code pour voir les conditions
a bientôt
et bien en faite je voudrais faire le test suivant en sachant qu'un bouton est sur ra2:
btfsc porta,2 ; le bouton est-il appuyé ?
goto $-1 ; non?alors je boucle sur l'instruction précédente.oui?alors je passe au test suivant.
btfss porta,2 ;le bouton est-il relaché?
goto $-1 ;non?alors je boucle sur l'instruction précédente.oui?alors je passe le goto $-1.
esce que je suis dans le vrai?
LU meliokan
Ton bouton a en principe 2 états 1 ou 0
donc tu peux faire ->
Sachant que si c'est un bouton il faut aussi gérer le rebond de ton bouton.Code:boucle BTFSC PORTA,2 ;test si bouton appuyé GOTO ACTION ;oui je fais mon action GOTO boucle ;non je retourne ACTION CALL TEMPO ;ici un temporisation pour relacher le bouton BTFSS PORTA,2 ;le bouton est relaché GOTO ACTION ;non on y retourne BSF PORTB,1 ;oui mise à 1 PORTB broche 1 LED allumé
Je ne sais pas si c'est cela que tu cherches?
à bientôt
Dernière modification par Pom26 ; 12/10/2007 à 07h46.
merci pom26 pour ton bout de code
En faite , je cherche à n'autoriser qu'un seul front montant et descendant lors de mon test par exemple:
Le bouton me sert à plusieurs choses, à enregistrer une nouvelle variable, au start décomptage et au stop/reset, donc je dois passer plusieurs fois dans ce test.
- je teste si le bouton est appuyé, si oui, je poursuis le programme, si non, et bien j'attend qu'il le soit.
- quand il est appuyé, je sauve ma nouvelle variable, et je reteste s'il est de nouveau appuyé, donc un 2 eme test. Mais comme le pic va hyper vite, il aura eu le temps de faire 1000 tests avec le bouton appuyé du 1er test et donc de ma faire: sauve variable start stop sauve start stop etc sans arret, donc il faut impérativement que le bouton soit relaché avant d'executer l'instruction suivante, voilà en gros le but de la manoeuvre.
a+
Tu me parles de variable quelle variable?
C'est en fonction du temps d'appuie que tu sélectionnes ces variables?
Donne moi plus de donnée je ne parviens pas a saisir ce que tu veux.
l'ordre chronologique c'est quoi
variable(8bits)
start
stop
rest
avec un seule bouton c'est cela?
D'abord une ptite image
http://forums.futura-sciences.com/at...0&d=1192002375
Voici l'ordre chronologique:
- Je selectionne le temps que je veux à l'aide des bouton D et U
- 1 appuie sur run/stop et je visualise ce temps sur les digits de décomptage (le décomptage est toujours à l'arret).
- 1 autre appuie sur run/stop et je lance le décomptage, lorsque celui-ci arrive à zéro, il déclenche l'apn et repart à la valeur indiqué par les digits du haut (digits de programmation).
- quand j'ai fini mes prises de vue ou que jeux changer le temps de programmation, j'appuie sur run/stop, ce qui me reset les digits de décomptage à la valeur des digit de programmation et me stop le décomptage.
- je peux alors changer le temps de programmation si je le souhaite.
j'èspere que c'est pas trop confu
a+
LU
Et ce qui te pose probléme,c'est le bouton run/stop
mais tu as fait le reste du programme?
Pour le run/stop,c'est un appel du bout de code par un call bouton par exemple qui à la sortie te dirige vers :
-visu
-start
-stop
et le tout dans une boucle
disons que j'ai fais l'organigramme complet mais pour le code, vu que l'assembleur est tout nouveau pour moi j'ai un peu de mal à tout assimiler.
J'avais bien pensé à faire un call bouton dans une boucle, mais comment le programme va savoir si c'est un call pour un start ou pour un stop ou encore pour une validation du temps?
a+
une ébauche
boucle
modif compteur
call bouton
call visu
call bouton
call start
call bouton
call stop
goto boucle
je te ferais un bout de code avec cela aprés le casse croute ou donne moi une bout de code que tu penses faire a+
Dernière modification par Pom26 ; 12/10/2007 à 11h52.
je prépare l'organigramme et je te poste ça bientot
a+
Attention 16F84 13 I/0 je compte pour ton systéme 17 I/O un 16F628 à 16 I/O
salut pom26
mes recherches correspondent au projet en cours http://forums.futura-sciences.com/thread171883.html
Voici l'organigramme qui concerne la programmation du temps,et la validation de celui-ci.
http://forums.futura-sciences.com/at...1&d=1192194051
La variable BPDU est obtenu dans l'interruption BP, l'orsque j'appuie sur le bouton D ou U, le premier test détermine si j'ai appuyé sur BPU si oui, j'incrémente la variable BPU, sinon, c'est BPD qui est incrémenté, c'est à ce moment là que BPDU est calculée, puis, retour intérruption.
Le programme commence à lire la variable BPDU, et la comprare à la variable DU.
DU correspond à la variable des digits de décomptage, si c'est = à zéro, on test si BPDU=0, sinon, on test si run/stop est pressé.
Tant qu'il n'est pas pressé, on boucle à la lecture de BPDU, s'il est pressé, on remet à zéro l'affichage des digits de décomptage et on envoie un nombre (PDU) de pulses dans RA2, RA2 est branché sur l'entrée clock d'un cd4010.
Maintenant que j'ai le même nombre sur les digits de décomptage et sur les digits de programmations, je peux dire que DU=BPDU et je boucle en lecture BPDU, je teste si BPDU = DU, oui?, alors je teste si BPDU =0, non?, alors j'attends l'appuie sur run/stop, et je boucle comme ça j'usquà ce que j'appuie sur run/stop et après, c'est le départ décomptage.
Pour le code, j'étudie le problème.
C'est peut-etre barbare comme organigramme ou comme méthode, mais j'ai débuté il y a 1 mois en pic avec le cours de bigonoff
a+
un question comment avec un bits tu comptes afficher
tes 7 segments?
justement, je t'envoie un schema
Pour afficher sur 7 segments il faut 7 données,si tu fais du multiplexage pour 4digts 4 bits suplementaires pour ton affichage il te faut déja 11 bits en sortie
le 16F84 13 I/O
Si tu utilises un décodeur 7 segements il te faut 4 bits + 4 bits pour le multipexage 8 bits pour l'affichage non je ne vois pas mais je vais voir ton shéma
En plus de ne pas être programmeur je ne suis pas non plus électronicien, j'espère au moins que mon projet est réalisable...
Voici le schéma de principe, il manque plein de chose mais c'est juste pour te montrer comment je compte incrémenter un digit avec un bit sur une entrée clock d'un 4510.
http://forums.futura-sciences.com/at...1&d=1192196723
a+
Alors je me suis posé la question mais comment je vais faire pour afficher par exemple le nombre 15 ( pour 15s) dans les digit de décomptage ?
Bon, déjà, je veux que les 4510 ne fasse QUE décompter, ensuite si je mets sous tension j'ai 00 d'affiché sur les digits de décomptage, si j'envoie 1 pulse, je suppose que j'aurais 99 d'affiché, encore 1 pulse... 98, etc... donc pour avoir le nombre 15, il faut que j'envoie 100-15 = 85 pulses dans RA2 ,d'où la formule PDU=100-BPDU ,puis j'envoie PDU fois 1 pulse et normalement je devrais avoir 15 d'affiché, ensuite le décomptage est fait par le programme principal.
J'ai juste un petit doute sur le faite du passage de 00 à 99 avec le carry.
mais le 4510 est décompteur BCD je crois que tu m2langes un peu tout de la logique cablée?du µP .Si tu parts avec de la logique cablé pourquoi utiliser un PIC,alors que le pic fait tout cela en soft je pense que tu devrais reflechir sur ton cahier des charges.
moi ton montage je le fait avec
1 PIC 16F84
1 LCD 16X1
une led
5 boutons
résistances et condos alim pour les puristes
le reste c'est du soft
j'ai bien pensé au LCD mais c'est trop compliqué pour moi
moins que 4 afficheurs regarde ici avec un 16F84
http://perso.orange.fr/doumai/Compte...rtz%204MHz.htm
je vais étudier la chose, merci, mais ça me parait beaucoup plus compliqué quand meme
Le gros du travail est la programmation, bien faire l'organigramme ;le reste peu de composants.
Si tu as des problèmes de soft,avec les pic,pas de problème dans la limite de mes capacités.
a bientôt
Salut, j'aurais voulu avoir quelques précisions au sujet des afficheurs lcd.
Tout d'abord, j'en ai récupéré un, c'est un 16*2 lignes de marque solomon et il y a un hd44780 couplé à un lc7930 de chez sanyo soudé derrière, d'après ce que j'ai pu lire à droite à gauche, ca pourrait me convenir, cependant, il reste quelques points que j'aimerai éclaircir:
- c'est un lcd à 15 broches et non pas 14 ou 16, mais bien 15, apparement ceux que j'ai vu en avaient 14 ou 16 suivant les modèles, donc déjà....soucis.
- Lorsque l'on souhaite changer de caractère, par exemple pour un compteur, esce que l'on est obligé de réécrire toute la ligne ? Je m'explique:
Si je veux afficher ça:
Temps 060 s ; ça c'est le temps programmé au départ. Là, j'ai 14 caractère, le mot 'Temps' et la lettre 's' reste fixe, seuls les chiffres 060 peuvent changés.
Fin dans 060 s ; Pareil pour la deuxième ligne, et là, toutes les seconde, 060 passe à 059, 058 etc.
Donc ma question est: Devrais-je obligatoirement réécrire les 2 lignes toutes les secondes pour rafraichir le temps, ou pourrais-je réécrire juste sur les caractères qui m'interresse sans toucher aux autres ?
merci
Tu peux ecrire a un endroit bien precis, sur la ligne(Set DD RAM).
Mais il est parfois plus rapide,simple au nivean du code,de réecrire une ligne entière regarde sur le net beaucoup de sites qui traitent de ce suijet.