Vous êtes sur la page 1sur 8

Interruptions du 8051

5 sources:
2 externes: INTO (P3.2) INT1 (P3.3)
2 générées par les timers (timer0 et timer1)
1 générée par le port série
Adresses de début des sous programmes d’interruptions:
Bit positionné adresse source
IE0 0003H INT0
IE1 0013H INT1
TF0 000BH TIMER 0 remarque: 8 octets séparent ces adresses
TF1 001BH TIMER 1
0023H PORT SERIE
Lorsqu’une entrée d’interruption est activée, le microcontrôleur exécute le sous programme correspondant (après avoir
sauvegardé l’adresse de retour dans la pile et positionné un indicateur interne) lorsque l’instruction en cours est terminée si:
- l’interruption est autorisée
- un sous programme d’interruption de priorité égale ou supérieure n’est pas en cours
- l’instruction en cours n’est pas RETI ou une opération de lecture ou d’écriture dans les registres IE ou IP

Masques d’interruption
IE (0A8H) EA - ET2 ES ET1 EX1 ET0 EX0
port série timer1 INT1 timer0 INT0

EA: bit de validation général, si EA = 0 alors aucune interruption n’est validée


EX0 = 1 valide l’interruption INT0 EX0 = 0 masque l’interruption INT0
Priorité des interruptions:
IP (0B8H) - - PT2 PS PT1 PX1 PT0 PX0
port série timer1 INT1 timer0 INT0

PX0 = 0 priorité basse pour INT0


PX0 = 1 priorité haute pour INT0
- Une interruption de priorité basse peut être interrompue par une interruption de priorité haute
- Si 2 interruptions d’égale priorité arrivent simultanément, un ordre pré établi est pris en compte:
IE0 de plus haute priorité suivie de TF0, IE1, TF1, port série
Interruptions externes
INT0 et INT1

- Sensibles soit: à l’état bas ( IT0=0 ou IT1= 0 )


à une transition haut-bas ( IT0=1 ou IT1= 1 )

- Bits positionnés à 1 lorsque l’interruption est activée: IE0 ou IE1


Ces bits seront remis automatiquement à 0 au départ du programme d’interruption si ( IT0=1 ou IT1= 1 )
Sinon c’est au programmeur de remettre ces bits à 0

TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Interruptions des timers

Lorsqu’un compteur associé à un timer (timer0 ou timer1) passe de 11111 ……. 1111 à 0000………0000 ( débordement), le
bit TF0 ou TF1 est positionné à 1. Ces bits sont remis automatiquement à 0 au départ du sous programme d’interruption
(si l’interruption correspondante est autorisée).

TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Les timers
Le timer0 et le timer1 du microcontrôleur 8051 permettent le comptage du temps et par conséquent la programmation de
temporisation de durée bien précise.

TMOD (89H): Mode de fonctionnement du Timer 0 et Timer 1

GATE C/T M1 M0 GATE C/T M1 M0

TIMER 1 TIMER 0

GATE= 0 timer x validé (lancé) si TRx = 1 (TRx est un bit du registre TCON)
GATE= 1 timer x validé si TRx = 1 et broche INTx = 1

C/T = 0 fonction temporisateur (mode timer): utilise l’horloge de commande du microcontrôleur, le compteur interne
est incrémenté à chaque cycle machine
C/T = 1 fonction compteur: horloge injectée sur la broche Tx (P3.4 : T0 et P3.5 : T1)
M1 M0 MODE

0 0 compteur 13 bits
0 1 compteur 16 bits
1 0 compteur 8 bits à rechargement automatique. THx est rechargé dans TLx quand
ce dernier repasse à 0
1 1 timer0: TL0 compteur 8 bits contrôlé par bits de contrôle du timer0
TH0 compteur 8 bits contrôlé par bits de contrôle du timer1
timer1: à l’arrêt
TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TFx: indicateur de débordement du timer x . Mis à 1 automatiquement lorsque le compteur


repasse à 0. Si l’interruption correspondante est autorisée, ce bit est remis automatiquement à 0
lorsque le sous programme d’interruption est exécuté
TRx: doit être mis à 1 pour lancer le timer x , et à 0 pour arrêter le timer x
IEx: positionné automatiquement à 1 lorsque l’interruption INT x est activée. Ce bit est remis
automatiquement à 0 au départ du programme d’interruption si le bit ITx=1, sinon c’est au
programmeur de remettre ce bit à 0
ITx: ITx =0 si INTx est sensible à l’état bas
ITx = 1 si INTx est sensible à une transition haut-bas

Vous aimerez peut-être aussi