Bonsoir,
je suis en train de m'initier aux PIC avec MPSim et je me heurte à un problème.
Mon programme est simple, à chaque appui sur RB0, je souhaite lancer une intérruption qui incrémente un CHAR. Lorsque celui ci devient supérieur a 5 et que mon buzzer est éteint, je le déclenche. Puis une fois déclencher je dois appuyer 3 fois pour l'arreter.
Voici mon code:
Mon problème est que je n'arrive à rentrer dans mes IF uniquement lorsque je mets ma comparaion de compteur_appui en commentaire. Je me doute que le probème vient de ma syntaxe mais je ne trouve pas.Code:#include "pic.h" // vos headers associés #include "pic168xa.h" // à vos projets //#include <stdio.h> #define bit(x) (1<<(x)) // __CONFIG(HS & WDTDIS & BOREN & LVPDIS ); void init (void) { TRISB = 0xFF; //Port B en entree TRISC = 0x00; //Port B en sortie PORTC = 0; OPTION = 0b00100000; //Int du port B en front descendant (bit 6) INTEDG INTCON = 0b10011000; //RB0 en interruption (bit 4) INTE } void buzzer_off (void) { RC2 = 0; } void buzzer_on (void) { RC2 = 1; } // ******************** INTERRUPTIONS ******************** void interrupt BP_S3 (char compteur_appui) { if (INTF && INTE) // interruption RB0 { compteur_appui++; if (compteur_appui>0x04 && RC2==0) /* !!! Impossible de rentrer !!! */ { buzzer_on(); compteur_appui=0; } if (compteur_appui>0x02 && RC2==1) /* !!! Impossible de rentrer !!! */ { buzzer_off(); compteur_appui=0; } INTF=0; // acquittement de l’interruption RB0 } } void main(void) { char compteur_appui=0x0A; init(); while(1); }
Quelqu'un pourrait m'aiguiller?
Merci.
-----