Vous êtes sur la page 1sur 2

Ecole Supérieure de Technologie de Meknès Département Génie Electrique

Le fonctionnement en interruption
Définition
Une interruption est une procédure qui permet de suspendre l'exécution d'un programme au profit d'un autre,
avec la possibilité de reprendre l'exécution du programme initial là où il avait été suspendu.
Interruptions "matérielles"
Le microprocesseur est capable de répondre à des sollicitations extérieures. Ainsi peut-il traiter des
informations en "temps réel". Pour cela, le microprocesseur est "couplé" au monde extérieur par des lignes sur
lesquelles s'effectue, de façon indéterministe, un échange de messages sous forme de signaux logiques.
A partir des sollicitations extérieures, le microprocesseur doit changer "d'état" en fonction des priorités relatives
de l'opération en cours et de celle qui est demandée. Selon le cas, il interrompt ou non le déroulement "normal"
du programme.
Contrainte :
Si la demande est prise en compte, le microprocesseur doit être capable de traiter rapidement cette demande
externe.
Interruptions pour le MC68HC11
Le 68HC11 dispose de multiples possibilités d’interruptions : deux entrées externes IRQbarre (/IRQ) et
XIRQbarre (/XIRQ) et un certain nombre de sources internes liées aux différents périphériques qui équipent
le circuit (timer, SCI, SPI…) et une interruption par logiciel SWI.

Quand une interruption apparaît, le micro termine d'abord l’exécution de l'instruction en cours, tous les
registres ainsi que le compteur ordinal (PC) sont sauvegardés dans la pile, et le bit I du registre d’états (CCR)
(est mis à "1", ce qui interdit toute nouvelle interruption. Seule XIRQ qui est NON MASQUABLE sera traitée
si elle intervient pendant une phase d'interruption.

Ensuite le vecteur correspondant à l'interruption de plus haute priorité est recherché, et sa valeur est chargée
dans le compteur ordinal. Le sous programme lié à l'interruption va donc s'exécuter.

Ce programme se termine par l'instruction RTI qui a pour effet de faire exécuter les opérations inverses, à
savoir restitution des registres, remise à "0" du bit I du CCR autorisant la prise en compte de nouvelles
interruptions et chargement du compteur ordinal avec la valeur qu'il avait avant l'interruption, ce qui fait
reprendre le programme à l'endroit où il avait été interrompu.

Au reset du système le bit I du registre CCR est à "1", ce qui masque les interruptions. Si on désire que les
interruptions soient actives, il faudra les autoriser en passant le bit I à "0". On utilisera l'instruction: CLI. Au
contraire si on a besoin de les masquer au cours du programme on utilisera l'instruction : SEI.

Il ne faut pas oublier d'initialiser le pointeur de pile SP sur une adresse en RAM ou le micro pourra sauvegarder
ses registres.

Informatique Industrielle page 1


Ecole Supérieure de Technologie de Meknès Département Génie Electrique

Exemple des étapes à suivre pour programmer l’interruption IRQ

1. Initialiser le vecteur d’interruption IRQ :

ORG $FFF2 ; Vecteur d’interruption IRQ


FDB SPIRQ

SPIRQ est l'étiquette du sous programme à exécuter si un niveau bas apparaît sur l'entrée IRQ.

2. Initialiser le pointeur de pile SP par le bas de la zone des 1024 octets de RAM interne: LDS #$03FF
3. Il faudra au début du programme autoriser l’interruption par l’instruction : CLI.

Ordre d’empilement et dépilement des registres internes avant et après interruption

Pointeur de pile SP après Int

A chaque interruption
il y aura 9 octets sauvegardés
dans la RAM

Adresse Décroissant

Pointeur de pile SP avant Int

TABLE DES VECTEURS D’INTERRUPTIONS

Informatique Industrielle page 2

Vous aimerez peut-être aussi