Comment créer un port pour recevoir le mcs 51. Microcontrôleurs MCS-51 : modèle de programme, structure, commandes. Commandes de transfert de données

L'état du système d'interruption est interrogé à la fin de chaque cycle machine de la phase S5P2, à l'exception des instructions RETI et de toutes les instructions qui accèdent aux registres IE et IP. À partir du moment où la demande d'interruption est capturée jusqu'à ce que l'interruption soit servie, cela prend de 38 à 86 périodes de fréquence fOSC, selon la phase de la demande et le nombre de cycles machine de l'instruction pendant lesquels la demande a été exécutée.

Lors de la mise en œuvre d'une interruption matérielle, la commande LCALL addr16 est exécutée, ce qui garantit que l'état actuel du compteur de programme est stocké sur la pile (stockage de l'adresse de retour), et la transition vers l'adresse de début addr16 de la procédure de service correspondante. Chaque source de demande d'interruption est associée à son propre

adresse de début (vecteur d'interruption) :

Interruption externe INT0.

Interruption de minuterie/compteur TC0.

Interruption externe INT1.

Interruption de minuterie/compteur TC1.

Interruption du port série.

2.7. Méthodes d'adressage et système de commande de la famille MCS-51

Le système de commande de la famille MCS-51 se concentre sur l'organisation d'entrées/sorties de données flexibles via les ports universels P0...P3 et le traitement des informations primaires. Une attention particulière est portée aux opérations avec les bits et au transfert de contrôle en fonction de leur valeur. Les instructions qui effectuent de telles opérations forment un grand groupe et, avec le matériel correspondant, forment ce que l'on appelle le « processeur booléen » dans le cadre de l'architecture MCS-51.

Le système d'instructions offre au programmeur la possibilité d'utiliser la plupart des opérations avec une gamme complète de méthodes d'adressage et de ressources matérielles logicielles disponibles.

2.7.1. Méthodes d'adressage

Chaque instruction indique au processeur l'opération à effectuer et comment accéder à ses opérandes. Le code de commande comporte plusieurs champs qui ont une fonctionnalité spécifique. Les champs les plus importants de toute commande sont le code d'opération (OPC), qui détermine l'action de la commande, et la partie adresse. Les champs de la partie adresse contiennent des informations sur les adresses des opérandes et le résultat de l'opération, et dans certains cas, des informations sur l'adresse de l'instruction suivante.

Si l'adresse indique le numéro de la cellule mémoire dans laquelle se trouve l'opérande ou où il est stocké, alors on parle d'adresse directe.

Les méthodes d'adressage sont un ensemble de mécanismes permettant d'accéder aux opérandes. Certains sont simples, ce qui se traduit par un format d'instruction compact et un accès rapide aux opérandes, mais disposent d'une quantité limitée de ressources disponibles. D'autres permettent d'opérer avec toutes les ressources disponibles dans le système, mais la commande s'avère longue ;

la saisie et l'exécution prennent beaucoup de temps. L'ensemble de méthodes d'adressage dans chaque jeu d'instructions est une combinaison de compromis de mécanismes d'adressage connus, sélectionnés par les concepteurs d'architecture sur la base de l'ensemble de problèmes à résoudre.

Voici les principales méthodes d'adressage utilisées dans la famille de systèmes de commande MCS-51.

Adressage implicite. La commande ne contient pas d'instructions explicites sur l'adresse de l'opérande impliqué dans l'opération ou l'adresse à laquelle le résultat de l'opération est placé, mais cette adresse est implicite. Les commandes s'adressent le plus souvent implicitement à l'accumulateur comme destination du résultat de l'opération. Par exemple, le résultat de l'ajout du contenu de l'accumulateur (A) et du registre R1 de la banque de données actuelle avec la commande ADD A,R1 est écrit dans l'accumulateur implicitement adressable. L'intégralité de l'instruction spécifiée occupe un octet en mémoire, tandis que l'adresse de seul l'accumulateur (zone 8Eh SFR) contient un octet.

Adressage direct. Le champ d'adresse de commande contient

Ce n'est pas l'adresse de l'opérande qui est stockée, mais l'opérande lui-même. L'adressage direct est indiqué par le caractère spécial # devant le numéro. Par exemple, avec la commande MOV A,#15h, le nombre hexadécimal 15 (le deuxième octet de la commande) est chargé dans l'accumulateur. Dans le système de commande, l'adressage direct est désigné par #data, où data est un nombre

(données = 00h...FFh).

Adressage direct. Le champ d'adresse de commande indique l'adresse directe de la cellule mémoire de données dans laquelle se trouve l'opérande ou où il est écrit. Par exemple, avec la commande MOV A,15h, le contenu de la cellule DSEG d'adresse 15h est chargé dans l'accumulateur. La cellule mémoire a un adressage direct et l'accumulateur a un adressage implicite. Selon l'emplacement de l'opérande adressé, l'adressage direct est divisé en registre direct et absolu.

Adressage direct du registre. Le champ d'adresse de commande spécifie l'adresse de registre directe de la banque de registres actuelle. Il y a huit registres dans chaque banque et une adresse de transfert de trois bits est requise pour les adresser. Dans les mnémoniques de commande, le registre adressé est désigné Rn, où n=0...7. Tous les champs de commande tiennent dans un octet. Ce type d'adressage est appelé adressage court. Par exemple, MOV R4, R1.

Adressage absolu direct permet d'accéder à n'importe quelle cellule DSEG et zone SFR. Dans ce cas, l'adresse directe occupe un octet et la commande occupe deux octets. Dans le système de commande, l'octet d'adresse directe est désigné par le mot direct (direct = 00h...FFh). Par exemple, l'instruction MOV 80h,R2 (ou MOV P0,R2) charge le contenu du registre R2 de la banque de données courante dans le port P0 (cellule 80h de la zone SFR). Si les deux opérandes ont un adressage absolu direct, alors l'instruction devient sur trois octets (par exemple, MOV 80h,15h).

Adressage indirect. Le champ d'adresse indique l'adresse de la cellule mémoire dans laquelle se trouve l'adresse directe de l'opérande. Dans le système de commande, l'adressage indirect est indiqué par le symbole spécial @. Propriété

Les registres R0 et R1 (@Ri, i = 0,1) de chaque banque de registres stockent l'adresse directe. Par exemple, si le contenu du registre R1 de la banque de registres actuelle est de 15h, alors l'instruction MOV A,@R1 effectuera la même action que l'instruction MOV A,15h ci-dessus - elle chargera le contenu de l'emplacement mémoire DSEG. avec adresse 15h dans l'accumulateur. Cependant, la commande MOV A,@R1 est sur un octet, mais plus important encore, il est possible de modifier l'adresse par programme en modifiant le contenu du registre R1.

Adressage relatif. En adressage relatif, l'adresse directe est formée en ajoutant l'adresse de base au champ d'adresse de la commande. L'adresse de base est le contenu du compteur de programme et le champ d'adresse d'instruction est un décalage rel (relatif) de huit bits. Le nombre rel est interprété par la commande comme un entier signé représenté en complément à deux. La plage de sa présentation est (-128...+127). Lors de la détermination du nombre rel, il convient de tenir compte du fait que le compteur du programme pointe vers la prochaine instruction à exécuter. L'adressage relatif est largement utilisé dans les instructions de transfert de contrôle, ce qui permet la création de modules de programme délocalisables. Les commandes de transfert de contrôle avec adressage relatif permettent d'organiser le branchement par rapport à la position actuelle du compteur de programme PC dans les deux sens par (-128...+127) octets.

Dans les programmes en langage assembleur, vous pouvez spécifier l'étiquette à laquelle accéder dans le champ de décalage. À la suite de la traduction, l'assembleur calculera la valeur de décalage si elle ne dépasse pas (-128...+127). Sinon, un message d'erreur s'affichera.

Adressage de base représente un type d’adressage relatif. L'adresse directe dans ce cas est formée en ajoutant l'adresse spécifiée dans la commande avec le contenu du registre de base, qui stocke l'adresse de base. La fonction de registre de base de la famille MCS-51 est assurée par le registre de pointeur de données DPTR ou le compteur de programme PC. Ce type d'adressage est particulièrement pratique lors du traitement de tables et de tableaux de données. Dans les instructions MOVC A,@A+DPTR et MOVC A,@A+PC, l'adresse directe de 16 bits est formée comme la somme du contenu des registres DPTR et A ou PC et A.

Adressage des pages. Lors de l'utilisation de l'adressage de page, la mémoire est divisée en un certain nombre de pages de longueur égale. L'adressage des pages est effectué par un registre de pages séparé, et l'adressage des cellules mémoire au sein d'une page est effectué par l'adresse contenue dans la commande. L'adresse directe est formée en concaténant (attachant) l'adresse des pages et l'adresse de la cellule mémoire dans la page. Dans l'instruction MOVX A,@Ri, la fonction de registre de page est assurée par le port P2 (l'octet d'adresse haute) et le contenu du registre Ri (l'octet d'adresse basse) spécifie l'adresse dans la page. Dans ce cas, la mémoire est divisée en 256 pages contenant chacune 256 cellules.

Adressage de pile utilisé dans les commandes sans adresse et est une combinaison de méthodes d'adressage auto-incrémentales et auto-décrémentales, fonctionnant sur le principe LIFO (Last I nput - F irst Output) - «dernier entré, premier sorti». La pile est située dans DSEG et s'agrandit vers des adresses croissantes. L'adresse du sommet de la pile est contenue dans le pointeur de pile SP. Lorsqu'un octet est écrit dans la pile, le contenu du SP est d'abord incrémenté, puis une écriture est effectuée à cette adresse. Lors de la lecture d'un octet de la pile, il lit d'abord à partir de l'adresse pointée par SP, puis décrémente SP. Lors de l'utilisation d'une pile, il faut tenir compte du fait que la profondeur de la pile (le nombre maximum de cellules mémoire occupées par la pile) n'est pas contrôlée par le matériel. Si la pile s'agrandit de manière excessive, des cellules mémoire qui ne lui sont pas destinées peuvent être occupées, entraînant une perte d'informations qu'elles contiennent. La pile matérielle est utilisée pour stocker l'adresse de retour lors du traitement d'une interruption.

2.7.2. Système de commande de la famille MCS-51

Le système de commande est présenté dans les tableaux A2.1...A2.6 de l'Annexe 2. Les tableaux indiquent le nom de la commande, ses mnémoniques, le code opération binaire, l'influence de la commande exécutée sur les flags C, OV, AC et P, la longueur de la commande en octets (B) et le temps d'exécution en cycles machine (C), ainsi que le contenu de la transformation effectuée par la commande. Une virgule est utilisée comme séparateur pour les champs d'adresse dans les commandes. Pour améliorer la lisibilité, vous pouvez ajouter des espaces après les virgules si votre assembleur les prend en charge.

L'ensemble des commandes peut être divisé en 5 groupes : opérations de transfert de données, opérations arithmétiques, opérations logiques, opérations avec bits et opérations de transfert de contrôle.

Groupe de commandes d'opérations de transfert de données(tableau A2.1) co-

contient les commandes MOV (transfert de données entre DSEG et RSEG), MOVC (entre CSEG et A), MOVX (entre XSEG et A), les commandes d'accès à la pile PUSH et POP, ainsi que deux commandes d'échange XCH et XCHD. Toutes les instructions de transfert de données dont la destination est l'accumulateur définissent l'indicateur de parité P de l'accumulateur, et les instructions d'adressage direct dont la destination est le registre PSW modifient tous les indicateurs. La plus volumineuse est l'instruction MOV, qui utilise quatre méthodes d'adressage : registre direct (A, Rn, DPTR), direct (direct), indirect (@Ri), immédiat (#data, #data16). Le deuxième opérande de l'instruction est la source, le premier est la destination. Il existe trois méthodes d'adressage (sauf directe) pour indiquer le récepteur, et les quatre pour indiquer la source. L'instruction directe MOV à trois octets permet le transfert entre deux emplacements mémoire (DSEG et SFR), y compris RSEG. Des formats spéciaux à deux et un octets sont fournis pour l'échange avec RSEG :

La commande spéciale MOV DPTR,#data16 permet de charger un pointeur DPTR 16 bits avec la valeur data16.

L'instruction MOVC permet de lire les informations de la mémoire du programme CSEG non pas dans le registre de commande du dispositif de contrôle, mais dans l'accumulateur du dispositif d'exploitation. La commande utilise deux méthodes d'adressage : basée sur DPTR et relative au PC. Dans les deux cas, le décalage entier non signé (index) est stocké dans l'accumulateur. La batterie sert également de récepteur du résultat. La commande vous permet de recoder rapidement les tableaux.

La mémoire externe est accessible à l'aide de la commande MOVX. L'échange s'effectue octet par octet entre la batterie et le XSEG externe. Une cellule XSEG peut être adressée de deux manières : indirectement via le pointeur DPTR 16 bits et page indirectement via le pointeur Ri 8 bits, i=0,1. Dans ce dernier cas, le registre de page est le registre P2.

Les commandes PUSH et POP sans adresse assurent le transfert de données

entre DSEG, RSEG et SFR.

L'instruction d'échange XCH permet un échange bidirectionnel d'octets et l'instruction XCHD fournit des tétrades d'ordre inférieur d'opérandes d'octets.

Groupe d'instructions d'opérations arithmétiques(tableau A2.2) co-

contient les instructions pour l'addition ADD, l'addition ADDC, l'emprunt de soustraction SUBB, l'incrémentation et la décrémentation d'un INC et DEC, la correction décimale de l'addition décimale codée binaire (BCD), la multiplication MUL et la division DIV. Les opérations sont effectuées sur des entiers non signés. Dans les opérations d’addition et de soustraction, le premier opérande et destination du résultat est l’accumulateur. Pour déterminer le deuxième opérande, un registre direct, un adressage direct absolu, immédiat et indirect sont utilisés. Les opérations INC et DEC s'appliquent à un accumulateur, un registre directement adressable ou un emplacement mémoire directement ou indirectement adressable. De plus, l'opération INC s'applique au contenu du registre de pointeur DPTR 16 bits.

Les opérations de multiplication d'entiers non signés et de division non signée impliquent l'accumulateur et le registre B. La multiplication multiplie la valeur de 8 bits de A par la valeur de 8 bits de B et écrit le résultat de 16 bits dans la paire BA. Dans ce cas, le registre B stocke la partie la plus élevée du produit. L'indicateur OV est activé si le produit est supérieur à 255. Lors de la division de la valeur de 8 bits A par la valeur de 8 bits B, le quotient est écrit dans A et le reste dans B. Lors d'une tentative de division par 0, le débordement le drapeau OV est activé.

La commande de correction décimale de l'accumulateur DA est placée après la commande d'addition. Les termes doivent être représentés en code BCD. La correction est effectuée de manière standard.

Groupe de commandes d'opérations logiques(Tableau A2.3 ) contient trois opérations standard : ANL – ET logique, ORL – OU logique, XRL – OU exclusif logique. Source du premier opérande

Soit l'accumulateur A, soit une cellule mémoire directement adressable sert. Le deuxième opérande est spécifié par l'une des quatre méthodes d'adressage de base. Le groupe comprend également opérations simples sur le contenu de l'accumulateur : CLR - effacement, CPL - inversion, ainsi que RL, RLC, RR et RRC - opérations de décalage cycliques et étendues vers la droite et la gauche. Cela inclut également l'opération d'échange tétrade dans l'accumulateur SWAP, qui peut être interprétée comme un décalage cyclique d'un octet de quatre bits.

Groupe d'opérations sur bits(tableau A2.6) contient des co-

Commandes SETB – mettre un bit à 1, CLR – remettre un bit à 0, CPL – inverser un bit, ANL et ORL – ET logique et OU logique du contenu de l'indicateur C et du bit directement adressé, MOV – transférer un bit .

DANS Dans les opérations sur bits, le drapeau C agit comme un accumulateur booléen. Le contenu du drapeau C ou du bit directement adressable de la zone BSEG est utilisé comme opérandes. Les opérations ANL et ORL peuvent utiliser le contenu du bit directement adressé (bit) ou l'inverse du contenu (/bit).

DANS Ce groupe comprend également les commandes de saut conditionnel avec des Décalage rel. 8 bits. Un saut conditionnel peut être effectué soit lorsque le bit est activé (commande JB), soit lorsque le bit est effacé (commande JNB). Il convient de noter en particulier la commande JBC qui, lorsque le bit est activé, implémente un branchement et réinitialise en même temps le bit à 0.

Groupe de commandes de transfert de contrôle(tableaux A2.4 et A2.5) co-

contient les instructions de saut inconditionnel AJMP, LJMP, SJMP, JMP, saut conditionnel JZ, JNZ, CJNE, appel ACALL, LCALL, retour RET, RETI et modification avec saut conditionnel DJNZ. Une commande NOP vide est également incluse ici.

DANS L'adressage relatif est largement utilisé dans les commandes de transfert de contrôle, permettant la création de modules de programme déplaçables. L'adresse relative est Le décalage rel de 8 bits est un octet signé qui permet un saut à (–128… +127) octets par rapport à la position actuelle du PC. Pour se déplacer vers n'importe quel autre point de l'espace d'adressage de 64 Ko, une adresse directe addr16 ou une adresse indirecte @A+DPTR peut être utilisée. Dans ce dernier cas, le contenu de A est interprété comme un entier non signé. L'option d'adressage direct courte addr11 dans la page actuelle de 2 Ko est introduite pour la compatibilité avec la famille MCS-48.

Tous ces types d'adressage sont utilisés dans les instructions de saut. Les commandes d’appel utilisent uniquement les méthodes d’adressage direct addr16 et intrapage addr11. Toutes les instructions conditionnelles utilisent uniquement un adressage relatif.

Lorsque le microcontrôleur reconnaît une demande d'interruption, il émet la commande LCALL addr16, qui stocke automatiquement l'adresse de retour sur la pile. Les informations sur l'état du programme (le contenu du registre PSW) ne sont pas automatiquement enregistrées. Où

L'architecture de la famille MCS-51 est largement déterminée par son objectif : la construction compact Et bon marché appareils numériques. Toutes les fonctions du micro-ordinateur sont mises en œuvre à l'aide d'un seul microcircuit. La famille MCS-51 comprend toute une gamme de microcircuits depuis les microcontrôleurs les plus simples jusqu'aux plus complexes. Les microcontrôleurs de la famille MCS-51 vous permettent d'effectuer à la fois des tâches de contrôle pour divers appareils et de mettre en œuvre des composants individuels d'un circuit analogique. Tous les microcircuits de cette famille fonctionnent avec le même système de commande, la plupart d'entre elles sont réalisées dans des cas identiques avec brochage correspondant(numérotation des pattes pour le corps). Cela vous permet d'utiliser des microcircuits de différents fabricants (tels que Intel, Dallas, Atmel, Philips, etc.) pour l'appareil développé. sans modifier le schéma de circuit de l'appareil et du programme.

Figure 1. Schéma fonctionnel du contrôleur K1830BE751

Le schéma fonctionnel du contrôleur est présenté à la figure 1. et se compose des principales unités fonctionnelles suivantes : unité de contrôle, unité arithmétique-logique, unité de minuterie/compteur, interface série et unité d'interruption, compteur de programme, mémoire de données et mémoire de programme. La communication bidirectionnelle s'effectue à l'aide d'un bus de données interne de 8 bits. Examinons de plus près le but de chaque bloc. Presque tous les membres de la famille MCS-51 sont construits selon ce schéma. Les différents microcircuits de cette famille ne diffèrent que par des registres spéciaux (y compris le nombre de ports). Système de commande tous les contrôleurs La famille MCS-51 contient 111 instructions de base au format 1, 2 ou 3 octets et ne change pas lors du passage d'une puce à l'autre. Cela garantit une excellente portabilité du programme d’une puce à l’autre.

Unité de contrôle et de synchronisation

L'unité de synchronisation et de contrôle est conçue pour générer des signaux de synchronisation et de contrôle qui assurent la coordination du fonctionnement conjoint des unités de l'ordinateur central dans tous les modes de fonctionnement autorisés. L'unité de contrôle comprend :

  • dispositif pour former des intervalles de temps,
  • logique d'entrée-sortie,
  • registre de commande
  • registre de gestion de l'énergie,
  • décodeur de commande, logique de contrôle informatique.

Dispositif pour former des intervalles de temps conçu pour générer et émettre des signaux d'horloge internes de phases, d'horloges et de cycles. Le nombre de cycles machine détermine la durée des instructions. Presque toutes les commandes informatiques sont exécutées en un ou deux cycles machine, à l'exception des instructions de multiplication et de division dont la durée d'exécution est de quatre cycles machine. Notons la fréquence de l'oscillateur maître par F g. La durée du cycle machine est alors égale à 12/F g soit 12 périodes du signal de l'oscillateur maître. La logique d'E/S est conçue pour recevoir et émettre des signaux qui assurent l'échange d'informations avec des périphériques externes via les ports d'entrée/sortie P0-P3.

Registre de commandes conçu pour enregistrer et stocker le code d'opération 8 bits de la commande en cours d'exécution. Le code d'opération, à l'aide de commandes et d'une logique de contrôle informatique, est converti en microprogramme pour exécuter la commande.

Registre de contrôle de la demande (PCON) vous permet d'arrêter le microcontrôleur pour réduire la consommation d'énergie et réduire le niveau d'interférence du microcontrôleur. Une réduction encore plus importante de la consommation d'énergie et des interférences peut être obtenue en arrêtant l'oscillateur maître du microcontrôleur. Ceci peut être réalisé en basculant les bits du registre de contrôle de consommation PCON. Pour l'option de fabrication n-MOS (série 1816 ou puces étrangères qui n'ont pas de « c » au milieu de leur nom), le registre de contrôle de consommation PCON ne contient qu'un seul bit qui contrôle le débit en bauds du port série SMOD, et il n'y a pas de bits de contrôle de la consommation d'énergie.

Avec l'article "Architecture des microcontrôleurs MCS-51", lire :


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

Architecture du microcontrôleur

Comprendre l'architecture du microcontrôleur est essentiel lors de l'apprentissage des langages de programmation d'assemblage. La structure de l'assembleur, le format de ses instructions, l'adressage des opérandes, etc. sont entièrement déterminés par l'architecture. Le but des études d’architecture est :

· identifier l'ensemble des registres disponibles pour la programmation, leur fonctionnalité et leur structure ;

· compréhension de l'organisation de la RAM et de l'ordre de son utilisation ;

· familiarité avec les types de données ;

· étudier le format des commandes machine ;

· clarification de l'organisation du traitement des interruptions.

L'architecture de la famille MCS-51 est largement déterminée par son objectif : la construction d'appareils numériques compacts et bon marché. Toutes les fonctions MK sont implémentées à l'aide d'un seul microcircuit. La famille MCS-51 comprend toute une gamme de microcircuits depuis les microcontrôleurs les plus simples jusqu'aux plus complexes. Les microcontrôleurs de la famille MCS-51 vous permettent d'effectuer à la fois des tâches de contrôle pour divers appareils et de mettre en œuvre des composants individuels d'un circuit analogique. Tous les microcircuits de cette famille fonctionnent avec le même système de commande, la plupart d'entre eux sont implémentés dans les mêmes boîtiers avec le même brochage (numérotation des broches du boîtier). Cela vous permet d'utiliser des microcircuits de différents fabricants (tels que Intel, Dallas, Atmel, Philips, etc.) pour l'appareil développé sans modifier le schéma de circuit de l'appareil et du programme.

MCS-51 est basé sur l'architecture Harvard, où les espaces d'adressage de la mémoire des programmes et des données sont séparés.

Le schéma fonctionnel du contrôleur est présenté sur la Fig. 2.3 et comprend les principales unités fonctionnelles suivantes : unité de contrôle, unité arithmétique-logique, unité de minuterie/compteur, interface série et interruptions, compteur de programme (compteur de programme), mémoire de données et programme. mémoire.

La communication bidirectionnelle s'effectue à l'aide d'un bus de données interne de 8 bits. Examinons de plus près le but de chaque bloc. Presque tous les membres de la famille MCS-51 sont construits selon ce schéma. Les différents microcircuits de cette famille ne diffèrent que par des registres spéciaux (y compris le nombre de ports). Le système de commande de tous les contrôleurs de la famille MCS-51 contient 111 commandes de base au format 1, 2 ou 3 octets et ne change pas lors du passage d'une puce à l'autre. Cela garantit une excellente portabilité du programme d’une puce à l’autre.

Unité de contrôle et de synchronisation(Timing and Control) est conçu pour générer des signaux de synchronisation et de contrôle qui assurent la coordination du fonctionnement conjoint des principales unités informatiques dans tous les modes de fonctionnement autorisés. L'unité de contrôle comprend :


  • dispositif pour former des intervalles de temps,
  • circuit d'entrée-sortie combinatoire,
  • registre de commande
  • décodeur de commandes.

Entrée et sortie signaux des unités de contrôle et de synchronisation:

1 PSEN– résolution de la mémoire du programme ;

2 ALE– signal de sortie d'autorisation de fixation d'adresse;

3 PROGRAMME– signal de programmation;

4 E.A.– bloquer le travail avec la mémoire interne ;

5 VPP– tension de programmation ;

6 TVD– signal de réinitialisation générale.

Le dispositif de synchronisation est nécessaire pour synchroniser la séquence d'états du processeur qui forment le cycle de la machine, ainsi que pour le bon fonctionnement de tous les verrous internes et tampons de sortie des ports. Le cycle de la machine se compose de six états (States) consécutifs de S1 à S6, chacun étant à son tour divisé en deux phases :

phase 1 (Phase 1 - P1) et phase 2 (Phase 2 - P2). Ainsi, un cycle machine peut être défini comme une séquence d'intervalles de temps S1P1, S1P2, S2P1,...,S6P2. La durée de la phase est égale à la période des impulsions d'horloge, le cycle machine prend donc 12 périodes d'horloge.

Le nombre de cycles machine détermine la durée des instructions. Presque toutes les instructions sont exécutées en un ou deux cycles machine, à l'exception des instructions de multiplication et de division, dont l'exécution prend quatre cycles machine. La logique d'E/S est conçue pour recevoir et émettre des signaux qui assurent l'échange d'informations avec des périphériques externes via les ports d'entrée/sortie P0-P3.

Registre de commandes conçu pour enregistrer et stocker le code d'opération 8 bits de la commande en cours d'exécution. Le code d'opération, à l'aide d'un décodeur de commande et d'une logique de contrôle informatique, est converti en microprogramme pour exécuter la commande.

Graphique 2.3. Schéma fonctionnel du microcontrôleur monopuce Intel 8051

(Famille MCS-51)

Unité arithmétique et logique(ALU) est une unité parallèle de huit bits qui effectue des opérations arithmétiques et logiques. L'ALU est composée de :

  • registres de stockage temporaire - TMP1 et TMP2,
  • constantes ROM,
  • additionneur,
  • registre supplémentaire - registre B,
  • batterie-ACC,
  • Registre des mots d'état du programme (registre des drapeaux) - PSW.

Registres de stockage temporaire TMP1, TMP2- des registres de huit bits conçus pour recevoir et stocker des opérandes tout en effectuant des opérations sur ceux-ci. Ces registres ne sont pas accessibles par programme.

ROM constante assure la génération d'un code de correction pour la représentation décimale binaire des données, d'un code de masque pour les opérations sur bits et d'un code constant.

Additionneur parallèle de huit bits est un circuit de type combinatoire avec report séquentiel, conçu pour effectuer des opérations arithmétiques d'addition, de soustraction et des opérations logiques d'addition, de multiplication, de disparité et d'identité.

Registre B- un registre de huit bits utilisé lors des opérations de multiplication et de division. Pour les autres instructions, il peut être traité comme un registre supplémentaire en temps réel.

Batterie- un registre de huit bits conçu pour recevoir et stocker le résultat obtenu lors de l'exécution d'opérations arithmétiques-logiques ou d'opérations de décalage.

Registre d'état du programme PSW (mot d'état du programme) conçu pour stocker le mot d'état des commandes exécutées. Lorsque de nombreuses instructions sont exécutées dans l'ALU, un certain nombre d'attributs d'opération (drapeaux) sont générés, qui sont enregistrés dans le registre des mots d'état du programme (PSW). Dans le tableau 1 fournit une liste des drapeaux PSW, donne leurs noms symboliques et décrit les conditions de leur formation.

Bloc d'interruption et d'interface série - UART (Universal Asynchronous Receiver/Transmitter) conçu pour organiser l'entrée et la sortie de flux d'informations séquentiels et organiser un système d'interruption de programme.

Par définition, une interruption signifie l'arrêt temporaire du processus informatique principal pour effectuer une action planifiée ou non planifiée provoquée par le fonctionnement du matériel ou du logiciel.

Ces actions peuvent être de nature service, être des demandes du programme utilisateur pour effectuer une maintenance ou être une réponse à des situations d'urgence.

La base du microcontrôleur (voir Fig. 1) est une unité arithmétique et logique (ALU) de 8 bits. La mémoire MK a une architecture Harvard, c'est-à-dire logiquement divisé en : mémoire de programme - PP (interne ou externe), adressée par un compteur de programme 16 bits (SC) et mémoire de données - interne (Resident Data Memory - RPD) 128 (ou 256) octets, ainsi qu'externe (Externe Mémoire de données – VPD) jusqu'à 64 Ko. Physiquement, la mémoire du programme est implémentée dans la ROM (lecture seule) et la mémoire des données est implémentée dans la RAM (les données peuvent être écrites et lues).

La réception et la sortie des signaux externes s'effectuent via 4 ports huit bits P0..P3. Lors de l'accès à la mémoire de programme externe (EPM) ou à la mémoire de données (DRAM), les ports P0 et P2 sont utilisés comme bus d'adresses/données externe multiplexé. Les lignes de port P3 peuvent également remplir des fonctions alternatives (voir Tableau 1).

Le registre DPTR 16 bits forme l'adresse VPD ou l'adresse de base de la mémoire programme dans la commande de conversion de l'accumulateur. Le registre DPTR peut également être utilisé comme deux registres indépendants de 8 bits (DPL et DPH) pour stocker des opérandes.

Le registre de commande interne (RC) de 8 bits reçoit le code de la commande en cours d'exécution ; ce code est déchiffré par le circuit de commande, qui génère des signaux de commande (voir Fig. 1).

L'accès aux registres de fonctions spéciales - RSF (SFR - sur la figure 1, ils sont entourés d'une ligne pointillée) n'est possible qu'en utilisant l'adressage direct par octets dans la plage d'adresses de 128 (80h) et plus.


La mémoire de données résidente (RDM) des premiers modèles de microcontrôleurs de la famille MCS-51 avait un volume de 128 octets. Les 32 octets inférieurs du RPD sont également des registres à usage général - RON (4 banques de 8 RON chacune). Le programme peut contacter l'un des 8 RON de la banque active. La sélection de la banque RON active s'effectue en programmant deux bits dans le registre d'état du processeur - PSW.


Tableau 1 – Affectations des broches MCS-51

N° de broche. Désignation But
1..8 P1 Port d'E/S quasi-bidirectionnel 8 bits
9 TVD

Signal de réinitialisation (niveau actif – élevé) ;

Le signal RST réinitialise : le PC et la plupart des registres de fonctions spéciales (SFR), désactivant toutes les interruptions et minuteries ; sélectionne la banque RON 0 ; écrit « tous les uns » sur les ports P0_P3, les préparant pour l'entrée ; écrit le code 07H sur le pointeur de pile (SP) ;

10..17

Port d'E/S quasi-bidirectionnel 8 bits ; après l'enregistrement dans la catégorie correspondante « 1 » – exécute des fonctions supplémentaires (alternatives) :

Entrée du port série – RxD ;

Sortie du port série – TxD ;

Entrée d'interruption externe 0 – ~INT0 ;

Entrée d'interruption externe 1 – ~INT1 ;

Entrée minuterie/compteur 0 – T0 ;

Entrée minuterie/compteur 1 – T1 ;

Sortie stroboscopique signal lors de l'écriture dans VPD – ~ WR ;

Sortie stroboscopique signal lors de la lecture du VPD – ~ RD ;

18, 19 X1, X2 Broches pour connecter un résonateur à quartz ou un circuit LC ;
20 GND Conclusion générale ;
21..28 P2 Port d'E/S quasi-bidirectionnel 8 bits ; ou adresser la sortie A en mode de fonctionnement avec mémoire externe (VPP ou VPD) ;
29 PME Strobe pour lire la mémoire de programme externe, émis uniquement lors de l'accès à une ROM externe ;
30 ALE Stroboscope d'adresse mémoire externe (VPP ou VPD) ;
31 EA En désactivant le RPP, le niveau « 0 » sur cette entrée transfère le MK en commande d'échantillonnage seulement depuis la piste ;
39..32 P0 Port d'E/S bidirectionnel 8 bits ; lors de l'accès à la mémoire externe, il émet des adresses A (qui sont écrites dans un registre externe à l'aide du signal ALE), puis échange un octet de manière synchrone avec le signal ~PME (pour les commandes) ou ~WR,~RD (pour les données en VPD) , lors de l'accès à la mémoire externe, toutes les unités sont écrites dans le registre du port P0, détruisant les informations qui y sont stockées ;
40 Ucc Sortie tension d'alimentation

Changer de banque RON simplifie l'exécution des sous-programmes et la gestion des interruptions, car il n'est pas nécessaire d'envoyer le contenu des RON du programme principal à la pile lors de l'appel d'un sous-programme (il suffit d'aller dans une autre banque active de RON dans le sous-programme).

L'accès au RPD est possible par adressage d'octet indirect ou direct (l'adressage d'octet direct permet d'accéder uniquement aux 128 premiers octets du RPD).

La zone RPD étendue (pour les microcontrôleurs de la famille MCS-52 et des familles ultérieures) de l'adresse 128 (80h) à 255 (FFh) ne peut être adressée qu'en utilisant la méthode d'adressage indirect.

Tableau 2 – Bloc de registres de fonctions spéciales (s f r)

Code mnémonique Nom
0E0h *ACC Batterie
0F0h *B Extension d'accumulateur de registre
0D0h *PSW Mot d'état du processeur
0B0h *P3 Port 3
0A0h *P2 Port 2
90h *P1 Port 1
80h *P0 Port 0
0B8h *IP Registre des priorités d'interruption
0A8h *C'EST À DIRE Registre des masques d'interruption
99h SBUF Tampon d'émetteur-récepteur série
98h *SCON Registre de contrôle/état du port série
89h TMOD Registre du mode minuterie/compteur
88h * TCON Minuteries/compteurs, contrôle/registre d'état
8DH TH1 Minuterie 1 (octet de poids fort)
8 ch TL1 Minuterie 1 (octet de poids faible)
8Ch TH0 Minuterie 0 (octet de poids fort)
8Ah TL0 Minuterie 0 (octet de poids faible)
83h DPH Registre de pointeur de données (DPTR) (octet de poids fort)
82h chef du projet Debian Registre de pointeur de données (DPTR) (octet de poids faible)
81h PS Registre de pointeur de pile
87h PCON Registre de contrôle de la consommation d'énergie

2. MODÈLE DE LOGICIEL MCS-51


TYPES DE COMMANDES MCS-51

Près de la moitié des instructions sont exécutées en 1 cycle machine (MC). Avec une fréquence d'oscillateur à quartz de 12 MHz, le temps d'exécution d'une telle commande est de 1 µs. Les instructions restantes sont exécutées en 2 cycles machine, c'est-à-dire en 2μs. Seules les instructions de multiplication (MUL) et de division (DIV) sont exécutées en 4 cycles machine.

Au cours d'un cycle machine, deux accès à la mémoire programme (interne ou externe) ont lieu pour lire deux octets d'une commande ou un accès à la mémoire de données externe (EDM).

3. MÉTHODES (VOIES) POUR RÉPONDRE AU MCS-51

1. ADRESSAGE DU REGISTRE – l'opérande de 8 bits est situé dans le RON de la banque de registres sélectionnée (active) ;

2 ADRESSAGE DIRECT (indiqué par le signe – #) – l'opérande est situé dans le deuxième (et pour un opérande de 16 bits, dans le troisième) octet de la commande ;

3 ADRESSAGE INDIRECT (indiqué par le signe – @) – l'opérande est situé dans la Mémoire de Données (RDM ou VPD), et l'adresse de la cellule mémoire est contenue dans l'un des RON d'adressage indirect (R0 ou R1) ; dans les commandes PUSH et POP, l'adresse est contenue dans le pointeur de pile SP ; le registre DPTR peut contenir une adresse VPD allant jusqu'à 64 Ko ;

4 DIRECT BYTE ADDRESSING – (dir) – est utilisé pour accéder aux cellules RPD (adresses 00h...7Fh) et aux registres de fonctions spéciales SFR (adresses 80h...0FFh) ;

5 ADRESSAGE DIRECT DE BITS – (bit) – est utilisé pour accéder aux 128 bits adressables séparément situés dans les cellules RPD aux adresses 20H...2FH et aux bits adressables séparément des registres de fonctions spéciales (voir Tableau 3 et modèle de programme) ;

6 ADRESSAGE D'INDEX INDIRECT (indiqué par le signe – @) – simplifie la visualisation des tables dans la mémoire programme, l'adresse PP est déterminée par la somme du registre de base (PC ou DPTR) et du registre d'index (accumulateur) ;

7 ADRESSAGE IMPLICITE (INTÉGRÉ) – le code de commande contient une référence implicite (par défaut) à l'un des opérandes (le plus souvent à l'accumulateur).

4. FORMAT DU MOT D'ÉTAT DU PROCESSEUR (PSW)

C – carry (CARY) ou drapeau d'emprunt, remplit également les fonctions d'un « accumulateur booléen » dans les commandes fonctionnant avec des bits ;

AC – indicateur de report auxiliaire (supplémentaire) – est mis à « 1 » si dans la commande d'addition (ADD, ADDC) il y a eu un transfert de la tétrade basse à la tétrade haute (c'est-à-dire du 3ème bit au 4ème bit) ;

F0 – drapeau utilisateur – défini, réinitialisé et vérifié par logiciel ;

RS1 RS0 Banque Adresse (rép.)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – Sélection de la banque de registre :

OV – Indicateur de dépassement arithmétique ; sa valeur est déterminée par l'opération « OU Exclusif » des signaux de transfert d'entrée et de sortie du bit de poids fort de l'ALU ; une seule valeur de cet indicateur indique que le résultat d'une opération arithmétique dans le code complément à deux est en dehors des limites autorisées : –128…+127 ; lorsqu'une opération de division est effectuée, l'indicateur OV est réinitialisé, et dans le cas d'une division par zéro, il est défini ; lors de la multiplication, le drapeau OV est activé si le résultat est supérieur à 255 (0FFH) ;

Bit PSW – Réserve, contient un déclencheur, accessible en écriture ou en lecture ;

P – indicateur de parité – est l'addition du nombre de bits unitaires dans l'accumulateur au pair ; généré par un circuit combinatoire (logiciel accessible uniquement en lecture).

Les microcontrôleurs MCS-51 n'ont pas le drapeau "Z". Mais dans les commandes de saut conditionnel (JZ, JNZ), le contenu actuel (zéro ou non nul) de l'accumulateur est vérifié par le circuit combinatoire.

Toutes les commandes de transfert et d'échange d'opérandes peuvent être effectuées via l'accumulateur (voir Fig. 3). De plus, les transferts depuis/vers la mémoire externe (mémoire de programme ou mémoire de données) ne peuvent être effectués que via la batterie.

La plupart des transferts peuvent également être effectués via un octet direct (dir). Il existe même des transferts dir-dir (voir Figure 3).

Les transferts manquants de RON à RON peuvent être mis en œuvre sous forme de transferts de RON vers un répertoire d'octets directement adressé (en tenant compte du fait que les RON sont situés dans la zone initiale de la mémoire de données résidente, dont les cellules peuvent être adressées en tant que répertoire).

Les instructions d'échange XCH permettent de transférer des octets sans détruire les deux opérandes.

Les instructions arithmétiques sont exécutées uniquement dans l'accumulateur. Par conséquent, le premier opérande doit d’abord être placé dans l’accumulateur, puis ajouter ou soustraire le deuxième opérande. Le résultat est placé dans l'accumulateur.


La commande de soustraction SUBB est exécutée uniquement avec un prêt (c'est-à-dire que le drapeau Cary est également soustrait du résultat). Par conséquent, pour exécuter une commande de soustraction sans emprunter, vous devez d’abord émettre la commande C flag clear (CLRC).

L'instruction de multiplication d'opérandes à un octet - MULAB - place un résultat sur deux octets (16 bits) : l'octet de poids faible dans l'Accumulateur, l'octet de poids fort dans le registre B.

Le résultat de l'exécution de la commande de division d'opérandes à un octet - DIVAB - est placé : le quotient - un Accumulateur, le reste - dans le registre B.

L'instruction arithmétique INC ajoute un à l'opérande sélectionné. L'instruction arithmétique DEC soustrait un de l'opérande sélectionné. La commande Decimal Accumulator Adjustment (DAA) vous aide à ajouter des nombres décimaux codés binaires (BCD) sans les convertir au format hexadécimal (format hexadécimal). Les opérandes sources doivent être au format BCD, c'est-à-dire Chaque tétrade d'un octet ne contient que des nombres de 0 à 9 (il ne peut pas y avoir de nombres hexadécimaux : A, B, C, D, E, F). Par conséquent, un octet peut contenir des nombres de 00 à 99 pour les nombres BCD compressés ou des nombres de 0 à 9 pour les nombres BCD non compressés.

La commande DA A - correction décimale effectue des actions sur le contenu de l'accumulateur après avoir ajouté des nombres BCD dans le processeur (les nombres ont été ajoutés selon les lois de l'arithmétique hexadécimale) comme suit (voir exemple) :

· si le contenu de la tétrade basse de l'accumulateur est supérieur à 9 ou si le drapeau de report auxiliaire est activé (AC = 1), alors 6 est ajouté au contenu de l'accumulateur (c'est-à-dire les six chiffres manquants au format hexadécimal) ;

· si après cela le contenu de la tétrade la plus élevée de l'accumulateur est supérieur à 9 ou si le drapeau C est activé, alors le chiffre 6 est ajouté à la tétrade la plus élevée de l'accumulateur.

La commande d'ajustement décimal DA A n'est pas utilisée après la commande d'incrémentation (INC) car la commande d'incrémentation n'affecte pas (ne modifie pas) les indicateurs C et AC.

Commandes logiques :

"ET" logique - ANL,

"OU" logique – ORL,

Les commandes logiques XOR - XRL - sont exécutées dans l'accumulateur (tout comme les commandes arithmétiques), mais il est également possible d'exécuter des commandes logiques dans un octet direct (dir). Dans ce cas, le deuxième opérande peut être :

En batterie ou

L'opérande immédiat d'une commande.

Les commandes de rotation (RR A, RL A) et les commandes de rotation via le flag CARY (RRC A, RLC A) décalent cycliquement le contenu de l'Accumulateur de 1 bit ; les transferts d'opérandes de bits s'effectuent uniquement via le flag C.

Version de base MCS–51 Brève information. Les microcontrôleurs (MC) 8 bits modernes disposent de telles ressources de contrôle en temps réel, pour lesquelles des configurations multipuces auparavant coûteuses sous la forme de cartes de micro-ordinateur séparées étaient utilisées, à savoir :

● disposer d'une capacité mémoire suffisante, de sa division physique et logique en mémoire programme et mémoire données (architecture Harvard) et d'un système de commande destiné à exécuter des algorithmes de contrôle ;

● inclure tous les dispositifs (processeur, ROM, RAM, ports d'entrée/sortie, système d'interruption, moyens de traitement des informations binaires, etc.) nécessaires à la mise en œuvre d'un système de contrôle à microprocesseur à configuration minimale. Dans les années 70 du siècle dernier, l'entreprise Intel une famille de microcontrôleurs 8 bits MCS-48, unis par un certain nombre de caractéristiques communes (capacité en bits, système de commande, ensemble de blocs fonctionnels principaux, etc.), a été développée et lancée en production industrielle. La version de base de cette famille comprend :

● Processeur 8 bits ;

● mémoire de programme interne (1/2/4 Ko) ;

● mémoire de données interne (64/128/256 octets) ;

● jusqu'à 27 lignes d'E/S internes et 16 lignes d'E/S externes ;

● un compteur temporisateur 8 bits ;

● système d'interruption à un seul niveau avec deux sources de requêtes. En 1980, la même société a développé une nouvelle famille de microcontrôleurs à huit bits, MCS-51, compatible avec l'architecture de la famille MCS-48, mais dotée de capacités supérieures.

L'architecture de la famille MCS-51 s'est avérée si réussie qu'elle fait toujours partie des standards pour les MK 8 bits. Par conséquent, l'objet d'étude a été choisi comme étant les microcontrôleurs de cette famille, largement utilisés dans des systèmes de contrôle relativement simples.

Divers outils de préparation de programmes ont été développés pour la famille MCS-51 (compilateurs, émulateurs matériel-logiciel, etc.) et il existe un grand nombre de bibliothèques de routines standards. La famille comprend diverses modifications de microcircuits (versions puces) de microcontrôleurs. Les articles de cette section traitent en détail de la version de base des microcontrôleurs de la famille MCS-51 (le microcircuit 8051 correspond à l'analogue domestique KP1816BE51), le plus simple en termes structurels et fonctionnels et du point de vue de la compréhension.

Les séries ultérieures de microcircuits, tout en conservant la compatibilité avec la version de base, en diffèrent par une technologie de fabrication améliorée, des paramètres électriques, du matériel et des fonctionnalités supplémentaires. Les articles suivants sont consacrés aux caractéristiques structurelles et fonctionnelles des modifications ultérieures de la famille de microcircuits MCS-51.
Schéma fonctionnel généralisé du MCS-51. La composition du MC, dont un schéma fonctionnel généralisé est présenté à la Fig. 7.1.1 comprend :

● Unité centrale de traitement (CPU) 8 bits composée de ALU, appareils de controle UU et générateur d'adresses F;

● masque ROM d'une capacité de 4 Ko pour le stockage des programmes ;

● RAM d'une capacité de 128 octets pour le stockage des données ;

● quatre ports programmables P0–P3 pour l'entrée/sortie d'informations ;

● unité d'interface série BPI pour l'échange d'informations avec des appareils externes via une ligne bifilaire ;

● bloc de minuteries/compteurs BT/C pour maintenir le mode temps réel ;

● Bloc d'interruption BP pour organiser les interruptions des programmes exécutables. Ces fonds forment résident partie du microcontrôleur située directement sur la puce. Le MK comprend un grand nombre de registres, qui sont affectés à des blocs fonctionnels distincts et ne sont pas représentés dans le diagramme.

Le diagramme ne montre pas non plus les circuits de commande. L'échange bidirectionnel d'informations entre les blocs s'effectue via 8 bits internes bus de données SHД-8.

Par 16 bits interne bus d'adressesША-16 L'adresse générée dans la CPU est sortie vers la ROM (12 bits d'adresse) et vers la RAM (8 bits de poids faible).

Lors de l'utilisation d'une mémoire externe, les 8 bits de poids faible de l'adresse sont sortis sur le port P0 et les 3 ou 8 bits de poids fort sur le port P2.

Pour étendre logiquement l'interface, la combinaison des fonctions des lignes portuaires est utilisée. A titre d'exemple sur la Fig. 7.1.1 la ligne pointillée montre les lignes du port P3 qui effectuent alternative fonctions de transmission de signaux de commande, dont le but sera discuté ci-dessous. Pour créer un générateur d'horloge interne, un résonateur à quartz et deux condensateurs sont connectés aux bornes du microcircuit MK (Fig. 7.1.1). Au lieu d'un générateur d'horloge interne, une source d'oscillation externe peut être utilisée pour la synchronisation. La désignation graphique conventionnelle du microcircuit MK est illustrée à la Fig. 7.1.2, désignation et fonction des broches - dans le tableau. 7.1.1. Considérons les blocs fonctionnels du MK et le principe de leur fonctionnement. Dispositif arithmétique et logique. Le dispositif arithmétique et logique est conçu pour effectuer des opérations arithmétiques (y compris la multiplication et la division) et logiques sur des opérandes de huit bits, ainsi que des opérations de décalage logique, de remise à zéro, de mise à l'état initial, etc. Le schéma fonctionnel de l'ALU est illustré à la Fig. 7.1.3.

L'ALU comprend

● huit bits parallèles additionneur SM de type combinatoire avec report séquentiel, effectuant des opérations arithmétiques (addition et soustraction) et logiques (addition, multiplication, disparité et identité) ;

batterie A, assurer les fonctions du registre arithmétique principal ;

registre B, utilisé pour mettre en œuvre des opérations de multiplication et de division ou comme registre super-opérationnel supplémentaire dont les fonctions sont déterminées par l'utilisateur ;

registres(logiciel non disponible) stockage temporaireРВХ1, РВХ2, destinés à recevoir et stocker les opérandes pendant la durée de l'opération ;

● ROM constantes ROM, qui stocke le code de correction pour la représentation décimale binaire des données, le code de masque pour les opérations sur bits et le code pour les constantes ;

registre des mots d'état du programme PSW, qui enregistre l'état de l'ALU après une opération terminée. Dans le tableau 7.1.2 fournit des informations sur l'affectation des bits des bits individuels du registre PSW. Dispositif de contrôle. Unité de contrôle (CU) du processeur central destiné pour coordonner le travail conjoint de tous les nœuds MC en utilisant les impulsions d'horloge et les signaux de contrôle générés. Il se compose (Fig. 7.1.4) :

unité de synchronisation et de contrôle Le système de contrôle, qui génère des impulsions d'horloge qui définissent les cycles de la machine et leurs états individuels (S) et phases (P), et, en fonction du mode de fonctionnement du microcontrôleur, génère l'ensemble nécessaire de signaux de commande. Il faut un, deux ou quatre cycles machine pour exécuter une commande.

Chaque cycle de la machine a six états S1–S6, A chaque état comprend deux phases P1, P2 dont la durée est la période d'oscillation du générateur d'horloge T 0SC.

La durée du cycle machine est de 12T 0SC. Tous les cycles machine sont identiques, commençant par la phase S1P1 et se terminant par la phase S6P2.

En plus des impulsions d'horloge, le dispositif de synchronisation génère deux (parfois un) signaux de déclenchement pour l'octet de poids faible de l'adresse ALE à chaque cycle machine sous la forme d'une impulsion positive dans les phases S1P2-S2P1 et S4P2-S5P1. Les chronogrammes de la Fig. 7.1.5 illustrer l'organisation des cycles de la machine;

● registre de commande RK, décodeur de commandes DC et PLM, permettant à chaque cycle machine de générer un ensemble de micro-opérations conformément au microprogramme de la commande exécutée ;

● Logique d'entrée/sortie LVV pour recevoir et émettre des signaux qui assurent l'échange d'informations du MK avec des dispositifs externes via les ports P0–P3 ;

● Registre PCON, qui possède un seul bit SMOD activé en position PCON.7 pour doubler le débit de données du port série. Les bits restants sont réservés pour une utilisation ultérieure.
Générateur d'adresses. Générateur d'adresses (FA), ou compteur de commandes PC, destiné pour former l'adresse actuelle de 16 bits de la mémoire de programme et l'adresse de 8/16 bits de la mémoire de données externe. Il se compose (Fig. 7.1.6) :

● 16 bits tampon B, qui communique entre le bus de données SD 8 bits et le bus interne (IB) 16 bits du formateur d'adresses ;

● Circuit d'incrémentation SI pour augmenter de un la valeur de l'adresse mémoire du programme actuel ;

● registre pour stocker l'adresse actuelle des commandes PTA provenant du SI ;

● registre de pointeur de données DPTR , composé de deux registres de 8 bits DPH et DPL. Il sert à stocker une adresse de 16 bits de mémoire de données externe et peut être utilisé comme deux RON indépendants accessibles par logiciel ;

● registre du générateur d'adresse XRF pour stocker l'adresse exécutive 16 bits de la mémoire programme ou l'adresse 8/16 bits de la mémoire de données externe. Ce registre est également utilisé pour transmettre des données via le port P0 vers des périphériques externes lors de l'exécution des commandes MOVX @Rm, A et MOVX @DPRT, A.

Mémoire de données. Mémoire de données destiné pour recevoir, stocker et émettre des informations utilisées pendant l'exécution du programme. La mémoire de données interne (résidente) (Fig. 7.1.7) se compose de RAM d'une capacité de 128 octets, pointeur de pile S.P. registre d'adresses RAM RA et décodeur Dsh. Le pointeur de pile SP est un registre de 8 bits conçu pour recevoir et stocker l'adresse de la cellule de pile à laquelle on a accédé en dernier. Après la réinitialisation, le pointeur de pile est positionné à l'adresse 07H, ce qui correspond au début de la pile d'adresse 08H. Le registre d'adresses PA ainsi que le décodeur Dsh permettent d'accéder à la cellule mémoire requise contenant un octet ou un bit d'information.

Le MK offre la possibilité d'augmenter la capacité de mémoire de données jusqu'à 64 Ko en connectant périphériques de stockage externes. A titre d'exemple sur la Fig. 7.1.8 montre l'organisation des pages de la mémoire de données VPD externe d'une capacité de 2 Ko à l'aide de commandes de type MOVX @ Rm(m = 0 ; 1). Dans ce cas, le port P0 fonctionne comme un bus d'adresses/données multiplexé, trois lignes du port P2 sont utilisées pour adresser une page de RAM externe, et les cinq lignes restantes peuvent être utilisées comme lignes d'entrée/sortie.
En figue. 7.1.9 montre les chronogrammes des cycles de lecture et d'écriture lorsque le MK fonctionne avec une RAM externe. Les schémas indiquent :

● RSN - octet de poids fort du compteur de commandes du PC ;

● DPL, DPH - octets bas et haut du registre de pointeur de données DPTR, utilisé comme registre pour l'adressage indirect dans les commandes MOVX @DPTR,A et MOVX A,@DPTR ;

● P2 SFR - Verrous de port P2 ;

● Rm (m = 0, 1) - registres utilisés dans les instructions MOVX @Rm, A et MOVX A, @Rm comme registres d'adresses indirectes ;

● Z - état à haute résistance ;

● D - la période pendant laquelle les données du port P0 sont saisies dans le microcontrôleur. Mémoire de programme. La mémoire de programme est conçue pour stocker des programmes, possède son propre espace d'adressage (séparé de la mémoire de données) et est en lecture seule. Il comprend un décodeur Dsh et une ROM (Fig. 7.1.10). Un compteur PC 16 bits est utilisé pour adresser la mémoire programme, sa capacité maximale est donc de 64 Ko. La mémoire de programme interne se compose d'une ROM de 4 Ko et d'un décodeur de 12 bits. La mémoire externe est connectée selon le schéma de la Fig. 7.1.11. Si 0 V est appliqué à la broche ¯EA du MK (comme indiqué sur la Fig. 7.1.11), la mémoire de programme interne est désactivée. Tous les accès à la mémoire commencent à l'adresse 0000h. Lorsque la broche ¯EA est connectée à une source d'alimentation, l'accès à la mémoire de programme interne aux adresses 0000h à FFFFh et à la mémoire de programme externe aux adresses 0FFFh à FFFFh se produit automatiquement.

Pour lire la mémoire externe des programmes MK, le signal ¯PSEN est généré. Lorsque vous travaillez avec la mémoire interne, le signal de lecture n'est pas utilisé. Lors de l'accès à la mémoire de programme externe, une adresse de 16 bits est toujours formée. L'octet de poids faible de l'adresse est transmis via le port P0 dans la première moitié du cycle machine et est fixé par la coupure du stroboscope ALE dans le registre. Dans la seconde moitié du cycle, le port P0 est utilisé pour saisir un octet de données de la mémoire externe dans le MK.

L'octet de poids fort de l'adresse est transmis via le port P2 pendant tout le temps d'accès à la mémoire.

Les chronogrammes des cycles de lecture et d'écriture lorsque le MK fonctionne avec une RAM externe sont présentés dans la Fig. 7.1.12.
Les schémas indiquent :

● PCL OUT - sortie de l'octet de poids faible du compteur de programme PC ;

● RSN OUT - sortie de l'octet de poids fort du compteur de commandes du PC ;

● DPH - octet de poids fort du registre de pointeur de données DPTR, utilisé comme registre pour l'adressage indirect dans les instructions MOVX @DPTR,A et MOVX A,@DPTR ;

● P2 SFR - Verrous de port P2 ;

● INS IN - entrée de l'octet d'instruction (commande) à partir de la mémoire du programme ;

● ADDR OUT - émission de l'octet faible de l'adresse de la mémoire de données externe à partir des registres Rm (m = 0, 1) ou du registre DPL (registre bas DPTR). Ports d'E/S. Affectation des ports. Ports P0, P1, P2, P3 destiné pour échanger des informations entre le MK et les appareils externes, et également pour exécuter les fonctions suivantes :

● l'octet de poids faible de l'adresse A7…A0 est émis via le port P0 ; un octet de données est sorti du MK et entré dans le MK lorsque vous travaillez avec une mémoire de programme externe et une mémoire de données externe (séparées dans le temps) ;

● via le port P2, l'octet de poids fort de l'adresse A15...A8 est émis lors du travail avec une mémoire de programme externe et une mémoire de données externe (uniquement lors de l'utilisation des commandes MOVX A,@DPTR et MOVX @DPTR,A) ;

● Les lignes du port P3 peuvent être utilisées pour exécuter des fonctions alternatives si 1 est entré dans le verrou de cette ligne, sinon 0 est fixé à la sortie de ligne. Les fonctions alternatives des broches du port P3 sont données dans le tableau. 7.1.3.

Caractéristiques des circuits des ports

En figue. 7.1.13 montre des schémas pour un canal de chacun des ports MK, notamment :

● verrou pour fixer le bit de données reçu ;

● amplificateur de sortie Cascade(conducteur);

● nœud connexion avecétage de sortie (sauf P2) ;

● un circuit de transmission d'un bit de données depuis le côté sortie du port, constitué des tampons B2 et B3 (pour le port P4). Le verrou est une bascule D, cadencée par le signal interne « Écriture sur verrou ». Le bit de données de la sortie directe de la bascule D peut être lu par programme via le tampon B1 en utilisant le signal « Read Latch » vers la ligne du bus de données interne (ID) du MK.

Étage de sortie le port P0 est un inverseur dont les caractéristiques se manifestent par le fait que le transistor de charge VT2 ne s'ouvre que lors de l'accès à la mémoire externe (lors de la transmission d'adresses et de données via le port). Dans tous les autres modes, le transistor de charge est fermé. Par conséquent, pour utiliser P0 (Fig. 7.1.13, a) comme port de sortie à usage général, il est nécessaire de connecter des résistances de charge externes à ses bornes. Lors de l'écriture de 1 sur le verrou du port, le transistor inverseur VT1 est verrouillé et la broche externe du port P0.X est commutée dans un état à haute résistance. Dans ce mode, la sortie du port P0.X peut servir d'entrée. Si le port P0 est utilisé comme port d'E/S à usage général, chacune de ses broches P0.X peut fonctionner indépendamment comme entrée ou sortie. Étages de sortie ports P1, P2, P3 (Fig. 7.1.13, b, c, d) réalisé selon des circuits inverseurs avec une résistance de charge interne, qui est utilisée comme transistor VT2.

Pour réduire le temps de commutation lorsque les broches du port passent de l'état 0 à l'état 1, un transistor supplémentaire VT3 a été introduit en parallèle avec le transistor de charge VT2. Le transistor VT3, utilisant des éléments du circuit de grille, est déverrouillé pendant un temps égal à deux périodes d'oscillation de l'oscillateur à quartz maître (pendant les phases S1P1, S2P2 du cycle machine). Étages de sortie les ports P0, P2 (Fig. 7.1.13, A, c) utilisant le multiplexeur MX peuvent être connectés soit à des verrous, soit aux bus internes « Adresse/données » et « Adresse ». L'étage de sortie du port P1 (Fig. 7.1.13, 6) est connecté en permanence au verrou.

Si la broche du port P3 est une sortie et que son verrou contient 1, alors son étage de sortie est contrôlé par le signal interne matériel « Alternate Output Function », assurant l'exécution de la fonction alternative correspondante, c'est-à-dire : l'un des signaux ¯WR, ¯RD ou RxD est généré au niveau de la broche externe. Si la sortie du port est utilisée comme entrée, alors le signal alternatif qui y arrive (TxD, ¯INT0, ¯INT1, T0, T1) est transmis à la ligne interne « Fonction d'entrée alternative ».

Mode d'enregistrement des ports.

Lorsqu'une commande d'écriture de port est exécutée, la nouvelle valeur est écrite sur le verrou en phase S6P2 et sortie directement sur la broche de sortie du port en phase S1P1 du cycle machine suivant.

Mode de lecture des ports

Les commandes de lecture de port lisent les informations directement à partir des broches externes d'un port ou à partir des sorties de verrouillage. Dans le premier cas, le bit de données de la broche du port est lu par programme via le tampon B2 en utilisant le signal « Read Pins » vers la ligne du bus de données interne (SD) du MK. A noter que les signaux « Write to latch », « Read latch », « Read pins » sont générés matériellement lorsque les commandes correspondantes sont exécutées.

Dans le second cas, on met en œuvre le mode dit « Lecture-Modification-Ecriture », dans lequel la commande lit le signal d'état du verrou, le modifie si nécessaire, puis le réécrit dans le verrou. Le mode « Lecture-Modification-Écriture » est implémenté lors de l'exécution des commandes suivantes : ANL, ORL, XRL, JBC ; CPL ; INC ; DÉC; DJNC ; MOUVEMENT PX,Y ; CLR PXY.Y ; SETB PX,Y.

La lecture des informations à partir des sorties des verrous vous permet d'éliminer les erreurs lors de l'interprétation du niveau logique au niveau de la broche du port. Lisez la suite de l'article.