Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    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.

  2. #2
    Membre chevronné

    Homme Profil pro Bertrand
    Inscrit en
    octobre 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Nom : Homme Bertrand
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : octobre 2008
    Messages : 409
    Points : 750
    Points
    750

    Par défaut

    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é.

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    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

    Par défaut

    Bonjour, serai-il possible que tu m'envoies tous les fichiers concernant le projet. source et différents sous programmes. merci

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •