je veux faire allumer des leds et les eteindre en 30 sec.comme le compteur n'a que 255 et d'apres mes calculs il me faut un compteur de 945 pour faire du 30 sec .comment palier ce probleme sans utiliser delay()
ci joint le code.
Code:void interrupt(){ static unsigned short cpt=0; if (INTCON.TMR0IF) // si il y a eu débordement du TIMER0 {cpt++; if (cpt==61) // 2 secondes écoulées = 61x32,768ms la période de débordement du TIMER0 {cpt=0; PORTB.F3=~PORTB.F3; PORTB.F5=~PORTB.F3; PORTC.F5=~PORTC.F5; PORTC.F3=~PORTC.F5; PORTD.F5=~PORTD.F5; PORTD.F3=~PORTD.F5; } INTCON.TMR0IF=0; // on réamorce l'interruption } } void main() { PORTA=0; PORTB=0; PORTC=0; PORTD=0; PORTE=0 ; TRISA.F3=0; TRISA.F5=0; TRISB.F3=0; TRISB.F5=0; TRISC.F3=0; TRISC.F5=0; TRISD.F3=0; TRISD.F5=0; OPTION_REG = OPTION_REG & ~0x47; // T0CS=PSA=0 => Fréq du Timer0 = Fosc/4 OPTION_REG = OPTION_REG | 0x07; // PS2:PS0=111 => Fréq du Timer0 /256 INTCON.TMR0IE=1; // on valide l'interruption débordement du TIMER0 INTCON.TMR0IF=0; // on réamorce l'interruption, au cas où elle se soit déjà produite INTCON.GIE=1; // on valide les interruptions non masquées TMR0=0 ; }]
-----