dé électronique
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

dé électronique



  1. #1
    invite8d822661

    dé électronique


    ------

    Bonjour,

    Je débute dans la programmation des PIC, j'essaie de programmer un dé électronique avec le PIC16F887 de Microchip.
    Le problème, c'est que quand je le "build", il me dit qu'il y a des erreurs dans les premières lignes.

    Je débute et je n'arrive pas à lire la fiche de ce PIC qui est ici :
    ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf
    et
    http://ww1.microchip.com/downloads/e...Doc/41296a.pdf

    Code:
    #include <htc.h>   
    
    
    char sortie @ PORTB; 
    bit inter1 @ SW1; 
    bit led1 @ RD0; 
    bit led2 @ RD1; 
    bit led3 @ RD2; 
    bit led4 @ RD3;
    
    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)
    {
    		sortie = 0;
    		TRISB = 0b11110000;
    		OPTION = 0b11000111;
    		for(;;){
    				if(inter1)
    				{
    					resultat = hasard();
    					sortie = 0;
    					if(resultat==1) led1=1;
    					if(resultat==2) led2=1;
    					if(resultat==3) led3=1;
    					if(resultat==4) led4=1;						
    				}		
    		}	
    
    	 
    	 
    }

    Merci de votre aide.

    -----

  2. #2
    invite88c92d74

    Re : dé électronique

    Bonjour,

    Pour nous aider à t'aider, tu pourrais peut-être donner tes erreurs?

  3. #3
    invite8d822661

    Re : dé électronique

    Les erreurs, ce sont ces lignes :

    char sortie @ PORTB;
    bit inter1 @ SW1;
    bit led1 @ RD0;
    bit led2 @ RD1;
    bit led3 @ RD2;
    bit led4 @ RD3;

    il dit que l'expression est incomplète et que SW1 est indéfini ainsi que PORTB.
    Si vous pouvez voir les fichiers que j'ai joint dans le premier post, merci.

  4. #4
    invite88c92d74

    Re : dé électronique

    il y a quoi dans ton include?

  5. A voir en vidéo sur Futura
  6. #5
    invite8d822661

    Re : dé électronique

    Voici les erreurs :

    Code:
    Warning [176] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 40.0 ligne manquante
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 4.20 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 4.20 expression entière requise
    Error   [192] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 5.14 identificateur "SW1" indefini
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 5.17 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 5.17 expression entière requise
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 6.15 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 6.15 expression entière requise
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 7.15 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 7.15 expression entière requise
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 8.15 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 8.15 expression entière requise
    Error   [188] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 9.15 expression contante requise
    Error   [236] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 9.15 expression entière requise
    Warning [337] C:\Users\triti\Documents\DOC_MPLAB\Pk2 Lessons\44Pin Demo Board\C Projects\HI-TECH\de_elec.c; 39.1 la ligne ne contient pas de caractère newline (retour chariot)

    avec le code suivant :

    Code:
    #include <htc.h> 
    
    
    char sortie @ PORTD; 
    bit inter1 @ SW1; 
    bit led1 @ RD0; 
    bit led2 @ RD1; 
    bit led3 @ RD2; 
    bit led4 @ RD3;
    
    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)
    {
    		sortie = 0;
    		TRISB = 0b11110000;
    		OPTION = 0b11000111;
    		for(;;){
    				if(inter1)
    				{
    					resultat = hasard();
    					sortie = 0;
    					if(resultat==1) led1=1;
    					if(resultat==2) led2=1;
    					if(resultat==3) led3=1;
    					if(resultat==4) led4=1;						
    				}		
    		}	 
    }
    Il n'y a pas d'erreur dans le include.

  7. #6
    invite8dfba1e7

    Re : dé électronique

    Et si au lieu d'utiliser celà :
    char sortie @ PORTD;
    bit inter1 @ SW1;
    bit led1 @ RD0;
    bit led2 @ RD1;
    bit led3 @ RD2;
    bit led4 @ RD3;

    tu utilises directement les symboles RD0..RD3 dans ton code, ça fonctionne?

    Il me semble avoir eu un souci du genre avec le compilateur hi tech, il ne comprend pas le @.

    De plus, SW1 n'est pas un symbole connu par hi-tech. Il faut donner un port (RA1, RB4, etc...)

  8. #7
    invite8d822661

    Re : dé électronique

    Oui, c'est vrai que SW1 n'est pas bon, mais je ne vois pas quoi mettre, sur la carte, à côté du bouton poussoir, il y a écrit SW1.
    Il ne comprend pas le @, c'est très embêtant, car je veux mettre des noms.

  9. #8
    invite8dfba1e7

    Re : dé électronique

    C'est quoi comme carte? Tu dois avoir de la doc avec, qui détaille un peu les connexions entre boutons poussoirs et microcontroleur...

    Pour l'utilisation de noms, vérifies déjà que c'est bien ça le problème ; ensuite, y'a possibilité de contourner ce problème.
    Ceci dit, vue la complexité du programme, c'est pas non plus de première nécessité.

  10. #9
    invite8d822661

    Re : dé électronique

    J'ai mis en lien la doc de la carte dans le 1er post. Je crois que c'est RB0, mais le problème, c'est je crois qu'il ne reconnaît pas les @.
    Sans les @, comment je fais pour affecter à des noms ?
    Est-ce qu'il y a des gens qui utilisent MPLAB ?
    (désolé si mes questions peuvent paraître simple, mais je débute vraiment dans l'électronique, et j'espère trouver un peu d'aide sur ce forum)

  11. #10
    invite8d822661

    Re : dé électronique

    Citation Envoyé par bastien71 Voir le message
    Et si au lieu d'utiliser celà :
    char sortie @ PORTD;
    bit inter1 @ SW1;
    bit led1 @ RD0;
    bit led2 @ RD1;
    bit led3 @ RD2;
    bit led4 @ RD3;

    tu utilises directement les symboles RD0..RD3 dans ton code, ça fonctionne?

    Il me semble avoir eu un souci du genre avec le compilateur hi tech, il ne comprend pas le @.

    De plus, SW1 n'est pas un symbole connu par hi-tech. Il faut donner un port (RA1, RB4, etc...)
    Oui, j'ai fait, et ça marche pas.
    Pour inter1, c'est le port RB0.

  12. #11
    invite8dfba1e7

    Re : dé électronique

    re poste ton code corrigé et les nouvelles erreurs

  13. #12
    invite8dfba1e7

    Re : dé électronique

    Chez moi, en virant les définitions des symboles sortie, inter1, etc. ça fonctionne.
    Pareil, le registre option ne s'appelle pas option, mais OPTION_REG. C'est dans la doc du compilateur.

    Enfin, il manque un TRISD, non? (à moins qu'il soit correctement configuré par défaut)

    Voilà le code qui compile chez moi
    Code:
    #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 = 0x00;
    		TRISB = 0b11110000;
    		OPTION_REG = 0b11000111;
    		for(;;){
    				if(RB0)
    				{
    					resultat = hasard();
    					PORTB = 0;
    					if(resultat==1) RD0=1;
    					if(resultat==2) RD1=1;
    					if(resultat==3) RD2=1;
    					if(resultat==4) RD3=1;						
    				}		
    		}	 
    }

  14. #13
    invite8d822661

    Re : dé électronique

    J'ai fait ton code, j'ai fait build (F10) puis j'ai fait program dans programmer, mais il m'affiche une erreur pour OPTION_REG, il ne le reconnaît pas. Tu utilises quel compilateur ?
    J'ai l'impression que HI-TECH n'est pas un bon compilateur.

  15. #14
    invite8dfba1e7

    Re : dé électronique

    J'utilise hi-tech 9.81 ; si tu as une version antérieure, change OPTION_REG par OPTION

    Hi-tech est un bon compilateur (autant qu'il puisse exister un bon compilateur pour des pic 16) ; le tout est d'apprendre à s'en servir, et de commencer par aller voir le fichier qui correspond à ton pic dans le répertoire include du compilateur. donc ici, 16f887.h

  16. #15
    invite8d822661

    Re : dé électronique

    J'ai remplacé par OPTION, et ça a fait build successful, mais quand je fais program et que j'appuie sur le bouton poussoir, il ne se passe rien.
    J'utilise HI-TECH lite 9.82.
    Quand tu appuies sur le bouton poussoir, ça te fait allumer la led ?

  17. #16
    invite8dfba1e7

    Re : dé électronique

    Je n'ai pas ta platine de tests ; on vient de résoudre le premier problème. Maintenant, il y a sans doute d'autres problèmes dans ton code. Si tu fais un programme simple du genre faire clignoter une led, ça fonctionne?

  18. #17
    invite8d822661

    Re : dé électronique

    Code:
    #include <htc.h> 
    
    
    
    
    //-------------Fonction principale-------------
    void main(void)
    {
    		PORTD = 0;
    		TRISD = 0b11110000;
    		//OPTION = 0b11000111;
    		for(;;){
    				RD0=1;
    				RD1=1;
    				RD2=1;
    		}	 
    }
    Avec ce programme, ça fait allumer les leds que pendant un bref instant puis plus rien, pourtant j'ai bien mis une boucle infinie.

  19. #18
    invite8dfba1e7

    Re : dé électronique

    il faut désactiver le watchdog ; soit dans le code (lire la doc du compilateur hi tech) soit via mplab : configure / configuration bits/ décocher configuration bits sets in code/choisir wtd disabled

  20. #19
    invite8d822661

    Re : dé électronique

    J'ai désactivé le watchdog avec mplab en décochant la case, mais toujours le même problème.

  21. #20
    invite8dfba1e7

    Re : dé électronique

    il faut décocher la case, ET CHOISIR "wtd disabled" dans la fenêtre...

  22. #21
    invite8d822661

    Re : dé électronique

    C'est déjà en wtd disabled et ça marche toujours pas.

Discussions similaires

  1. [Blanc] Lave vaisselle carte électronique choc électronique
    Par invite081c0922 dans le forum Dépannage
    Réponses: 4
    Dernier message: 12/06/2011, 20h35
  2. Electronique
    Par invitecbade190 dans le forum Physique
    Réponses: 2
    Dernier message: 17/05/2011, 09h06
  3. electronique
    Par invite97b4e07d dans le forum Électronique
    Réponses: 3
    Dernier message: 08/01/2010, 17h08
  4. Réponses: 5
    Dernier message: 16/04/2009, 15h04
  5. Electronique
    Par invite67103de6 dans le forum Électronique
    Réponses: 8
    Dernier message: 14/03/2007, 12h43
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...