placer un tableau dans un pic 16F628
Répondre à la discussion
Page 1 sur 4 12 3 DernièreDernière
Affichage des résultats 1 à 30 sur 105

placer un tableau dans un pic 16F628



  1. #1
    arzew

    Smile placer un tableau dans un pic 16F628


    ------

    bonjour,

    Travaillant depuis peu avec ce micro, je désire placer un groupe de phrase dans le style suivant :

    MOT1 ADDWF PCL, 1
    DT "** Bonjour **"

    MOT2 addwf PCL,1
    DT " Bienvenue "


    à une adresse bien précise de la mémoire programme.

    Quelqu'un pourrait-il m'aider ?

    Merci d'avance

    -----

  2. #2
    Seb.26

    Re : placer un tableau dans un pic 16F628

    Salut

    si tu veux simplement les regrouper dans un Bank dedié, tu peux definir une zone dans le fichier du linker, et utiliser un #pragma pour les placer dedans ...

  3. #3
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Salut,

    Il suffit d'utiliser la directive ORG pour définir l'endroit d'écriture en flash :
    Code:
           ORG 0x0100
    
    MOT1   ADDWF PCL, 1
           DT "** Bonjour **"
    David.

  4. #4
    pico03

    Re : placer un tableau dans un pic 16F628

    bonjour arzew et tout le monde

    voici ce que j'ai mis dans un de mes programme, si cela peut t'aider.
    Il faut ensuite boucler sur menu01 pour extraire les autres caractères ( ajouter 1 avant dans var3 bien entendu)

    movlw 4 ;w ; 5 si org 0x500, ect
    movwf PCLATH ; PC fort
    clrf var3 ; sert à explorer la table
    menu01 movf var3, w
    incf var3
    call zlitab ; lire table options
    movwf var1 ; carct récupéré dans la table

    org 0x400
    zlitab addwf PCL
    dt "MAJ. ",h'0A',h'01'
    dt "HEURE ",h'0A',h'02'
    dt "QUANTITE ",h'0A',h'04'
    dt "ACTIVE ",h'0A',h'08'
    end

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

    Re : placer un tableau dans un pic 16F628

    Lu
    pour lire Facilement faire:

    label1 dt"POM26"
    label2 dt"bonjour"

    pour eeadr et eeadrh

    movfw hight labe1
    movwf eeadrh

    movfw low label1
    movwf eeade

    si non il suffit de positionner tes variables sue une adresse du style :
    ORG 0X?00 comme cela eeadr=00 et eeadrh=?

    a bientôt
    Dernière modification par Pom26 ; 22/08/2007 à 13h41.

  7. #6
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    PS si les donneés ne sont pas de meme longueur il sufit de gfaire label2 -label1
    mais je pense que tu l'avais deviné
    a bienôt

  8. #7
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Salut,

    pour lire Facilement faire:
    Lire facilement, c'est quand même se compliquer la vie que d'utiliser la méthode que tu proposes...

    Utiliser implicitement la directive ORG est bien plus parlante...

    Pour la méthode proposée par Seb26 utilisant le Linker, c'est à réserver aux très gros programmes qui sont divisés en fonctions primaires.

    David.

  9. #8
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par DavidDB Voir le message
    Salut,



    Lire facilement, c'est quand même se compliquer la vie que d'utiliser la méthode que tu proposes...
    si je ne me trompe je propose deux methodes ou alors tu n'as pas lu jusqu'au bout:
    la premier est si tu ne veux pas laisser de trous dans ton programme
    la seconde si tu as de la place dans ton programme
    c'est assez clair comme CELA

  10. #9
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Et alors???

    C'est se compliquer la vie pour rien...

    David.

  11. #10
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par DavidDB Voir le message
    Et alors???

    C'est se compliquer la vie pour rien...

    David.
    trop simple explique

  12. #11
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Regarde la lisibilité de ton code et de celui du post#4 si tu ne vois toujours pas...


    David.

  13. #12
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par Pom26 Voir le message
    Lu
    si non il suffit de positionner tes variables sue une adresse du style :
    ORG 0X?00 comme cela eeadr=00 et eeadrh=?

    a bientôt
    dit moi quelle est la différence je vois pas mais éclaire moi
    merci

  14. #13
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    LU
    j'ai un petit probléme avec ta méthode, si je veut lire que la troisième donneés on fait comment?
    merci
    a bientöt

  15. #14
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Bien, tu "caches" la valeur implicite par "eeadr=00 et eeadrh=?" ce qui rend ton code moins lisible, mais cela fonctionne...

    Pour ton autre question, il suffit simplement de charger le registre de travail avec 1 pour la première donnée, deux pour la deuxième, trois pour la troisième,...
    C'est exactement ce qui est fait dans le post#4 de Pico03.

    David.

  16. #15
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par DavidDB Voir le message
    Pour ton autre question, il suffit simplement de charger le registre de travail avec 1 pour la première donnée, deux pour la deuxième, trois pour la troisième,...
    C'est exactement ce qui est fait dans le post#4 de Pico03.

    David.
    oui je ne vois pas comment l'adresse base sait que le début du troisieme mot et par exemple 44H
    non je vois pas si tu ne mets pas de label.
    Comment on fait ton programme pour ce retrouver à cette adresse,ou alors j'ai raté quelles pages on est d'accor je ne te parle pas des donnees qui se suive non je veut par exemple:bonne nuit mais pas lire bonjour
    dt"bonjour"
    dt"bonne nuit"
    je sais si je suis clair car je ne vois pas

  17. #16
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Cà c'est une simple gestion du tableau...

    C'est identiquement le même principe que pour savoir où est inscrit le deuxième texte dans ton exemple.
    Comment sais-tu que le premier texte est à l'adresse 0Xxxx ? C'est la gestion de ton tableau, une convention que tu t'es donné...

    De plus, généralement si c'est un afficheur 16 caractères, chaque DT sera composé de 16 caractères pour faciliter les saut dans le tableau.

    Donc, pour résumer avoir la deuxième ligne de DT correspond simplement à faire registre de travail + 16, il n'y a pas besoin de label vu que chaque DT correspond exactement à une ligne complète de l'afficheur.

    Mais, dans l'exemple de Pico3, je pense qu'il écrit les quatre lignes sur son afficheur les unes à la suite des autres, ce qui justifie sont principe de lecture du tableau.

    David.

  18. #17
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Non moi je te parle pas d'un pas régulier je te parle d'une donnée de longueur X car tu sais jai trouvé que ma methode pour faire dérouler des menus et sous menu sur LCD et avantages c'est que tu peux les plantées n'import ou pas besoin que cela commence par zero
    avec cette methode tu peux aller chercher m'importe quelle variables faire toutes le manip que tu veux prendre un bout de l'une avec le morceau de l'autre.Tu vois je pense que ma méthode finalement je l'aime bien aller
    a bientot

  19. #18
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Non moi je te parle pas d'un pas régulier je te parle d'une donnée de longueur X
    Oui, mais tu es obligé d'effacer un partie de l'écran, car avec une longueur X, il y a de forte chance que quelques caractères indésirable soit toujours là...

    Je ne dis pas que ta méthode est mauvaise, je trouve simplement qu'elle allourdi la lisibilité du code.

    David.

  20. #19
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    si tu permets c'est quoi la visibilite du code la je ne comprend pas tu peux m'expliquer
    merci

  21. #20
    DavidDB

    Re : placer un tableau dans un pic 16F628

    Bien pour moi, j'ai plus facile de lire et savoir que les DT sont à l'adresse 0Xxxx avec la directive ORG.

    Tandis que ta solution oblige à lire et chercher dans le programme où est l'adresse exact du label.

    Deplus, je me demande si avec ta méthode tu ne risques pas d'avoir des saut interpages imprévu (cause de bug) et le positionnement de PCLATH demande plus d'attention vu que l'adresse n'est pas écrite implicitement à coté du texte.

    David.

  22. #21
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Tu sais j'ai lu quelles programmes sans un seule ligne de commentaire ou il faut monter puis aller à droite en bas en haut donc tout dépend du programmeur de la structure de son code,dans ses commentaires,pour qui il s'adresse;mais la on rentre dans le coté philosophique de la programmation,façon de pensée du programmeur.

    Pour les données tu peux les mettrent en fin de programme ave un jolie mise en page des commentaires adéquates;en radio on dit: tel est l'antenne tel est la station, Ici je dirais tel est le programme tel est le programmeur et ceci est trés net en ASM

    Pour les pages je suis d'accord avec toi mais ce probléme tu le trouves aussi dans d'autres méthodes ici on parle bien de page et non de banque.

    Bien trés content d'avoir débatu avec toi mais je crois que l'on pirate un peu le post de notre ami.
    a bientôt

  23. #22
    arzew

    Smile Re : placer un tableau dans un pic 16F628

    salut à tout le monde,

    je ne pensais pas trouver autant de discussion sur mon sujet !

    Toujours est-il que je vous remerçie pour le temps que vous
    avez passé à donner vos explications .

    De mon côté j'avais déjà pris une méthode qui ressemble à celle de Pico03,
    mais je pensais qu'il y avait une solution plus simple :

    afficher_MOT1 movlw 6
    movwf PCLATH
    ...
    ...


    Org 0x600

    MOT1 addwf PCL,1
    DT"** Bonjour **"

    Pico03,que représente h'0A',h'01' dans dt "MAJ. ",h'0A',h'01' ?

    Tous mes MOT sont de 16 caractères, ce qui m'évite d'employer une routine
    qui gère le moment où il faut conclure la fin de l'écriture (fénéant va !) .
    Certes, il y a de nombreuses façons mais celle-ci est à ma portée !

    Merci de votre aide

    Cordialement

    Arzew

  24. #23
    pico03

    Re : placer un tableau dans un pic 16F628

    Bonjour arzew et tout le monde

    Le caractère A (10 en num) me sert à savoir que le libellé est entièrement lu et les chiffres suivants servent à s’aiguiller dans le programme. Ex avec 01 on sait qu’il faut faire un call vers la proc de mise à jour.
    En espérant avoir répondu correctement

  25. #24
    arzew

    Smile Re : placer un tableau dans un pic 16F628

    Citation Envoyé par pico03 Voir le message
    Bonjour arzew et tout le monde

    Le caractère A (10 en num) me sert à savoir que le libellé est entièrement lu et les chiffres suivants servent à s’aiguiller dans le programme. Ex avec 01 on sait qu’il faut faire un call vers la proc de mise à jour.
    En espérant avoir répondu correctement
    bonjour Pico03

    ah ! cela veut dire que dans DT "MAJ. ",h'0A',h'01' , si le programme continue à lire, il lira h'0A' (10) et h'01' (1) ?

  26. #25
    pico03

    Re : placer un tableau dans un pic 16F628

    Bonjour arzew et tout le monde
    Tout à fait, je lis d'abord MAJ. que j'envoie sur l'afficheur, ensuite je trouve un octet contenant 10 avec lequel je ne fais rien puis je lance une dernière lecture, et en rencontrant le 1, je fais un call vers une procédure de mise à jour. On pourrait aussi faire des chaines de 16 caractères (longueur d'une ligne d'afficheur) mais il y a affichage de blancs en fin de ligne et on a l'impression que le proc. est planté vu que j'ai choisi un affichage lent car je ne teste pas la fin d'écriture par un read ce qui économise une entrée du pic (la broche 5 de l'affich. étant cablée sur W.)
    Cordialement
    Michel

  27. #26
    arzew

    Re : placer un tableau dans un pic 16F628

    bonsoir Pico03 et tous les autres connectés,

    tu dis avoir choisi un affichage lent ... quel est ton degré de lenteur.
    L'affichage sur un LCD peut-il être lent ?

    Cela m'interresse car tous mes mots ont une longueur de 16 caractères quelque soit sa vrai longueur.
    Le curseur affiche des blancs lorsque le mot est fini, je fais un contrôle de fin d'affichage par comptage de 1 à 16.

    Dans mon cas si j'affiche un mot de 8 lettres, quel serait le temps d'affichage pour ce mot si l'affichage fini au bout de 16 caractères ?

    Cordialement

    Arzew

  28. #27
    pico03

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par arzew Voir le message
    bonsoir Pico03 et tous les autres connectés,

    tu dis avoir choisi un affichage lent ... quel est ton degré de lenteur.
    L'affichage sur un LCD peut-il être lent ?
    Bonjour à tous
    Cela n'a pas besoin d'être très précis, il suffit pour ralentir l'affichage d'incorporer une petite boucle d'attente entre l'envoi de chaque caractère de façon que l'écriture précédente soit bien terminée avant que la suivante n'arrive, sinon il pourrait y avoir de gros soucis pour le lcd.
    Cordialement

  29. #28
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par pico03 Voir le message
    Bonjour à tous
    Cela n'a pas besoin d'être très précis, il suffit pour ralentir l'affichage d'incorporer une petite boucle d'attente entre l'envoi de chaque caractère de façon que l'écriture précédente soit bien terminée avant que la suivante n'arrive, sinon il pourrait y avoir de gros soucis pour le lcd.
    Cordialement
    LU pico03
    pour le LCD il sufit de valider la broche RS en mode donnée la broche RW en ecriture moi je la laisse toujours en ecriture

    puis de mettre sa donnée sur le port
    activer le broche E pendant au moins 450 ns
    puis deactiver la broche E pendant au moins 450ns

    si tu veux etre sur avoir ecrit dans la memoire du LCD tu peux aller la lire
    je ne comprend pas pourquoi tu fais cela.

    c'est comme aussi la longueur des mots sur 16 caracteres les lcd sont sur 32 caracteres par ligne 16 de visibles et 16 de cachés que tu peux faire defiler avec ton curseur adresse visible de 00h a 0FH invisible 10H 27H pour la ligne1
    DE 40H a 4FH visible 50H a 67H invisible pour la ligne 2 etc pour les autres
    une question qu'est ce que la procedure de mise a jour ?? lorsque tu rencontre 01

    tu es en C ou en ASM ?
    a bientot

  30. #29
    pico03

    Re : placer un tableau dans un pic 16F628

    Citation Envoyé par Pom26 Voir le message
    LU pico03
    pour le LCD il sufit de valider la broche RS en mode donnée la broche RW en ecriture moi je la laisse toujours en ecriture

    puis de mettre sa donnée sur le port
    activer le broche E pendant au moins 450 ns
    puis deactiver la broche E pendant au moins 450ns

    si tu veux etre sur avoir ecrit dans la memoire du LCD tu peux aller la lire
    je ne comprend pas pourquoi tu fais cela.

    c'est comme aussi la longueur des mots sur 16 caracteres les lcd sont sur 32 caracteres par ligne 16 de visibles et 16 de cachés que tu peux faire defiler avec ton curseur adresse visible de 00h a 0FH invisible 10H 27H pour la ligne1
    DE 40H a 4FH visible 50H a 67H invisible pour la ligne 2 etc pour les autres
    une question qu'est ce que la procedure de mise a jour ?? lorsque tu rencontre 01

    tu es en C ou en ASM ?
    a bientot
    bonjour Pom26 et tout le monde

    Tout à fait d'accord, je laisse moi ausi la pin 5 du lcd en écriture (elle est câblée au 0v) ce qui économise une I/O du pic.
    Pour la longueur des mots, j'avais trouvé ce petit bricolage simple mais faudra que j'essaye ta technique.
    Les lignes affichées sont en fait un petit menu et il faut bien savoir quelle ligne de ce menu a été choisie, donc ayant lu 01, il va s'agir de mettre à jour les heures minutes secondes du composant i2c pcf8583. Si une autre ligne vait été choisie (ex quantité...) il faudrait s'aiguiller vers une mise à jour de la quantité en eeprom du 16F628 ect... Il s'agit en fait d'une carte à pic qui pilote un nourrisseur de chat.
    Cordialement
    Michel

  31. #30
    invite_P89
    Invité

    Re : placer un tableau dans un pic 16F628

    ok michel
    mais regarde les applications qui sont sur le net avec un LCD c'est assez simple son fonctionnement.Quand a ton menu je ne sais pas comme tu le gere.
    c'est plus rapide de lire en RAM que en EEPROM surtout sur certain pic
    pour ton pointeur 01,comme ton 0AH tu peux mettre la longueur de la chaine dans un pointeur J par exemple en ram et utiliser l'instruction decfsz J plus rapide

    a bientot

Page 1 sur 4 12 3 DernièreDernière

Discussions similaires

  1. PIC 16f84-16f628
    Par invite62237dc8 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/02/2007, 11h40
  2. Pic 16f628
    Par invite4164fd5c dans le forum Électronique
    Réponses: 9
    Dernier message: 16/12/2006, 16h15
  3. pic 16F628
    Par LTHOMAS dans le forum Électronique
    Réponses: 7
    Dernier message: 29/03/2006, 21h13
  4. pic 16F628
    Par invitea78e17c9 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/03/2004, 21h04
  5. pic 16f628
    Par invite7a98af17 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/02/2004, 15h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.