MikroC, Micro C (AVR), Micro-C.... Pas clair du tout. Pouvez-vous être plus clair sur l'environnement et le language utilisé?
Votre séquence d'interrupteurs combinés va d'abord causer le clignotement de la LED1 ou de la LED2, suivi de la LED3 ou de la LED4. Pas le choix de la façon que les LED1 et LED2 sont activées.
Pour faire un bon travail de validation des interrupteurs, vous ne devriez pas figer le micro-contrôleur avec un delay_ms(500), sinon comment allez-vous valider l'activation en séquence des deux boutons? En présumant que vous ne voulez pas utiliser des fonctions d'interruption, vous devriez plutôt sortir le comptage du délai de cette zone, faire plutôt 500 fois un délai de 1ms (ou 50 fois 10ms), et valider en boucle l'état des interrupteurs à chaque passage de 1ms. Si une condition nécessitant un délai de 500ms est rencontrée, vous allumez une LED, et réinitialisez le compteur à 500, Plus bas, verifiez si une des LEDs est allumée. Si oui, décrémentez le compteur de 1 chaque passage, et eteignez tous les LED lorque le compteur atteint 0. Je présume ici que le 500ms total n'est pas absolument critique.
Ce qui suit n'est qu'une idée de comment vous pourriez procéder. Ce n'est pas testé! Presque sûr qu'il manque quelque chose.... Mais c'est un bon point de départ.
initialiser le compteur à 500
(Boucle débute ici)
Si interrupteur1 pesé && interrupteur2 non pesé && flag-interrupteur1 pas activé
allumer LED1
marquer interrupteur1 comme étant déjà pesé (activer la variable flag-interrupteur1)
Si interrupteur2 pesé && interrupteur1 non pesé && flag-interrupteur2 pas activé
allumer LED2
marquer interrupteur2 comme étant déjà pesé (activer la variable flag-interrupteur2)
Si flag-interrupteur1 actif && interrupteur2 pesé
allumer LED3
Si flag-interrupteur2 actif && interrupteur1 pesé
allumer LED4
LED allumée?
oui
compteur--
delai_ms(1)
compteur = 0?
oui
éteindre tous les LEDs.
réinitialiser le compteur à 500
désactiver flag-interrupteur1
désactiver flag-interrupteur2
(boucle termine ici)