Bonsoir à tous,

Je souhaiterais stopper l'exécution d'un programme lorsque celui-ci arrive dans un certain case au niveau du switch.
La partie du programme à modifier serait la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
KeyBd = rdKB();    // lecture du clavier
                          if(KeyBd==0xfbff)
                          {
                          StopMotor();
                          Exit(0);
                          return(0);  
                          }
Je demande au programme de lire le clavier. (Fonction rdKb())
Ensuite, si la touche appyuée correspond au bouton d'arret d'urgence(keybd==0xfbff), je lui indique de stopper le moteur (en l'occurence une pompe de jardin).
Ca marche à peu pres au détail près: lquand on appuie sur le bouton stop d'urgence, a pompe s'arrête et dès que l'on retire le doigt du bouton, elle se met en reset et se remet en marche toute seule. J'aimerais que lorqu'on appuie sur le bouton stop la pompe s'arrete et quand on retire le doigt du bouton, la pompr reste eteinte. Si quelqu'un à une idée...merci de me la faire partager.
je vous aie mis un morceau plus important de code:
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
 
        case CONTACTS:
 
          switch(FSM_Contacts) 
          {
            case 0: // temps d'exécution : 12µs			//Lecture des contacts électriques toutes les 10ms
                    if (Flag10ms == 1) 
                    {                       
                      Flag10ms = 0;
 
                      // rotation test
                      if (ContactsSens == 1) ClkwsRotMotor();
                      else AntiClkwsRotMotor();
 
                      // start/stop test
 
 
                        if  (ContactsStop == 1) 
{ // Stop case
 
                          // restore context if mode isn't the Keyboard mode
                          SpeedIndex = SpeedIndexSave;
                          MOTORSTA &= ~MaskMode;
                          if ((MOTORSTA_Save & MaskSens)==CLOCKWISE)
                            ClkwsRotMotor();
                          else 
                            AntiClkwsRotMotor();
                          LcdUpdateFlag |= (LcdMaskMode + LcdMaskSpeed + LcdMaskSens);
                          AtdSpeedCnt = 0;
                          AtdData = 0xFF;
                          FSM_KeyBoard = 0;
                          StopMotor();
 
                          KeyBd = rdKB();    // lecture du clavier
                          if(KeyBd==0xfbff)
                          {
                          StopMotor();
                          Exit(0);
                          return(0);
                          }
                        }
                      else 											 // Start case
                    {
 
 
                        StartMotor();
                        FSM_KeyBoard = 0;				
          }
      }
                   FSM_Contacts ++;
 
                    break;