IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème d'accès à un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut Problème d'accès à un tableau
    plop,

    bon avant de vous expliquer mon problemme, je vais vous expliquer ce que je veux faire.

    je dois afficher l'heure sur un ecan LCD graphique de 128x64 pixel.

    l'ecran a donc 64 pixel de haut, divisé en 8 page. pour ecrire dessus, on choisit la page, la colonne et on envoie des octet, dans l'octet un 1 = pixel noir un 0 = pixel eteint.

    j'ai donc creer des caractere de 20x32pixel

    il sont donc diviser un 4 page, je les ait stocker dans un tableau de 2000 octet (ecrit a la min =D)

    prenon par exemple le 2, on se positione en page 2(pour qu'il soit centré)
    puis a la collone voulu et on balance la salve de la premiere ligne de 20 octet.
    on se positione en page 3, puis on revient a la collonne voulu et on balance la salve de la deuxiemme ligne et ainsi de suite jusqu'a faire les 4 ligne.

    voila le tableau qui contient les caractere (pas en entier du a la limite de caractere):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    const int8 font20x32[] = {
    0x00,0x80,0xE0,0xF0,0xF8,0xF8,0xFC,0xFC,0x7E,0x3E,0x3E,0x7E,0xFC,0xFC,0xF8,0xF8,0xF0,0xE0,0x80,0x00, //0-1
    0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, //0-2
    0x00,0x0F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFC,0xF0,0xE0,0xE0,0xF0,0xFC,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x00, //0-3
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, //0-4
     
    0x00,0x00,0x80,0xC0,0xE0,0xE0,0xE0,0xF0,0xF8,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00, //1-1
    0x00,0x00,0x0F,0x0F,0x07,0x07,0x02,0x02,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, //1-2
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, //1-3
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00, //1-4
     
    0x00,0xC0,0xE0,0xF0,0xF8,0xF8,0xFC,0xFC,0x7E,0x3E,0x3E,0x3E,0xFE,0xFC,0xFC,0xF8,0xF8,0xF0,0xE0,0x00, //2-1
    0x00,0x01,0x03,0x07,0x07,0x07,0x87,0x83,0xC0,0xE0,0xF0,0xF8,0xFE,0xFF,0xFF,0x7F,0x7F,0x3F,0x1F,0x00, //2-2
    0x00,0xC0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF3,0xF3,0xF1,0xF0,0xF0,0xF0,0xF0,0xF0,0x00, //2-3
    0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00, //2-3
     
    0x00,0xC0,0xE0,0xF0,0xF8,0xF8,0xFC,0xFC,0x3E,0x3E,0x3E,0x7E,0xFC,0xFC,0xF8,0xF8,0xF0,0xE0,0x80,0x00, //3-1
    0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x30,0x78,0x78,0x78,0x7E,0xFF,0xFF,0xFF,0xFF,0xEF,0xC7,0x01,0x00, //3-2
    0x00,0x18,0x38,0x7C,0xFC,0xFC,0xFC,0xF8,0xF0,0xE0,0xE0,0xE0,0xF0,0xFF,0xFF,0xFF,0xFF,0xEF,0x0F,0x00, //3-3
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00, //3-4
     
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFE,0xFE,0x00,0x00,0x00, //4-1
    0x00,0x80,0xE0,0xF0,0xF8,0xFC,0x7E,0x3F,0x1F,0x0F,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, //4-2
    0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x00, //4-3
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00, //4-4
     
    0x00,0x00,0xC0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x00, //5-1
    0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1C,0x1E,0x1E,0x1E,0x7E,0xFE,0xFE,0xFC,0xFC,0xF8,0xC0,0x00, //5-2
    0x00,0x18,0x7C,0x7C,0xFC,0xFC,0xFC,0xF8,0xF0,0xE0,0xE0,0xE0,0xF8,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x00, //5-3
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, //5-4
    };
    et le code qui balance les salve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    void send_column_cara(int8 donnee)
       {
       output_high(RS);
       output_low(RW);
       put_data(donnee);
       enable();
       }
     
    void BigCara(long number, int col) 
       {                                
       long adresse;
       long CaraEnd;                 
       long i =0; 
       adresse = number*80;
     
       page(2);
       column(col);
       CaraEnd = adresse+20;
       i = adresse;
       while(i<caraend)
          {
          send_column_cara(font20x32[i]);
          i=i+1;
          }   
     
       page(3);
       column(col);
       adresse = adresse+20;
       CaraEnd = adresse+20; 
       i = adresse;
       while(i<caraend)
          {
          send_column_cara(font20x32[i]);
          i=i+1;
          } 
     
       page(4);
       column(col);
       adresse = adresse+20;
       CaraEnd = adresse+20;
       i = adresse;
       while(i<caraend)
          {
          send_column_cara(font20x32[i]);
          i=i+1;
          } 
     
       page(5);
       column(col);
       adresse = adresse+20;
       CaraEnd = adresse+20;
       i = adresse;
       while(i<caraend)
          {
          send_column_cara(font20x32[i]);
          i=i+1;
          } 
     
       }
    void put_data(int8 donnee) place les octet sur le port de l'ecran
    void enable(void) envoie une impulsion a l'ecran qui lui fait lire son port

    mon problemme est que Toute les donnée qui on une place superieure a 255 dans le tableau sont eronné (quand je lui demande d'afficher un 5 il affiche un bout du 4 et un bout du 2 par exemple)

    je ne vois pas pourquoi, tous mes compteur dont des long donc en theorie je ne devrais pas avoir de problemme a passer au dessus de 255

    voila un exemple de ce que j'ai quand je veux envoyer 0 1 2 3 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void main(void)
        {
         //init etc
         bigcara(0,0);
        bigcara(1,21);
        bigcara(2,42);
        bigcara(3,63);
        bigcara(4,84);
        bigcara(5,105);
        }


    voyez vous un problemme dans mon code?

    je pourrais bien entendue contourner le problemme en faisant plusieur tableau et en utilisant un break, mais ça ne serait pas tres élégant.

    merci

    ps : ce compilateur (CCS V4.057) n'est pas sensible a la case donc ne vous etonner pas si vous voyer la meme variable avec ou sans maj, je n'ai pas encore netoyer le code

    psps : on critique souvent aussi le fait que je j'utilise des while quand je pourrais utiliser des for, je n'aime pas les for, c'est tout

  2. #2
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    solution trouvé : le compilateur ne permet pas la creation de tableau de plus de 255 case, et etant donner que je le laissais calculer la taille, il fermait le tableau apes la 255e valeur

    je vais donc devoir faire 4 tableau et utiliser les break

Discussions similaires

  1. Problème d'accès à une variable dans un tableau
    Par Bundy*Al dans le forum Langage
    Réponses: 1
    Dernier message: 11/09/2013, 11h44
  2. JSP- Servlet Problème d'accès à une ligne d'un tableau
    Par Eolyn dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 15/02/2012, 15h59
  3. Problème d'accès à un tableau de pointeur
    Par gronaze dans le forum C++
    Réponses: 2
    Dernier message: 24/11/2011, 10h02
  4. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02
  5. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo