Vous êtes sur la page 1sur 38

//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

I. Présentation des systèmes à microcontrôleurs


1. Architecture d’un système programmable à base de microprocesseur
2. Microcontrôleur
II. Microcontrôleurs Intel
1. Introduction
2. Présentation du microcontrôleur INTEL 8051
a. Introduction
b. Présentation du boîtier
b.1. Présentation externe : Brochage (boitier Dual in line)
b.2. Présentation interne : Architecture interne
b.2.1. Introduction
b.2.2. Le microprocesseur
α. Unité Arithmétique et Logique (UAL)
β. Les registres généraux de traitement
b.2.3. Plan mémoire interne
α. Plan mémoire RAM
α1. Plan mémoire interne de donnée
α1.1. Zone de banc
α1.2. Zone de données à accès bit et octet
α1.3. Zone de données à accès octet
α2. Zone de registres internes et d'accès aux E/S
β. Mémoire programme
3. Modes d'adressage
a. Mode d’adressage immédiat
b. Mode d’adressage direct
c. Mode d’adressage par registre
d. Mode d’adressage indirect par registre : Mode d’adressage indexé
d1. Adressage indirect (indexé) par R0 ou R1
d2. Adressage indirect (indexé) par DPTR
e. Mode d’adressage indirect indexé ou basé indexé
e1. Adressage indirect indexé (basé indexé) par PC
e2. Adressage indirect indexé (basé indexé) par DPTR
f. Mode d’adressage au niveau bit
g. Mode d’adressage implicite
h. Mode d’adressage inhérent

4. Jeu d'instructions du 8051


a. Instruction de transfert sur octets
a1. Instructions de transfert utilisables dans la RAM interne
a2. Instructions de transfert utilisables dans la RAM externe
a3. Instructions de transfert utilisables dans la mémoire programme
b. Instructions arithmétiques
c. Instructions logiques
c1. Instructions logiques sur octets
c2. Instructions logiques sur bit : Instructions Booléennes
d. Instructions de rupture de séquence
. Sauts inconditionnels
. Sauts conditionnels
e. Instruction spéciale
f. Instructions modifiant les indicateurs

//Informatique Industrielle// Microcontrôleurs // # 1 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

III. Les entrées-Sorties


1. Aspect architectural
a. Liaisons avec l'extérieur
b. Registres internes
2. Présentation des ports d'entrées/sorties
a. Adresse
b. Structure matérielle
b1. Accès au Port en Ecriture
b2. Accès au Port en Lecture
c. Particularité du port 3
3. Système de Comptage ou de temporisation
a. Structure matérielle
a1. Compteurs (temporisateur)
a2. Registres de commande
b. Fonctionnement
b.1 Choix de la fonction comptage ou temporisation
b.2 Contrôle du fonctionnement
b.3 Conditions de fonctionnement
b.4 Choix et étude du mode de fonctionnement
b.5 Registres Associés aux Timers
4. La liaison série
a. Présentation
a1. Registres utilisés
a2. Principe
b. Principe d'utilisation
b1. En émission
b2. En réception
c. Etude des différents modes
c1. Choix de mode
c2. Fonctionnement des modes
α. Mode Synchrone : mode 0
β. Modes asynchrones
d. Vitesse de transmission en mode 1 ou 3
5. Les interruptions
a. Introduction
a1. Définitions
a2. Types d’interruptions
a3. Cas du 8051 : Schéma de principe
b. Fonctionnement :
b1. Registres de gestion des interruptions
b2. Notion de validation
b3. Notion de priorité d’Interruption
b4. Adresses de branchement lors d'une interruption

Annexe : Liste des instructions


1. Symboles utilisés dans le jeu d’instructions
2. Jeu d’instructions du MCS51
a. Instructions Arithmétiques
b. Instructions Logiques
c. Instructions de Transferts de données
d. Instructions Booléennes
e. Instructions de saut

//Informatique Industrielle// Microcontrôleurs // # 2 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

I. Présentation des systèmes à microcontrôleurs :


1. Architecture d’un système programmable à base de microprocesseur :
En se référant à l’architecture de VAN NEUMAN (ou Harvard) le schéma synoptique d’un
système programmable peut être donné par le schéma synoptique suivant :

Dans ce schéma :
✓ AB : Bus d’adresse
✓ DB : Bus de données
✓ CB : Bus de contrôle
✓ µP ou UC : Microprocesseur, Unité de Calcul ou Unité Centrale de Traitement.
✓ PROG MEM : Zone mémoire programme. Généralement il s’agit d’une mémoire morte pour
contenir les programmes permanents et les données constantes.
✓ DATA MEM : Zone mémoire de données changeantes. C’est une mémoire vive pour contenir
les informations (données ou programmes) à caractère non permanent.
✓ ITF : Interface d’entrée/sortie ou coupleur d’entrées/sorties
✓ I/O : Lignes d’Entrées/sorties (Ports, liaison série…). Il s’agit généralement de ports
d’entrées/sorties de type tout ou rien. Mais on peut avoir également des entrées/sorties
analogiques
✓ AUX : Auxiliaires (Temporisateur, Compteur, gestionnaires d'interruptions, etc…).

2. Notion de Microcontrôleur :
Définition :
Un microcontrôleur est un dispositif numérique programmable présenté sous forme de circuit
intégré et pouvant contenir les unités suintes :
➢ Un microprocesseur
➢ Une interface parallèle
➢ Une interface série
➢ Un Timer programmable
➢ Des entrées sorties/analogiques éventuelles
➢ Etc.
Note :
Un microcontrôleur peut intégrer toutes ces unités ou au moins une partie entre elles. La mise en
œuvre, d’une application, est plus simple que la réalisation par microprocesseur mais avec moins de
ressources et moins de performances (Vitesse, Taille mémoire par exemple, Jeu d’instruction, etc.)

//Informatique Industrielle// Microcontrôleurs // # 3 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Si le microcontrôleur ne contient pas de mémoire interne ou si la taille de cette mémoire ne suffit pas
pour une application quelconque alors l’utilisateur se trouve obligé de câbler une mémoire externe
dont la taille dépend du dimensionnement du système à piloter.

Constructeurs :
Il y a plusieurs constructeurs et plusieurs familles de microcontrôleurs. On donne ci-après quelques-
uns des plus connus :

Intel
Motorola
Texas
Thomson
Microchip
Atmel
Philips
Siemens
Etc

Note :
On s’intéresse dans cette étude à la famille Intel et plus particulièrement au 8051 et au 8052.

II. Microcontrôleurs Intel :


1. Introduction :
Les premiers microcontrôleurs Intel sont apparus vers la fin des années 70 (8048 en 1976).

Exemples de références :
✓ 8031 : Ce microcontrôleur ne contient pas de zone mémoire de programme. Celle-ci
est donc externe.
✓ 8051 : Pour ce microcontrôleur la zone mémoire de programme est une mémoire
morte de type ROM (4 ko).
✓ 8751 : La zone PROG pour le 8751 est une mémoire morte REPROM (4 ko).
Note :
➢ Pour le 8031 il est nécessaire de se servir des PORTS d'entrées/sorties en tant que bus
d'adresses et bus de données afin d'accéder à une mémoire programme extérieure au µC.

➢ La mémoire programme du 8051 est une mémoire morte de type ROM. Pour toute application
il faudrait disposer d’un appareil de programmation capable de programmer ce type de
composant. Il faut noter que, une fois, programmé le contenu de ce circuit ne peut plus être
modifié. Si une erreur a été commise lors de la programmation de ce composant il n'est plus
possible de la corriger.

➢ La mémoire programme du 8751 est une mémoire reprogrammable. Cela nous permet, en cas
d'erreur, d'effacer le programme grâce à un effaceur à rayonnement ultraviolet et de
reprogrammer le µC. Cette opération ne peut être faite qu’un certain nombre de fois (nombre
de programmation donné par le constructeur).

Notion de Port :
Un PORT est un ensemble de broches (pin ou "pattes") du circuit sur lesquelles il est possible de
recevoir ou d'envoyer des informations.

Information :
➢ Pour les circuits 8051 et 8751 qui possèdent déjà une mémoire programme de 4K octets, il est
possible d'augmenter la taille de la mémoire programme par l'adjonction d'un boîtier externe.
Dans ce cas d’utilisation une partie des PORTS d'entrées/sorties est utilisée pour constituer le
bus d’adresse et le bus de données pour générer les adresses destinées à cette mémoire
externe et en récupérer des données représentant des codes ou des constantes.

//Informatique Industrielle// Microcontrôleurs // # 4 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

➢ Pour tous les circuits, il est possible d'augmenter la mémoire de données par l'adjonction d'une
mémoire externe au microcontrôleur.

2. Présentation du microcontrôleur INTEL 8051 :


c. Introduction :
On va faire l’étude de ce microcontrôleur en développant les points suivants :
Présentation du boîtier : Architecture (architecture externe, architecture interne)
Modes d’adressage
Jeu d’instructions
Compteur/Timer
Interruptions
Communication série

d. Présentation du boîtier :
b.1. Présentation externe : Brochage (boitier Dual in line)

Brochage du Microcontrôleur 8051

➢ VCC (pin 40) : Borne + 5 volts de l'alimentation


➢ VSS (pin 20) : Borne 0 volts de l'alimentation.
➢ XTAL1, XTAL2 : (pin 19,18), Broches de câblage du quartz ou d'entrée d'horloge (3,5 à 12
MHz).

//Informatique Industrielle// Microcontrôleurs // # 5 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Exemple de câblage :

➢ RST (pin 9) : Entrée Reset


C’est une entrée active sur niveau haut. Elle permet de faire le démarrage du logiciel du
microcontrôleur.
Exemple de câblage :
✓ RESET automatique par réseau RC:

✓ RESET par bouton poussoir :

✓ Combinaison des commandes :

//Informatique Industrielle// Microcontrôleurs // # 6 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Information :
Lorsque le microcontrôleur reçoit un niveau haut sur l’entrée RESET alors le système va à
l’adresse 0000 de la mémoire programme pour rechercher le premier code opération qu’il doit
exécuter. On a trois cases réservées pour opérer, juste, un saut à un endroit où il y a assez de
place pour continuer la suite de la tâche.

➢ Ports d’Entrées/Sorties :
Le 8051 dispose de 4 ports P0, P1, P2 et P3 destinés au contrôle et commande de
processus. Chaque port est constitué de 8 lignes utilisables en entrées ou en sorties sans aucune
configuration préalable. Les lignes d’un port peuvent être utilisées toutes en entrée ou toutes en
sortie ou les unes en entrées et les autres en sorties.

✓ Port P0 : (pin :39, 38, ……32)


Les 8 lignes de ce port sont identifiées par :
P0.0, P0.1, ……………., P0.7
✓ Port P1 : (pin :1, 2, ……8)
Les 8 lignes de ce port sont identifiées par :
P1.0, P1.1, ……………., P1.7
✓ Port P2 : (pin :20, 21, ……27)
Les 8 lignes de ce port sont identifiées par :
P2.0, P2.1, ……………., P2.7
✓ Port P3 : (pin :10, 11, ……17)
Les 8 lignes de ce port sont identifiées par :
P3.0, P3.1, ……………., P3.7

Note :
o Pour une utilisation individuelle, une ligne du port Pi ( i : 0, 1, 2, 3) est identifiée par :
Pij (j :0, 1, 2, 3, 4, 5, 6, 7)

o Chaque ligne peut être utilisée, en entrée ou en sortie, indépendamment de toutes les autres.

Remarques :
On constate, dans le schéma de brochage, que les ports P0, P2 et P3 sont doublement
marquées. Cela veut dire qu’en plus de leurs fonctions principales, en tant que port, ils
peuvent assurer d’autres fonctions selon les besoins des applications. Les lignes de ces ports
portent des notations supplémentaires qui indiquent des fonctions particulières dans les
circonstances suivantes :

✓ Besoin d’une mémoire (RAM ou ROM) externe. Dans ce cas :


o Les ports P2 et P0 permettent d’avoir un bus d’adresse de 16 bits
o Le port P0 assure la fonction de bus de donnée de 8 bits par
multiplexage
o Les lignes P3.7 et P3.6 du port P3 sont utilisées comme lignes de
commande READ et WRITE respectivement

✓ Besoin de fonctions auxiliaires :


o Communication série : Réception et Emission : lignes P3.0 et P3.1
o Entrées de demande d’interruption INT0 et INT1 : lignes P3.2 et P3.3
o Entrées de comptages d’événements externes (comptage,
temporisation) : T0 et T1 : lignes P3.4 et P3.5

Besoin d’une mémoire RAM ou ROM externe :


Le microcontrôleur 8051 offre la possibilité d’adresser :
o 64 KO (Kilo octets) mémoires de données externes
o 64 KO mémoires de programme externes

//Informatique Industrielle// Microcontrôleurs // # 7 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Il est donc nécessaire de disposer de :


• Bus d’adresse de 16bits : A15…A0
• Bus de données de 8bits : D7…D0

Espace mémoire externe du µC

On constate, dans le schéma de brochage du circuit, que :


❖ Les lignes P0j (j : 0…7) du port P0 sont également marquées ADj (j :0……7)

Dans l’écriture ADj :


• A signifie Adresse
• D signifie Donnée

On comprend que le port P0, selon les besoin, peut être utilisé, automatiquement, par le système pour
générer :
✓ D’abord la partie basse d’une adresse sur 16 bits : bits A7...A0
✓ Ensuite, il sert comme Bus de données : bits : D7…D0

On dit que le port P0 est multiplexé. Intel utilise cette technique pour réduire le nombre de broches du
circuit intégré.

❖ Les lignes P2j (j : 0…7) du port P2 sont également marquées Aj (j :8……15)


Dans l’écriture Aj : A signifie Adresse

On doit comprendre que, lorsqu’il faut une mémoire externe, alors les ligne du Port P2 permettent
d’avoir les 8 bits de poids fort de l’adresse : bits A8…A15.

➢ Lignes de commande pour le câblage d’une mémoire de programme externe :


✓ EA : (External Access) : Entrée
Mise à 0V cette entrée permet le forçage sur mémoire externe.

✓ ALE : (address latch enable) : sortie.


C’est une commande qui permet de verrouiller la partie basse de l’adresse (bits A7…A0)
pour libérer le port P0 qui doit être utilisé ensuite comme Bus de données.

✓ PSEN : Sortie, (program store enable) ordre de lecture d’une mémoire programme
extreme (READ).

//Informatique Industrielle// Microcontrôleurs // # 8 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Le câblage d’une mémoire programme externe est donné par le schéma synoptique suivant:

Accès à la mémoire de programme externe


Note :
L'accès à la mémoire externe de programme est possible grâce aux ports P0 et P2 et aux signaux
de contrôle ALE, PSEN et EA . Cette opération se fait en deux phases :

✓ 1ère phase :
La partie de poids faible de l'adresse est envoyée temporairement sur le PORT0. Cette adresse
doit être mémorisée permettant ainsi de libérer le port qui sera par la suite utilisé, dans la 2ème
phase, en tant que bus de données. Cette mémorisation se fait simplement par l'utilisation d'un
registre parallèle/parallèle avec ordre de mémorisation contrôlé par commande ALE.

✓ 2ème phase :
• La partie de poids fort de l'adresse est envoyée sur le PORT2, complétant ainsi à 16 bits
l'adresse totale,
• La sortie PSEN est activée pour valider la lecture de la mémoire.
• Le PORT0 est positionné en entrée afin de recueillir les codes opératoires en provenance de
la mémoire.

Note :
Si les ports P0 et P2 sont utilisés pour la mémoire externe alors ils ne peuvent plus servir en tant
que ports d’entrée/sortie.

➢ Lignes de commande pour le câblage d’une mémoire externe de données :

Pour une RAM externe on a besoin des commandes d’ordre de lecture (Read) et d’écriture
(Write). Dans ce cas les lignes P3.6 et P3.7 sont automatiquement utilisées pour générer
ces deux commandes :

✓ P3.6 : RD : Sortie ; (Read) ordre la lecture d'une mémoire de données externes.


✓ P3.7 : WR : Sortie ; (Write) ordre d'écriture dans une mémoire de données
externes.

//Informatique Industrielle// Microcontrôleurs // # 9 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Le câblage d’une mémoire de données externe est proposé par le schéma synoptique suivant:

Accès à la mémoire de données externe

Si une mémoire de données est câblée à l’extérieur du microcontrôleur alors le port P0 et le port
P2 permettent de générer la partie basse et la partie haute des lignes d’adresse respectivement.
Une fois que l’adresse est verrouillée, le port P0 est utilisé ensuite pour former le bus de données
bidirectionnel. L’échange de données est géré par les signaux de commande ALE, RD et WR.
Sachant qu’une mémoire de données est accessible aussi bien en lecture qu'en écriture, dans la
phase 2 les signaux RD en lecture et WR en écriture remplacent le signal PSEN. Pendant ce
temps le port P0 sera positionné soit en entrée, soit en sortie, toujours en fonction de l'instruction
utilisée.

Remarque :
Si l’entrée EA : (Eternal Access) est mise à OV ce qui veut dire qu’une mémoire externe est câblée.,
alors, selon l’instruction exécutée, le microcontrôleur accède soit à la mémoire de programme soit à la
mémoire de données.

Exemple :
▪ Mettre à 00h la case mémoire d’adresse 0000h ; 0000h est dans la mémoire de
données.
▪ Saut à l’adresse 0000h ; 0000h est dans la mémoire de programme
Note :
On retient que les C de la série MCS51 font la distinction entre une zone mémoir programme et
une zone de stockage de données grâce à l'instruction exécutée.

➢ Lignes dédiées à la communication série


✓ P3.0 : RxD : Entrée de la liaison série.
✓ P3.1 : TxD : Sortie de la liaison série.
Ces deux lignes sont utilisées pour faire une communication série. Il s’agit de recevoir ou de
transmettre une donnée bit après bit.
➢ Entrées d’interruption :
Le 8251 nous offre deux entrées d’interruption. Il s’agit d’appel de sous-programme par signal
correspondant à un événement externe. C’est l’appel matériel d’un sous-programme.
✓ P3.2 : INT0 : Entrée de demande d'interruption externe n° 0.
✓ P3.3 : INT1 : Entrée de demande d'interruption externe n° 1.

//Informatique Industrielle// Microcontrôleurs // # 10 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

➢ Compteur/Timer programmable :
P3.4 : T0 : Entrée de comptage n° 0.
P3.5 : T1 : Entrée de comptage n° 1.

b.2. Présentation interne : Architecture interne :


b.2.1. Introduction :
Comme tout microprocesseur, celui utilisé par le 8051 doit avoir un certain ensemble de registres
nécessaires au fonctionnement d’un système numérique programmable. On doit retrouver les fonctions
de base de l’architecture de Van Neuman. On distingue :
✓ Un accumulateur ou des accumulateurs
✓ Un compteur ordinal (compteur programme ou pointeur d’instructions)
✓ Des registres d’adresse
✓ Des pointeurs
✓ Des registres généraux
✓ Etc.
On s’intéresse aux registres accessibles à l’utilisateur (programmeur).

b.2.2. Le microprocesseur
α. Unité Arithmétique et Logique (UAL) :
Elle reçoit deux opérandes plus le code opératoire (code de l’instruction) correspondant à la
fonction logique ou arithmétique à exécuter sur ces deux opérandes. Elle fournit le résultat
de l'opération demandée qui, généralement, sera stocké temporairement dans un registre lui
appartenant.

Dans la figure précédente le registre1 et le registre2 permettent de faire des transferts de mémoire
sans modifier le registre accumulateur.
UnitéLe registre accumulateur,
Arithmétique et Logique noté Accu et identifié par A
dans la programmation, joue un rôle très particulier pour l'UAL : il intervient dans beaucoup
d'instructions.
Dans un système à microprocesseur on peut avoir un ou plusieurs accumulateurs et un registre
d’état.

β. Les registres généraux de traitement :


❖ Accumulateur A :
Dans plusieurs microprocesseurs l’accumulateur est appelé A. C'est le registre de travail
par excellence ayant un certain nombre de fonctions spécifiques. Beaucoup d'instructions
l'utilisent en tant qu'opérande et en tant que registre temporaire de réception d’un résultat.

//Informatique Industrielle// Microcontrôleurs // # 11 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

o La taille de A est de 8 bits.

E7 E6 E5 E4 E3 E2 E1 E0 Adresse Bit
A7 A6 A5 A4 A3 A2 A1 A0 Nom du bit
Registre A ; Adresse : E0

o A est accessible au niveau de chaque bit. Les adresses des bits sont données par
le tableau précédent.
Exemple :
Mettre à 1 le bit 7 de A ; E7 1

❖ Accumulateur B :
✓ C’est un registre de 8 bits qui est utilisé spécifiquement pour les opérations de
multiplication et de division sur des données de 8 bits
Exemple :
• Multiplication non signée 8b x 8bits :
A 10h
B 20h
Multiplier (A) par (B)
Fin
Le résultat sur 16 bits est disponible dans les deux registres A et B tel que :
(A) = partie basse du résultat
= 00
(B) = partie haute du résultat
= 02
• Division non signée de 8bits par 8 bits :
Le 8051 permet de faire une division de 8 bits par 8 bits selon la procédure
suivante :
Le numérateur sur 8 bits doit être placé dans A
Le dénominateur sur 8 bits doit être placé dans B
Après la division ;
 le quotient est disponible automatiquement dans A
 le reste est disponible automatiquement dans B
Exemple :
Division de 87h par 10h:
A 87h
B 10h
Diviser (A) par (B)
Fin
Quotient = (A)
= 08
Reste = (B)
= 07h
✓ B peut servir aussi de registre de stockage provisoire. Il est, également, accessible au
niveau bit. On donne ci-dessous les adresses des différents bits de B :

F7 F6 F5 F4 F3 F2 F1 F0 Adresse Bit
B7 B6 B5 B4 B3 B2 B1 B0 Nom du Bit
Registre B: Adresse F0
❖ Registre d’état : (PSW : Program Status Word)
➢ Format :
Le PSW est un registre de 8 bits dont 7 seulement sont utilisés.

D7 D6 D5 D4 D3 D2 D1 D0 Adresse Bit
CY AC F0 RS1 RS0 OV - P Nom du Bit
Registre d'état (PSW)

//Informatique Industrielle// Microcontrôleurs // # 12 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

➢ Il contient des indicateurs (appelés aussi flags ou drapeaux) qui renseignent sur le déroulement
des instructions7
➢ Il contient également des bits que le programmeur peut utiliser dans le fonctionnement du
système
➢ Il est accessible au niveau bit. Le tableau précèdent donne l’adresse de chaque bit.
➢ Fonctions des bits du PSW :

✓ CY (D7): CARRY Flag (Indicateur de retenu)


o Ce bit est désigné également par C.
o S’il est à 1 ce bit indique un débordement sur le format binaire en 8 bits
o C’est la retenue du bit 7 sur le bit 8
Ex : 80 h+ 80h = 00 et C =1
o Il sert d’accumulateur pour le calcul booléen
Ex : f = a ou b où a , b ϵ {0 , 1}
C a
C C ou b
C=f

✓ AC (D6) : Auxiliary CARRY flag (Retenu Auxiliaire)


o S’il est à 1 ce bit indique un débordement sur 4 bits de poids faibles.
o Il est utilisé pour la conversion Décimale Codée Binaire (DCB).
✓ F0 (D5): FLAG USER
C’est un bit disponible pour l'utilisateur.
✓ RS1 (D4) et RS0 (D3): Registers selected : Sélection de banc

Les bits RS0 et RS1 permettent de faire la sélection de Banc (rangée) (1 banc parmi 4)

Notion de Banc de registres :


Les 32 premières cases mémoires RAM adressables par le 8051 sont organisées en 4 bancs de 8
registres de 8 bits. Les registres de ces bancs sont identifiés par les mêmes noms : R0, R1, R2,
R3, R4, R5, R6, R7.

Le schéma suivant donne le plan mémoire correspondant à l’emplacement de ces registres dans la
RAM interne du microcontrôleur 8051.

Zone des bancs de registres

On remarque que 4 cases mémoires différentes portent le même nom Ri : i = 0, 1, 2, …,7


Pour utiliser un registre Ri il faut d’abord choisir le banc dans lequel on veut travailler.

//Informatique Industrielle// Microcontrôleurs // # 13 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Les deux bits RS1 et RS0 permettent la sélection du banc de registres de travail. Cette
sélection est faite selon le tableau suivant :

RS1 RS0 Banque


0 0 0
0 1 1
1 0 2
1 1 3
Choix du banc actif

Ex:
RS0 0
RS1 0
R0 (R0) + 1
Ces opérations permettent d’incrémenter le registre R0 du banc 0 qui a l’adresse 00h.

✓ OV (D2): Overflow.
Ce bit indique le débordement sur les nombres signés.
✓ P (D0): Parity.
C’est un bit indicateur de parité.
o P=1 si l'Accu contient un nombre impair de bits à 1
o P=0 si l'Accu contient un nombre pair de bits à 1
Exemple :
(A) = 02h (00000010)2 → P = 1
(A) = 03h (00000011)2 → P = 0

❖ Pointeur de pile : (SP : Stack Pointer)


SP est un registre de gestion de la pile.
La gestion est automatique :
✓ Lors de l'appel de sous programmes
✓ Lors de déclenchement de programmes d'interruption.
✓ Lors d’utilisation des instructions d’empilement ou de dépilement
Notes :
➢ Des instructions spécifiques à la pile (PUSH, POP) génèrent automatiquement
l'incrémentation ou la décrémentation du SP.
➢ Lors d'une opération de stockage dans la pile (empilement) le SP est incrémenté.
➢ Lors d'une opération de lecture dans la pile (dépilement) le SP est décrémenté.

Note :
Les opérations PUSH et POP se déroulent en 2 temps :
➢ PUSH (stockage)
1) SP=SP+1
2) écriture dans la pile (stockage)
➢POP (lecture)
1) lecture dans la pile
2) SP=SP-1
Remarque :
Le SP contient donc l'adresse de la dernière valeur rentrée. On dit qu'il pointe sur la dernière
valeur rentrée.
Notes :
i. Suite à un Reset le SP est initialisé à 07h. Ceci implique que si l'on utilise la pile lors de
PUSH ou de POP ou bien lors d'appel de sous programmes, on risque d'écraser des données
dans la zone de banc de travail de la RAM interne. Donc généralement, par une instruction de
chargement du SP, on modifiera sa valeur (bien souvent avec la valeur 30h, ce qui correspond
à une adresse de pile placée au-dessus de la zone bits de la RAM), afin de ne pas avoir de
conflit.

//Informatique Industrielle// Microcontrôleurs // # 14 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

ii. Les instructions PUSH et POP travaillent en adressage direct. Donc il faut leur fournir
l'adresse de la case mémoire qu'ils doivent sauvegarder ou restituer.

Contre-exemple :
PUSH A n'existe pas car le symbole A n'est pas une adresse.

Conséquence :
Pour empiler A on peut procéder de l’une des façons suivantes :
➢ PUSH 0E0h. Car l’adresse de A est 0E0h.
➢ PUSH ACC. Car L'assembleur connaît le label ACC comme étant la valeur 0E0h

❖ Pointeur de données : (DPTR : Data Pointer Register)


DPTR est un registre de 16 bits qui permet de viser (pointer, indexer, adresser) une case
mémoire de données extérieures ou une case mémoire située dans la zone de
programme interne ou externe.

Exemple :
A ( (DPTR) + (A))

❖ Pointeur de données internes : R0 et R1

A ((R0)) ; lire le contenu de la case mémoire pointée par R0

b.2.3. Plan mémoire interne :


Ce qui distingue le microcontrôleur d’un microprocesseur c’est qu’il doit intégrer un certain nombre
de ressources matérielles :
✓ Interface d’entrées/sorties parallèles
✓ De la mémoire RAM et ROM
✓ Interface d’entrées/sorties série
✓ Compteur/Timer
✓ Etc
Le 8051 dispose de :
Une RAM de 256
Une ROM de 4 KO

α. Plan mémoire RAM :


α.1. Information :
➢ L’espace mémoire RAM est composé de deux zones de 128 octets chacune :
✓ Zone allant de 0 à 127 (00h à 7Fh) :
C’est une zone RAM, de données variables, disponible pour l’utilisateur.
Elle contient les bans de registres : R0, R1, R2, R3, R4, R5, R6, R7

✓ Zone allant de 128 à 255 (80h à 0FFh) :


Cette zone représente les registres nécessaires pour la programmation et la
configuration du système :
o Accumulateur,
o Pointeurs
o Registres de gestion des entrées /sorties parallèle et série
o Registres de gestion des auxiliaires : Compteurs, Temporisateurs,
Interruptions,

//Informatique Industrielle// Microcontrôleurs // # 15 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Elle est appelée zone de registres à fonction spéciale (Special Fonction Registers :
SFR).

Espace mémoire de données internes

Les registres nécessaires au fonctionnement de l’unité centrale de traitement sont contenus dans la
RAM interne du microcontrôleur.
α.2. Plan mémoire interne de données :

Zone de mémoire interne de données

La zone mémoire de mémoire interne est, elle-même, composée de trois zones :


✓ Zone de banques
✓ Zone mémoire à accès par Bit
✓ Zone mémoire à accès par octet

α2.1. Zone de banc :


Un banc est une suite de 8 registres, de 8 bits chacun, identifiés par :

R0, R1, R2, R3, R4, R5, R6, R7

La zone de banc est composée de 4 banques de travail contenant chacune les 8 registres
précédents. Cette zone s’étale de 00h à 1Fh. Son plan mémoire est le suivant :

Zone de banques
On donne ci-dessous les adresses des différentes Bancs de registres. L’accès à un registre de ces
bancs se fait selon les étapes suivantes :

➢ On commence d’abord par sélectionner le banc


➢ On peut ensuite accéder au registre désiré en utilisant son nom

//Informatique Industrielle// Microcontrôleurs // # 16 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Information :
La sélection d’un banc est faite grâce aux deux bits RS1 et RS0 du registre PSW. Le tableau ci-
dessous résume le fonctionnement de ces bits :

Adresse Registre Banque N° RS1 RS0


1F R7
…. …. 3 1 1
18 R0
17 R7
…. …. 2 1 0
10 R0
0F R7
…. …. 1 0 1
08 R0
07 R7
…. …. 0 0 0
00 R0
Sélection de banc
Exemple :
CLR RS0 ; clear bit RS0
SETB RS1 ; set bit RS1
INC R0 ; incrémentation de R0
DEC R5 ; décrémentation de R5
Il est toujours possible d'accéder à un registre de banque par son adresse :
Exemple :
INC 09h ; Incrémentation de R1 de la banque 1.
Note :
Si le banc est déjà sélectionné, une instruction utilisant le registre de banc est plus rapide que
celle utilisant l'adresse.
α2.2. Zone de données à accès bit et octet :
Le microcontrôleur par sa nature doit permettre de faire le traitement booléen. D’où
l’existence d’une zone mémoire où on accède à chaque bit par son adresse indépendamment
de tous ceux qui constitue l’octet avec lui. Cette zone se situe entre les adresses octets 20h et
2Fh. Son plan mémoire est le suivant :

Adresse des bits Adresse


B7 B6 B5 B4 B3 B2 B1 B0 Octet
7F 7E 7D 7C 7B 7A 79 78 2F
77 76 75 74 73 72 71 70 2E
6F 6E 6D 6C 6B 6A 69 68 2D
67 66 65 64 63 62 61 60 2C
5F 5E 5D 5C 5B 5A 59 58 2B
57 56 55 54 53 52 51 50 2A
4F 4E 4D 4C 4B 4A 49 48 29
47 46 45 44 43 42 41 40 28
3F 3E 3D 3C 3B 3A 39 38 27
37 36 35 34 33 32 31 30 26
2F 2E 2D 2C 2B 2A 29 28 25
27 26 25 24 23 22 21 20 24
1F 1E 1D 1C 1B 1A 19 18 23
17 16 15 14 13 12 11 10 22
0F 0E 0D 0C 0B 0A 09 08 21
07 06 05 04 03 02 01 00 20
Zone à accès bit et octet.

//Informatique Industrielle// Microcontrôleurs // # 17 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Note :
➢ Chaque octet de cette zone possède une adresse et est constitué par des bits où chacun
d’eux possède une adresse propre permettant au programmeur d'avoir à sa disposition des
éléments binaires pour des calculs booléens.
➢ Les instructions opérant sur les bits sont des instructions de type booléen.

Exemple :
ANL (ET logique),
ORL (OU logique),
CLR (clear bit),
SETB (set bit),
CPL (Complement bit)
etc…
Note:
Il est donc possible d'utiliser cette zone par :
➢ Des instructions de type booléen portant sur des adresses, de bits, comprises entre 00h et
7Fh,
➢ Des instructions de type octet, portant sur des adresses comprises entre 20h et 2fh,
manipulant ainsi 8 bits à la fois.
α2.3. Zone de données à accès octet :
• Cette zone est située entre les adresses 30h et 7Fh.
• Son plan mémoire est le suivant :

Adresse Octet Nombre d’octets


7F
7E 80
7D o
... c
...
t
...
35
e
34 t
33 s
32
31
30
Zone à accès octet

Note :
L’accès à cette zone mémoire est un accès classique de type octet.

//Informatique Industrielle// Microcontrôleurs // # 18 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

α3. Zone de registres internes et d'accès aux E/S :


Les registres nécessaires au fonctionnement du système (SFR) sont intégrés dans la
mémoire interne du microcontrôleur.

• Cette zone s’étale de 80h à FFh.


• Son plan mémoire est le suivant :

Registre Adresse Accès au niveau bit

B F0 B7 B6 B5 B4 B3 B2 B1 B0

A E0 A7 A6 A5 A4 A3 A2 A1 A0

PSW D0 C AC F0 RSI RS0 OV - P

IP B8 - - - PS PT1 PX1 PT0 PX0

P3 B0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0

IE A8 EA - - ES ET0 EX1 ET0 EX0

P2 A0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

SBUF 99

SCON 98 SM0 SM1 SM2 REN TB8 RB8 Ti RI

P1 90 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

TH1 8D

TH0 8C

TL1 8B

TL0 8A

TMOD 89 GATE C M1 M0 GATE C M1 M0


T T
TCON 88 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

PCON 87 SMOD - - - GF1 GF0 PD IDL

DPH 83

DPL 82

SP 81

P0 80 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

Zone de registres internes et d'entrées-sorties

Note :
➢ Chacun de ces registres est accessible par son nom ou par son adresse.
➢ Les registres dont l’adresse est divisible par 8, c’est à dire une adresse de la forme X0 ou X8
sont aussi accessibles au niveau bit.

//Informatique Industrielle// Microcontrôleurs // # 19 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

β. Mémoire programme :
L’espace mémoire ROM interne de 4 KO va de 000h à 7FFh
Cette mémoire est utilisée pour contenir :
✓ Le programme de démarrage
✓ Les vecteurs d’interruption
✓ Les programmes et les constantes à caractère permanent.
✓ Etc

Plan mémoire programme interne


dans l’espace mémoire programme globale du µC

On donne, dans le tableau suivant, les adresses correspondant au contenu que doit avoir le compteur
ordinal dans le cas d’un Reset ou d’une interruption.

Adresse Source d’interruption Symbole


0000 Reset
0003 Interruption Externe IE0
000B Timer 0 TF0
0013 Interruption Externe IE1
001B Timer 1 TF1
0023 Port Série RI/TI
Zone mémoire réservée aux interruptions

On constate que dans ce tableau :


➢ On ne dispose que de 3 octets pour lancer le système à la mise sous tension ou après l’appui sur
le bouton Reset. C’est juste de la place pour loger un saut au programme suivant qui est
généralement le programme principal.
➢ Pour chaque interruption, logicielle ou matérielle, on dispose de 8 octets qui sont généralement
suffisant pour la prise en charge d’un sous-programme d’interruption.

//Informatique Industrielle// Microcontrôleurs // # 20 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

3. Modes d'adressage :
Les modes d’adressage traduisent les façons dont une instruction est exécutée :
Une instruction peut opérer sur des constantes
Elle peut opérer sur des données de type variable
Elle peut opérer sur des variables de types adresse
Elle peut manipuler des registres
Elle peut être exécutée d’une façon inhérente
Elle peut utiliser implicitement certains registres.

a. Mode d’adressage immédiat : symbole #


Dans ce mode d’adressage la donnée à manipuler est contenue dans l’instruction et est
constituée par l’octet qui suit le code opération. Ce mode d’adressage manipule donc des
constantes.

Exemples :
MOV A , #7Ah
ADD A , #30h
MOV R1 , # 54h

b. Mode d’adressage direct :


Dans ce mode d’adressage l’instruction contient l’adresse de la case mémoire sur laquelle
porte l’opération (un des opérandes est une adresse sur 8 bits bien évidemment). Il permet de
manipuler des données de type variable.

Exemple :
MOV 56h , # 96h
MOV A, 40H
Note :
Ce mode d’adressage ne concerne que les 256 octets de la mémoire RAM interne.
Il permet donc l’accès aux registres à fonction spéciale (SFR) par leur adresse.

c. Mode d’adressage par registre :


Dans ce mode d’adressage l’instruction porte sur le contenu de registres.

Exemple :
MOV A , R1
ADD A, R0

d. Mode d’adressage indirect par registre : Mode d’adressage indexé : Symbole : @


Il s’agit, dans le cas du 8051, d’une indirection par registre. C’est un mode d’adressage qui
est décrit dans la catégorie de l’adressage pointé ou indexé sachant qu’il permet de gérer des
adresses variables.

d1. Adressage indirect (indexé) par R0 ou R1 :


Ce mode d’adressage utilise le contenu des registres R0 ou R1 comme
une adresse de 8 bits. R0 et R1 sont donc utilisés comme pointeurs pour
viser des données se trouvant dans les 128 premières cases de la mémoire
interne de données.
Notons que les SFR ne sont pas manipulables par ce mode d’adressage.
Ce mode d’adressage permet, par ailleurs, de manipuler la mémoire de
données externes par page de tailles 256 octets. Le numéro de page est
fourni par le contenu du port P2.
Exemple :
MOV R0, #30h
MOV A, @R0 ; Charger A par le contenu de la case mémoire pointée par R0

//Informatique Industrielle// Microcontrôleurs // # 21 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

d2. Adressage indirect (indexé) par DPTR :


Ce mode d’adressage utilise le contenu du registre de 16 bits DPTR comme
une adresse. Ce registre permet alors d’accéder à 64 K.O de mémoire
externe.
Exemple :
MOV DPTR , # VALEUR
MOVX A , @DPTR ; Charger A par le contenu de la case mémoire externe pointée par
;DPTR

e. Mode d’adressage indirect indexé ou basé indexé : Symbole : @


Ce mode d’adressage ne permet d’accéder qu’en mode lecture à la zone de mémoire
programme. On peut alors récupérer des données structurées sous forme de table placée dans
le code programme. Dans ce mode d’adressage le registre PC (Program Counter) ou bien le
registre DPTR (data Pointer Register) sont utilisés comme base. L’accumulateur (A) est utilisé
comme pointeur.
e1. Adressage indirect indexé (basé indexé) par PC
Exemple :
INC A
MOVC A , @ A+ PC ; A ((A) + (PC))
RET

DB 50h
DB 60h
PC : Base ; A: Index ou pointeur

e2. Adressage indirect indexé (basé indexé) par DPTR


Exemple :

MOVC A , @ A+ DPTR ; A ((A) + (DPTR))


RET

DB 50h
DB 60h
DPTR : Base ; A: Index ou pointeur
Remarques :
➢ L’instruction :
MOVC A , @A+DPTR ; Transfert depuis la mémoire programme ( C : code ou constante)

Concerne deux cases mémoires programme selon le niveau 1ogique de l’entrée


EA (EA:External Address).

Il y a donc 2 adresses possibles.


Si l’entrée EA = 1 alors A+DPTR vise une case interne
Si l’entrée EA = 0 alors A+DPTR vise une case externe
➢ L’instruction :
MOVX A, @DPTR ; Transfert depuis la mémoire externe

Vise une seule case dans la mémoire externe de données


Il y a donc une 1 seule adresse possible.

f. Mode d’adressage au niveau bit :


Le 8051 permet de faire des opérations booléennes qui traitent des valeurs de bits individuels.
Dans ce cas le rôle de l’accumulateur est assuré par l’indicateur de retenue principal C.
L’adresse du bit argument étant spécifiée par un octet. Le nombre de bits adressables est par
conséquent limité à 256.

//Informatique Industrielle// Microcontrôleurs // # 22 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Exemple :
MOV C, 00h ; Transfert de bit vers C
MOV C , P1. 3 ; Mettre la valeur du bit 3 du port P1 dans C
ORL C , / P2 . 0 ; Mettre dans C l’inverse du bit 0 du port P2
MOV 7Fh , C ; Sauvegarder la valeur du bit retenu à l’adresse bit 7Fh

g. Mode d’adressage implicite :


C’est un mode d’adressage qui utilise des registres sans que ceux-ci soient spécifiés par
l’instruction.
Exemple :
PUSH 00h
POP 0E0h
Ces deux instructions utilisent le pointeur de pile SP sans le spécifier.
h. Mode d’adressage inhérent :
Ce mode d’adressage n’utilise aucune adresse et aucun registre.
Exemple :
NOP

4. Jeu d'instructions du 8051 :


a. Instruction de transfert sur octets :
a1. Instructions de transfert utilisables dans la RAM interne :

Adressage autorisé
Mnémonique Nbre de cycles
Direct Indirect Registre Immédiat
MOV A , src x x x x 1
MOV dest , A x x x 1
MOV dest , src x x x x 2
MOV DPTR , # data16 x 2
PUSH src x 2
POP dest x 2
XCH A , reg/mem x x x 1
XCHD A , @Ri x 1

MOV : Copie une valeur en utilisant la mémoire RAM interne


MOV : Copie une valeur en utilisant la mémoire interne de données
PUSH : Empile le contenu d'une adresse de A = E0h ou label ACC
POP : Dépile le contenu de la pile et le met à l'adresse spécifiée
XCH : Echange l'Accumulateur avec 1 registre ou une case mémoire
XCHD : Echange les 4 bits ( un digit) de poids faibles

a2. Instructions de transfert utilisables dans la RAM externe :

Adr Mnémonique Nbre Cycles


8 bits MOVX A , @ Ri 2
8 bits MOVX @ Ri , A 2
8 bits MOVX A , @ DPTR 2
8 bits MOVX @ DPTR , A 2

a3. Instructions de transfert utilisables dans la mémoire programme :


Deux autres formes de transfert existent. Elles utilisent A comme
pointeur avec DPTR ou PC comme base :

MOVC A , @A + DPTR
MOVC A , @A + PC

//Informatique Industrielle// Microcontrôleurs // # 23 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Exemple :
MOV A, # NUMERO; avec NUMERO = 3
CALL TABLE

Après l’exécution de cette séquence d’instructions (A) = 30

TABLE: INC A
MOVC A , @ A + PC
RET

DB 10h
DB 20h
DB 30h

b. Instructions arithmétiques :

Adressage autorisé
Mnémonique Nbre Cycles
Direct Indirect Registre Immédiat
ADD A , src x x x x 1
ADDC A , src x x x x 1
SUBB A , src x x x x 1
INC A 1
INC dest x x x 1
INC DPTR 2
DEC A 1
DEC dest x x x 4
MUL AB 4
DIV AB 4
DA A 1

ADD : Addition de 2 octets en positionnant le carry


ADDC : Addition de 2 octets + carry en positionnant le carry
SUBB : Soustraction de 2 octets - carry en positionnant le carry
INC : Incrémentation n’affecte pas le carry
DEC : Décrémentation n’affecte pas le carry
MUL : Multiplication (A) x ( B). A contient le poids faible du résultat et B contient son
Poids fort
DIV : Division de (A) par (B) . A contient le quotient et B contient le reste
DA : Ajustement décimal au code DCB de l'Accumulateur.

Cette dernière instruction doit être utilisée après une addition de nombres déjà codés en DCB.
Cette addition positionne le drapeau de carry auxiliaire et de carry indiquant un débordement de
format permettant au processeur de faire l'ajustement en DCB.

//Informatique Industrielle// Microcontrôleurs // # 24 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

c. Instructions logiques :
c1. Instructions logiques sur octets :

Adressage autorisé
Mnémonique Nbre Cycles
Direct Indirect Registre Immédiat
ANL A , src x x x x 1
ANL src , A x 1
ANL src , # data x 2
ORL A , src x x x x 1
ORL src , A x 1
ORL src , # data x 2
XRL A , src x x x x 1
XRL src , A x 1
XRL src , # data x 2
CLR A 1
CPL A 1
RL A 1
RLC A 1
RRL A 1
RLC A 1
RR A 1
RRC A 1
SWAP 1

ANL : AND Logical (et logique)


ORL : OR Logical (ou logique)
XRL : Exclusive OR Logical (ou exclusif)
CLR A : Clear A (raz de l'accu)
CPL A : Complement A (complément à 1, inversion des bits de l'octet)
RL A : Rotate A on the Left (rotation de 1 bit vers la gauche de l'octet)
RLC A : Rotate A on the Left with Carry (rotation sur 9 bits de 1 bit vers la gauche, le carry fournit le 9ème bit)
RR A : Rotate A on the Right (rotation de 1 bit vers la droite de l'octet)
RRC A : Rotate A on the Right with Carry (rotation sur 9 bits de 1 bit vers la droite, le carry fournit le 9ème bit)
SWAP : Echange des 4 bits de poids forts avec les 4 bits de poids faibles de A.

c2. Instructions logiques sur bit : Instructions Booléennes :

Mnémonique Opération effectuée Nbre Cycles


ANL C , src C ← C et bit 2
ANL C , / bit C ← C et bit 2
ORL C , src C ← C ou bit 2
ORL C , / bit C ← C ou bit 2
MOV C , bit C ← bit 1
MOV bit , C bit ← C 2
CLR C C←0 1
CLR bit bit ← 0 1
SET C C ←1 1
SET bit bit ← 1 1
CPL C 1
C ←C
CPL bit bit ← bit 1

CLR : Clear : remise à zéro du bit


SETB : SET Bit : mise à 1 du bit
CPL : Complement : complément du bit
ANL : AND Logical : et logique entre le carry et un bit ou un bit et carry

//Informatique Industrielle// Microcontrôleurs // # 25 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

ORL : OR Logical : ou logique entre le carry et un bit ou entre un bit et carry


MOV : Transfert de bit, soit carry vers bit, soit bit vers carry.

Note :
On remarque l’absence du ou exclusif qui peut être compensé par la séquence d’instructions
suivante :
MOV C , bit1
JNB bit2 , suite
CPL C
Suite :
d. Instructions de rupture de séquence :
. Sauts inconditionnels :

Mnémonique Opération effectuée Nbre Cycles


JMP adr Saut à adr 2
JMP @ A + DPTR Saut à (A) + (DPTR) 2
CALL adr Appel de sous programme 2
RET Retour de sous programme 2
RETI Retour de sous programme d’Interruption 2
NOP Pas d’opération 1
SJMP rel Saut relatif court 2
LJMP adr Saut long 2
AJMP adr Saut absolu avec adr sur 11bits 2
LCALL adr Appel de sous-programme long 2
ACALL adr Appel de sous programme avec adr sur 11 bits

Dans ces instructions le compteur programme est chargé avec une nouvelle valeur sans condition.
Elles peuvent être classées de la façon suivante :
➢ Instructions de saut :
JMP @A+DPTR ; Saut indirect
LJMP ; Long Jump : saut absolu à une adresse spécifiée sur 16 bits
AJMP ; Absolute Jump : saut absolu à une adresse spécifiée sur 11 bits
SJMP ; Short Jump : saut court et relatif

➢ Instructions d’appel de sous-programme :


LCALL ; Long call : saut absolu à une adresse spécifiée sur 16 bits
ACALL ; Absolu call : saut absolu à une adresse spécifiée sur 11 bits

➢ Instructions de retour de sous-programme :


RET ; Return (return from sub-routine: retour de sous programme)
RETI ; Return from Interrupt (retour de sous programme d’interruption)

. Sauts conditionnels :
➢ Saut conditionnel sur octet :

Mnémonique Opération effectuée Nbre Cycles


JZ rel Saut si A = 0 2
JNZ rel Saut si A ≠ 0 2
DJNZ byte , rel Décrémentation et saut si ≠ 0 2
CJNE A , byte , rel Comparaison et Saut si A ≠ byte 2
CJNE byte , # data , rel Comparaison et Saut si byte ≠ data 2

JZ ; Jump if Zero : saut si le contenu de l'accumulateur = 0

//Informatique Industrielle// Microcontrôleurs // # 26 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

JNZ ; Jump if Not Zéro : saut si le contenu de l'accumulateur  0


CJNE ; Compare and Jump if Not Equal : compare et saute si 
DJNZ ; Decrement and Jump if Not Zero : décrémente et saute si  0.
➢ Saut conditionnel sur bit :

Mnémonique Opération effectuée Nbre Cycles


JC rel Saut si C = 0 2
JNC rel Saut si C = 0 2
JB bit , rel Saut si bit = 1 2
JNB bit , rel Saut si bit = 0 2
JBC bit ,rel Saut si bit = 1 puis bit ← 0 2

JC ;Jump if Carry (saut si le carry = 1 )


JNC ;Jump if Not Carry (saut si le carry = 0 )
JB ;Jump if Bit (saut si le bit dont l'adresse ou le nom est spécifié = 1 )
JNB ;Jump if Not Bit (saut si le bit dont l'adresse ou le nom est spécifié = 0 )
JBC ;Jump if Bit and Clear bit (saut si le bit dont l'adresse ou le nom est spécifié
=1 et raz du bit)
e. Instruction spéciale :
NOP ; No Operation : Aucune opération : Ne rien faire.
f. Instructions modifiant les indicateurs :

Drapeaux
Instruction
C OV AC
ADD X X X
ADDC X X X
SUBB X X X
MUL 0 X
DIV 0 X
DA X
RRC X
RLC X
SETB C 1
CLR C 0
CPL C X
ANL C,bit X
ANL C,/bit X
ORL C,bit X
ORL C,/bit X
MOV C,bit X
CJNE X
Instructions modifiant les drapeaux
Note :
Il n'existe pas d'instruction de comparaison directe. Une solution revient à utiliser
l'instruction CJNE qui non seulement génère un saut mais positionne le bit C :

CJNE A, # Donnée, Etiquette ;


Cette instruction exécute un branchement à Etiquette si A  Donnée et positionne le bit C :
• C = 1 si A < Donnée
• C = 0 si A  Donnée
Exemple :
CJNE A , #34h , Suite ; positionner C
Suite: JC Ainféieurà34 ; Saut si C=1 à l’étiquette Ainférieurà34 ; Sinon
continuer.

//Informatique Industrielle// Microcontrôleurs // # 27 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

III. Les entrées-Sorties


1. Aspect architectural
a. Liaisons vers l'extérieur
La communication du microcontrôleur avec l’extérieur est assurée par les lignes suivantes :
• 4 ports d’entrées sorties de 8 bits chacun :
P0 : P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
P1 : P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P0.6 P1.7
P2 : P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P0.6 P2.7
P3 : P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P0.6 P3.7
• 1 liaison série
✓ TXD (sortie : transmit data)
✓ RXD (entrée : receive data)
• 2 demandes externes d'interruption
✓ INT0 (entrée : interrupt 0)
✓ INT1 (entrée : interrupt 1)
• 2 entrées de comptage
✓ T0 (entrée : timer 0)
✓ T1 (entrée : timer 1)

Note :
Nous verrons que le 8051 dispose de 2 compteurs qui peuvent être utilisés pour comptabiliser le
nombre d'impulsions qui seront reçues sur les entrées T0 ou T1.

b. Registres internes :
Les entrées et sorties du microcontrôleur sont gérées par une série de registres internes.
➢ Registres d’entrées/sorties
Ils sont 4 et portent le nom des ports correspondants appelés P0, P1, P3, P3. C'est leur contenu
qui sera copié sur les pattes correspondantes du µC lors d'une écriture sur le port.

➢ Registres du Systèmes de Comptage :


Le système de comptage utilise 2 timers (compteurs) de 16 bits chacun et 2 registres de
contrôle :
• Registres Timers : Compteurs
 TIMER 0 : (Comptreur0) registre, de 16 bits, obtenu par la concaténation de
deux registres de 8 bits pouvant servir chacun en sous timers de 8 bits :
✓ TL0 (timer n°0 poids faible)
✓ TH0 (timer n°0 poids fort)
 TIMER 1 : (Comptreur1) registre de 16 bits obtenu par la concaténation de
deux registres de 8 bits pouvant servir chacun en sous timers de 8 bits :
✓ TL1 (timer n°1 poids faible)
✓ TH1 (timer n°1 poids fort)
• Registres de contrôle :
 TMOD (timer mode) : C’est un registre de choix du mode de
fonctionnement.
 TCON (timer control) : C’est un registre de contrôle du fonctionnement.

➢ Registres liaison série :


• SBUFF (serial buffer):
C’est un registre dans lequel on écrit pour transmettre une information ou que l’on lit
lors d'une réception.
• SCON (serial control) :
C’est un registre de gestion de la liaison série.

➢ Registres de gestion des interruptions :


• IE (Interrupt enable) : Registre de validation des interruptions)
• IP (Interrupt priority) : Registre de choix de priorité des interruptions)

//Informatique Industrielle// Microcontrôleurs // # 28 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

➢ Un registre de contrôle de l'énergie consommée :


Il s’agit du registre PCON (power control) :
Ce registre permet de contrôler l’énergie dans un objectif de réduire la consommation

2. Présentation des ports d'entrées/sorties


c. Adresse :
Port complet Considération bit
Nom Adr
Pi.0 Pi.1 Pi.2 Pi.3 Pi.4 Pi.5 Pi.6 Pi.7
du Port du port
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 Nom bit
P0 80
80 81 82 83 84 85 86 87 Adr bit
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 Nom bit
P1 90
90 91 92 93 94 95 96 97 Adr bit
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 Nom bit
P2 A0
A0 A1 A2 A3 A4 A5 A6 A7 Adr bit
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Nom bit
P3 B0
B0 B1 B2 B3 B4 B5 B6 B7 Adr bit

P0 (80h) avec 8 bits adressables notés P0.0 à P0.7 (80h à 87h)


P1 (90h) avec 8 bits adressables notés P1.0 à P1.7 (90h à 97h)
P2 (A0h) avec 8 bits adressables notés P2.0 à P2.7 (A0h à A7h)
P3 (B0h) avec 8 bits adressables notés P3.0 à P3.7 (B0h à B7h)

d. Structure matérielle :
b1. Accès au Port en Ecriture :
L'accès à ces ports en écriture est représenté par la figure suivante. La valeur est
mémorisée dans une bascule D dont la sortie vient commander un transistor.

Accès aux ports en écriture

Exemple :
ANL P0 , A ; ET du port P0 avec l'accumulateur et écriture sur le port
JBC P0.1 ; Saut si le bit = 1 et mise à 0 de ce bit

b2. Accès au Port en Lecture :


En lecture, la sortie doit être positionnée à 1 afin que le transistor soit inefficace et le système
lit l'information sur la patte du circuit. Certaines instructions, celles qui lisent et écrivent en
même temps sur le port viennent lire la valeur, en entrée, sur la sortie de la bascule. Dans ce
cas on considère le port comme un registre et non comme une entrée d'information.

//Informatique Industrielle// Microcontrôleurs // # 29 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

Accès aux ports en lecture

Note :
Suite à un RESET tous les bits des ports sont positionnés à 1 (donc en entrée).

Note :
Le port P0 est à collecteur ouvert.

c. Particularité du port 3 :
Chaque bit de ce port, outre sa fonction port, possède en plus une fonction
supplémentaire.

B7 B6 B5 B4 B3 B2 B1 B0 Adresse

RD WR T1 T0 INT 1 I NT0 TXD RXD Fonction

Double fonction du Port 3

RxD : Receive Data : Entrée de liaison série : ligne de Réception de Données


TxD : Transmit Data : Sortie de liaison série : Ligne de Transmission de Données
INT0 : Entrée de demande externe d'interruption n°0
INT1 : Entrée de demande externe d'interruption n°1
T0 : Timer0 : Entrée de comptage d'impulsions externes
T1 : Timer1 : Entrée de comptage d'impulsions externes.

WR : Entrée : Ordre d'écriture sur mémoire de donnée externe.

RD : Entrée : Ordre de lecture sur mémoire de donnée externe.

//Informatique Industrielle// Microcontrôleurs // # 30 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

3. Système de Comptage ou de temporisation :


a. Structure matérielle :
a1. Compteurs (temporisateur) :
Le système de comptage est constitué de 2 registres de 16 bits (Timers, Compteurs).
Chacun de ces deux compteurs (Timers) est composé de 2 registres de 8 bits :

Timer TIMER 0 TIMER1

Nom Reg 8 bits TH0 TL0 TH1 TL1

Ad Reg 8 bits 8C 8A 8D 8B

Deux compteurs 16 bits

H : High ; L : Low
TH : Partie haute ; TL : partie basse

a2. Registres de commande :


Le fonctionnement des Timers est assuré par 2 registres qui permettent la
configuration et le contrôle :
✓ TMOD : Registre de choix du mode de fonctionnement des TIMERS.
✓ TCON: Registre de contrôle des TIMERS et des demandes d'interruption
externes.

➢ Fonction de TMOD :
✓ Ce registre permet le choix du mode de fonctionnement de chacun des deux Timers.
✓ Il est accessible par l'adresse 89h
✓ Il n’est pas accessible par bit.
✓ Son format est le suivant :

Gestion du TIMER0 Gestion du TIMER1


Position
7 6 5 4 3 2 1 0
Bit
GATE C/₸ M1 M0 GATE C/₸ M1 M0 Symbole

Registre TMOD : Adresse 89h

✓ GATE : Validation du contrôle externe de Marche/Arrêt matériel du Compteur/Timer


✓ C/ ₸ : Choix de la fonction Compteur d’événements externes ou Timer avec horloge
interne.
✓ M1 et M0 : Choix du mode de fonctionnement

➢ Fonction de TCON :
Ce registre permet le contrôle du fonctionnement des Timers ainsi que le contrôle des
demandes d'interruptions externes.
✓ Il est accessible par l'adresse 88h
✓ Il est adressable par bit : 88h à 8Fh

//Informatique Industrielle// Microcontrôleurs // # 31 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

✓ Son format est le suivant :


Contrôle du Contrôle du Contrôle de Contrôle de
TIMER1 TIMER0 INT1 INT0
7 6 5 4 3 2 1 0 Position Bit
8F 8E 8D 8C 8B 8A 89 88 Adresse Bit
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Symbole

Registre TCON: Adresse 88h

✓ TFx : Indicateur (flag) de passage à zéro du TIMERx


✓ TRx : Commande de Marche/Arrêt logiciel du TIMERx.
✓ IEx : Interruption (flag) de demande d'interruption externe INTx.
✓ ITx : Choix de l'événement externe qui crée la demande d'interruption.
( x = 0 ou 1)
Note :
o Si ITx = 1 alors demande d'interruption externe sur front descendant.
o Si ITx = 0 alors demande d'interruption externe sur niveau bas.

Choix de l'événement générateur d'interruption pour les compteurs

b. Fonctionnement :
b.1 Choix de la fonction comptage ou temporisation :
Le choix de la fonction comptage ou temporisation est fait par le bit C/₸ du registre
TMOD. Ce choix est schématisé par la figure suivante :

Choix de l'horloge des compteurs

C/₸ = 1 : Comptage d’événements externes reçus sur la patte Tx du boîtier


C/₸ = 0 : Temporisation avec l’horloge interne du système dont la fréquence correspond du
quartz / 12.

//Informatique Industrielle// Microcontrôleurs // # 32 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

b.2 Contrôle du fonctionnement :


C'est une fonction logique qui contrôle la validation de l’horloge à l’entrée du Timer

Contrôle du fonctionnement des compteurs

Dans la figure précédente :


✓ GATE : Bit de TMOD permettant le contrôle du fonctionnement par l'extérieur grâce
l’entrée d’interruption INTx (x = 0 ou 1)
✓ INTx : Patte du µC lui permettant de recevoir une demande d'interruption externe.
Cette entrée permet aussi de déclencher, par matériel, le fonctionnement du
TIMER.
✓ TRx : TIMER RUN bit de TCON permettant un contrôle logiciel du TIMER (Setb
TRx)

b.3 Conditions de fonctionnement :


o GATE = 0 : la porte logique OU est fermée. Tout signal arrivant par INTx est bloqué.
La validation de l’horloge du TIMER est faite seulement par logiciel grâce au
bit TRx (Timer Run). On faire TRx =1 pour que le Timer puisse démarrer.

o GATE=1 : la porte logique OU est ouverte. Dans ce cas la validation de l’horloge du


Timerx est égale à :

TRx ET INT X

Conditions de fonctionnement des compteurs

Lorsque le TIMER passe par sa plus grande valeur et retombe à zéro. Le bit TFx (TIMER FLAG :
indicateur de fin de comptage noté TFx) est positionné automatiquement à 1.

//Informatique Industrielle// Microcontrôleurs // # 33 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

b.4 Choix et étude du mode de fonctionnement :


Il y a 4 modes possibles. Le choix de mode de fonctionnement se fait par
l'intermédiaire des 2 bits, M1 et M0 du TMOD :

M1 M0 mode
0 0 0
0 1 1
1 0 2
1 1 3

Choix du mode de fonctionnement des compteurs


Note :
Dans tous les cas, le Timer flag TFx est positionné par "hard" à 1, la remise à 0 se fait par
programme.

✓ Mode 0 :
Ce mode configure le TIMERx en un compteur sur 13 bits

Compteur en mode 0

Dans ce cas particulier il faut considérer le système comme étant composé d'une horloge/32
suivie d'un compteur sur 8 bits. Même si le diviseur est constitué par la partie faible du timer il
n'est pas intéressant de venir gérer cette partie-là. Cette configuration sert généralement pour
une temporisation qui ne nécessite pas une grande précision.

L'avantage de ce mode est qu'il ne faut gérer qu'un seul octet (THx).

//Informatique Industrielle// Microcontrôleurs // # 34 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

✓ Mode 1 :
Ce mode configure le TIMERx en un compteur sur 16 bits

Compteur en mode 1

Comme pour des compteurs réalisés avec des bascules, TLx est la partie faible du compteur (la
plus proche de l'horloge) et THx est la partie poids forts du compteur (la plus éloignée de
l'horloge).

✓ Mode 2 :
Ce mode configure le TIMERX en un système avec rechargement automatique dès que le
compteur arrive à zéro. TLx est le compteur et THX est le registre dont la valeur est
rechargée dans le compteur.

Compteur en mode 2

Dans ce mode il suffit d'initialiser une seule fois THx et chaque fois que TLx arrive à zéro il
est automatiquement rechargé avec la valeur de THx.
C'est ce monde-là qui est le mode préférentiel de gestion de la vitesse de transmission pour la
liaison série et c'est le TIMER1 qui est imposé pour définir la vitesse de transmission.

//Informatique Industrielle// Microcontrôleurs // # 35 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

✓ Mode 3 :
Dans ce mode le Timer0 se sépare en 2 Timers 8 bits.

Compteur en mode 3

Comme nous pouvons le constater le Timer0 a emprunté au Timer1 le bit Timer Flag (TF1) et le
bit Timer Run (TR1). Ceci implique que lorsque le Timer0 est positionné en mode 3 nous ne
pouvons plus nous rendre compte si le Timer1 a fini de compter et nous ne pouvons plus
contrôler le Marche/Arrêt du Timer1 par le bit Timer run (TR).

De ce dernier fait, si le Timer0 est en mode 3 et si le Timer1 est aussi en mode 3, le Timer1 est
arrêté.

Si le Timer0 est en mode 3 et si le Timer1 est dans un mode  3, le Timer1 fonctionne dans le
mode sélectionné mais il ne possède plus de TF1. Pour arrêter le Timer1, il faut le positionner en
mode 3.

b.5 Registres Associés aux Timers :

➢ TMOD :
Ce registre permet le choix du mode de fonctionnement des Timers.
Il est accessible par l'adresse 89h
Il n’est pas accessible par bit.

Gestion du TIMER0 Gestion du TIMER1


Position
7 6 5 4 3 2 1 0
Bit
GATE C/₸ M1 M0 GATE C/₸ M1 M0 Symbole

Registre TMOD : Adresse 89h

✓ GATE : Validation du contrôle externe de marche/arrêt du µC


✓ C/ ₸: Choix horloge du quartz ou externe
✓ M1 et M0 : Choix du mode de fonctionnement

//Informatique Industrielle// Microcontrôleurs // # 36 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

➢ TCON :
Ce registre permet le contrôle de fonctionnement des timers et ainsi que le contrôle des
demandes d'interruptions externes.
✓ Il est accessible par l'adresse 88h
✓ Il est adressable par bit : 88h à 8Fh

Contrôle du Contrôle du Contrôle de Contrôle de


TIMER1 TIMER0 INT1 INT0
7 6 5 4 3 2 1 0 Position Bit
8F 8E 8D 8C 8B 8A 89 88 Adresse Bit
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Symbole

Registre TCON: Adresse 88h

✓ TFx : Indicateur (flag) de passage à zéro du TIMERx


✓ TRx : Contrôle de marche/arrêt du TIMERx.
✓ IEx : Interruption (flag) de demande d'interruption externe INTx.
✓ ITx : Choix de l'événement externe qui crée la demande d'interruption.
( x = 0 ou 1)

Note :
o Si ITx = 1 alors demande d'interruption externe sur front descendant.
o Si ITx = 0 alors demande d'interruption externe sur niveau bas.

Choix de l'événement générateur d'interruption pour les


compteurs

Exemple d'utilisation du Timer0 :


On veut utiliser le TIMER flag pour réaliser une temporisation de 100ms. L’oscillateur est un
quartz de 6 Mhz.

✓ Etapes
1. Sélectionner la fonction TIMER du système TIMER0 (horloge : quartz de 6 Mhz) : C / ₸ = 0
2. Désactiver le Marche/Arrêt matériel (contrôle externe) : GATE = 0 : choix du contrôle logiciel
(contrôle interne)
3. Calculer le nombre d’impulsions d’horloge correspondant à l’impulsion de 100ms ;
La fréquence d'incrémentation du TIMER correspond à 6MHz/12 =500 kHz. Donc la période
est :
1/500kHz = 2µs = 0.002 ms
Il faudra alors compter 100/0.002 = 50 000 impulsions d'horloge pour avoir l’impulsion de
100ms.

//Informatique Industrielle// Microcontrôleurs // # 37 # // Pr B. Bensassi //


//Université Hassan II Casablanca Faculté des Sciences // // EEAII //2020-2021//

4. Choisir le mode : Pour compter 50000 il faut configurer le TIMER0 en mode 1 (16 bits) donc
M1=0 et M0=1.
5. Calculer la valeur de commande :
Comme le registre TMOD n'est pas accessible au niveau des bits il faut calculer en hexadécimal
la valeur d'initialisation de TMOD.

Gestion du TIMER1 Gestion du TIMER0


Position
7 6 5 4 3 2 1 0
Bit
GATE C/₸ M1 M0 GATE C/₸ M1 M0 Symbole
x x x x 0 0 0 1 01h

Registre TMOD : Adresse 89h

Cette valeur est XXXX0001b. On prend 0 pour x c qui fait 01h

6. Calculer la valeur initiale que l’on doit charger dans le compteur TIMER0
C’est le complément à 65536 ( 216 ) de 50 000 : 65536 – 50 000 = 15 536
7. Convertir cette valeur en base 16 :
(15 536)10 = (3CB0 )16
Initialiser TH0 et TL0 à cette valeur
TH0 3Ch
TL0 B0h

8. Initialiser TF0 à 0
9. Lancer le TIMER0 par la mise à 1 du bit TR0 (TIMER0 Run )

TR0 1

10. Tester le passage à 1 du bit TF0 (timer flag)

✓ Programme :

MOV TMOD , #01h ; choix du mode 1


MOV TH0 , #3Ch ; initialisation du poids fort du timer0
MOV TL0 , #0B0h ; initialisation du poids faible du timer0
CLR TF0 ; raz du flag pour s’assurer démarrage
SETB TR0 ; lancement du timer0
attente: JNB TF0, attente ; attente la fin de comptage
CLR TF0 ; mise du flag

//Informatique Industrielle// Microcontrôleurs // # 38 # // Pr B. Bensassi //

Vous aimerez peut-être aussi