« Utiliser les PIC 16F et 18F/Exercices/Interruption timer0 en langage C » : différence entre les versions

m
m (Robot : Changement de type cosmétique)
// poids fort
if (mux == 2) PORTC = Display(nb / 10);
TMR0IF_bit1INTCON.T0IF = 0; // clear TMR0IF
}
</source>
Cette façon de faire (division par 10 et reste de la division par 10) est utile si nb n'est pas en BCD, or nous avons présenté dans le main une incrémentation qui veille à laisser nb en BCD ! On peut donc renplacer cette interruption par :
<source lang="c">
void interrupt(void) {
TMR0 = 100;
mux = !(mux) & 0x03; // alterne le mux
PORTB = mux;
// poids faible
if (mux == 1) PORTC = Display(nb &0x0F);
// poids fort
if (mux == 2) PORTC = Display((nb & 0xF0)>>4);
1INTCON.T0IF = 0; // clear TMR0IF
}
ce qui est bien plus efficace pour un code d'interruption.
</source>
 
 
}}
10 144

modifications