Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > MPLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2010, 17h09   #1
Faern
Invité de passage
 
Inscription : octobre 2005
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 22
Points : 3
Points : 3
Par défaut [PIC 16F877A] Conversion Minutes - Secondes

Bonjour,

Voila je début en assembleur et j'ai essayé de créer une petite routine pour convertir mes minutes en secondes.
Mais je n'ai aucun moyen de vérifier.
J'ai essayer de commenter le code comme je le pensais.
Merci de votre futur aide.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
; --- Routine permettant de convertir les minutes en secondes
cal_tp_res:
		; --- Conversion minute - seconde
		; --- On charge les minutes dans w et on sauve le tout dans resul
		movf mind_0 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On multiplie par 8
		rlf resul , f
		; --- On multiplie par 16
		rlf resul , f
		; --- On soustrait resul par mind_0 afin d'obtenir une multiplication par 15
		subwf resul , f
		; --- On multiplie par 30
		rlf resul , f
		; --- On multiplie par 60
		rlf resul , f
		; --- On stock le resul dans tp_res
		movf resul, w
		movwf tp_res
		clrf resul
		; --- Conversion dizaine de minutes - seconde
		; --- On charge les minutes dans w et on sauve le tout dans resul
		movf mind_1 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On multiplie par 8
		rlf resul , f
		; --- On multiplie par 16
		rlf resul , f
		; --- On soustrait resul par mind_1 afin d'obtenir une multiplication par 15
		subwf resul , f
		; --- On multiplie par 30
		rlf resul , f
		; --- On multiplie par 60
		rlf resul , f
		; --- On stock le resul dans retenue
		movf resul, w
		movwf retenue
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf retenue , f
		; --- On multiplie par 4
		rlf retenue , f
		; --- On additione retenue par resul afin d'obtenir une multiplication par 5 donc par 300 car 60 * 5(= 30
		addwf retenue , f
		; --- On multiplie par 2 afin d'obtenir une multiplication par 600
		rlf retenue , f
		; --- On additione resul a tp_res afin d'obtenir la conversion totale des minutes en secondes
		movf retenue , w
		addwf tp_res , f
		clrf retenue
		clrf resul
		; --- Il suffit maintenant d'ajouter les secondes et les dizaines de secondes afin d'avoir le temps demandé par l'utilisateur en seconde
		; --- Ajout des secondes
		movf secd_0 , w
		addwf tp_res , f
		; --- Ajout des dizaines de secondes
		movf secd_1 , w
		movwf resul
		; --- Effacement de la carry
		bcf STATUS , C
		; --- On multiplie par 2
		rlf resul , f
		; --- On multiplie par 4
		rlf resul , f
		; --- On additione resul par secd_1 afin d'obtenir une multiplication par 5
		addwf resul , f
		; --- On multiplie par 2 afin d'obtenir une multiplication par 10
		rlf resul , f
		; --- On additione resul dans tp_res
		movf resul , w
		addwf tp_res , f
		; --- On vide toutes les variables utilisés pour les calcules ainsi que w
		clrf retenue
		clrf resul
		clrw
		return
Faern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 01h12   #2
elecpic
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 60
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 60
Points : 25
Points : 25
Par défaut MPLAB

bonsoir,

Pour ma part, quand je code des pics, j'utilise MPLAB. Il est gratuit et il est sur le site de microchips. Aprés, tu peux tester ton code par le simulateur : tu peux visualiser tes registres, les registres du PIC et les flags C et Z.

voici le lien ou tu peux le télécharger :

http://http://www.microchip.com/stel...7002#P171_5058

en bas de la page, télécharge MPLAB IDE

Bon courage.

elecpic
elecpic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 20h18   #3
Faern
Invité de passage
 
Inscription : octobre 2005
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 22
Points : 3
Points : 3
Bonsoir,

Merci de ta réponse, j'ai cependant une autre question.
J'utilise une carte easypic5 avec un pic16F877A, mes ports RA0, RA1, RA2 et RA3 sont utilisés pour mon afficheur 7 segments.
Est il possible d'utiliser le pot RA4 afin de détecter une vibration sur un accéléromètre ce qui engendrera l'arrêt de mon main.

Merci de votre réponse,

Bonne soirée.
Faern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 18h07   #4
pont-
Invité régulier
 
Inscription : mai 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 7
Points : 9
Points : 9
Par défaut Convertir minutes en secondes

Bonjour,
Je ne suis pas un spécialiste, j'ai juste quelques idées, voyant que pas grand monde ne répond.
Déjà, mets tes commentaires en bout de ligne, ce qui réduira ton programme de moitié et on saura à quelle ligne ça correspond.
Deuxièmement, je programmerais un compteur de secondes et de minutes, partant de zéro, et je comparerais le résultat avec le nombre de minutes que tu as à convertir, j'ai l'impression que ce serait beaucoup plus court.
Ensuite, je ne sais pas si tu te trompes ou fais des fautes de français, ton "main", on dit une main, tu n'as sans doute pas que le port A sur ton PIC qui a 28 broches, et si c'est juste pour arrêter ta main, tu dois pouvoir brancher ton accéléromètre sur une entrée analogique.
.
Mais Microchip recommande d'arrêter toute activité digitale du PIC quand on veut se servir des entrées analogiques, sinon il y a des parasites dans la lecture analogique. Donc tu aurais intérêt, soit à utiliser un 2e PIC dédié, ou un petit circuit externe à ampli-OP monté en comparateur, dont la sortie irait sur une broche de ton port A ou B.
Cordialement
pont- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h50.


 
 
 
 
Partenaires

Hébergement Web