Code :
- #include <stdlib.h>
- #include <delay.h>
- interrupt [1] void BP1(void)
- {
- }
- interrupt [2] void BP2(void)
- {
- //Arrêt chrono1 et chrono2
- }
- interrupt [3] void BP3(void)
- {
- //Arrêt chrono1 et chrono2
- }
- interrupt [4] void BP4(void)
- {
- //Arrêt chrono1 et chrono2
- }
- interrupt [5] void BP0(void)
- {
- //Déclenchement chrono2
- }
- interrupt [6] void BP0(void)
- {
- //RAZ du programme
- }
- int main (void)
- {
- int nbr_alea=0;
- DDRD=0x00; //port D en entrée (BP)
- DDRB=0xFF; //port B en sortie (LED)
- #asm("sei" ) //Valide toutes les interruptions
- GIMSK = 0b11000000; //valide les broches d'interruption INT0 et INT1
- MCUCR = 0b00001111; //détermination du type d'évènement sur les broches INT0 et INT1
- //Déclaration de variables pour le chronomètre
- int _2ms=0; //Compteur pour 50 passages à 2ms = 0.1sec
- int MIL_SECONDS=0; //HTR virtuelle : diziaime de seconde
- char SECONDS=0; //HTR virtuelle : Seconde
- char MIN=0;
- while(1)
- {
- nbr_alea = rand()%4;
- if(nbr_alea==0)
- {
- PORTB=~0b00000001; // "~" pour passer de logique négative a logique positive ( "0"=led allumée enn théorie)
- //Déclenchement chrono1
- if (TIMSK==0b10000000) TIMSK=0b00000000; //Interruption comparaison réussie timer2 validée
- else TIMSK=0b10000000;
- delay_ms(500);
- PORTB=~0b00000000;
- }
- else if(nbr_alea==1)
- {
- PORTB=~0b00000010;
- //Déclenchement chrono1
- if (TIMSK==0b10000000) TIMSK=0b00000000; //Interruption comparaison réussie timer2 validée
- else TIMSK=0b10000000;
- delay_ms(500);
- PORTB=~0b00000000;
- }
- else if(nbr_alea==2)
- {
- PORTB=~0b00000100;
- //Déclenchement chrono1
- if (TIMSK==0b10000000) TIMSK=0b00000000; //Interruption comparaison réussie timer2 validée
- else TIMSK=0b10000000;
- delay_ms(500);
- PORTB=~0b00000000;
- }
- else if(nbr_alea==3)
- {
- PORTB=~0b00001000;
- //Déclenchement chrono1
- if (TIMSK==0b10000000) TIMSK=0b00000000; //Interruption comparaison réussie timer2 validée
- else TIMSK=0b10000000;
- delay_ms(500);
- PORTB=~0b00000000;
- }
- }
- }
|
Bonjour,
J'ai besoin d'aide pour programmer deux chronometre d'un processeur via les timer...
L'un ce déclencherai lors de l'allumage d'une des 4 led allumer aléatoirement, et l'autre lors d'un relachement d'un bouton poussoir (a définir).
Je vous ai mis la première partie qui consiste a allumer aléatoirement les 4 led que l'on utilisera.
Merci d'avance