Vous êtes sur la page 1sur 7

Notion d’interruption externe

1°- Définition :
Une interruption est un événement qui provoque l’arrêt d’un programme en cours d’exécution pour aller
exécuter un autre programme appelé programme d’interruption (ou routine). A la fin du programme
d’interruption, le microcontrôleur reprend le programme principal à l’endroit où il s’est arrêté.
Donc Une interruption est une routine qui a une totale priorité sur le déroulement global d’un programme.
En l’absence d’interruption, le programme se déroule de la façon dont a décidé.
L'exécution d'une procédure d'interruption répond à un évènement qui peut être interne ou externe au
microcontrôleur. Dans la suite, on s’intéresse uniquement aux interruptions externes
2°- Les interruptions externes :
*déclenché par un front sur la broche RB0/INT
*déclenché par un changement d'état sur l’une des broches RB4 à RB7

3°- Registre de configuration des interruptions (INTCON) :


Le registre INTCON (INTerrupt CONtroller) est un registre de contrôle et de gestion des interruptions.

NB : Pour le PIC 16F84A le bit 6 est : EEIE (EEPROM Interrupt Enable bit)
B7 : GIE : GLOBAL INTERRUPT ENABLE BIT :
=1 : autoriser toutes les interruptions d’une seule fois.
=0 : interdire toutes les interruptions d’une seule fois.
B6 : EEIE : EEPROM WRITE COMPLETE INTERRUPT ENABLE BIT :
=1 : autoriser l’interruption de fin d’écriture en EEPROM.
=0 : interdire l’interruption de fin d’écriture en EEPROM.
B5 : T0IE :TMR0 INTERRUPT ENABLE BIT :
=1 : autoriser l’interruption générée par le débordement du TMR0
=0 : interdire l’interruption générée par le débordement du TMR0
B4 : INTE : INTERRUPT PIN ENABLE BIT :
=1 : autoriser l’interruption dans le cas d’une modification de niveau de la broche RB0.
=0 : interdire l’interruption dans le cas d’une modification de niveau de la broche RB0.
B3 : RBIE :RB PORT CHANGE INTERRUPT ENABLE BIT :
=1 : Autoriser les interruptions si on a changement de niveau sur une des entrées RB4 à RB7.
=0 : Interdire les interruptions si on a changement de niveau sur une des entrées RB4 à RB7.
B2 : T0IF : TMR0 INTERRUPT FLAG BIT:
=1 :il signale la présence d’un débordement du TMR0
=0 :il signale l’absence d’un débordement du TMR0
B1 : INTF : INTERRUPT PIN FLAG BIT :
=1 : signale la présence d’une impulsion sur la broche RB0/INT
=0 : signale l’absence d’une impulsion sur la broche RB0/INT
B0 : RBIF : PORT INTERRUPT FLAG BIT :
=1 : il signale la présence d’un changement d’état sur l’une des entrées RB4 à RB7.
=0 : il signale l’absence d’un changement d’état sur l’une des entrées RB4 à RB7.
Le routine de l’interruption ayant la même structure qu’un programme mikro_pascal

Procedure interrupt ;
Begin
Instruction 1 ;
………………… ;
………………… ;
Instruction n ;
Réactivation de l’interruption ;// bit GIE
Remise à zéro de l’indicateur correspondant à la source d’interruption utilisée ; // bit INTF ou RBIF
End ;

a. Interruption RB0/INT
L’interruption externe RB0/INT se produit par un front montant (FM) ou descendant (FD)
d’une impulsion appliquée sur l’entrée RB0. Elle est gérée par les quatre bits suivants :
- GIE : bit de validation globale de toutes les interruptions (1 = oui, 0 = non)
- INTE : bit de validation de l’interruption externe RB0/INT (1 = oui, 0 = non)
- INTF : indicateur ou drapeau correspondant à l’interruption externe RB0/INT
- INTEDG : type du front sur l’entrée RB0 (1 : FM ; 0 : FD)
EXEMPLE
D’APPLICATION
Le :
montage ci-contre simule un programme principal qui
permet de compter 5 pièces par lot (compteur modulo 5) :
- on désire ajouter au programme une procédure pause qui permet,
suite à l’action sur le bouton Bp, d’arrêter l’exécution du programme
principal (comptage des pièces) et déclenché un alarme visuelle D
pendant 5s (temps nécessaire pour éliminer manuellement la pièce
défaillante) à la fin d’interruption le compteur reprend son comptage
où il s’est arrêté. Program Compteur_5; trisc:=0;
Var Intcon:=$90;
i:byte; Option_reg.intedg:=1;
Afficher le contenu Bp: sbit at portb.0; adcon1:=$07;
du registre intcon
Diode: sbit at porta.3; While true do
pendant l’execution
Procedure interrupt; Begin
du programme
d’interruption Begin for i:=0 to 4 do
portc:=intcon; Begin
Diode:=1; portc:=intcon; Afficher le contenu du registre
Delay_ms(5000); porta:=i; intcon avant et aprés l’execution
Diode:=0; Delay_ms(1000); du programme d’interruption
Intcon.GIE:=1; End;
Intcon.INTF:=0; End;
End; End.
Begin
trisa:=0;
trisb.0:=1;
Simuler le montage précédent puis déterminer l’état de registre INTCON au cours de déroulement d’une
interruption :
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Valeur de registre INTCON : INTCON
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
Avant l’interruption 1 0 0 0 0 $ 90
0 1 0
au cours de l’interruption 0 0 0 1 0 1 0 $ 12
0
Après l’interruption 1 0 0 1 0 0 0 0 $ 90

Il faut impérativement mettre à 1 le bit GIE et mettre à 0 l’indicateur INTF à la fin du


sous-programme d’interruption pour pouvoir revenir au programme principal et autoriser de
nouvelles interruptions sur la broche RB0/INT.

Vous aimerez peut-être aussi