j'aimerai une petite aide de votre part pour compléter ce code svp
il sagit de deux boutons poussoir,l'un fait clignoter la led toutes les secondes pendant cinq secondes,l'autre BP ben j'arrive pas à le faire fonctionner.
Ce que je veux c'est qu'il fasse clignoter une autre led pendant cinq seconde toujours mais deux fois plus vite cette fois-ci.
donc elle doit clignoter dix fois en 5 sec.Voici mon code et encore merci pour votre aide.
- Code: Tout sélectionner
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
volatile char i;
volatile char j;
ISR(INT0_vect)
{
i=10;
}
ISR(INT1_vect)
{
j=20;
}
int main(void)
{
DDRD |= (0 << PD2) | (0 << PD3);//PD2 & PD3 as input
PORTD |=(1 << PD2) | (1 << PD3);//RESistor de rappel
MCUCR |= (1 << ISC01) | (1 << ISC11);//front descendant 1/0
GICR |= (1 << INT0) | (1 << INT1);//enable INTO and INT1
DDRB = 0X03;//2first bits as outputs
TCCR1A |= ((1 << COM1A1) | (1 << COM1A0));//CTC mode TIM1 for channel A
TCCR1B |= ((1 << WGM12) | (1 << CS12)); //settings for prescaler 256 and CTC mode
TCCR0 |= (1 << WGM01) | (1 << CS01) | (1 << CS00);//mode CTC TIM0 + PRESCALER @ 64
sei(); //enable globale interrupts
TIMSK |= (1 << OCIE1A) | (1 << TOIE1); //enable output compare A & OVF
OCR1A = 19531.25; //CTC value to 0,5s @ 10MHZ(AVR clk)
OCR0 = 39062.5;//0,25s @ 10MHZ
return 0;
}
ISR(TIMER1_COMPA_vect)
{
if(i!=0)
{
PORTB ^= (1 << PB0); //toggle LED 0,5 sec
i--;
}
}
ISR(TIMER0_COMP_vect)
{
if(j!=0)
{
PORTB ^= (1 << PB1); //toggle LED 0,5 sec
j--;
}
}
CIao et à bientôt
