| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
Omsi Invité
|
Posté le: 21 Mar 2008 14:11 Sujet du message: BP et instruction switch BP et instruction switch |
|
|
bonsoir,bonjour
eh oui encore moi,cette fois ci je veux faire le prog suivant:
je pousse une fois sur BP=>la led clignote 5 fois,je pousse deux fois sur BP=>10 fois
et je pousse trois fois sur Bp=> 20 fois
voilà l debut de mon code,j'aimerai un peu d'aide cette fois ci et merci d'avance
| Code: |
#include <avr/io.h>
#include <avr/interrupt.h>
enum etat_led { IDLE,etat_5,etat_10,etat_20 };
volatile unsigned char etat_led, prev_etat_led,BP,count;
int main(void)
{
DDRD |= (0 << PD2); //PD2 as input(INTO)
DDRB |= (1 << PB0); //PB0 as output(led)
PORTD |= (1 << PD2); //Pull-up on PD2
MCUCR |= ((1 << ISC01) | (1 << ISC11)); //downfront 1/0
GICR |= (1 << INT0); //enable INT0
TCCR1A |= ((1 << COM1A1) | (1 << COM1A1)); //CTCmode TIM1 channel A
TCCR1B |= ((1 << WGM12) | (1 << CS12)); //prescaler 256 & CTCmode
OCR1A = 19531.25; //Compare value @ 0,5s for 10MHZ
TIMSK |= ((1 << OCIE1A) | (1 << TOIE1)); //enable ovf & output compare A
sei();
}
ISR(INT0_vect)
{
}
ISR(TIMER1_COMPA_vect)
{
switch (etat_led)
{
case IDLE:
break;
case etat_5:
count=5;
if(count!=0)
{
PORTB ^=(1 << PB0);
count--;
}
break;
case etat_10:
break;
case etat_20:
break;
default:
break;
}
}
|
|
|
| Revenir en haut de page |
|
 |
Omsi Invité
|
Posté le: 25 Mar 2008 16:27 Sujet du message: BP et instruction switch RE |
|
|
salut tout le monde,pour la suite de mon code,j'ai réussi à faire fonctionner le BP appuyé une seule fois seulement ,la seconde fois il ne se passe rien,donc j'apprécierai votre aide s'il vous plait.
Voici mon code non-fini:
| Code: |
#include <avr/io.h>
#include <avr/interrupt.h>
enum etat_led { IDLE,init_etat_5,etat_5,init_etat_10,etat_10,init_etat_20,etat_20 };
volatile unsigned char BP,count=0;
int main(void)
{
DDRD |= (0 << PD2); //PD2 as input(INTO)
DDRB |= (1 << PB0); //PB0 as output(led)
PORTD |= (1 << PD2); //Pull-up on PD2
MCUCR |= ((1 << ISC01) | (1 << ISC11)); //front descendant 1/0
GICR |= (1 << INT0); //enable INT0
TCCR1A |= ((1 << COM1A1) | (1 << COM1A1)); //CTCmode TIM1 channel A
TCCR1B |= ((1 << WGM12) | (1 << CS12)); //prescaler 256 & CTCmode
TIMSK |= ((1 << OCIE1A) | (1 << TOIE1)); //enable ovf & output compare A
OCR1A = 19531.25; //Compare value @ 0,5s for 10MHZ
sei();
while(1);
}
ISR(INT0_vect)
{
BP++;
if(BP==3)
{
BP=0;
}
}
ISR(TIMER1_COMPA_vect)
{
switch (BP)
{
case IDLE:
break;
case etat_5:
if(BP==1)
{
if(count<=10)
{
PORTB ^=(1 << PB0);
count++;
}
}
break;
BP=1;
count=0;
case etat_10:
if(BP==2)
{
if(count<=20)
{
PORTB ^=(1 << PB0);
count++;
}
}
break;
BP=2;
count=0;
}
}
|
|
|
| Revenir en haut de page |
|
 |
Omsi Invité
|
Posté le: 26 Mar 2008 9:22 Sujet du message: BP et instruction switch |
|
|
PS:
Il n'y a aucune erreur à corriger pour votre information,il me faut juste quelques idées pour l'aboutissement de ce code .
Merci. |
|
| Revenir en haut de page |
|
 |
Omsi Invité
|
Posté le: 28 Mar 2008 13:34 Sujet du message: BP et instruction switch Hihi |
|
|
bonjour,bonsoir
ben voilà comme d'habitude je fini par y arriver seul, donc le code est fini si quelqu'un est interessé faites moi signe (h) |
|
| Revenir en haut de page |
|
 |
|
|
Vous pouvez poster de nouveaux sujets dans ce forum Vous pouvez répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers Vous pouvez télécharger des fichiers
|
|