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

Créer un programme en multi-fichiers sous MPLAB?



  1. #1
    darkmall

    Question Créer un programme en multi-fichiers sous MPLAB?


    ------

    Bonsoir,

    Ma question est toute simple :

    Comment créer un programme dans MPLAB en faisant appel à plusieurs fichiers?

    Exemple : Programme principal(dans 1 fichier), et commande d'un LCD dans un autre... Ainsi les programmes peuvent être réutilisé dans d'autres projet.

    Merci d'avance pour vos réponses

    Darkmall

    EDIT : Programme pas porgramme...dsl!

    -----

  2. #2
    DavidDB

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Salut,

    La solution la plus simple est d'utiliser la directive "INCLUDE"...

    Sinon, l'utilisation du Linker est possible mais c'est plus de modifications dans les fichiers sources.

    David.

  3. #3
    darkmall

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Bonsoir,

    Voilà je n'arrive pas à créer ce multi-fichiers....j'aurais vraiment besoin d'aide...

    j'ai mon programme principal (horloge.asm) que j'ai crée en faisant un nouveau projet sous MPLAB 8.14. Puis j'ai décidé de mettre la partie initialisation du glcd dans un autre fichier. J'ai ajouté ce fichier dans mon projet mais voilà mplab ne veux rien savoir et je ne trouve pas mon erreur.

    voici le début de mon programme principal :


    ERRORLEVEL -302 ; suppression du message bank select
    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include
    #include <gestion_glcd.asm> ; Inclure le fichier de gestion du GLCD

    Voila le début de mon programme secondaire :

    ERRORLEVEL -302 ; suppression du message bank select
    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include

    init_glcd
    clrwdt ; effacer watch dog
    BCF IO_RESET ; Reset de l'affichage
    nop
    nop
    .
    .
    .
    .

    mes defines sont dans le fichier du programme principal, c'est juste?

    Et voici ce que j'ai lorsque je compile (attention c'est moche...) :

    Make: The target "L:\PIC\GLCD\Horloge\horloge.o " is out of date.
    Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F877A "horloge.asm" /l"horloge.lst" /e"horloge.err" /o"horloge.o" /d__DEBUG=1
    Message[310] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F877A.INC 766 : Superseding current maximum RAM and RAM map.
    Error[150] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 57 : Labels must be defined in a code or data section when making an object file
    Error[152] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 58 : Executable code and data must be defined in an appropriate section
    Error[152] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 59 : Executable code and data must be defined in an appropriate section
    Error[152] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 60 : Executable code and data must be defined in an appropriate section
    Error[151] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 67 : Operand contains unresolvable labels or is too complex
    Error[113] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 74 : Symbol not previously defined (nombre)
    Error[113] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 81 : Symbol not previously defined (T25MS)

    etc....

    Je comprends pas, j'ai pourtant bien défini mes variables dans le même fichiers que je les utilises(es bien juste?j'en doute....).
    Es que je dois mettre une adresse de début de mon deuxième fichier?

    Merci pour vos réponses

    A++

  4. #4
    DavidDB

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Salut,

    Ton INCLUDE doit se trouver dans le corps du programme à l'endroit mémoire que tu souhaites et non dans l'entête de ton programme

    Exemple :

    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include

    org 0x00
    CALL init_glcd
    clrwdt ; effacer watch dog
    BCF IO_RESET ; Reset de l'affichage
    #include <gestion_glcd.asm> ; Inclure le fichier de gestion du GLCD
    nop
    nop
    ...

    David.

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

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Bonsoir,

    Désolé mais je dois vraiment être bête....

    En entête de mon programme principal j'ai :

    ERRORLEVEL -302 ; suppression du message bank select
    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include
    #include <gestion_glcd.asm> ; Inclure le fichier de gestion du GLCD

    __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
    Puis j'ai cela un peu plus loin :

    org 0x000 ; Adresse de départ après reset
    goto init ; Initialiser
    Puis:

    init
    .
    .
    .
    .
    .
    call init_glcd

    start

    goto start
    Je n'ai rien en entête de mon second fichiers....et j'ai tj les mêmes erreurs!

    Je pige vraiment pas....mon code de la seconde partie il va ce mettre ou dans ma mémoire(à la suite du 1er??).

    Et puis mes variables que j'utilise dans le second fichiers je dois les placé dans le 1er ou 2ème fichier?


    Merci beaucoup A++

  7. #6
    DavidDB

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Salut,

    Bête non...
    C'est juste une question d'utilisation...

    Exemple :
    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include

    __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC

    org 0x000 ; Adresse de départ après reset
    goto init ; Initialiser

    org 0x08
    goto interrupt; aller tester les interruptions
    #include <gestion_glcd.asm> ; Inclure le fichier de gestion du GLCD à partir de l'adresse 0x09
    ...
    suite programme

    Concernant les variables, il vaut mieux les regrouper dans le fichier principal et ne pas les disperser dans plusieurs fichiers, ceci afin d'éviter d'assigner deux fois la même adresse pour des variables différentes.

    David.

  8. #7
    darkmall

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Ok d'accord, j'ai fais comme tu m'as dit mais il ne me trouve pas init et interrupt

    j'ai placé commme cela :

    ORG 0x04 ; Adresse d'interruption
    goto interrupt
    #include <gestion_glcd.asm>
    interrupt
    ; gestion des interruptions

    Mais pas possible de trouvé init er interrupt.....comprends vraiment pas(je viens de passé de bête à très bête)

    Je me sent vraiment C** là....

    A++

  9. #8
    gedonet

    Re : Créer un porgramme en multi-fichiers sous MPLAB?

    Bonjour
    Personnellement, je place les include des routines juste avant la directive END.
    Il faut comprendre que si tu places ton "#include <gestion_glcd.asm>" trop tôt, mplab ouvre et traite ton fichier gestion_glcd.asm avant d'avoir pris connaissance des definitions, des variables, des assignations, etc. Cela peut poser des problemes, c'est le cas pour ces deux lignes:
    Code:
    Error[113] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 74 : Symbol not previously defined (nombre)
    Error[113] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 81 : Symbol not previously defined (T25MS)
    Gilles

  10. #9
    darkmall

    Re : Créer un programme en multi-fichiers sous MPLAB?

    J'avais aussi essayé de la placé juste avant END, dans ce cas le fichier de mon programme principal est compilé correctement mais...

    Error[150] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 39 : Labels must be defined in a code or data section when making an object file
    Error[152] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 40 : Executable code and data must be defined in an appropriate section
    Error[113] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 41 : Symbol not previously defined (IO_RESET)
    Error[128] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 41 : Missing argument(s)
    Error[152] L:\PIC\GLCD\HORLOGE\GESTION_GL CD.ASM 41 : Executable code and data must be defined in an appropriate section
    rien ne passe dans le deuxième...je dois y indiqué quelque chose de spécial?

    merci A+++

  11. #10
    DavidDB

    Re : Créer un programme en multi-fichiers sous MPLAB?

    Dans le projet .mcp de MPLAB, il ne faut que ton fichier principal dans l'onglet "Source files"

    Rien d'autre et surtout pas de fichier linker, car vu les erreurs, il me semble que tu as un fichier linker dans ton projet .mcp

    David.

  12. #11
    darkmall

    Re : Créer un programme en multi-fichiers sous MPLAB?

    Ahhhh merciiiiii ce n'était que cela....j'avais mis les 2 fichiers .asm dans "source files". J'ai déplacé mon second fichier dans "Other files" et ca compile correctement!

    Maintenant pour ce qui est des fichiers linker je n'en ai pas...donc pas de soucis!

    Voili voilou merci encore beaucoup beaucoup!

    A bientot

    Dark

  13. #12
    DavidDB

    Re : Créer un programme en multi-fichiers sous MPLAB?

    Salut,

    Rien non plus dans "Other Files", car tu donnes le chemin d'accès avec l'INCLUDE dans ton fichier principal.

    David.

  14. #13
    darkmall

    Re : Créer un programme en multi-fichiers sous MPLAB?

    Ah ouais ca marche aussi...mais comment il c'est ou est mon fichier que j'inclus? Si je le change de place il le trouve aussi!??

    Merci A++

  15. #14
    sdec25

    Re : Créer un programme en multi-fichiers sous MPLAB?

    Salut.
    Citation Envoyé par darkmall Voir le message
    mais comment il c'est ou est mon fichier que j'inclus? Si je le change de place il le trouve aussi!??
    En général on doit indiquer au compilateur ou chercher des fichiers qu'on inclut (que ce soit des fichiers d'en-tête ou des fichiers objets).

    Je ne sais pas si ça peut t'aider pour ton problème vu que tu programmes en asm, mais en C quand on inclut un fichier le compilo ne fait que recopier le contenu à la place de l'include. On peut inclure des en-têtes et du code, mais dans le cas où on inclut du code le fichier ne doit pas se trouver dans "source files", sinon il est compilé 2 fois et à l'édition de lien il y a des définitions multiples.

Discussions similaires

  1. Réponses: 16
    Dernier message: 03/07/2008, 14h08
  2. [MPLAB]-Inclusion de Fichiers
    Par jorg1n dans le forum Électronique
    Réponses: 1
    Dernier message: 20/03/2008, 10h13
  3. Réponses: 7
    Dernier message: 12/06/2007, 16h27
  4. Plusieurs fichiers dans MPLAB
    Par twinotter dans le forum Électronique
    Réponses: 5
    Dernier message: 17/12/2004, 11h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.