Bonsoir,

Je reposte ce topic ( deja sur le topic conception)pour être dans le topic qui convient le mieux à ce problème pensant qu'il s'agissait de probleme de conception.

Il s'agit de la programmation d'un système à microcontrolleur.
Mon probleme est que la condition : if(SQUELCH==0x00) detectée dans la boucle principale ne se detecte pas si elle est utilisé dans des boucles imbriquées.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
 
 
/*variables globales*/
...
 
#define SQV PINF.0; 
 
...
 
unsigned char SQUELCH; 
 
...
 
main()
{
 
....
 
while(1)
{
..
 
if(test==0x01)
{
 SQUELCH=SQV;
 PORTG=PORTG & 0b11110111;
...
}
 
 
if(SQUELCH==0x00)   //ICI condition se detecte bien 
{
 PORTG=PORTG & 0b11110111;
 lcd_gotoxy(17,0);lcd_putsf("  S");
...
}
 
 
...
 
if(condition1)
 
{ 
   ..
 
   if(condition2) 
 
    {
      switch(KEY)
          { 
            case 1:
 
            case 5:
 
            case 3:
 
                      ....
                      while(1)
                      {
                       .....
                              switch(KEY)
                             { 
                              case 4:  //button up
 
                              case 8:  //button down
 
                              case 12:  //button validation for outgoing 
                              }
 
                              if(SQUELCH==0x00)  //ICI pas detecté alors que signal 
                                                         // existant 
                              {
                               PORTG=PORTG & 0b11110111;
                               lcd_gotoxy(17,0);lcd_putsf("  S");
                               }
 
                               if(KEY==12) break; 
 
                       } KEY=0;
 
             case 7:
 
          } KEY=0;
 
      } //condtion2
 
} //condtion1
 
 
} //while(1)
 
} //main

Est ce normal? Pourtant il s'agit de variables globales

J'ai essayé les conditions suivantes if(SQUELCH==0x00)
if(SQV==0x00)
if(PINF.0==0x00)

Mais toujours rien de detecté ? comment je peux verifier cette condtin dans les boucles imbriquées, n'importe où dans le programme ?

Merci