io16F877.h
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

io16F877.h



  1. #1
    invitea200d909

    io16F877.h


    ------

    Bonsoir,

    Utilisant le logiciel ISIS 7 Professional, quand je veux compiler un exemple fourni sous ISIS (LCD 4 Bits) il me dit que ceci est impossible car il ne trouve pas le fichier: "io16F877.h".
    Pourriez-vous m'aider à comprendre pourquoi cela ne fonctionne pas?

    Cordialement,

    Thomas

    -----

  2. #2
    sdec25

    Re : io16F877.h

    Bonjour,
    Le message a l'air explicite : il manque un fichier .h
    Si tu ne l'as pas il faut le récupérer (avec le compilateur, avec une bibliothèque ou des sources, ...).

  3. #3
    invitea200d909

    Re : io16F877.h

    Bonjour sdec25,

    Effectivement, je n'ai pas été très clair mais je vais bientôt arriver à 30H passé sur ce problème toujours pas résolu.
    Pour être plus clair, j'utilise le logiciel PCW qui permet de compiler mes fichiers c., tout rassembler et construire le projet.
    Afin de m'entrainer et de bien comprendre comment compiler et surtout modifier des fichiers en c., j'ai décidé d'utiliser un exemple fourni par ISIS 7 Professional. J'ai donc pris l'afficheur 4 BIT.
    Quand je passe tous les fichiers sous le logiciel PCW, je rajoute dans les sources les fichiers .c, les fichiers .h et également le fichier io.16F877.h.
    Une fois que je commence à compiler il m'affiche plusieurs erreurs notamment celle comme quoi le fichier io.16F877.h ne peut pas être ouvert alors qu'il se trouve dans les sources.
    De plus, il utilise un fichier lcd4bit.h et il me dit qu'il manque un #DEVICE.

    As tu déjà eu des problèmes de ce genre.
    Merci de ta réponse.

    Cordialement

  4. #4
    sdec25

    Re : io16F877.h

    ok je comprends mieux.
    Questions :
    Où se trouve le fichier .h exactement ? répertoire include ? même répertoires que les fichiers .c ?
    Où se trouve la commande #include correspondante ?
    Est-ce #include "fichier.h" ou #include <fichier.h> ?
    Où se trouve le fichier .c dans lequel il y a cette commande ?

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

    Re : io16F877.h

    Merci de cette réponse si rapide.
    Alors:
    Le fichier io.16F877.h se trouve dans le même répertoire que les fichiers .c.
    Dans mon fichier c., au tout début du programme j'ai un #include "io.16F877.h".
    Et dans un autre fichier apellé lcd4bit.h, il me dit: A #DEVICE is required before this line. Donc qu'un #DEVICE est manquant mais je ne sais pas où aller le chercher.
    J'espère avoir été assez clair et avoir répondu a tes questions. J'ai l'impression de tourner en rond sur ce problème qui ne veut pas compiler...
    Merci d'avance pour ta réponse.

  7. #6
    sdec25

    Re : io16F877.h

    C'est bizarre parce que l'instruction #include "fichier.h" va chercher les fichiers dans le répertoire courant (contraitement à #include <fichier.h> qui va les chercher dans les répertoires d'include).
    Tu n'as aucun autre #include dans tes fichiers ? Si tu n'as pas d'erreur avec les autres tu peux t'en inspirer.

    Pour le #DEVICE, il n'est nulle part dans tes fichiers ? S'il n'y est pas, il faudra lire la doc de ton compilateur pour savoir quoi mettre.

  8. #7
    invitea200d909

    Re : io16F877.h

    Si j'ai aussi un: #include "lcd4bit.h" et ce nom de fichier et également dans mes sources... Concernant le #DEVICE, non il n'est nul part dans le fichier...
    Utilises-tu ce genre de logiciel toi?

  9. #8
    sdec25

    Re : io16F877.h

    J'utilise C18 sous MPLAB pour mes projets.
    #device est sûrement nécessaire pour indiquer quel PIC choisir : voir dans la doc de ton compilateur il y a sûrement des exemples, ou sinon dans des exemples de code fournis avec ISIS.
    Pour le .h, essaie de le renommer, par exemple en toto.h, et l'include en #include "toto.h"
    Si ça ne fonctionne toujours pas, poste le contenu de tes fichiers.

  10. #9
    invitea200d909

    Re : io16F877.h

    Re,
    J'ai bien essayé de modifier le nom de mon .h et du #include mais à partir de là, il me met 10 000 erreurs (bon j'exagère un peu :P). Je vois bien qu'il essaye de le réutiliser dans d'autres endroits que je n'arrive pas vraiment à déterminer...
    Mon prof m'a conseillé voir obligé d'utiliser ISIS et non MPLAB.
    Par ailleurs, j'ai essayé de trouver dans la doc le #DEVICE mais aucune réponse...
    Puis je t'envoyer mes fichiers en zip ou ceci te dérange?

  11. #10
    sdec25

    Re : io16F877.h

    re,
    Le mieux serait de poster tes erreurs de compilation ici.
    Pour les sources, si c'est pas trop gros, dans le message entre balises CODE. Sinon, en PJ.

  12. #11
    invitea200d909

    Re : io16F877.h

    Ci joint mes erreurs de mon compilateur. Peut être que ca t'aidera à mieux voir mon problème...
    Images attachées Images attachées  

  13. #12
    sdec25

    Re : io16F877.h

    Il faudrait le contenu de tes fichiers lcd4bit.h et lcd4bit.c, et une capture d'écran de ton répertoire où il y a les fichiers.

  14. #13
    invitea200d909

    Re : io16F877.h

    CONTENU DU FICHIER lcd4bit.c:
    /****************************** ****************************** ********
    ****************************** ****************************** ********
    ***** *****
    ***** L A B C E N T E R E L E C T R O N I C S *****
    ***** *****
    ***** LABCENTER INTEGRATED SIMULATION ARCHITECTURE *****
    ***** *****
    ***** PIC16877 with LCD in 4-bit mode *****
    ***** *****
    ****************************** ****************************** ********
    ****************************** ****************************** ********/

    #include "io16F877.h"
    #include "lcd4bit.h"

    CHAR text[] = {'T','H','O','M','A','S',' ','\n'};

    VOID main(VOID)
    // Program Control Function.
    { CHAR *textptr = text;

    lcd_init(); // Initialise the LCD Display
    for (; // Loop Forever.
    { textptr = text;
    while (*textptr != '\n') // Write the String.
    { wrdata(*textptr++);
    pause(2000);
    }
    pause(5000);
    eat(); // Show and Animate the pacman.
    pause(5000);
    }
    }

    VOID eat ()
    // Show the pacman and 'eat' the text.
    { INT count = MAX_DISPLAY_CHAR-1, eatflag = 0 , tmp;
    while (count >= 0)
    { TRISC = PORTC = 0xFF;
    wrcmd(LCD_SETDDADDR + count); // Work from right to left.
    eatflag ? wrdata(0x00): wrdata(0x01); // Toggle the custom graphics between mouth open and mouth shut.
    eatflag ^= 1;

    for (tmp = count; tmp <=MAX_DISPLAY_CHAR; ++tmp) // Anything to the right of pacman is wiped.
    wrdata(' ');

    count--; // Decrement the count (moving us 1 to the left).
    pause(4000);
    }
    clearscreen(); // Clear the final pacman graphic when we are done.
    }

    VOID pause(INT num)
    // Utility routine to pause for
    // a period of time.
    { while(num--)
    {/*do nothing */
    }
    }


    CONTENU DU FICHIER lcd4bit.h:
    /****************************** ****************************** ********/
    /****************************** ****************************** ********/
    /***** *****/
    /***** L A B C E N T E R E L E C T R O N I C S *****/
    /***** *****/
    /***** LABCENTER INTEGRATED SIMULATION ARCHITECTURE *****/
    /***** *****/
    /***** Header File for 4-Bit LCD Sample *****/
    /***** *****/
    /****************************** ****************************** ********/
    /****************************** ****************************** ********/

    typedef void VOID;
    typedef int INT;
    typedef signed char INT8;
    typedef signed int INT16;
    typedef signed long INT32;
    typedef unsigned short WORD;
    typedef char CHAR;
    typedef unsigned char BYTE;
    typedef float FLOAT;
    typedef double DOUBLE;
    typedef long LONG;
    typedef INT8 BOOL;

    //Display Config.
    #define MAX_DISPLAY_CHAR 15

    //LCD Registers addresses (PORT B)
    #define LCD_CMD_WR 0x00
    #define LCD_DATA_WR 0x01
    #define LCD_BUSY_RD 0x02
    #define LCD_DATA_RD 0x03

    //LCD Commands
    #define LCD_CLS 0x01
    #define LCD_HOME 0x02
    #define LCD_SETMODE 0x04
    #define LCD_SETVISIBLE 0x08
    #define LCD_SHIFT 0x10
    #define LCD_SETFUNCTION 0x20
    #define LCD_SETCGADDR 0x40
    #define LCD_SETDDADDR 0x80

    #define E_PIN_MASK 0x04
    #define NOP asm("NOP")

    #define FALSE 0
    #define TRUE 1

    //Error handling status.
    enum ERROR { OK = 0, SLEEP = 1, ERROR = 2};

    /****************************** ****************************** ************
    ***** FUNCTION PROTOTYPES *****
    ******************************/
    VOID lcd_init();
    VOID lcd_wait();
    VOID clearscreen();
    VOID wrcmd (CHAR data);
    VOID wrdata(CHAR data);
    VOID wrcgchr(BYTE *arrayptr, INT offset);
    VOID pause(INT num);
    VOID eat();



    Merci beaucoup pour ton aide!
    Images attachées Images attachées

  15. #14
    sdec25

    Re : io16F877.h

    Alors, déjà il n'y a pas de fichier "io16f877.h" dans ton répertoire, juste un fichier "16f877.h". En supposant que ces 2 fichiers sont les mêmes, il faut soit le renommer, soit mettre #include "16f877.h"

    Ensuite on dirait que la source de l'erreur est le typedef void. Si tu commentes cette ligne, est-ce que tu as une erreur à la ligne suivante ?
    Tu peux essayer un #device 16f877 mais il n'y a que dans la doc de ton compilateur que tu trouveras de l'aide.
    Quel est le nom exact de ton compilateur ?

  16. #15
    invitea200d909

    Re : io16F877.h

    Alors, si je change le nom de mon io.16F877.h, à partir de ce moment, il me met énormément d'erreurs tel que:
    - expecting an identifier
    - expecting a declaration

    Et si je met ma ligne typedef void VOID en commentaire, il me met sur la ligne suivante qu'il manque toujours un #DEVICE avant cette ligne... (donc toujours le même problème).

    Mon compilateur se trouve dans un dossier nommé PICC, le compilateur s'appelle PCW (C Compiler IDE). Si ca t'intéresse, je peux te l'envoyer en privée (il peut s'envoyer un zip en 2 parties).

  17. #16
    sdec25

    Re : io16F877.h

    Il y a la doc de ton compilateur ici
    #device PIC16F877 devrait fonctionner

    Alors, si je change le nom de mon io.16F877.h, à partir de ce moment, il me met énormément d'erreurs tel que:
    - expecting an identifier
    - expecting a declaration
    Si le fichier n'est pas bon -> retour à la case départ, il faut trouver le bon fichier.
    Si tu penses que c'est le bon fichier, il faut corriger ces erreurs.
    Si tu supprimes la ligne avec #include tu as quelles erreurs ?

  18. #17
    invitea200d909

    Re : io16F877.h

    Bonjour sdec25,
    Suite à de nombreuses recherches, j'ai trouvé la(les) problèmes. Tout d'abord, j'avais un problème avec mon compilateur. De plus, le fichier io.16F877.h n'était pas le bon.
    J'ai changé de compilateur, j'utilise MPLAB et j'ai rajouté CC5X avec une banque de données de tous les fichiers io.16F...
    Merci pour ton aide! Maintenant je vais me pencher sur les TIMER car je vais en avoir grandement besoin :P.

Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...