Stopper l'exécution d'un programme
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:
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:
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; |