Bonjour,
ça fait pratiquement tte l'après-midi que j'essaie de débugger mon programme mais en vain! voici le code:
Dans un fichier.h:
Dans un fichier.c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 extern struct Liste { char ss_Liste[4][21]; } LISTE; extern const char Sous_MENU_LISTE[18][21] ;
en fait j'ai créé un sous menu qui contient 18 lignes de topics, et vu que mon LCD est un 4*20alors j'ai créé la structure qui prendra à chaque fois 4 éléments pour les envoyé par l'intermédiaire de la fonction d'affichage sur l'écran. voici le code de la fonction qui permet d'attribuer à cette structure le sous menu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void Affichage_structure_chaine_CGRAM_DDRAM ( Liste structure , unsigned char adr_ecran) { mLCDPutCmd(adr_ecran); // c'est une macro permettant d'afficher sur un LCD à la position voulu sur l'écran , elle est déclarée ailleurs dans le projet (en global).. pointeur_ss_menu = &structure; // il pointe sur la structure de chaine de char à afficher, il est déclaré ailleurs dans le projet (en global).. }
si vs n'arrivez pas à interpreter des ligne c'est normal car les détails figurent ailleurs concernant les macros que j'utilise..mais l'essenciel c'est que le compilateur m'envoie cette erreur: "error: syntax error before 'structure'", erreur correspondant au paramètre d'entrée de la fonction d'affichage.
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 /***************************************************************************** * Fonction: Attrib_Liste_Sous_MENU() * entrees: int compteur de positionnement, unsigned int direction (haut ou bas) * sorties: pointeur sur les 4 lignes de char à afficher *****************************************************************************/ struct * Attrib_Liste_Sous_MENU(int cnt_pos_ss_menu, unsigned int direction){ unsigned char index; unsigned char ligne_ecran; unsigned char colonne_ecran; int increment_pos_ss_menu; unsigned char nb_lignes_clignotement; int Bouton; if (BtnIsPressed(Bp_DEFILER_HAUT)) { Bouton = Bp_DEFILER_HAUT; } else if (BtnIsPressed(Bp_DEFILER_BAS)) { Bouton = Bp_DEFILER_BAS; } direction = _button_press.bBouton ; switch (index){ case 1: case 4: case 8: case 10: case 14: case 16: increment_pos_ss_menu = 2; nb_lignes_clignotement = 2; break; default: increment_pos_ss_menu = 1; nb_lignes_clignotement = 1; break; } switch(direction) { case Bp_DEFILER_HAUT: if (cnt_pos_ss_menu>0){ cnt_pos_ss_menu - increment_pos_ss_menu; }else { cnt_pos_ss_menu = 17; } case Bp_DEFILER_BAS: if (cnt_pos_ss_menu<17){ cnt_pos_ss_menu + increment_pos_ss_menu; }else { cnt_pos_ss_menu = 0; } } for (ligne_ecran= 0; ligne_ecran <=3 ; ligne_ecran++) { for (colonne_ecran= 0; colonne_ecran <=21 ; colonne_ecran++) { LISTE.ss_Liste[ligne_ecran][colonne_ecran] = Sous_MENU_LISTE[cnt_pos_ss_menu+ligne_ecran ][colonne_ecran]; } } pointeur_ss_menu = &LISTE; return pointeur_ss_menu; }
ps: - je travaille sur un PIC24FJ128GA010 et j'utilise la version8.10 de MPLAB
- j'ai déjà essayé de mettre "struct" à la place de "Liste" dans le paramètre d'entrée de la fonction d'affichage, mais ça ne marche pas non plus.
merci de m'aider pcq je ne vois plus rien!!
Partager