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 28/08/2011, 19h22   #1
crow56
Invité de passage
 
Inscription : juin 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 24
Points : 2
Points : 2
Par défaut [PIC 16F887] Dé électronique

Bonjour,

Je débute dans les microcontroleurs avec PICkit2 de microchip.
Il s'agit d'un PIC 16F887.
J'essaie de faire un programme avec MPLAB pour faire un dé électronique.
Voici le programme :

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
#include <htc.h> 


char a;
char resultat;

//-------------FONCTION HASARD----------------
char hasard(void)
{
	do{a=a+1; if(a==5) a=1;}
	while(TMR0>0);
	return (a);	
}


//-------------Fonction principale-------------
void main(void)
{
		PORTD = 0;
		TRISD = 0b11110000;
		OPTION = 0b11000111;
		for(;;){
				if(1)
				{
					resultat = hasard();
					PORTD = 0;
					if(resultat==1) RD0=1;
					if(resultat==2) RD1=1;
					if(resultat==3) RD2=1;
					if(resultat==4) RD3=1;						
				}		
		}	 
}
Mais quand j'éxécute, pas d'erreur mais ça ne marche pas. C'est une carte 44pin. C'est le compilateur HI-TECH que j'utilise.

Voici les docs :
ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf

http://ww1.microchip.com/downloads/e...Doc/41296a.pdf

Merci de voir ce qui ne va pas dans mon programme.
Merci.
crow56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 16h09   #2
bertry
Membre chevronné
 
Homme Bertrand
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 647
Points : 647
Salut,
Ça fait longtemps que je n'ai pas touché un PIC, mais comme personne ne répond, je me lance... ( Je demande donc vôtre indulgence... )

Citation:
Envoyé par crow56 Voir le message
quand j’exécute, pas d'erreur mais ça ne marche pas.
J'ai l'impression que la fonction "hasard" ne s'arrête jamais!
Code :
1
2
3
4
do {
a=a+1;
if(a==5) a=1;
} while(TMR0>0);
Je crois que le test "TMR0>0" ne peut renvoyer false que si tu tombes pile au moment ou TMR0 est égal à zéro, si non, il renvoie toujours true. Le TMR0 n'est-il pas toujours positif? Vérifie si dans htc.h, TMR0 est unsigned ou signed.

Une autre chose attire mon attention. Pourquoi écrire
Code :
1
2
3
4
5
6
7
8
9
10
for(;;) {
	if(1) {
		resultat = hasard();
		PORTD = 0;
		if(resultat==1) RD0=1;
		if(resultat==2) RD1=1;
		if(resultat==3) RD2=1;
		if(resultat==4) RD3=1;						
	}		
}
alors que
Code :
1
2
3
4
5
6
7
8
for(;;) {
		resultat = hasard();
		PORTD = 0;
		if(resultat==1) RD0=1;
		if(resultat==2) RD1=1;
		if(resultat==3) RD2=1;
		if(resultat==4) RD3=1;							
}
fonctionne aussi bien. J'ai du mal à saisir l'intérêt du "if(1)"!! Peut-être remplace-tu le 1 par un test sur l'état d'une broche pour démarrer et arrêter le dé.
__________________
bertry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 12h26   #3
tutu31400
Invité de passage
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : octobre 2011
Messages : 1
Points : 1
Points : 1
Bonjour, serai-il possible que tu m'envoies tous les fichiers concernant le projet. source et différents sous programmes. merci
tutu31400 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 04h35.


 
 
 
 
Partenaires

Hébergement Web