Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

petit problème avec le compilateur Hi-tech



  1. #1
    MofK

    Question petit problème avec le compilateur Hi-tech


    ------

    Hello

    Donc voila j'ai téléchargé et installé le compilateur C Hi-tech picc en mode pro 45 jours. je fais un petit programme simple visant à faire clignoter une led (avec la fonction __delay_ms()) que voila:

    Code:
    #include <htc.h>
    
    #ifndef _XTAL_FREQ
     // Unless already defined assume 4MHz system frequency
     // This definition is required to calibrate __delay_us() and __delay_ms()
     #define _XTAL_FREQ 4000000
    #endif
    		
    void main(void){
    	
    	TRISB = 0b00000000;
    	TRISA = 0b00000000;
    		
    	PORTB = 0;
    	char a = 0;
    	
    	while(1){
    		
    		PORTB = 1;
    		
    		for(a = 0; a < 10; a++){
    		__delay_ms(100);
    		}
    		
    		PORTB = 0;
    		
    		for(a = 0; a < 10; a++){
    		__delay_ms(100);
    		}		
    		}
    }
    qui ne devrait pas avoir d'erreurs???

    voici ce que me donne Hi-tech lors de la compilation:

    --------------------------------------------------------------------
    Build D:\Programmes C Pics\test\essai for device 16F84A
    Using driver E:\HI-TECH Software\PICCPRO9.60\bin\picc. exe

    Executing: "E:\HI-TECH Software\PICCPRO9.60\bin\picc. exe" --pass1 "D:\Programmes C Pics\test\essai.c" -q --chip=16F84A -P --opt=default -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
    Error [249] D:\Programmes C Pics\test\essai.c; 17.1 manque probablement "}" dans le précédent bloc
    Error [285] D:\Programmes C Pics\test\essai.c; 19.1 pas d'identificateur dans la déclaration
    Warning [374] D:\Programmes C Pics\test\essai.c; 19.1 manque le type basic; entier (int) supposé
    Error [314] D:\Programmes C Pics\test\essai.c; 19.1 ";" attendu
    Error [285] D:\Programmes C Pics\test\essai.c; 23.1 pas d'identificateur dans la déclaration
    Warning [374] D:\Programmes C Pics\test\essai.c; 23.1 manque le type basic; entier (int) supposé
    Error [314] D:\Programmes C Pics\test\essai.c; 23.1 ";" attendu
    Warning [374] D:\Programmes C Pics\test\essai.c; 23.14 manque le type basic; entier (int) supposé
    Error [984] D:\Programmes C Pics\test\essai.c; 23.14 type redeclaré
    Error [1098] D:\Programmes C Pics\test\essai.c; 23.14 conflit de déclaration pour la variable "a"
    Error [314] D:\Programmes C Pics\test\essai.c; 23.14 ";" attendu
    Warning [374] D:\Programmes C Pics\test\essai.c; 23.21 manque le type basic; entier (int) supposé
    Error [984] D:\Programmes C Pics\test\essai.c; 23.21 type redeclaré
    Error [1098] D:\Programmes C Pics\test\essai.c; 23.21 conflit de déclaration pour la variable "a"
    Error [314] D:\Programmes C Pics\test\essai.c; 23.21 ";" attendu
    Error [285] D:\Programmes C Pics\test\essai.c; 25.1 pas d'identificateur dans la déclaration
    Warning [374] D:\Programmes C Pics\test\essai.c; 25.1 manque le type basic; entier (int) supposé
    Error [314] D:\Programmes C Pics\test\essai.c; 25.1 ";" attendu
    Warning [374] D:\Programmes C Pics\test\essai.c; 27.7 manque le type basic; entier (int) supposé
    Error [984] D:\Programmes C Pics\test\essai.c; 27.7 type redeclaré
    Error [1098] D:\Programmes C Pics\test\essai.c; 27.7 conflit de déclaration pour la variable "PORTB"
    Error [285] D:\Programmes C Pics\test\essai.c; 29.1 pas d'identificateur dans la déclaration
    Warning [374] D:\Programmes C Pics\test\essai.c; 29.1 manque le type basic; entier (int) supposé
    Error [314] D:\Programmes C Pics\test\essai.c; 29.1 ";" attendu
    Warning [374] D:\Programmes C Pics\test\essai.c; 29.14 manque le type basic; entier (int) supposé
    Error [984] D:\Programmes C Pics\test\essai.c; 29.14 type redeclaré
    Error [1098] D:\Programmes C Pics\test\essai.c; 29.14 conflit de déclaration pour la variable "a"
    Error [314] D:\Programmes C Pics\test\essai.c; 29.14 ";" attendu
    Warning [374] D:\Programmes C Pics\test\essai.c; 29.21 manque le type basic; entier (int) supposé
    Error [984] D:\Programmes C Pics\test\essai.c; 29.21 type redeclaré
    Advisory[1] too many errors (21)

    ********** Build failed! **************
    ---------------------------------------------------------------------

    J'y comprend rien...
    Help!!!

    merci d'avance.
    Benj

    -----
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  2. Publicité
  3. #2
    MofK

    Re : petit problème avec le compilateur Hi-tech

    Ah et si j'enlève les "for", ça fonctionne très bien...
    ou même si je n'enlève que le "char a = 0;", il ne me met que "identificateur "a" indefini"...
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  4. #3
    Ptitux

    Re : petit problème avec le compilateur Hi-tech

    Bonsoir,

    Déplaces le "char a = 0;" au dessus du "TRISB = 0b00000000;" (c'est a dire au début du main)
    Il est possible que le compilateur ne supporte pas la déclaration d'une variable après avoir écrit des instructions.

    Cordialement.

  5. #4
    MofK

    Re : petit problème avec le compilateur Hi-tech

    ah ben oui tiens...
    ça marche aussi si je le sort carrément du main.
    par contre lorsqu'il est dans le main et si je veux voir la variable a dans le watch, j'ai que "main_a" et il marque "out of scope"! C'est quoi??

    le truc dommage que j'ai remarqué c'est que les delay_ms ne peuvent même pas dépasser 200ms... en plus je crois pas qu'il utilise le timer il me semble!!
    merci!
    Benj
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  6. #5
    Ptitux

    Re : petit problème avec le compilateur Hi-tech

    Citation Envoyé par MofK Voir le message
    ça marche aussi si je le sort carrément du main.
    Benj
    Oui la mettre hors du main place cette variable en "globale" c'est à dire qu'elle sera vu dans toute les fonctions du programme. Quand elle est dans le main elle n'est vu que par la cette fonction, c'est donc pour ça que tu n'arrives pas à la voir dans le "watch".

    Citation Envoyé par MofK Voir le message
    ... en plus je crois pas qu'il utilise le timer il me semble!!
    Benj
    Vrai. C'est un sous-programme bloquant qui "compte" pendant le temps spécifié.

    Cordialement.

  7. A voir en vidéo sur Futura
  8. #6
    MofK

    Re : petit problème avec le compilateur Hi-tech

    ok merci pour ces infos.
    dernière ptite question: quelle est le mot pour avoir CP désactivé?? (dans __CONFIG(...))
    merci
    Benj
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  9. Publicité
  10. #7
    HULK28

    Re : petit problème avec le compilateur Hi-tech

    Citation Envoyé par MofK Voir le message

    Code:
    #include <htc.h>
    
    #ifndef _XTAL_FREQ
     // Unless already defined assume 4MHz system frequency
     // This definition is required to calibrate __delay_us() and __delay_ms()
     #define _XTAL_FREQ 4000000
    #endif
    		
    void main(void){
    	
    	TRISB = 0b00000000;
    	TRISA = 0b00000000;
    		
    	PORTB = 0;
    	static char a;
    	
    	while(1){
    		
    		PORTB = 1;
    		
    		for(a = 0; a < 10; a++){
    		__delay_ms(100);
    		}
    		
    		PORTB = 0;
    		
    		for(a = 0; a < 10; a++){
    		__delay_ms(100);
    		}		
    		}
    }
    J'y comprend rien...
    Help!!!

    merci d'avance.
    Benj
    Et comme ça?
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  11. #8
    MofK

    Re : petit problème avec le compilateur Hi-tech

    heu ça change quoi de la mettre en statique ??
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  12. #9
    HULK28

    Re : petit problème avec le compilateur Hi-tech

    Une des caractéristiques des variables automatiques est que, dans le cas général, leur valeur est perdue entre deux appels consécutifs des fonctions dans lesquelles elles sont déclarées.
    Il serait intéressant de conserver cette valeur.
    Il faut pour cela que l'emplacement mémoire alloué à cette variable se trouve à une adresse absolue et ne soit plus réservé de façon dynamique (pile) suivant les aléas des appels de fonctions. Le mot clef static appliqué à une variable locale répond à ce besoin.
    Lorsque la fonction delay_ms() est appelée, la variable 'a' est perdue alors qu'en 'static' sa durée de vie sera celle du programme.
    En retournant dans le bloc, elle possédera encore la valeur qu'elle avait à la précédente sortie.
    Sa visibilité reste la même et limitée au bloc.

    @+
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  13. #10
    HULK28

    Re : petit problème avec le compilateur Hi-tech

    Citation Envoyé par MofK Voir le message
    ok merci pour ces infos.
    dernière ptite question: quelle est le mot pour avoir CP désactivé?? (dans __CONFIG(...))
    merci
    Benj
    Code:
    __CONFIG(XT & WDTEN & BORDIS & LVPDIS & UNPROTECT);
    Par exemple ici tu as une configuration Quartz->XT, Watchdog ON, BOR OFF, LVP OFF, Code programme non protégé (CP OFF).
    @+
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  14. #11
    MofK

    Re : petit problème avec le compilateur Hi-tech

    Ok merci pour ces details sur le static.
    Pour le CP désactivé ce que je cherche c'est le mot exact, parce que si je met CPDIS ou CPOFF ou CP_OFF, ça ne marche pas!! mais je cherche encore...
    merci
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  15. #12
    Ptitux

    Re : petit problème avec le compilateur Hi-tech

    Bonjour,

    je voudrais juste apporter une précision. En C il est interdit de déclarer une variable après des instructions (le "static" ne changera rien)
    Exemple :
    Code:
    void main(void)
    {
      int b = 0; <== déclaration autorisée
      TRISB = 0x00;
      int a = 0; <== déclaration interdite
    
       while(1)
       {
         int c = 0; <== déclaration autorisée
         a++;
         int d = 0; <== déclaration interdite
       }
    }


    A+

  16. Publicité
  17. #13
    HULK28

    Re : petit problème avec le compilateur Hi-tech

    Citation Envoyé par MofK Voir le message
    Ok merci pour ces details sur le static.
    Pour le CP désactivé ce que je cherche c'est le mot exact, parce que si je met CPDIS ou CPOFF ou CP_OFF, ça ne marche pas!! mais je cherche encore...
    merci
    Le mot exact c'est ce que je t'ai indiqué: 'UNPROTECT' ou 'PROTECT' si tu veux protéger le code.
    @+
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  18. #14
    HULK28

    Re : petit problème avec le compilateur Hi-tech

    La remarque de ptitux est juste.
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  19. #15
    MofK

    Re : petit problème avec le compilateur Hi-tech

    Ok merci pour toutes ces infos.
    @+ Benj
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

Discussions similaires

  1. Environnement HI-TECH C HI-TIDE-Compilateur PICC 18
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 12/09/2008, 15h40
  2. Petit problème avec une TF
    Par birusin dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 11/02/2008, 11h14
  3. probleme avec petit emetteur fm
    Par danet1 dans le forum Électronique
    Réponses: 7
    Dernier message: 22/08/2007, 02h07
  4. petit probleme avec orange
    Par corentin91 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 11
    Dernier message: 29/11/2006, 21h10
  5. Petit problème avec LaTex
    Par LicenceXP dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 15/12/2005, 00h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.