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

m
 
{{Solution|contenu=
1°)
<source lang="c">
void interrupt decalage(void) {
nb++;
if (!(nb % 16))
PORTB = (PORTB << 1) ;
if (PORTB == 0x00) PORTB = 0x01;
TMR0IF_bit = 0; // acquittement interruption (changé ici)
}
unsigned char nb;
main(void) {
TRISA = 0xF9; // 6 entrees, 2 sorties pour A
TRISB = 0x00; // 8 sorties pour B
OPTION_REG = 0x07; // prescaler 256 , entree sur quartz (changé ici)
INTCON = 0xA0; // autorise l'interruption timer
PORTB = 0x01; // une seule diode allumee
TMR0 = 0x00 ;
nb=0;
while(1) {
// on ne fait rien que recopier sur 2 segments la valeur de SW1
if ((PORTA & 0x01) == 1) PORTA = 0x06;
}
}
</source>
2°) Je l'ai réalisé dans un FPGA et à vue de nez la fréquence est entre 5 et 10 Hz.
 
10 144

modifications