Bon. J'ai résolue les bugs de compilation, lais je n'ai rien obtenus de ce que je voulais. Alors j'ai cherché sur internet, et j'ai adopté un code trouvé sur une doc d'une école.
Le voici:
Après simulation, validation de ma part, j'aimerai étendre cette temporisation à la minute. J'ai donc mis 480, mais là, plus rien en simulation. Avez vous une explication ?Code:#include <p18f4520.h> // sous programme d'interruption #pragma interrupt traite_it void traite_it(void) { static char tictac; // IT toutes les 125mS, il faut attendre 8 IT avant de basculer PB0 if( PIR1bits.CCP1IF) // l'IT provient d'une comparaison { if (++tictac>=8) { PORTDbits.RD0=!PORTDbits.RD0; //bascule PD0 tictac=0; } PIR1bits.CCP1IF=0; //efface le drapeau d'IT } } #pragma code vec_it=0x08 void vect8 (void) { _asm goto traite_it _endasm } #pragma code void main(void) { ADCON1=0x0F; // configure PORTB TRISDbits.TRISD0=0x00; // RB0 en sortie PORTDbits.RD0=0x00; // configure le TIMER1 T1CONbits.RD16=0; T1CONbits.TMR1CS=0; T1CONbits.T1CKPS1=1; T1CONbits.T1CKPS0=1; T1CONbits.T1SYNC=1; T1CONbits.TMR1ON=1; // configure le mode comparaison sur le TIMER1 avec IT sur CCP1 toutes les 15625 périodes de 8us soit 125ms T3CONbits.T3CCP2=0; CCP1CON=0x0B; CCPR1H=0x3d; CCPR1L=0x09; PIE1bits.CCP1IE=1; // active IT sur mode comparaison CCP1 RCONbits.IPEN=1; // Interruption prioritaires activées INTCONbits.GIE=1; // Toutes les IT démasquées autorisées while(1); // une boucle infinie, tout fonctionne en IT }
-----