Intel 8051

Intel 8051 ou 8051 est un microcontrôleur développé par Intel en 1980 pour être utilisé dans des produits embarqués. C'est toujours une architecture populaire ; de nombreux microcontrôleurs plus récents incorporent un cœur 8051, complété par...



Catégories :

Microcontrôleur - Microprocesseur

Recherche sur Google Images :


Source image : fr.wikipedia.org
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • Intel 8051 and 80C51 are members of Intel MCS-51 family of 8-bit microcontrollers. In addition to on-chip clock oscillator, 2 16-bit timers, 4 I/ O ports and... (source : cpu-world)
  • The Intel 8051 is a Harvard architecture, single chip microcontroller (µC) which was developed by Intel in 1980 for use in embedded systems.... (source : en.wikipedia)
  • ... Books on Intel 8051 microcontrollers, architecture and C programming. (source : ucpros)
Intel P8051

Intel 8051 ou 8051 est un microcontrôleur (MC) développé par Intel en 1980 pour être utilisé dans des produits embarqués. C'est toujours une architecture populaire ; de nombreux microcontrôleurs plus récents incorporent un cœur 8051, complété par un certain nombre de circuits périphériques intégrés sur la même puce, et pourvus de mémoires de plus grande capacité.

La structure d'un dispositif à microprocesseur (MP) est indiquée dans la figure ci-après.

Structure d'un dispositif à microprocesseur

Un microcontrôleur (MC) réunit ces différentes fonctions électroniques sur une même puce. Dans les paragraphes qui suivent, nous allons décrire les principales parties du microcontrôleur 8051. Le 8051 est un MC 8 bits car il traite des données sur 8 bits ; le bus de données comporte par conséquent 8 lignes ; comme la majorité des MC 8 bits, le 8051 gère des adresses en 16 bits, ce qui donne un espace adressable de 216 soit 64Koctets, où K = 210 = 1024.

Structure de l'unité centrale

L'unité centrale est le cœur du MC. Elle est chargée d'exécuter les instructions du programme. On peut distinguer 3 parties : traitement des données, gestion des adresses, traitement des instructions.

Traitement des données

Cette partie comporte 3 registres et une unité arithmétique et logique (UAL). Les instructions du 8051 permettent d'agir sur 1 ou 2 données de 8 bits à la fois, pas plus. Le fonctionnement est le suivant : les registres de 8 bits TMP1 et TMP2 présentent à l'UAL l'ou les données à traiter. Après traitement, le résultat est positionné dans l'accumulateur (Acc). Il est parfois utilisé pour un nouveau calcul, envoyé dans une mémoire (RAM ou registre de travail) ou vers un port de sortie.

L'UAL comporte les circuits suivants :

Une série de bascules, nommées indicateurs d'état, sont automatiquement situées lors des opérations arithmétiques. L'état de ces indicateurs peut être testé par les instructions de branchement conditionnel.

Le 8051 comporte 32 registres de travail, organisés en 4 groupes de 8 registres. Ces registres forment des mémoires temporaires, où on place provisoirement des informations dont on sait qu'elles seront nécessaires peu de temps après. L'intérêt des registres de travail, c'est que le temps d'accès est plus court que pour une lecture ou écriture en RAM, et les instructions nécessaires pour y accéder plus courtes.

Gestion des adresses

L'espace mémoire d'un 8051 est partagé en 3 zones bien différentes :

Le 8051 comporte par conséquent particulièrement naturellement trois registres consacrés à la gestion des adresses.

Traitement des instructions

Les instructions comportent de 1 à 3 octets. Le premier octet, nommé code opératoire, précise de quelle instruction il s'agit. Certaines instructions nécessitent une donnée (8 bits) ou une adresse restreinte (8 bits), ou alors une adresse absolue (16 bits).

Le code opératoire est positionné dans le registre d'instructions, prévu à cet effet. Il est présenté à un décodeur qui détermine le type d'instruction et , le cas échéant, ira lire 1 ou 2 octets supplémentaires qui seront positionnés dans des registres ad hoc (donnée ou adresse).

Le bloc traitement des instructions est piloté par une horloge ; le 8051 contient l'ensemble des éléments de l'horloge, à l'exception des composants qui déterminent la fréquence d'oscillation : le plus souvent un quartz, mais un circuit RC peut aussi être utilisé si une connaissance précise de la fréquence n'est pas indispensable. Le bloc génère des signaux de contrôle (lecture, écriture) tant pour les autres blocs du MC que pour les circuits extérieurs éventuels (mémoires externes... ).

Mémoires

Remarque : les octets qui ne sont pas utilisés comme registres de travail ou pour les variables booléennes peuvent être utilisés comme RAM conventionnelle.

La tendance, dans les dispositifs utilisant un MC, est de choisir un composant disposant d'une ROM et d'une RAM de capacité suffisantes pour stocker l'entièreté du programme et la totalité des données. Cependant, si indispensable, on peut adjoindre au MC des mémoires externes. Le MC se comporte alors comme un microprocesseur. Des lignes qui sont normalement utilisées comme ports d'entrées/sorties sont converties en bus d'adresses et de données. Dans ce type d'applications, on choisira le plus souvent des MC sans ROM interne, tels le 8031.

Modes d'adressage

Le 8051 admet 6 modes d'adressage :

l'adressage immédiat, où la donnée suit le code opératoire ; adressage indexé : c'est une variante de l'adressage indirect à registre : l'adresse de la donnée est calculée en additionnant les contenu de l'Acc et du pointeur de programme (Acc + PC) ou du pointeur de données (Acc + DPTR).

Jeu d'instructions

Dans cette section, nous donnons un aperçu du jeu d'instructions du 8051 en employant la syntaxe du constructeur, Intel :

Instructions de transfert

Les adresses de source et de destination peuvent être l'Acc, un registre de travail, une case de RAM interne ou externe, un port d'E/S ; la ROM ne peut servir que de source.

La structure des instructions est : MOV destination, source copie l'octet de l'adresse source à l'adresse de destination

La structure des instructions est : MOVX destination, source

Instructions arithmétiques

D'une façon générale, elles utilisent l'Acc pour stocker une des deux données de départ, mais aussi le résultat de l'opération après exécution de l'instruction. Des indicateurs d'état sont situés automatiquement selon le résultat de l'opération :

Exemples

Instructions logiques

Les opérations logiques sont effectuées entre bits de même poids, il n'y a pas d'interaction entre bits de poids différent et les indicateurs d'état ne sont pas modifiés. Les opérations ET, OU et XOU sont disponibles, mais aussi l'inversion ; pour NON-ET, NON-OU, NON-XOU, il faut agir en deux étapes : en premier lieu l'opération directe, puis inverser l'ensemble des bits.

Exemples

CLR A : met l'Acc à 0

Instructions booléennes

Il s'agit ici d'une innovation comparé aux microprocesseurs, qui traitent toujours les données par octets. Le 8051 contient un processeur complet agissant sur des données d'1 bit, aussi nommées variables booléennes. C'est le Carry qui joue le rôle d'Acc pour ces opérations.

Le RAM interne du 8051 contient 128 cases pouvant être adressées individuellement. Un certain nombre de bits des SFR sont aussi adressables individuellement, surtout les bits correspondant aux ports de sortie.

Instructions de branchement

Rappelons que les instructions de branchement permettent de rompre la séquence normale d'exécution d'un programme. On peut distinguer :

Remarque : seuls les sauts peuvent être conditionnels dans le 8051.

Ports d'E/S

Les ports d'E/S permettent aux dispositifs à microprocesseur ou microcontrôleur de communiquer avec le monde extérieur : recevoir des informations, qu'il va ensuite traiter et piloter les périphériques : témoins lumineux, moteurs, relais, convertisseurs N/A etc.

La famille 8051 a été conçue pour des applications nécessitant peu de mémoire ROM et RAM. Ainsi, le 8051 lui-même comporte une ROM de 4Ko et uniquement 128 octets de RAM ; et toujours faut-il tenir compte que la RAM est utilisée par les registres de travail, la pile et les 16 octets (de 20h à 2Fh) adressables par bit.

Quand l'application peut se satisfaire de ces tailles mémoire, 32 lignes d'E/S sont disponibles, organisées en 4 ports de 8 lignes ; les adresses sont les suivantes : port 0 : 80h ; port 1 : 90h ; port 2 ; A0h ; port 3 : B0h. Les circuits internes associés aux différentes lignes sont un peu différents. Prenons l'exemple du port 1.

Structure d'une ligne du port 1 d'un ΜC 8051

Pour utiliser une ligne en ligne de sortie, on écrit le bit désiré dans la bascule D. La sortie Q/ (inverse de Q) pilote la grille d'un mosfet à enrichissement. Si Q est à 0, Q/ est à 1, le mosfet conduit et la ligne de sortie est tirée à 0. Si Q est à 1, Q/ est à 0, le mosfet est bloqué et la ligne de sortie est tirée vers Vcc par la résistance de rappel (pull-up).

Pour utiliser la ligne en ligne d'entrée, il faut écrire un 1 dans la bascule D (c'est d'ailleurs l'état par défaut à la mise sous tension). Le circuit extérieur peut tirer la ligne à 0 ; l'état de la ligne apparaît sur le bus de données interne quand on fait une lecture du port.

Quand le dispositif nécessite une plus grande taille mémoire, deux solutions :

Quand on utilise des boîtiers de mémoire externe :

Remarquons qu'on peut gérer les ports :

Signalons toujours que certaines lignes du port 3 ont une double fonction dans la mesure où elles peuvent être utilisées comme lignes de demande d'interruption (voir plus bas), comme entrées des compteurs (voir plus bas), comme entrée et sortie du port série (voir plus bas) et comme lignes Read et Write du bus de commande quand on fait appel à de la RAM externe.

Interruptions

Quand un périphérique (clavier, convertisseur A/N, port série... ) souhaite communiquer une information au MC, il peut :

Quand le périphérique en question est extérieur au MC, il faut prévoir des broches pour connecter l'ou les lignes de demandes d'interruption.

Le 8051 dispose de 5 sources d'interruption :

Chaque interruption peut être masquée ou démasquée en positionnant à 1 ou 0 le bit approprié du registre IE (Interrupt Enable). Une interruption masquée n'est pas prise en compte. On peut aussi masquer la totalité des interruptions par le bit 7 de IE.

On peut attribuer à chaque type d'interruption une priorité basse ou haute en positionnant le bit approprié du registre IP (Interrupt Priority). Une interruption de priorité haute peut interrompre le sous-programme de gestion d'une interruption de priorité basse. Quand le MC reçoit simultanément (càd. au cours du même cycle machine) deux demandes d'interruption de même niveau de priorité, celles-ci sont traitées dans l'ordre suivant : Int0, C/T0, Int1, C/T1, port série.

Quand une demande d'interruption est acceptée, le MC effectue un branchement vers une des adresses suivantes : 0003h pour Int0, 000Bh pour C/T1, 0013h pour Int1, 001Bh pour C/T1 et 0023h pour le port série. Le plus souvent, on place à ces adresses une instruction d'appel de sous-programme pour gérer l'interruption ; à la fin du sous-programme, on revient à l'adresse de départ, qui a été automatiquement mémorisée dans la pile.

Chaque sous-programme d'interruption comporte le plus souvent les parties suivantes :

Comme le 8051 comporte 4 blocs de 8 registres de travail, une méthode rapide et élégante pour sauvegarder les registres de travail consiste à simplement changer de bloc actif (ce dernier est déterminé par les bits 3 et 4 du registre d'état, SR, Status Register)

A la mise sous tension, les registres IE et IP sont initialisés à 0. Le programmeur doit par conséquent préciser quelles sources d'interruption il veut autoriser, et leur niveau de priorité. Les choix peuvent être modifiés en cours de programme.

Compteurs/Temporisateurs

Le 8051 comporte deux compteurs/temporisateurs. Ces périphériques sont nommés ainsi car ils peuvent être utilisés :

Chaque C/T comporte deux compteurs binaires de 8 bits. Différents modes de fonctionnement sont envisageables : les plus utilisés sont :

On peut choisir (bits appropriés de Tcon) d'appliquer à chaque compteur :

Le fonctionnement des compteurs est contrôlé par :

Port série

Pour certaines applications (transfert de données à distance, commande de modems, ... ), il est utile de disposer en plus des ports d'E/S parallèles, d'un port d'entrée/sortie série ou sériel (Serial Input/Output Port).

Le principe des liaisons série est particulièrement simple : plutôt que d'envoyer simultanément 8 bits en parallèle sur 8 lignes, on envoie les 8 bits l'un après l'autre sur une seule ligne.

Le 8051 dispose d'un port série bidirectionnel utilisant une ligne pour l'envoi des données, TxD, et une ligne pour la réception des données, RxD.

Plusieurs modes de fonctionnement sont envisageables. Le mode le plus utilisé emploie le temporisateur 1 en mode de rechargement automatique pour définir la cadence d'envoi des bits (baud rate). Les cadences standard vont de 300bps (bits par seconde) à 19200bps.

Pour envoyer un caractère, il suffit de l'écrire dans le registre Sbuf d'émission ; cela enclenche automatiquement la procédure d'envoi du caractère :

Lors de la réception d'un caractère, la procédure est enclenchée par la détection d'un flanc descendant à la broche RxD. Les 8 ou 9 bits sont positionnés dans le registre Sbuf de réception (curieusement, on utilise le même nom et la même adresse, 99h, pour les deux registres Sbuf ; lorsque on écrit à cette adresse, l'octet est stocké dans le registre d'émission, lorsque on lit, c'est le contenu du registre de réception). Quand l'ensemble des bits sont présents, on déclenche une demande d'interruption. Il faut que le MC vienne lire l'octet reçu avant la fin de la réception de l'octet suivant, sinon le premier est perdu.

L'émetteur et le récepteur peuvent travailler simultanément. Les demandes d'interruption sont combinées. Donc, quand on envoie et reçoit simultanément des octets, le processeur doit déterminer lors de chaque demande d'interruption si elle émane de l'émetteur ou du récepteur. Cela se fait en allant lire les bits TI et RI du registre Scon (Serial Port Control Register).

Réduction de la consommation

De nombreuses applications ne nécessitent pas que le MC soit en permanence actif. A titre d'exemple, un dispositif d'acquisition de données peut idéalement être "endormi" entre les moments où il fait les lectures de données, afin d'économiser l'énergie ; ceci est spécifiquement intéressant quand les équipements sont alimentés par batterie.

Le 8051 en technologie NMOS n'avait qu'un seul mode d'économie d'énergie, le mode Idle. Dans ce mode, l'horloge n'est plus appliquée au microprocesseur, qui n'exécute par conséquent plus d'instructions ; les registres internes préservent leurs informations ; le port série, la gestion des interruptions et les compteurs/temporisateurs fonctionnent normalement. On entre en mode Idle en mettant à 1 le bit IDL du registre Pcon (Power Condition). Le MC sort du mode Idle en cas d'interruption ou de Reset externe.

Le 8051 en technologie CMOS, la plus courante aujourd'hui, possède, hormis le mode Idle, un mode Power Down. Ici, c'est carrément l'oscillateur générant le signal d'horloge qui est bloqué. L'ensemble des fonctions sont bloquées. La différence avec une coupure d'alimentation, c'est que l'ensemble des registres préservent leurs informations, surtout les ports d'E/S qui sont liés à des registres. On entre dans le mode Power Down en mettant à 1 le bit PD du registre Pcon. L'unique moyen de sortie du mode Power Down, c'est par un Reset externe, qui provoque aussi une réinitialisation du pointeur de programme. On redébute par conséquent le programme à l'adresse 0000h et les SFR (dont les registres des ports) sont réinitialisés.

Famille du 8051

La famille du 8051 a connu un succès remarquable, malgré son jeu d'instructions passablement "exotique". C'est par conséquent particulièrement naturellement qu'Intel en premier lieu, de nombreux autres constructeurs ensuite, ont mis au point des MC basés sur l'architecture 8051 mais pourvus de divers perfectionnements : mémoire programme effaçable et reprogrammable (8751), troisième compteur/temporisateur (8052), capacités des mémoires ROM et RAM plus grandes, ports d'E/S plus nombreux, convertisseurs A/N et N/A intégrés, C/T supplémentaires (9 au total dans le 80251)...

Le 8052

Le 8052 est une version perfectionnée du 8051, le 8032 est une version perfectionnée du 8031, qui est un 8051 sans ROM interne.

Les principales améliorations apportées sont :

- Mode capture : le compteur compte les impulsions en provenance d'une entrée externe ou d'un diviseur de fréquence interne ; une impulsion appliquée à la broche T2EX copie l'état du compteur au moment de cette impulsion dans deux SFR (RCAP2H et RCAP2L)  ; une demande d'interruption est générée ; le compteur continue à compter normalement.

- Mode rechargement automatique : le contenu des SFR RCAP2H et RCAP2L est copié dans le compteur soit automatiquement, lors d'un dépassement de capacité du compteur, soit quand une impulsion externe est appliquée à la broche T2EX.

- Mode horloge de transmission : ce mode est conçu pour favoriser la réalisation de l'interface série.

Le 8052 Basic

Il s'agit d'une version spéciale du 8052. La mémoire ROM interne de 8Ko est occupée par un interpréteur Basic. Il est par conséquent envisageable, en utilisant un terminal et l'interface série du 8052, de travailler en mode interactif, en envoyant au 8052 des commandes en langage Basic à partir du terminal.

Le Basic 8052 :

Liens externes

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/Intel_8051.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu