Vous êtes sur la page 1sur 15

1/ 15

Chapitre 8 : Le circuit Minuterie ou


‘Timer’ 8253/54

Section 8.1: Description du circuit Timer 8253/54 et


Initialisation

Section 8.2: Programmation du Timer 8253/54 et


interface avec IBM PC

Section 8.3: La forme des signaux de sorties du


Timer 8253/54

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


2/ 15

Objectives
Les objectifs de ce chapitre sont:

- Décrire la fonction de chaque PIN du circuit Timer


8253/54.

- Savoir programmer les 3 compteurs du circuit Timer


8253/54.

- Montrer comment le circuit Timer 8253/54 est connecté


au IBM PC.

- Expliquer les différents modes pour générer le signal


de sortie du Timer 8253/54.
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
3/ 15
Section 8.1: Description du circuit Timer
8253/54 et Initialisation

Pourquoi le Circuit Timer?

Dans un PC il existe une seule horloge (CLK) de très haute fréquence, utilisée notamment par la
CPU, pour synchroniser ses activités avec ses circuits périphériques.

Mais dans un PC il existe des fonctions qui nécessitent des horloges de basse fréquence.

Le Timer 8253/54 PIT (Programmable Interval Timer) est conçu pour satisfaire ce besoin. Il
consiste à générer des basses fréquences à partir de CLK pour des applications diverses comme
jouer de la musique par exemple.

IBM PC/XT (P8088)  Timer 8253


IBM PC/AT (P80286)  Timer 8254 (il accepte les programmes du Timer 8253)

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


4/ 15

Description du circuit Timer 8253/54 et Initialisation

D7 1 24 VCC CLK0
D6 2 WR GATE0
D5 RD D7 .. D0 OUT0
D4
D3
CS
A1
 CLK2
D2
D1
8253 A0
CLK2
P WR
RD
8253 GATE2
OUT2

I/F
D0 OUT2
CLK0 GATE2 CLK1
OUT0 CLK1 A0 GATE1
GATE0 GATE1
A1 OUT1
GND 12 13 OUT1
CS

Circuit Timer 8253


(Même chose que le 8254) CS A1 A0 Port
CLK (1,2,3) <= 2 MHz sinon avec Timer 8254 (jusqu’à 10MHz) 0 0 0 Compteur 0

0 0 1 Compteur 1
La forme du signal OUT (CLK / N) est programmée
0 1 0 Compteur 2

Le signal GATE est utilisé pour (Dés)Activer le compteur. 0 1 1 Registre de Contrôle

État Haut (5V) pour activer et vice-versa. 1 x x 8253/54 n’est pas sélectionné

Le bus données du 8253 D0-D7 est connecté à celui du bus système. Il Les signaux RD/WR sont connectés aux
permet à la CPU d’accéder les registres du 8253 pour les opérations L/E. signaux de contrôle IOR/IOW du bus système.

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


5/ 15

Description du circuit Timer 8253/54 et Initialisation

Initialisation du T8253/54

Les 3 compteurs doivent être programmés séparément. Pour programmer un compteur :


- L’octet de contrôle est écrit dans le registre contrôle (pour, entre autres, indiquer la forme de OUT).
- Le nombre N par qui la CLK est divisée pour générer la fréquence OUT, doit être programmé, via
D7-D0. Puisque le nombre maximum permis est FFFFh (16 bits), ce nombre doit être envoyé en 2
temps, 1 octet à la fois.

D7 D6 ...... D1 D0 BCD Mode


SC1 SC0 RL1 RL0 M2 M1 M0 BCD 0 Compteur Binaire (16-bits)

1 Compteur BCD (4 décades)


Registre de contrôle

M2 M1 M0 Mode
0 0 0 Mode 0
RL1 RL0 Mode SC1 SC0 Mode
0 0 1 Mode 1
0 0 Lecture du compteur (compteur 0 0 Compteur 0 sélectionné
x 1 0 Mode 2 d’avènement)
0 1 Compteur 1 sélectionné
Mode 3 0 1 Lire/Charger LSB seulement
x 1 1 Compteur 2 sélectionné
1 0
Mode 4 1 0 Lire/Charger MSB seulement
1 0 0 / (non permis)
1 1
Mode 5 1 1 Lire/Charger LSB, ensuite MSB
1 0 1

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


6/ 15

Description du circuit Timer 8253/54 et Initialisation

Binaire: 0000  FFFFh  CLK / [ 1 (0001h) à 65536 (0000h)]


D7 D6 ...... D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
BCD:Registre de contrôle
0000  9999h  CLK / [ 1 (0001h) à 10000 (0000h)]

Mode 0  Interruption au compte final


Mode 1  ProgrammableD6 pulse (une seule fois)
...... D0
D7 D1
Mode 2  Générateur de pulses périodiques
SC1 SC0 carré
Mode 3  Générateur signal
RL1 RL0 M2 M1 M0 BCD
Mode 4  Déclenchement
Registre de Logiciel
contrôle
Mode 5  Déclenchement Hardware

Il y’a 3 options possibles, lire


Le nombre qui divise D7la CLK
D6 le MSB, ou LSB, D1ou bienD0
est sur 16-bits (0000FFFFh) les deux (le LSB en premier lieu).
SC1 SC0
RL0 et RL1 sont utilisés pour
RL1 RL0 M2 M1 M0 BCD
La 4eme option est la lecture du
Indiquer la taille de ce nombre. contenu du compteur à n’importe quel
moment.

D7 D6 Ces bits indiquent lequel D1 D0


des 3 compteurs (0, 1, ou 2)
SC1 SC0 RL1 RL0 M2l’octet
est à initialiser par
M1de M0 BCD
contrôle.

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


7/ 15

Description du circuit Timer 8253/54 et Initialisation

Exemple Supposant que la puce 8253/54 est activée par le pin CS à partir des adresses A7-A2  100101.
Dans ce cas Les adresses des ports assignés au T8253/54, sont:

CS A1A0 Port Adresse du port (Hex)


100101 00 Compteur 0 94
100101 01 Compteur 1 95
100101 10 Compteur 2 96
100101 11 Registre de Contrôle 97
Si le registre de contrôle est programmée comme suit:
MOV AL, 36H
OUT 97H, AL

La configuration du T8253/54 est comme suit:


36H = 00110110B 

CS0,1= 00  Compteur 0 sélectionné Les 3 compteurs partagent


C’est quoi ce le registre de contrôle mais
RL0,1= 11  LSB est suivi de MSB Nombre diviseur? chacun possède son registre
diviseur (dont l’adresse du
M0,1,2= 110  Mode 3 sélectionné (signal carré) port est celle du compteur
en question).
BCD = 0  Compteur Binaire
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
8/ 15

Description du circuit Timer 8253/54 et Initialisation


Port Adr. Port
Exemple 2 En utilisant les adresses des ports (de l’exemple 1)
Compteur 0 94h
Programmer le compteur 0, dont la fréquence
est CLK0/4282(en BCD) et la forme d’onde est un Compteur 1 95h
Signal carrée (Mode 3). Compteur 2 96h

Registre de 97h
MOV AL, 37H ; Compteur 0, mode 3, BCD  37H Contrôle
OUT 97H, AL ; Envoi au registre contrôle
MOV AX, 4282H ; Charger le nombre diviseur (H pour HEX)
OUT 94h, AL ; Envoi de l’octet LSB au port compteur 0 (82h)
MOV AL, AH
OUT 94h, AL ; Envoi de l’octet MSB au port compteur 0 (42h)

Programmer le compteur 2, qui permet de générer un signal carré de fréquence f OUT2 = 360Hz, sachant
que fCLK2 = 1.8MHz.

MOV AL, B6H ; Compteur 2, mode 3, Binaire  B6H

fCLK2 / fOUT2 = 5000 = 1388H (HEX) OUT 97H, AL ; Envoi au registre contrôle
En Binaire
MOV AX, 1388H ; Charger le nombre diviseur (H pour HEX)
= 5000 (BCD) OUT 96h, AL ; Envoi de l’octet LSB au compteur 2 (88h)
MOV AL, AH
Note: En BCD, il suffit de changer
OUT 96h, AL ; Envoi de l’octet MSB au compteur 2 (13h)
MOV AL, B6H par
MOV AL, B7H

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


9/ 15
Section 8.2: Programmation du Timer
8253/54 et interface avec IBM PC
Adresse Compteur0,1,2 = 40H/41/42 Adresse Reg. Controle = 43H


(+haute priorité)  le Timer0 est programmée
P LS138 à 0000H 8259
CS A1 A0
8 A5 A CLK0 18.5 Hz  interruption TOD (IBM BIOS) IRQ0
OUT0
0 B
C Y2 Vcc GATE0

8 G2B Vcc
8 A9 G2A Compteurs 0 et 1 15 s  Rafraîchir DRAMs DREQ0
AEN G1 Activés en OUT1 FF DMA
permanence
DACK 8237
CLK1

Vcc GATE1

8253 Vers le lecteur de cassettes

OUT2
IBM PC  Son Beep (897Hz)
Ou bien Musique
1.193 MHz < 2 CLK2
8284 GATE2
FF
Ecouteur EN

PCLK Vers les Ecouteurs


2.383MHz
(1/2 CLK)
Port
PB1
Data
PB0

8255 PPI PC5

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


10/ 15
Section 8.3: La forme des signaux de sorties
du Timer 8253/54
Formes de OUT0, 1, 2
IBM PC a programmé le compteur 0 du Timer8253/54 en mode 3 (signal carré) avec le nombre
maximum 65536 (donc son registre est chargé avec la valeur 0000H), pour obtenir une fréquence de
18.2Hz. Puisque le nombre à charger est pair (65536)  le rapport cyclique de OUT0 est de 50% .
1.193MHz  TCLK0 = 838ns

CLK0 =
CLK1 =
CLK2

OUT0

18.2Hz  Tout0 = 838ns x 65536

IBM PC a programmé le compteur 1 du Timer8253/54 en mode 2 (Générateur de pulses) avec le


nombre 18 (donc son registre est chargé avec la valeur 12H), pour obtenir une fréquence de 66278Hz.
OUT1 reste haut pendant 17 périodes de CLK et s’annule pendant la dernière pulsation.

OUT1

66.278Hz  Tout0 = 838ns x 18

IBM PC a programmé le compteur 2 du Timer8253/54 en mode 3 (signal carré) avec le nombre 1331
(donc son registre est chargé avec la valeur 0533H), pour obtenir une fréquence de 896Hz. Puisque le
nombre à charger est impair (1331)  le rapport cyclique de OUT0 n’est pas 50%  (N+1)/2 pulses à
l’état haut et (N-1)/2 pulses à l’état bas.

OUT2

896Hz  Tout0 = 838ns x 1331


11/ 15

La forme des signaux de sorties du Timer 8253/54

Modes d’Opérations du Timer 8253/54


Que s’il y’a un nouveau N ou
MODE 0 : Interruption au compte final Un nouveau Octet de contrôle

A condition GATE = 1

N x TCLK

GATE
X

A condition Gate = 1
OUT
N x TCLK + X

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


12/ 15

La forme des signaux de sorties du Timer 8253/54

MODE 1 : Programmable pulse (1 seule fois)  Hardware Triggerable One-Shot

Charger le compteur ENSUITE 


GATE

GATE

OUT

N x TCLK

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


13/ 15

La forme des signaux de sorties du Timer 8253/54

MODE 2 : Générateur de pulses (Rate Generator) Charger le compteur de N

A condition GATE = 1

OUT

N x TCLK
1 x TCLK

MODE 3 : Générateur d’un signal carré Charger le compteur de N

A condition GATE = 1

OUT

N/2 x TCLK N/2 x TCLK

Ou bien (N+1)/2 x TCLK (N-1)/2 x TCLK


Si N est
impair
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
14/15

La forme des signaux de sorties du Timer 8253/54

MODE 4 : Programmable pulse par logiciel  Software Triggerable Strobe


Charger le compteur de N

A condition GATE = 1

OUT

N x TCLK
1 x TCLK

Note: Ce mode est semblable au Mode 2, seulement Que si le compteur


est chargé à nouveau de N
Ou
Un nouveau Octet de contrôle
est programmé

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs


15/ 15

La forme des signaux de sorties du Timer 8253/54

MODE 5 : Programmable pulse par Hardware Hardware Triggerable Strobe (par GATE)
Charger le compteur de N

GATE

OUT

N x TCLK
1 x TCLK

R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs

Vous aimerez peut-être aussi