Vous êtes sur la page 1sur 5

Module : Introduction aux systèmes embarqués

Année universitaire : 2022 – 2023

TRAVAUX PRATIQUES N° : 7

INTRODUCTION A LA PROGRAMMATION DES MICROCONTROLEURS

INTRODUCTION :

Une interruption est un événement imprévisible qui provoque l’arrêt d’un programme en cours
d’exécution pour aller exécuter un autre programme appelé programme (ou routine) d’interruption. A la
fin du programme d’interruption, le microcontrôleur reprend le programme principal à l’endroit où il
s’est arrêté. On distingue deux types d’interruptions:

Les interruptions externes, qui sont déclenchées lorsqu’un événement extérieur se produit tels
que le changement d’état d’une entrée destinée à l’interruption.

Les interruptions internes, qui sont déclenchées par le déroulement du programme tel que le
résultat d’un calcul ou le débordement d’un Timer.

Toute interruption est gérée à l’aide de 3 bits :

Un bit indicateur ou drapeau (Flag bit). Ce bit est mis à 1 lorsque l’interruption correspondante
survient.

Un bit d’activation (Enable bit). Ce bit permet d’activer ou de désactiver l’interruption


correspondante.

Un bit d’activation globale (Global Enable bit). Ce bit permet d’activer ou de désactiver toutes
les interruptions.

Ces bits sont regroupés suivant le microcontrôleur cible dans des registres appelés registres de
configuration des interruptions tels que: INTCON, PIE1, PIE2, PIR1 et PIR2. Le nombre de sources
d’interruptions dépend du microcontrôleur utilisé.

Registre de configuration des interruptions (INTCON)

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

Suivant le type du microcontrôleur donc du nombre de sources d’interruptions, le registre


INTCON est parfois accompagné par d’autres registres tels que (PIE, PIR1, etc.) pour gérer la
totalité des sources d’interruptions disponibles.

Mr Nizar TOUJENI 1/5


Le registre INTCON est parfois différent d’un PIC à un autre. Il est impératif de revenir au
document constructeur pour chaque type de microcontrôleur.

EXEMPLES

Registre INTCON pour PIC16F87x :

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

Registre INTCON pour PIC16F84A :

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

Bit 7: GIE = Global Interrupt Enable bit

1 = Autorise toutes les interruptions non masquées par leur bit individuel.

0 = Désactive toutes les interruptions.

Bit 6 (PIC16F87x): PEIE = Peripheral Interrupt Enable bit.

1 = Autorise les interruptions causées par les périphériques non masquées par leur bit individuel
dans les registres PIE1 et PIE2 (PIE : Peripheral Interrupts Enable)

0 = Désactive les interruptions causées par les périphériques.

Bit 6 (PIC16F84A): EEIE = EEPROM Interrupt Enable bit.

1 = Autorise les interruptions causées par la fin d’écriture dans l’EEPROM.

0 = Désactive les interruptions causées par la fin d’écriture dans l’EEPROM.

Bit 5: T0IE = Timer TMR0 Overflow Interrupt Enable bit.

1 = Autorise l’interruption du Timer TMR0.

0 = Désactive l’interruption du Timer TMR0.

Bit 4: INTE = RB0/Int Interrupt Enable bit.

1 = Autorise l’interruption sur la broche RB0.

0 = Désactive l’interruption sur la broche RB0.

Bit 3: RBIE = RB Port Change Interrupt Enable bit.

Mr Nizar TOUJENI 2/5


1 = Autorise l’interruption par changement d’état du Port B (RB4 à RB7).

0 = Désactive l’interruption par changement d’état du Port B (RB4 à RB7).

Bit 2: T0IF = Timer TMR0 Overflow Interrupt Flag bit.

Ce bit est un indicateur ou drapeau (Flag); il est mis à 1 si une interruption est générée par le
débordement du TMR0.

1 = Le Timer a débordé.

0 = Le Timer n’a pas débordé.

Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

Bit 1: INTF = RB0/Int Interrupt Flag bit.

1 = Une interruption sur la broche RB0 est survenue.

0 = Pas d’interruption sur la broche RB0.

Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

Bit 0: RBIF = RB Port Change Interrupt Flag bit. Ce drapeau doit être remis à zéro par le programme.

1 = Quand au moins une entrée du port B (de RB4 à RB7) a changé d’état.

0 = Aucune entrée de RB4 à RB7 n’a changé d’état.

Mise en œuvre d’une routine d’interruption en MikroC

En MikroC, le sous-programme d’interruption est déclaré en tant que fonction avec le nom spécial «
Interrupt ». Cette fonction s’exécute automatiquement en réponse aux évènements déclencheurs des
interruptions activées par l’utilisateur.

MANIPULATION :

Exercice 7.1 :

On donne le montage de la figure suivante. Écrire un programme qui accepte une interruption sur RB0
et à chaque impulsion sur le bouton poussoir B0 inverse l’état de la diode LED.

Mr Nizar TOUJENI 3/5


Exercice 7.2 :

Soit le montage de la figure suivante :

Ecrire un programme qui :

- Accepte des interruptions sur RB4 et RB7,

- A chaque impulsion sur le bouton poussoir B4 allume la diode LED,

- A chaque impulsion sur le bouton poussoir B4 éteint la diode LED.

Mr Nizar TOUJENI 4/5


Exercice 7.3 :

1. On désire réaliser un compteur binaire 8 bits et afficher le résultat sur 8 diodes LED. Pour réaliser ce
cahier des charges, on propose le circuit de la figure suivante. Écrire un programme en MikroC qui à
chaque impulsion sur le bouton lié à l’entrée RB0 incrémente le compteur et affiche le résultat sur le
PORTD.

2. Modifier le programme précédent afin d’afficher le résultat du comptage sur un afficheur LCD selon
le montage suivant :

Mr Nizar TOUJENI 5/5

Vous aimerez peut-être aussi