A l'aide pour mon programme du 16F628
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

A l'aide pour mon programme du 16F628



  1. #1
    invitee5e63da7

    Dieu du ciel!!
    Je veux juste écrire un byte en mémoire et le lire par la suite
    mais avec ce programme j'ai plein des messages d'erreur
    comme:
    - "Directive not allowed when generating an object file (ORG)"
    Pour la ligne "org EEPROM ; adresse debut zone eeprom"

    - "Executable code and data must be defined in an appropriate section"
    Pour la ligne "bsf STATUS, RP0 ; passer en banque1"

    Sachant que je respecte bien les colonnes!!

    - "Register in operand not in bank 0. Ensure that bank bits are correct."
    Pour la ligne "bsf EECON1, RD ; lancer la lecture EEPROM"
    ...

    Voilà tant de messages qui me chiffonnent! (snnniiiff)
    Je ne sais plus où je dois creuser dans la bible pour atteindre mon but

    Voici mon programme:

    LIST p=16F628 ; Définition de processeur
    #include <p16F628.inc> ; Définitions des constantes

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _MCLRE_ON & _LVP_OFF



    EEPROM EQU 0x2100

    ; DECLARATIONS DE VARIABLES *
    ;***************************** *************************

    CBLOCK 0x020 ; Début de la zone variables

    valeur : 1 ; la valeur
    valeur_temp : 1

    ENDC ; Fin de la zone

    ; DECLARATIONS DE LA ZONE EPROM *
    ;***************************** **************************
    org EEPROM ; adresse debut zone eeprom
    ; de 0x93 ; valeur de recharge du compteur
    ; JE LUI DONNE UNE ZONE LIBRE???? :?

    ; LECTURE MEMOIRE
    ;***************************** *****************************
    ;* on est en bank1 dans le main
    READEE ; adresse a lire dans registre EEADR
    bsf STATUS, RP0 ; passer en banque1
    bsf EECON1, RD ; lancer la lecture EEPROM
    bcf STATUS, RP0 ; repasser en banque0
    return

    ;***************************** *****************************
    ; ECRITURE MEMOIRE
    ;***************************** *****************************
    ;* On est en BANK1 dans le MAIN
    WRITEE
    bcf INTCON, GIE ; interdire interruptions
    btfsc INTCON, GIE ; tester si GIE bien a 0
    goto WRITEE ; non, recommencer
    bsf STATUS, RP0 ; passer en banque1
    bsf EECON1, WREN ; autoriser acces écriture
    movlw 0x55 ; charger 0x55
    movwf EECON2 ; envoyer commande
    movlw 0xAA ; charger 0xAA
    movwf EECON2 ; envoyer commande
    bsf EECON1, WR ; lancer cycle d'écriture
    bsf INTCON, GIE ; reautoriser interruptions
    bcf STATUS, RP0 ; repasser en banque0
    return


    ; DEMARRAGE SUR RESET *
    ;***************************** **************************

    ORG 0x000 ; Adresse de départ après reset
    goto start ; Adresse 0: start

    start
    ; initialisations
    movlw 0xFF
    movwf valeur
    movwf valeur_temp
    ; fin init
    bcf status, RP0
    bcf status, RP1


    bsf STATUS, RP0 ; Passage au banc mémoire 1
    clrf EEADR
    bcf STATUS, RP0 ; Passage au banc mémoire 0
    call READEE
    bsf STATUS, RP0 ; Passage au banc mémoire 1
    movfw EEDATA
    bcf STATUS, RP0 ; Passage au banc mémoire 0
    movwf valeur
    btfss STATUS, Z
    goto fin
    goto etape1

    ; nul donc je peux ecrire

    etape1
    movfw valeur_temp
    bsf STATUS, RP0 ; Passage au banc mémoire 1
    movwf EEDATA
    clrf EEADR
    bcf STATUS, RP0 ; Passage au banc mémoir 0
    call WRITEE

    fin
    END

    Merci d'avance d'avoir lu ce programme
    vos remarques ainsi que votre aide sont les bienvenus

    Allez à bientôt
    bison

    bonjour,
    merci de ne pas écrire les titres en masjuscules et lire les règles du forum en cliquant ici.
    [RV]

    -----

  2. #2
    Bigonoff

    Salut
    -------

    - "Directive not allowed when generating an object file (ORG)"
    Pour la ligne "org EEPROM ; adresse debut zone eeprom"
    Tu tentes d'utiliser ORG pour du code relogeable, ce qui est une contradiction.

    "Executable code and data must be defined in an appropriate section"
    Pour la ligne "bsf STATUS, RP0 ; passer en banque1"
    Logique, tu exécutes du code alors que tu te trouves toujours dans la zone eeprom. Ce n'est pas une macro que tu as écris, mais directement du code.

    Register in operand not in bank 0. Ensure that bank bits are correct."
    Pour la ligne "bsf EECON1, RD ; lancer la lecture EEPROM"
    Normal, le registre EECON1 ne se trouve effectivement pas en banque0. C'est un warning classique. Pour l'éviter, ajoute en début de programme " errorlevel -302"

    Je ne sais plus où je dois creuser dans la bible pour atteindre mon but
    Un cours gratuit qui prend tout depuis le début, ça t'intéresse?

    www.abcelectronique.com/bigonoff

    A+
    Bigonoff
    Vive l'Internet libre

  3. #3
    invitee5e63da7

    merci beaucoup pour les conseils, ça me remotive .
    je vais au plus vite essayer de me rattrapper.
    je croise les doigts et je vous tiens au courant.

    a+

    bison

  4. #4
    invitee5e63da7

    salut,
    encore une fois merci infiniment pour vos conseils. Je puis vous dire que je fais partie de vos plus grands admirateurs. Je suis élève ingénieur en génie électrique.
    J'ai réussi à compiler mon programme et la commande magique
    " errorlevel -302"
    a été d'un grand utile.
    Normal, le registre EECON1 ne se trouve effectivement pas en banque0. C'est un warning classique. Pour l'éviter, ajoute en début de programme " errorlevel -302"
    Mais dites moi, physiquement que fait cette commande pour la compilation
    j'aimerai bien le comprendre.

    à bientôt

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

    Bonjour bison
    Lors d' une compilation les numeros suivants sont
    - 1XX (des erreurs avec a la clé echec à la compilation)
    - 2XX des avertissements)
    - 3XX des messages)
    Le fait de rajouter "errorlevel -302" supprime dans le compte rendu de la compilation les messages de type 302 (Register in operand not in bank 0. Ensure that bank bits are correct).
    Salut
    A+

  7. #6
    Bigonoff

    Salut
    -------

    Comme le dit 16f84-20, il s'agit juste de messages.

    En gros, l'assembleur te dit : "faites attention, le registre xxxx que vous utilisez ne se trouve pas dans la banque 0, vérifiez bien que vous avez correctement sélectionné la banque dans votre programme".

    C'est tout.

    Comme ces messages semblaient te tracasser, je t'ai donné la directive qui permet de les empêcher d'apparaître. Ca ne change strictement rien niveau assemblage.

    A+
    Bigonoff
    Vive l'Internet libre

Discussions similaires

  1. De l'aide pour mon petit projet, SVP!
    Par invitebd68a78f dans le forum Électronique
    Réponses: 21
    Dernier message: 29/11/2007, 11h56
  2. Cherche de l'aide pour mon DM svp - STI-GE
    Par link93300 dans le forum Physique
    Réponses: 1
    Dernier message: 29/10/2007, 17h05
  3. problème de chargement de programme 16f628
    Par invitec0da5e32 dans le forum Électronique
    Réponses: 1
    Dernier message: 19/09/2007, 00h38
  4. YOUHOU a l'aide pour mon oral de physiologie animale!!!!
    Par invite61d01e2d dans le forum Biologie
    Réponses: 4
    Dernier message: 15/03/2007, 18h38
  5. Aidez-moiiiiiiiiii pour mon programme du 16f84
    Par invite67d96d45 dans le forum Électronique
    Réponses: 6
    Dernier message: 10/06/2003, 08h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.