int main () { initialisation(); _delay_ms (2000); //Attendre 2 seconde avant le jeu PORTD = 0x02;//0000 0001 _delay_ms (100); PORTD = 0x00;//0000 0000 partirMinuterie(7812); // 8M / 1024 do { } while (minuterieExpiree == 0 && boutonPoussoir == 0); cli (); if (boutonPoussoir == 1) PORTD = 0x01;//0000 0001 else PORTD = 0x02;//0000 0010 }
/** * The main function. It does the logic. */ int main() { initialisation(); _delay_ms(1000); lightOnRed(); _delay_ms(100); lightOff(); partirMinuterie(7812); //minuterieExpiree = 1; do { // attendre qu'une des deux variables soit modifiée // par une ou l'autre des interruptions. } while ( minuterieExpiree == 0 && boutonPoussoir == 0 ); // Une interruption s'est produite. arreter toute // forme d'interruption. Une seule reponse suffit. cli (); // Verifier la reponse if ( minuterieExpiree == 1 ) { for(;;) { lightOnRed(); } } else { for(;;) { lightOnGreen(); } } return 0; }
int main() { initialisation (); // for(;;) // boucle sans fin // { for(int i = 0; i < 100; i++) _delay_ms(100); PORTA = 0x02; _delay_ms(100); PORTA = 0x00; partirMinuterie(7812); do { // attendre qu'une des deux variables soit modifiée // par une ou l'autre des interruptions. } while ( minuterieExpiree == 0 && boutonPoussoir == 0 ); // Une interruption s'est produite. arreter toute // forme d'interruption. Une seule reponse suffit. cli (); // Verifier la reponse if(minuterieExpiree == 0 && boutonPoussoir == 1) PORTA = 0x01; else if ( minuterieExpiree == 1 ) PORTA = 0x02; else {} return 0; }
//titre :main() //description:boucle principale du programme, systeme ferme de changement d'etat //entrees :aucune //sorties :code d'erreur possible int main() { initialisation(); //for(;;) //ROUGE(); ROUGE(); _delay_loop_2(65535); ETEINT(); _delay_loop_2(65535); ROUGE(); _delay_loop_2(65535); ETEINT(); partirMinuterie(1000); do { // attendre qu'une des deux variables soit modifiée // par une ou l'autre des interruptions. } while ( minuterieExpiree == 0 && boutonPoussoir == 0 ); //probleme minuterie active par le bouton // Une interruption s'est produite. arreter toute // forme d'interruption. Une seule reponse suffit. cli(); if(minuterieExpiree == 1 && boutonPoussoir == 0) // l'utilisateur a perdu for(;;) ROUGE(); if(minuterieExpiree == 1 && boutonPoussoir == 1) // fort improbable for(;;) AMBRE(); if(minuterieExpiree == 0 && boutonPoussoir == 1) // l'utilisateur a gagne for(;;) VERT(); //for(;;) //ROUGE(); /*for(;;)//boucle infinie { switch (etat) { case PREPARATION: ETEINT();//la Del est eteinte for(int delai=0;delai<306;delai++)//boucle pour obtenir 10 secondes _delay_loop_2(65535); etat=DEPART;//prochain etat break; case DEPART: ROUGE(); _delay_loop_2(65535); ETEINT(); _delay_loop_2(65535); ROUGE(); _delay_loop_2(65535); etat=JEU;//prochain etat break; case JEU: ETEINT();//la Del est eteinte pour l'attente de l'interaction du joueur for(delai=0;delai<31;delai++)//boucle pour obtenir 1 seconde { if(PIND & 0x04)//si bouton = 1, on va a l'etat GAGNE etat=GAGNE; _delay_loop_2(65535); } if(etat ==GAGNE) break; else etat=PERDU;//s'il n'a pas pesee sur le bouton, il va a l'etat PERDU break; case GAGNE: VERT(); break; case PERDU: ROUGE(); break; default: //en cas de bogue, on retourne à l'etat initial etat=PREPARATION; break; } //switch }//for*/ }//main