0% ont trouvé ce document utile (0 vote)
635 vues23 pages

Microprocesseurs et Microcontrôleurs: Cours et Applications

Le document décrit les composants clés d'un microcontrôleur, notamment un microprocesseur, de la mémoire et des interfaces d'entrée/sortie. Il explique comment les microcontrôleurs intègrent ces éléments sur une seule puce pour former un 'système sur puce'.

Transféré par

nadjib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
635 vues23 pages

Microprocesseurs et Microcontrôleurs: Cours et Applications

Le document décrit les composants clés d'un microcontrôleur, notamment un microprocesseur, de la mémoire et des interfaces d'entrée/sortie. Il explique comment les microcontrôleurs intègrent ces éléments sur une seule puce pour former un 'système sur puce'.

Transféré par

nadjib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cours microprocesseur microcontrôleur API

Introduction
Un système numérique, intégrant de l’électronique, fait souvent apparaître des fonctions ayant
pour rôle le traitement d’informations. La majorité de ces systèmes sont conçus autour d’une
structure à base de microcontrôleur ou microprocesseur. Le développement de ces
composants programmables a été rendu possible grâce l’essor considérable qu’a connu la
microélectronique et notamment les techniques d’intégration. Le microcontrôleur est né
lorsque les technologies d'intégration ont suffisamment progressé pour permettre sa
fabrication, mais aussi parce que très souvent, dans des applications tant domestiques
qu'industrielles, on a besoin de systèmes "intelligents" ou tout au moins programmables.
L'évolution du microcontrôleur a permis l'intégration de circuits complexes variés. Ces
circuits ont été intégrés sur une même puce donnant ainsi beaucoup de flexibilité et de
puissance de commande au microcontrôleur. Cette polyvalence lui permet d'occuper une place
importante dans la réalisation de systèmes de commande. Le microcontrôleur est aujourd’hui
le composant le plus adapté aux applications embarquées car il comporte sur sa puce un
certain nombre d'interfaces qui n'existent pas sur un microprocesseur, par contre il est
généralement moins puissant en terme de rapidité ou de taille de mémoire adressable et le plus
souvent cantonné aux données de 8 ou 16 bits. Un microcontrôleur se présente sous la forme
d’un circuit intégré réunissant tous les éléments d’une structure à base de microprocesseur.
Voici généralement ce que l’on trouve à l’intérieur d’un tel composant :
� Un microprocesseur (C.P.U.),
� Des bus,
� De la mémoire de donnée (RAM et EEPROM),
� De la mémoire programme (ROM, OTPROM, UVPROM ou EEPROM),
� Des interfaces parallèles pour la connexion des entrées / sorties,
� Des interfaces séries (synchrone ou asynchrone) pour le dialogue avec d’autres unités,
� Des timers pour générer ou mesurer des signaux avec une grande précision temporelle,

Les microcontrôleurs améliorent l'intégration et le coût (lié à la conception et à la réalisation)


d'un système à base de microprocesseur en rassemblant ces éléments essentiels dans un seul
circuit intégré. On parle alors de "système sur une puce" (en anglais : "System On chip"). Un
microcontrôleur (ou μC) est donc un circuit intégré rassemblant un microprocesseur et
d'autres composants tels que de la mémoire et des périphériques. Il est clair d’après cette
description qu’il est difficile de parler de microcontrôleur sans parler du microprocesseur ou
encore du processeur. Nous avons au préalable analysé un nombre important d'ouvrages
consacrés aux microcontrôleurs et aux systèmes à bases de microprocesseur ainsi que
plusieurs cours Internet proposés sur ces mêmes sujets. Les sujets abordés ici sont similaires à
ceux qui sont le plus fréquemment traités dans certains ouvrages de références et certains sites
Internet. Nous avons volontairement découpé ce cours en cinq parties indépendantes mais
complémentaires. Dans la première partie nous avons fait un rappel sur les systèmes
numériques. C'est un pré requis nécessaire pour le reste du cours mais il doit être appuyé par
un cours de systèmes logiques. Dans la deuxième partie de ce cours nous avons abordé les
systèmes micro programmés. Ces systèmes à base de microprocesseurs ou de
microcontrôleurs sont de plus en plus employés dans les systèmes numériques de commande
contrôle. Le vaste domaine de contrôle peut être découpé en trois catégories d'applications. En
premier lieu, le contrôle de processus et de commandes dans l'industrie assuré par des
microcontrôleurs 8 bits, de plus en plus par des 16 bits et même par des 32 bits. Pour citer
quelques secteurs visés parmi une multitude : les automatismes (automates et robots), les
moteurs électriques, les onduleurs et autres alimentations stabilisées, mais aussi les
climatiseurs ou encore toute la panoplie de l'électroménager. Aujourd'hui une
machine à laver et un aspirateur ne se contentent plus d'un processeur 8 bits ; ils nécessitent
un 16 bits. La deuxième catégorie concerne le contrôle de communications et flot de données,
notamment multimédias, confié suivant les contraintes et la puissance requise à des modèles
16 ou 32 bits. A ce sujet, les microcontrôleurs 32 bits se taillent la part du lion dans tous les
systèmes de communication sans fil, les modems xDSL et les applications graphiques. Ainsi,
la prochaine génération de téléphones portables n'intégrera plus seulement un, mais deux
microcontrôleurs 32 bits, à côté de l'inévitable DSP « processeur de signal ». Le deuxième
sera entièrement destiné au traitement des données multimédias. Dans cette catégorie
d'applications, les composants 16 bits ont un domaine de prédilection avec les pilotes de
disques durs, mais ils assurent également la gestion d'interfaces Ethernet ou Internet. Par
exemple, le microcontrôleur MC9S12NE64 de Freescale est un véritable « terminal Ethernet
» en une seule puce. Il intègre une pile de communications, des mémoires flash et Ram, un
module MAC (media access controller) et un émetteur/récepteur PHY dans un boîtier unique.
« Il rend la connectivité Ethernet accessible à des systèmes bas coût pour lesquels cette
possibilité n'était même pas envisageable auparavant ». Enfin, la troisième catégorie a trait au
contrôle dans l'automobile qui, lui aussi suivant les exigences en performances, fera appel à
un modèle 16 bits ou 32 bits. L'industrie automobile est particulièrement consommatrice de
microcontrôleurs. Ils interviennent soit dans le fonctionnement même du véhicule (et sa
sécurité), pour la gestion de l'allumage ou de l'injection, des freins ABS ou au niveau du
tableau de bord, soit pour le confort dans l'habitacle avec la climatisation, les rétroviseurs
électriques, le système de navigation, les modules de commande des portes, l'autoradio voire
l'informatique de loisir. Comme nous pouvons le constater, il est très difficile d’aborder dans
ce cours tous les systèmes micro programmés puisque chaque système a sa spécifité.
Toutefois les trois éléments fondamentaux d’un système micro programmé sont : le
microprocesseur ou microcontrôleur, la mémoire et les boîtiers d’entrées sorties. Tous ces
éléments sont reliés entre eux par des bus. C’est pourquoi dans le deuxième chapitre nous
examinons, l’architecture de base d’un processeur, les bus de données et d’adresses, le
problème de décodage d'adresses et nous abordons à la fin de ce chapitre la technologie des
mémoires. Nous avons essayé de montrer d'une manière simplifiée, par des figures, le
principe de fonctionnement d'un processeur. Nous avons choisis pour cela quelques exemples
faisant apparaître différentes organisations possibles de la mémoire externe. Cette partie
nécessite le même pré requis que la première partie. La troisième partie de ce cours s’intéresse
au microprocesseur. Rappelons qu’au niveau de traitement des informations, un
microprocesseur est pratiquement équivalent à un microcontrôleur. Un microcontrôleur est
dédié pour les applications industrielles de commande contrôle ne nécessitant pas
généralement un traitement d’informations de masse. Il intègre un certain nombre de
périphériques adaptés pour ce genre d’applications. On pourrait utiliser un microprocesseur
pour les mêmes fonctions mais ceci nécessiterait de rajouter des composants externes pour
chaque périphérique. Dans cette partie du cours, nous allons étudier la programmation en
langage machine et en assembleur d'un microprocesseur. L'étude complète d'un processeur
réel, comme le 80486 ou le Pentium fabriqués par Intel, dépasse largement le cadre de ce
cours : le nombre d'instructions et de registres est très élevé. Nous allons ici nous limiter à un
sous-ensemble du microprocesseur 80486 (seuls les registres et les instructions les plus
simples seront étudiés). De cette façon, nous pourrons tester sur un PC les programmes en
langage machine que nous écrirons. Nous avons insisté également dans cette partie sur
l'interaction entre le microprocesseur et les périphériques. C'est pourquoi nous avons consacré
beaucoup de pages aux interruptions qui représentent un des points forts du microprocesseur.
Afin de mieux expliquer le mécanisme des interruptions nous avons pris comme exemple le
cas du PC où le microprocesseur est censé gérer plusieurs sources d’interruptions provenant
des
périphériques. Dans ce cas la gestion des priorités est dédiée à un contrôleur d’interruption du
type PIC. Cette architecture est partiellement figée dans le cas des PC depuis le
microprocesseur 80286 (1990). Nous avons dressé à titre d’exemple un tableau récapitulatif
des interruptions normalisées utilisées dans le cas du PC. Nous avons également exposé dans
cette partie les notions de procédures et nous avons insisté sur le passage de paramètres aux
procédures que ce soit par pile ou par registre. Nous avons fini cette partie par des exemples
de programmation montrant la traduction de certains programmes du langage 'C' en langage
assembleur. Le but est bien évidemment de montrer clairement le principe utilisé par les
compilateurs de haut niveau pour le passage de paramètres aux procédures. Nous avons
proposé pour cela un certain nombre d’exemple de programmation regroupant à la fois des
procédures ‘C’ et des procédures assembleur. Nous avons donné également la démarche à
suivre pour appeler, à partir du ‘C’ des procédures assembleur et à partir de l’assembleur des
procédures ‘C’. Nous avons pris un exemple bien précieux celui de l’appel de la procédure
printf du ‘C’, à partir d’un programme assembleur. Nous avons fini cette partie par un
exemple classique de programmation, celui du tri d’un tableau. Le but de cet exemple est
surtout de montrer l’intérêt de l’utilisation des macros qui simplifient la programmation et
rendent le programme assez lisible. Cette partie nécessite une compréhension approfondie des
notions traitées dans les parties 2 et 3 et surtout un pré requis sur les langages de
programmation et en particulier le langage 'C'. Dans la quatrième partie de ce document nous
nous intéressons au microcontrôleur. Un microcontrôleur est une unité de traitement de
l’information de type microprocesseur à laquelle on a ajouté des périphériques internes
permettant de réaliser des fonctions de commande-contrôle sans nécessiter l’ajout de
composants externes. La majorité des microcontrôleurs intègrent mémoire de programme,
mémoire de données, ports d'entrée-sortie, et même horloge, bien que des bases de temps
externes puissent être employées. Certains modèles intègrent une multitude d’interfaces
série (CAN, USB, I2C, SPI,..). Tous les microcontrôleurs ont des architectures RISC (reduced
instruction set computer), ou encore microprocesseur à jeu d’instruction réduit. Plus on réduit
le nombre d’instructions, plus facile et plus rapide en est le décodage, et plus vite le
composant fonctionne. Il existe plusieurs famille de microcontrôleurs dont les plus connues
sont : Atmel AT91 , Atmel AVR , le C167 de Siemens/Infineon, Hitachi H8, Intel 8051,
Motorola 68HC11, PIC de Microchip, ST6 de STMicroelectronics, ADuC d'Analog Devices,
PICBASIC de Comfile Technology. Il est bien évident que, dans le cadre de ce cours dont le
nombre de pages doit forcément rester limité, il ne va pas être possible de donner toutes les
informations, matérielles et logicielles, relatives à tous ces microcontrôleurs. Le manuel
technique de chacun d'entre eux comporte en effet plusieurs dizaines de pages, voir parfois
une centaine. Le microcontrôleur 80C51. C’est un microcontrôleur 8 bits avec un jeu
d'instructions réduit (101 instructions). Ses instructions sont organisées autour d'un
accumulateur et de registres (quatre banques de huit registres). L'unité centrale du 80C51
incorpore un processeur booléen qui accroît considérablement la vitesse de traitement des
instructions de manipulation de bits. Cependant ses performances s’écroulent dans le cas de
calculs arithmétiques sur des entiers 8 ou 16 bits. Le jeu d’instructions du 80C51 est optimisé
pour les systèmes de contrôle 8 bits d'où un très grand nombre de fonctions de manipulation
de bit adaptées pour les dispositifs de contrôle nécessitant un fonctionnement à 2 états (ouvert
fermé ou tout ou rien). Nous avons passé en revue dans cette partie toutes les instructions du
80C51 appuyées par des exemples de programmation en assembleur simple. Nous avons
également insisté dans cette partie sur l’exploitation des périphériques qu’intègre le 80C51 et
notamment la liaison série et les ports d’entrées sorties. Nous avons finis cette partie par
l’étude des interruptions offertes par le 80C51. Ces interruptions au nombre de cinq
permettent
d’envisager des applications temps réel avec le 80C51. Bien que le mécanisme de gestion de
priorité est assez simple avec le 80C51 puisqu’il offre uniquement deux niveaux de priorité, il
permet toutefois de donner une idée assez clair quant à la gestion des priorités dans le cas de
la présence simultané de deux interruptions.

I PRESENTATION DU BINAIRE
Vers la fin des années 30, Claude Shannon démontra qu'à l'aide de "contacteurs"
(interrupteurs) fermés pour "vrai" et ouverts pour "faux" il était possible d'effectuer des
opérations logiques en associant le nombre " 1 " pour "vrai" et "0" pour "faux". Ce codage de
l'information est nommé base binaire. C’est avec ce codage que fonctionnent les ordinateurs.
Il consiste à utiliser deux états (représentés par les chiffres 0 et 1) pour coder les informations.
L'homme travaille quant à lui avec 10 chiffres (0,1,2,3,4,5,6,7,8,9), on parle alors de base
décimale.

I 1 BIT

Bit signifie "binary digit", c'est-à-dire 0 ou 1 en numérotation binaire. C'est la plus petite unité
d'information manipulable par une machine numérique. Il est possible de représenter
physiquement cette information binaire :
- par un signal électrique ou magnétique, qui, lorsqu'elle atteint une certaine valeur,
correspond à la valeur 1.
- grâce à des bistables, c'est-à-dire des composants électroniques qui ont deux états d'équilibre
(un correspond à l'état 1, l'autre à 0)

1.2 OCTET

L'octet est une unité d'information composée de 8 bits. Il permet de stocker un caractère, telle
qu'une lettre, un chiffre ... Ce regroupement de nombres par série de 8 permet une lisibilité
plus grande, au même titre que l'on apprécie, en base décimale, de regrouper les nombres par
trois pour pouvoir distinguer les milliers. Par exemple le nombre 1 256 245 est plus lisible que
1256245. Une unité d'information composée de 16 bits est généralement appelée mot (en
anglais word). Une unité d'information de 32 bits de longueur est appelée double mot (en
anglais double word, d'où l'appellation dword). Pour un octet, le plus petit nombre est 0
(représenté par huit zéros 00000000), le plus grand est 255 (représenté par huit chiffre "un"
11111111), ce qui représente 256 possibilités de valeurs différentes.

Un kilo-octet (Ko) = 1000 octets


Un méga-octet (Mo) = 1000 Ko = 1 000 000 octets
Un giga-octet (Go) = 1000 Mo = 1 000 000 000 octets
Un tera-octet (To) = 1000 Go = 1 000 000 000 000 octets

II.LES MEMOIRES
Une mémoire est un circuit à semi-conducteur permettant d’enregistrer, de
conserver et de restituer des informations (instructions et variables). C’est cette
capacité de mémorisation qui explique la polyvalence des systèmes numériques et
leur adaptabilité à de nombreuses situations. Les informations peuvent être écrites ou
lues. Il y a écriture lorsqu'on enregistre des informations en mémoire, lecture
lorsqu'on récupère des informations précédemment enregistrées.

III.ORGANISATION D’UNE MEMOIRE


Avec une adresse de n bits il est possible de référencer au plus 2n cases mémoire. Chaque case
est remplie par un mot de données (sa longueur m est toujours une puissance de 2). Le
nombre de fils d’adresses d’un boîtier mémoire définit donc le nombre de cases mémoire que
comprend le boîtier. Le nombre de fils de données définit la taille des données que l’on peut
sauvegarder dans chaque case mémoire. En plus du bus d’adresses et du bus de données, un
boîtier mémoire comprend une entrée de commande qui permet de définir le type d’action que
l’on effectue avec la mémoire (lecture/écriture) et une entrée de sélection qui permet de
mettre les entrées/sorties du boîtier en haute impédance. On peut donc schématiser un circuit
mémoire par la Figure où l’on peut distinguer :

schéma d'une mémoire


les entrées d’adresses
les entrées de données
les sorties de données
les entrées de commandes :
- une entrée de sélection de lecture ou d’écriture. (R/W)
- une entrée de sélection du circuit. (CS)

Une opération de lecture ou d’écriture de la mémoire suit toujours le même cycle ( Figure 7) :
1. sélection de l’adresse
2. choix de l’opération à effectuer (R/W)
3. sélection de la mémoire (CS = 0)
4. lecture ou écriture la donnée

III.1 CARACTERISTIQUES D’UNE MEMOIRE


La capacité : c’est le nombre total de bits que contient la mémoire. Elle
s’exprime aussi souvent en octet.
Le format des données : c’est le nombre de bits que l’on peut mémoriser par
case mémoire. On dit aussi que c’est la largeur du mot mémorisable.
Le temps d’accès : c’est le temps qui s'écoule entre l'instant où a été lancée
une opération de lecture/écriture en mémoire et l'instant où la première
information est disponible sur le bus de données.
Le temps de cycle : il représente l'intervalle minimum qui doit séparer deux
demandes successives de lecture ou d'écriture.
Le débit : c’est le nombre maximum d'informations lues ou écrites par
seconde.
Schéma type de tout appareil programmable.

Architecture de base d’un micro-ordinateur


. I.III.22DIFFERENTS TYPES DE MEMOIRESLES MEMOIRES.

La mémoire vive, généralement appelée RAM (Random Access Memory, mémoire à accès
aléatoire), est la mémoire principale du système, c'est-à-dire qu'il s'agit d'un espace
permettant de stocker de manière temporaire des données lors de l'exécution d'un programme.
En effet le stockage de données dans la mémoire vive est temporaire, contrairement au
stockage de données sur une mémoire de masse telle que le disque dur, car elle permet
uniquement de stocker des données tant qu'elle est alimentée électriquement. Ainsi, à chaque
fois que l'ordinateur est éteint, toutes les données présentes en mémoire sont
irrémédiablement effacées. La mémoire morte, appelée ROM pour Read Only Memory
(mémoire à lecture seulement) est un type de mémoire permettant de conserver les
informations qui y sont contenues même lorsque la mémoire n'est plus alimentée
électriquement. A la base ce type de mémoire ne peut être accédée qu'en lecture. Toutefois il
est désormais possible d'enregistrer des informations dans certaines mémoires de type ROM.
V.1 Fonctionnement de la mémoire vive.
La mémoire vive est constituée de centaines de milliers de petits condensateurs emmagasinant
des charges. Lorsqu'il est chargé, l'état logique du condensateur est égal à 1, dans le cas
contraire il est à 0, ce qui signifie que chaque condensateur représente un bit de la mémoire.
Etant donné que les condensateurs se déchargent, il faut constamment les recharger (le terme
exact est rafraîchir) à un intervalle de temps régulier appelé cycle de rafraîchissement (d'une
durée d'environ 15 nanosecondes (ns) pour une mémoire DRAM). Chaque condensateur est
couplé à un transistor (de type MOS) permettant de "récupérer" ou de modifier l'état du
condensateur. Ces transistors sont rangés sous forme de tableau (matrice), c'est-à-dire que l'on
accède à une "case mémoire" (aussi appelée point mémoire) par une ligne et une colonne. Un
boîtier mémoire est donc constitué d'un ensemble d'entités mémoire élémentaires (cellules
mémoire) stockant un élément binaire (bit : Binary digiT) ayant pour valeur 0 ou 1. Ces
cellules sont groupées en mot (word) de p bits (en général p=1 ou 8 bits). Le nombre n de
cases mémoire de p bits appelé capacité ou taille de la mémoire s'exprime en Kilo
(1Ko=210=1024) ou en Méga ( 1Mo=220=1024*1024=1048576).
Chaque point mémoire est donc caractérisé par une adresse, correspondant à un numéro de
ligne et un numéro de colonne. Or cet accès n'est pas instantané et s'effectue pendant un délai
appelé temps de latence. Par conséquent l'accès à une donnée en mémoire dure un temps égal
au temps de cycle auquel il faut ajouter le temps de latence. Ainsi, pour une mémoire de type
DRAM, le temps d'accès est de 60 nanosecondes (35 ns de délai de cycle et 25 ns de temps

IV. LE MICROPROCESSEUR 8086


Il se présente sous forme d'un boîtier de 40 broches alimenté par une alimentation unique de
5V. (Figure 9: brochage du 8086)
Il possède un bus multiplexé adresse/donnée de 20 bits.
Le bus de donnée occupe 16 bits ce qui permet d'échanger des mots de 2 octets
Le bus d'adresse occupe 20 bits ce qui permet d'adresser 1 Mo (220)
Il est entièrement compatible avec le 8088, le jeu d'instruction est identique. La seule
différence réside dans la taille du bus de données, celui du 8088 fait seulement 8 bits. Les
programmes tourneront donc un peu plus lentement sur ce dernier puisqu'il doit échanger les
mots de 16 bits en deux étapes.
Tous les registres sont de 16 bits, mais pour garder la compatibilité avec le 8085/8088,
certains registres sont découpés en deux et on peut accéder séparément à la partie haute et à la
partie basse.
description des différentes broches de 8086 :
CLK Entrée du signal d’horloge qui cadence le fonctionnement du microprocesseur.
RESET Entrée de remise à zéro du microprocesseur.
READY Entrée de synchronisation avec la mémoire.
TEST\ Entrée de synchronisation du microprocesseur d’un événement
extérieur.
MN/MX\ Entrée de choix du mode de fonctionnement du microprocesseur :
MN : Mode minimum.
MX : Mode maximum.
NMI Entrée de demande d’interruption non masquée.
INTR Entrée de demande d’interruption masquée.
INTA\ Sortie indique la réponse à une demande d’interruption.
HOLD et HLDA Signaux de l’accès direct mémoire par le circuit DMA.
S0….S7 Signaux d’état du μp en mode STEP BY STEP (pas à pas).
A0 ... A19 Signaux de bus d’adresse de 20 bits (1Mo espace adressable).
D0 ... D15 Signaux de bus de données de 16 bits.
RD\ Signal de demande de lecture.
WR\ Signal de demande d’écriture.

M/IO\ Signal de séparation d’accès mémoire ou port :


M/IO\ = 1 : accès mémoire.
M/IO\ = 0 : accès port d’E/S
DEN Sortie indique que l’information qui circule dans bus AD est une donnée.
DT/R\ Sortie indique le sens de transfert des données sur la bus de données:
DT/R\ = 1 : le bus de donnée en sortie.
DT/R\ = 0 : le bus de donnée en entrée.
BHE\ Signal d’accès de l’octet du poids fort sur la bus (D8 / D15).
ALE Sortie indique que l’information qui circule dans bus AD est une adresse.

IV.1. LES REGISTRES DU 8086

Tous les registres et le bus interne du 8086 sont structurés en 16 bits. Vu de


l'utilisateur, le 8086 comprend 3 groupes de 4 registres de 16 bits, un registre d'état de
9 bits et un compteur programme de 16 bits non accessible par l'utilisateur.

IV.3. LES REGISTRES GENERAUX

Les registres généraux participent aux opérations arithmétiques et logiques


ainsi qu'à l'adressage. Chaque demi-registre est accessible comme registre de 8 bits, le
8086 peut donc effectuer des opérations 8 bits d'une façon compatible avec le 8080.

AX : Accumulateur : Usage général, Obligatoire pour la multiplication


et la division, Ne peut pas servir pour l'adressage
BX : Base : Usage général, Adressage, (Par défaut, son offset est relatif
au segment DS)
CX : Comptage et calcul : Usage général, Utilisé par certaines
instruction comme compteur de répétition. Ne peut pas servir pour l'adressage
DX : Data : Usage général, Dans la multiplication et la division 16 bits,
il sert comme extension au registre AX pour contenir un nombre 32 bits, Ne
peut pas servir pour l'adressage.
IV.4. LES REGISTRES D'ADRESSAGE (OFFSET)

Ces registres de 16 bits permettent l'adressage d'un opérande à l'intérieur d'un


segment de 64 ko (216 positions mémoires)
SP : Pointeur de Pile : Utilisé pour l'accès à la pile.
Pointe sur la tête de la pile. Par défaut, son offset est relatif à SS
BP : Pointeur de Base : Adressage comme registre de
base, (Par défaut, son offset est relatif à SS), Usage général
SI : Registre d'index (source) : Adressage comme
registre d’index, (Par défaut, son offset est relatif à DS), Certaines
instruction de déplacement de donnés l'utilise comme index de
l'opérande source. L'opérande destination étant indexé par DI, Usage
général
DI : Registre d'index (destination) : Adressage comme
registre d’index, (par défaut, son offset est relatif à DS), Certaines
instruction de déplacement de donnés l'utilise comme index de
l'opérande destination, l'opérande destination étant indexé par SI.

IV.5. LE REGISTRE D'ETAT (FLAGS)

Six bits reflètent les résultats d'une opération arithmétique ou logique et 3 participent au
control du processeur.
C : (Carry) indique le dépassement de capacité de 1 sur une opération 8
bits ou 16 bits. Ce flag peut être utilisé par des instructions de saut conditionnel,
des calculs arithmétiques en chaîne ou dans des opérations de rotation.
P : (Parité) indique que le nombre de 1 est un nombre pair. Ce flag est
utilisé avec certains sauts conditionnels.
A : (retenue Arithmétique) indique une retenue sur les 4 bits (digit) de
poids faible. Par exemple quand la somme des 2 digits de poids faible dépasse F
(15)
Z : (Zéro) Indique que le résultat d'une opération arithmétique ou
logique est nul. Il est utilisé dans plusieurs instructions de sauts conditionnels.
S : (Signe) reproduit le bit de poids fort d'une quantité signée sur 8 bits
ou sur 16 bits. L'arithmétique signée fonctionne en complément à 2. S=0 :
positif, S=1 : négatif. Ce flag sert lors de sauts conditionnels.
T : (Trap) met le CPU en mode pas à pas pour faciliter la recherche des
défauts d'exécution.
I : (Interruption) autorise ou non la reconnaissance des interruptions : I
= 0 alors Interruptions autorisées. I = 1 alors Interruptions non autorisées
D : (Direction) fixe la direction de l'auto-inc/décrémentation de SI et
DI lors des instructions de manipulation de chaînes. D = 0 alors incrémentation
des index. D = 1 alors décrémentation des index
O : (Overflow) indique un dépassement de capacité quand on travaille
avec des nombres signés. Comme par exemple si la somme de 2 nombres
positifs donne un nombre négatif ou inversement. (40h + 40h = 80h et O=1)
V LES MODES D’ADRESSAGE
Dans la suite on utilisera les abréviations suivantes :

La structure la plus générale d’une instruction est la suivante : INST op1, op2
L’opération est réalisée entre les 2 opérandes et le résultat est toujours
récupéré dans l’opérande de gauche. Il y a aussi des instructions qui agissent sur un
seul opérande Les opérandes peuvent être des registres, des constantes ou le contenu
de cases mémoire, on appelle ça le mode d’adressage :
Adressage registre (R) : L'opération se fait sur un ou 2 registres (INST R, R ; INST R)

Exemples : INC AX : incrémenter le registre AX


MOV AX, BX : Copier le contenu de BX dans AX
Adressage Immédiat (IM) : Un des opérandes est une constante
(valeur) :
INST R , im
INST taille [adr] , im
Exemples :
MOV AX, 243 : charger le registre AX par le nombre décimal 243
ADD AX, 243h : additionner le registre AX avec le nombre hexadécimal 243
MOV AX, 0xA243 : Quand le chiffre de gauche du nombre hexadécimal est
une lettre, il est préférable d'utiliser le préfix 0x pour l'hexadécimal
MOV AL, 'a' : Charger le registre AL par le code ASCII du caractère 'a'
MOV AX, 'a' : Charger le registre AH par 00 et le registre AL par le code
ASCII du caractère 'a'
MOV AX,'ab' : Charger AH par 'a' et AL par 'b'
Adressage direct (DA) : Un des deux opérandes se trouve en mémoire.
L’adresse de la case mémoire ou plus précisément son Offset est précisé
directement dans l’instruction. L’adresse Rseg:Off doit être placée entre [ ], si le
segment n’est pas précisé, DS est pris par défaut
INST R , [adr]
INST [adr] , R
INST taille [adr] , im
Exemples :
MOV AX, [243] : Copier le contenu de la mémoire d'adresse DS:243 dans AX
MOV [123], AX : Copier le contenu de AX dan la mémoire d'adresse DS:123
MOV AX, [SS:243] : Copier le contenu de la mémoire SS:243 dans AX
Adressage indirect (IR) : Un des deux opérandes se trouve en mémoire.
L’offset de l’adresse n’est pas précisé directement dans l'instruction, il se trouve
dans l’un des 4 registres d’offset BX, BP, SI ou DI et c’est le registre qui sera
précisé dans l’instruction : [Rseg : Roff].
INST R , [Rseg : Roff]
INST [Rseg : Roff] , R
INST taille [Rseg : Roff] , im

V.1. LA PILE :
V.1 a .NOTION DE PILE
Les piles offrent un nouveau moyen d’accéder à des données en mémoire
principale, qui est très utilisé pour stocker temporairement des valeurs. Une pile est
une zone de mémoire et un pointeur qui conserve l’adresse du sommet de la pile.

V.1.B. INSTRUCTIONS PUSH ET POP

Deux nouvelles instructions, PUSH et POP, permettent de manipuler la pile.


PUSH registre empile le contenu du registre sur la pile.
POP registre retire la valeur en haut de la pile et la place dans le registre
spécifié.
Exemple : transfert de AX vers BX en passant par la pile.
PUSH AX ; Pile <- AX
POP BX ; BX <- Pile
(Note : cet exemple n’est pas très utile, il vaut mieux employer MOV AX,
BX.). La pile est souvent utilisée pour sauvegarder temporairement le contenu des
registres :
AX et BX contiennent des données à conserver
PUSH AX
PUSH BX
MOV AX, valeur ; // on utilise AX
ADD AX, BX ; // et BX
MOV truc, BX
POP BX ; récupère l’ancien BX
POP AX ; et l’ancien AX
On voit que la pile peut conserver plusieurs valeurs. La valeur dépilée par POP
est la dernière valeur empilée ; c’est pourquoi on parle ici de pile LIFO (Last In First
Out, Premier Entré Dernier Sorti).
AUTOMATE PROGRAMMABLE INDUSTRIEL API

Dans toutes les entreprises industrielles on utilise différents systèmes, ceux-ci


ont pour fonctions de produire et d’améliorer les conditions de travail et
d’hygiène des personnes.
Le fonctionnement global des entreprises est décrit de cette manière :
1-Définition de l’automatisme :
L’automatisme consiste en l’étude de la commande de systèmes industriels. Les
techniques et méthodes d’automatisation sont en continuelle évolution ; elles
font appel à des technologies : électromécaniques, électronique, pneumatique,
hydraulique. Les automatismes sont présents dans tous les secteurs d’activité
(menuiserie, textile, alimentaire, automobile...).
La première amélioration des conditions de travail a été de remplacer l’énergie
humaine fournie par l’ouvrier par une machine (Partie Opérative : P.O.). Les
automatismes doivent améliorer :
2-Description d’un Système Automatisé de Production (S.A.P.) :
A. Les systèmes automatisés de production :

L’objectif de l’automatisation des systèmes est de produire, en ayant


recours le moins possible à l’homme, des produits de qualité et ce pour un coût
le plus faible possible.

Un système automatisé est un ensemble d’éléments en interaction, et


organisés dans un but précis : agir sur une matière d’oeuvre afin de lui donner
une valeur ajoutée.
Le système automatisé est soumis à des contraintes : énergétiques, de
configuration, de réglage et d’exploitation qui interviennent dans tous les modes
de marche et d’arrêt du système.

L’automatisation des processus industriels a pour finalité de réaliser ces voeux


ses objectifs principaux au nombre de quatre sont complémentaires et lies. Ils
peuvent s’énoncer ainsi. :
a. produire a qualité constante : contrairement a l’être humain, il est clair que
la machine n’est pas sujette a la fatigue de fin de journée, par conséquent la
qualité des produits sortant des chaines est généralement la même.
b. Fournir des quantités nécessaires : cette notion fait référence à
l'adaptativité, c’est dire pouvoir adapter l’offre à la demande. L’objectif est de
produire juste les quantités nécessaires à un instant donné, de façon a tendre vert
la notion de stock zero. Pour pouvoir adapter l’offre a la demande, cela se fait
rapidement et efficacement

dans un enivrement automatise( arrêter par exemple une chaine de fabrication en


période de faible demande, ou au contraire en mettre en route d’autres pour
répondre a la forte demande).
C. Structure d'un système automatisé :
Tous les systèmes automatisés possèdent une structure générale composée de 3
parties fondamentales :
- la partie opérative (P.O.) : que l’on appelle également partie puissance, c’est
la partie visible du système (corps) qui permet de transformer la matière
d’oeuvre entrante, elle est composée d’éléments mécaniques, d’actionneurs
(vérins, moteurs), de préactionneurs (distributeurs et contacteurs) et des
éléments de détection (capteurs, détecteurs). Par exemple, on va trouver des
capteurs mécaniques, pneumatiques, ´électriques ou magnétiques montes sur les
vérins. Le rôle des capteurs (ou détecteurs) est donc de contrôler, mesurer,
surveiller et informer la PC sur l’´evolution du système.
Pour réaliser les mouvements il est nécessaire de fournir une énergie à la PO.
Dans le cadre des SAP nous étudierons principalement les trois suivantes :
- La partie commande (P.C.) : C’est la partie qui traite les informations,
elle gère et contrôle le déroulement du cycle (cerveau). Ce secteur de
l’automatisme gère selon une suite logique le déroulement ordonne des
opérations à réaliser. Il reçoit des informations en provenance des capteurs de la
Partie Opérative, et les restitue vers cette même Partie Opérative en direction
des pré-actionneurs et actionneurs.
- Le pupitre : permet d’intervenir sur le système (marche, arrêt, arrêt
d’urgence...) et de visualiser son état (voyants).

3. STRUCTURE INTERNE D’UN AUTOMATE PROGRAMMABLE

Structure interne d’un API


Un automate programmable est un appareil électronique qui comporte une
mémoire programmable par un utilisateur automaticien à l’aide d’un langage
adapté, pour le stockage interne des instructions composant les fonctions
d’automatismes, par exemple :

Il permet de commander, mesurer et contrôler au moyen de modules d’entrées et


de sorties (logiques, numériques ou analogiques) différentes sortes de machines
ou de processus en environnement industriel.
La compacité, la robustesse et la facilité d’emploi des automates programmables
industriels (A.P.I.) font qu'ils sont très utilisés dans la partie commande des
systèmes industriels automatisés.
Un A.P.I. se compose :
Une unité de traitement ou processeur :
Le processeur gère l’ensemble des échanges informationnels en assurant :

Une mémoire programme :


La mémoire programme de type RAM contient les instructions à exécuter par le
processeur afin de déterminer les ordres à envoyer aux pré actionneurs reliés à
l’interface de sortie en fonction des informations recueillies par les capteurs
reliés à l’interface d’entrée.
Une mémoire de données
La mémoire de donnée permet le stockage de :
age des entrées reliées à l’interface d’entrée
intermédiaires ,…)

Une interface d’ENTREE


L’interface d’entrée permet la connexion à l’API d’une multitude de capteurs
pouvant être :

Ces différentes entrées sont mises en forme par l’interface d’entrée avant
d’être stockées dans la mémoire de données.
Une interface de SORTIE
L’interface de sortie permet la connexion à l’API d’une multitude de
préactionneurs pouvant être :

Un module d’ALIMENTATION
Le module d’alimentation transforme l’énergie externe provenant du réseau en
en la mettant en forme afin de fournir aux différents modules de l’API les
niveaux de tension nécessaires à leur bon fonctionnement.
Plusieurs niveaux de tension peuvent être utilisés par les circuits internes (3v,
5v, 12v, 24v…) il sera dimensionné en fonction des consommations des
différentes parties.
Description des éléments d’un API
Le processeur :
Son rôle consiste d’une part à organiser les différentes relations entre la zone
mémoire et les interfaces d’E/S et d’autre part a gérer les instructions du
programme.
Les interfaces :
L’interface d’Entrées comporte des adresses d’entrée, une pour chaque capteur
relie. L’interface de Sorties comporte des adresses de sorties, une pour chaque
preactionneur. Le nombre d’E/S varie suivant le type d’automate.
Les cartes d’E/S ont une modularité de 8, 16 ou 32 voies. Elles admettent ou
délivrent des tensions continues 0 - 24 Vcc.
Nature des mémoires
La mémoire de l’API est l’élément fonctionnel qui peut recevoir, conserver et
restituer des informations.
L’espace mémoire peut être divisé en deux parties :
La mémoire Programme qui permet le stockage des instructions à exécuter par
l’API.
La mémoire de données qui permet le stockage de l’état des E/S et des variables
internes.
Les mémoires utilisées dans un API peuvent être des types suivants :
R.A.M. (Random Access Memory) mémoire à accès aléatoire. Cette mémoire
doit être alimentée électriquement pour pouvoir conserver les informations. On
l’appelle également la mémoire vive.
Avant son exécution, le programme est transféré dans cette mémoire qui permet
d’atteindre des vitesses en lecture et écriture très rapides.
R.O.M. (Read Only Memory) mémoire à lecture uniquement. Appelée
également mémoire morte, elle permet de stocker des informations indéfiniment
sans aucune alimentation électrique.

P.R.O.M. (Programable Read Only Memory) mémoire de type ROM mais


Programmable. C’est une ROM que l’on peut programmer une seule fois.
E.P.R.O.M. (Erasable Programable Read Only Memory) mémoire de type
PROM que l’on peut effacer par exposition du circuit aux rayons ultra-violets.
E.E.P.R.O.M. (Electrical Erasable Programable Read Only Memory)
mémoire de type PROM que l’on peut effacer électriquement en écrivant à
nouveau sur le contenu de la mémoire. Ce type de mémoire par sa simplicité de
mise en oeuvre tend à remplacer de plus en plus la mémoire EPROM.
Exemple de carte d’extension mémoire pour un API TSX 37.Format PCMCIA
type1 - RAM 32K / 64K - EEPROM 32K / 64K

Langages de programmation pour API


Chaque automate possède son propre langage. Mais par contre, les constructeurs
proposent tous une interface logicielle répondant à la norme CEI1 1131-3. Cette
norme définit cinq langages de programmation utilisables, [15] qui sont :
– GRAFCET ou SFC : Ce langage de programmation de haut niveau permet la
programmation aisée de tous les procédés séquentiels.
– Schéma par blocs ou FBD : ce langage permet de programmer
graphiquement à l’aide de blocs, représentant des variables, des operateurs ou
des fonctions. Il permet de manipuler tous les types de variables.

– Schéma a relais ou LD : ce langage graphique est essentiellement dédie


à la programmation d’´equations booléennes (true/false).
Texte structure ou ST : ce langage est un langage textuel de haut niveau.
Il permet la programmation de tout type d’algorithme plus ou moins complexe.

Liste d’instructions ou IL : ce langage textuel de bas niveau est un langage `a


une instruction par ligne. Il peut être compare au langage assembleur.
Pour programmer l’automate, l’automaticien peut utiliser :
Une console de programmation ayant pour avantage la portabilité.
– un PC avec lequel la programmation est plus conviviale, communiquant avec
l’automate par le biais d’une liaison série RS232 ou RS485 ou d’un réseau de
terrain.
3 RESEAU DE PETRI

Introduction
La théorie des systèmes et de leur commande, l’Automatique, s’est intéressée dès ses origines
à des systèmes physiques généralement décrits par des équations différentielles ou aux
dérivées partielles.

L’avènement des ordinateurs conduit à décrire parfois l’évolution de ces systèmes par des
équations dynamiques en temps discret, ce qui ne remet pas en cause la nature continue de
cette évolution.
Les réseaux de Petri (RdP) sont un outil graphique et mathématique qui trouvent leur domaine
d’application dans un grand nombre de secteurs où les notions d’événements et d’évolutions
simultanées (parallèles) sont importantes.
Cette théorie est encore jeune car elle est née de la thèse de Carl Adam Petri, intitulée
«Communication avec des Automates » présentée en 1962 à l’université de Darmstadt.

Def :
Un réseau de Pétri (RdP) est un graphe biparti constitué de 2 sortes de noeuds : Les places
(représentées par des ronds) et les transitions (représentées par des barres). Un réseau de
Pétri (RdP) est un graphe biparti constitué de 2 sortes de noeuds : Les places (représentées
par des ronds) et les transitions (représentées par des barres).
• Graphe formé de :
- ensemble de places d’un réseau de Pétri est note par P = {P1, P2, P3,….}
- ensemble de transition d’un réseau de Pétri est note par T= {T1, T2, T3,….}
Parmi les champs d’application des RdP, on peut citer:
 La conception de logiciels temps-réel,
 Les interfaces Homme-Machine,
 Les protocoles de communication,
Modélisation d’un système événement/transition :
 Condition: modélisée à l’aide d’une place,
 Événement: modélisé à l’aide d’une transition.
 Précondition d’une transition Postcondition d’une transition

satisfaction d’une contrainte : modélisé à l’aide d’un jeton (marque).

condition vraie condition fausse

avant après

Déclenchement d’une transition tirable (franchisssable) :

I.3 Matrice d’entrée et matrice de sortie


La structure de réseau de pétri est décrite par deux matrices notées I et O qui spécifient
respectivement les poids des arcs reliant les places aux transitions et ceux reliant transitions
aux places.
Dans le cas d’un réseau de pétri de N places et K transitions, les matrices I et O sont de
dimension NxK et elles sont définies par :
I(NXK )= [iij ] et O(NXK ) =[Oij ]
Exemple de modélisation par réseaux de Pétri
a. Modélisation des opérations logiques ‘ET’ et ‘OU’

Avec un réseau de pétri, les variables sont représentées par un nombre de jetons qui peut être
positif ou nul. Si les arcs ont tous un poids égal a 1, le réseau de Pétri permet de modéliser des
opérations qui peuvent être considérées dune façon simplifiée comme des opérations logiques.
En effet, considérons par exemple le réseau de pétri de la figure 9.a, la transition T1est
sensibilisée lorsque la condition logique ET sur les trois variables x1,x2, x3 est vérifiée. Par
conséquent, si on associer a la transition T1 une variable binaire y qui prend la valeur 1 au
moment du tir et 0dans le cas contraire, cette variable matérialisera la condition.
Dune façon similaire, et avec les mêmes restrictions que précédemment, une condition de type
OU peut être modélisée comme indique sur la figure,

figure: a) type ET et b) type OU

Vous aimerez peut-être aussi