petit problème avec le compilateur Hi-tech
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. #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...

  3. #3
    inviteab8bd5d9

    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.

  4. #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...

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

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

  8. #7
    invite03481543

    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?

  9. #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...

  10. #9
    invite03481543

    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.

    @+

  11. #10
    invite03481543

    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).
    @+

  12. #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...

  13. #12
    inviteab8bd5d9

    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+

  14. #13
    invite03481543

    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.
    @+

  15. #14
    invite03481543

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

    La remarque de ptitux est juste.

  16. #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, 14h40
  2. Petit problème avec une TF
    Par invitefa801971 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 11/02/2008, 10h14
  3. probleme avec petit emetteur fm
    Par invitefbcd858f dans le forum Électronique
    Réponses: 7
    Dernier message: 22/08/2007, 01h07
  4. petit probleme avec orange
    Par invited408ced4 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 11
    Dernier message: 29/11/2006, 20h10
  5. Petit problème avec LaTex
    Par invite234d9cdb dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 14/12/2005, 23h02
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...