Microcontrôleurs MCS–51 : modèle de programme, structure, commandes. Microcontrôleurs MCS-51. Schéma fonctionnel, ALU, mémoire de données Programmation des microcontrôleurs mcs 51 en C

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. En contactant mémoire externe programmes (VPP) ou mémoire de données (DVD), les ports P0 et P2 sont utilisés comme bus Adresse/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

Numéro 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 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 vers 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 code supplémentaire a dépassé les 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 Subtract 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 de correction décimale 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 possible d'exécuter des commandes logiques également dans l'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 drapeau 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 drapeau C.

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 :

· identification de l'ensemble des registres disponibles pour la programmation, leur objectif fonctionnel et structures ;

compréhension de l'organisation mémoire vive et la procédure pour 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 une gamme de puces des plus microcontrôleurs simplesà assez complexe. Les microcontrôleurs de la famille MCS-51 vous permettent d'effectuer les deux tâches de contrôle divers appareils, et implémenter des composants individuels du 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 modification diagramme schématique appareils et programmes.

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 collaboration OEVM bloque dans tous les modes autorisés de son fonctionnement. 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- autorisation mémoire de 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 formation d'intervalles de temps est nécessaire pour synchroniser la séquence d'états du processeur qui forment le cycle de la machine, ainsi que pour bon fonctionnement 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 appareils 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 d'un 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.

Les microcontrôleurs de la famille MCS-51 sont construits sur l'architecture Harvard, dans laquelle la mémoire de programme et la mémoire de données sont séparées et disposent de leurs propres espaces d'adressage et moyens d'y accéder.

Mémoire de programme


La capacité de mémoire maximale est de 64 Ko, dont 4 Ko, 8 Ko, 16 Ko ou 32 Ko de mémoire (tableau 7.3.1) sont situés sur la puce, le reste est hors puce.
Lorsque la tension à la broche EA = VCC La mémoire interne et externe sont utilisées, avec EA = V CC = 0 - uniquement la mémoire externe.
Le tableau 7.3.1 montre adresses d'accès à la mémoire du programme pour les cas spécifiés.
La zone inférieure de la mémoire programme est allouée au démarrage du microcontrôleur (adresse de démarrage 0000h après réinitialisation) et au traitement des interruptions (les adresses d'interruption sont situées à intervalles de 8 octets : 0003h, 000Bh, 0013h, etc.).


La mémoire du programme est en lecture seule et lors de son accès :

● à mémoire externe programmes, le signal ¯PSEN est généré et 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 MCU.
L'octet de poids fort de l'adresse est transmis via le port P2 pendant tout le temps d'accès à la mémoire (Fig. 7.1.11) ;

● à mémoire interne le signal de lecture n'est pas généré et des cycles d'échange sont utilisés sur le bus interne du microcontrôleur.

Mémoire de données

Mémoire interne Les données peuvent être divisées en trois blocs (tableau 7.3.2).

La mémoire interne est toujours adressée par un octet, ce qui permet d'adresser seulement 256 cellules mémoire.
Par conséquent, comme le montre le tableau 7.3.2, pour adresser les cellules de 8 bits supérieures de la RAM interne et les registres de fonctions spéciales SFR, qui occupent le même espace d'adressage, les commandes utilisent différentes façons adressage : indirect et direct.

Caractéristiques de l'organisation de la zone inférieure de la RAM interne sont reflétés dans le tableau 7.3.3.

Les 32 octets faibles de RAM interne avec les adresses 00h.
1Fh sont regroupés en quatre banques de huit registres (R0.R7).
Les 16 octets suivants de RAM avec des adresses 20h.
2Fh représente une zone mémoire d'une capacité de 8x16 = 128 bits, qui permet d'accéder à chaque bit individuel.
Pour sélectionner une adresse de registre bancaire, utilisez son nom R0.
R7, pour la sélection de banque - bits RS0, RS1 du registre de mots d'état PSW.

Adresses de bits

Adresses de bits sont donnés dans le tableau 7.3.3.

L'adressage est effectué direct chemin.

Une liste de tous les registres de fonctions spéciales SFR avec leurs adresses est donnée dans le tableau 7.2.2.
Pour plus de clarté, dans le tableau 7.3.

4 est donné plan d'adresses d'enregistrementSFR microcircuits de la famille MCS-51 à l'étude.
L'adresse SFR est déterminée par la combinaison des chiffres de colonne et de ligne dans système hexadécimal Compte

Par exemple, le registre CMOD a l'adresse D9h.

Pour les registres SFR dont les adresses se terminent par 0h ou 8h (elles sont en gras), en plus de octet autorisé au niveau du bit adressage.

Dans ce cas, l'adresse du bit occupant le registre Nième rang, est défini comme XXh + ​​​​0Nh, où XXh est l'adresse du registre SFR, N = 0,7.
Les adresses de bits dans cette zone ont des valeurs de 80H à FFH.
Par exemple, les adresses de bits de l'accumulateur ACC se situent dans la plage E0h-E7h.

Mémoire externe des données (jusqu'à 64 Ko) sont créées microcircuits supplémentaires mémoire connectée au MK.
Pour travailler avec la mémoire de données externe, des commandes spéciales sont utilisées, de sorte que les espaces d'adressage de la mémoire externe et interne ne se chevauchent pas et, par conséquent, les deux types de mémoire de données peuvent être utilisés simultanément.

Pour accéder aux cellules de mémoire de données externes, utilisez (Fig. 7.1.8) :
● commandes à adressage indirect ;
● lecture des signaux ¯RD et écriture ¯WR ;
● port P0 pour transmettre l'octet de poids faible de l'adresse et recevoir/transmettre l'octet de données ;
● port P2 pour transmettre l'octet de poids fort de l'adresse.
Méthodes d'adressage.
Le système de commande utilise :
● Adressage direct, indirect, registre, registre-indirect, immédiat et index (adressage indirect par la somme des registres de base et d'index) opérandes sources ;
● Adressage direct, de registre et indirect de registre opérandes de destination.
La combinaison de ces méthodes (adressage) fournit 21 modes d'adressage.
Dans ce tableau et dans les tableaux du système de commande ci-dessous, la notation suivante est utilisée :

Adressage direct.

Avec cette méthode d'adressage, l'emplacement de l'octet ou du bit de données est déterminé par l'adresse à 8 bits du deuxième (et troisième) octet de la commande.
L'adressage direct est utilisé uniquement pour accéder à la mémoire de données interne (128 octets inférieurs de RAM) et aux registres de fonctions spéciales.

Enregistrer l'adressage.


Cette méthode d'adressage permet d'accéder aux données stockées dans l'un des huit registres R0.
R7 de la banque de registre de travail actuelle.
Il peut également être utilisé pour accéder aux registres de pointeur A, B, AB (double registre), DPTR et au drapeau de transport C.
L'adresse des registres spécifiés est incluse dans le code d'opération, ce qui réduit le nombre d'octets de commande.

Adressage indirect des registres.


Dans ce cas, l'adresse des données est stockée dans un registre de pointeur dont l'emplacement est déterminé par le code d'opération.
Cette méthode L'adressage est utilisé pour accéder à la RAM externe et à la moitié supérieure de la RAM interne.
Les registres pointeurs pour les adresses 8 bits peuvent être les registres R0, R1 de la banque de registres de travail sélectionnée ou le pointeur de pile SP pour l'adressage 16 bits, seul le registre pointeur de données DPTR est utilisé ;

Adressage direct.


Avec ce mode d'adressage, la donnée est directement indiquée dans la commande et se situe dans le deuxième (ou dans le deuxième et le troisième) octet de la commande, c'est à dire
aucun adressage mémoire requis.
Par exemple, la commande MOV A,#50 charge le numéro 50 dans la batterie A.

Adressage d'index.


Cette méthode est un adressage de registre indirect, dans lequel l'adresse d'un octet de données est déterminée comme la somme du contenu des registres de base (DPTR ou PC) et d'index (A).
Chemin utilisé uniquement pour accéder à la mémoire du programme et uniquement en mode lecture ; cela facilite la visualisation des tableaux stockés dans la mémoire du programme.

Structure d'équipe.

La longueur de la commande est de un (49 commandes), deux (45 commandes) ou trois (17 commandes) octets.
Le premier octet de la commande contient toujours le code d'opération (OC), et les deuxième et troisième octets sont les adresses des opérandes ou les valeurs des données immédiates.

Des bits simples, des tétrades, des octets et des mots à deux octets peuvent être utilisés comme opérandes.
Il existe 13 types de commandes, présentés dans le tableau 7.3.5 :

● A, PC, SP, DPTR, Rn (n = 0, 7) - accumulateur, compteur de programme, pointeur de pile, registre de pointeur de données et registre de banque de courant ;
● Rm (m = 0, 1) — registre de la banque actuelle, utilisé pour l'adressage indirect ;
● direct — adresse 8 bits de l'opérande adressé directement ;
● bit — adresse du bit directement adressé ;
● rel — adresse relative de la transition ;
● addr11, addr16 — adresse de saut absolue de 11 et 16 bits ;
● #data8, #data16 : données immédiates (opérandes) d'une longueur de 8 et 16 bits ;
● A10, A9, A0 – bits individuels d'une adresse de 11 bits ;
● (.) — contenu de la cellule mémoire à l'adresse spécifiée entre parenthèses ;
● SB, MB - octets hauts et bas de l'opérande 16 bits.

Informations générales sur le système de commande.

Le système de commande offre de plus grandes capacités de traitement des données sous forme de bits, de tétrades, d'octets, de mots à deux octets et de contrôle en temps réel.
Le langage macroassembleur ASM51 est utilisé pour décrire les commandes. La syntaxe de la plupart des commandes consiste en un mnémonique (abréviation) pour l'opération en cours d'exécution, suivi d'opérandes.
Les opérandes sont utilisés pour indiquer différentes manières adressage et types de données.

En particulier, l'abréviation MOV comporte 18 commandes différentes conçues pour traiter trois types de données (bits, octets, adresses) dans différents espaces d'adressage.
Le jeu de commandes contient 42 mnémoniques de 111 types de commandes pour spécifier 33 fonctions MK.

Sur les 111 instructions, 64 sont exécutées en un cycle machine, 45 en deux cycles, et seules deux instructions (MUL - multiplication et DIV - division) sont exécutées en 4 cycles. Avec une fréquence de générateur d'horloge de 12 MHz, la durée du cycle machine (12 cycles d'horloge) est de 1 µs. Par signe fonctionnel Les équipes peuvent être divisées en cinq groupes. Ci-dessous une description des commandes de chaque groupe, présentée sous forme de tableaux. Pour rendre les tableaux plus compacts, nous mettons en évidence un groupe de commandes (Tableau 7.3.6), dont l'exécution influence(marqué d'un signe +) sur l'état des drapeaux Registre des mots d'état PSW.

Commandes de transfert de données

Les commandes de transfert peuvent être divisées en sous-groupes distincts.
Commandes de transfert et d'échange de données entre les cellules de mémoire interne(Tableau 7.3.7).

Les commandes 1 à 16, portant le mnémonique MOV dest, src, sont destinées à expéditeur un octet ou deux octets (commande 16) de données de la source src vers la destination dest, tandis que :
● pour indiquer source(src) quatre méthodes d'adressage sont utilisées : enregistré (commandes 2-4, 6, 8), direct (commandes 1, 7, 9, 11), indirect (commandes 5, 10) et immédiat (commandes 12-16) ;
● pour indiquer destinataire(dest) Trois méthodes sont utilisées : registre (commandes 1, 3...5, 9, 12, 14, 16), direct (commandes 2, 7, 8, 10, 13), indirect (commandes 6, 11, 15).

Les équipes 17 à 20 fournissent échange informations entre deux cellules de la mémoire de données interne (ou transfert bidirectionnel).
Lors de l'exécution de commandes HSN, des octets sont échangés et les commandes XCHD échangent des tétrades d'ordre inférieur d'opérandes d'octets.

L'une des cellules est toujours l'accumulateur A. Comme autre cellule lors de l'échange d'octets, on utilise l'un des registres Rn de la banque courante, A est également une cellule mémoire interne adressée directement ou indirectement ; lors de l'échange d'ordinateurs portables - uniquement une cellule de mémoire interne indirectement adressable.

Étant donné que dans tous les MK, la pile est située dans la RAM interne, ce sous-groupe comprend équipes(20, 21) accès à la pile PUSH src, POP destination.
Ces commandes utilisent uniquement l'adressage direct, écrivant un octet dans la pile ou le restaurant à partir de la pile.
Il convient de garder à l'esprit que dans les MK qui ne disposent pas des 128 octets supérieurs en RAM, augmenter la pile au-delà de 128 octets entraîne une perte de données.

Commandes de transfert de données entre la mémoire de données interne et externe(Tableau 7.3.8).

Ces instructions utilisent uniquement un adressage indirect, tandis qu'une adresse à un octet peut être située dans P0 ou R1 de la banque de registres actuelle, et une adresse à deux octets peut être située dans le registre de pointeur de données DPTR.
Lors de tout accès à la mémoire externe, le rôle de récepteur ou source d'opérandes dans la mémoire interne est joué par l'accumulateur A.

Commandes pour transférer des données depuis la mémoire du programme(Tableau 7.3.9).

Ces commandes sont conçues pour lire des tables à partir de la mémoire du programme.

La commande MOVC A,@A + DPTR permet d'accéder à une table avec un nombre d'entrées de 0 à 255.

Le numéro de l'entrée de table requise est chargé dans l'accumulateur et le registre DPTR est réglé au point de départ de la table. Une particularité de l'autre commande est que le compteur de programme PC est utilisé comme pointeur de base et que le tableau est accessible à partir d'un sous-programme. Tout d'abord, le numéro du point d'entrée requis est chargé dans l'accumulateur, puis le sous-programme est appelé avec la commande MOVC A,@A + PC. Le tableau peut avoir 255 entrées avec des nombres de 1 à 255, puisque 0 est utilisé pour l'adresse de la commande RET pour quitter le sous-programme.

Commandes de traitement de données arithmétiques. Toutes les commandes arithmétiques sont exécutées sur des entiers non signés. Opérations sur deux opérandes(Tableau 7.3.10). En opérations ajout AJOUTER. ajout avec transport ADDC et déductions tenant compte du prêt SUBB :

● l'accumulateur sert de source d'un opérande de 8 bits et de destination du résultat ;
● la source d'un autre opérande est soit un des registres de travail Rn (n = 0-7) de la banque courante, soit directement direct ou indirectement @Rm (m = 0, 1) la cellule mémoire RAM adressée, ou donnée directe #data.

Opérations multiplication MUL et Divisions Les DIV sont exécutés sur le contenu des registres A et B. Lors de la multiplication, les 8 bits de poids fort du résultat sont écrits dans le registre B, et les 8 bits de poids faible dans le registre A.
Si le produit est supérieur à 255, l'indicateur de débordement OV est activé ; Le drapeau de report C est toujours effacé. L'instruction DIV divise l'opérande de 8 bits de l'accumulateur A par l'opérande de 8 bits du registre B.
Lors de la division, le quotient (bits de poids fort) est écrit dans le registre en A, le reste (bits de poids faible) est écrit dans B. Les drapeaux de report C et de débordement OV sont réinitialisés.
Lorsque vous tentez de diviser par 0, l'indicateur de débordement OV est activé. L'opération de division est le plus souvent utilisée pour les décalages et les conversions de bases numériques.

Lorsqu'un nombre binaire est divisé par 2 N, il est décalé de N bits vers la gauche.
Les bits supplémentaires sont transférés dans le registre B.

Opérations sur des opérandes à un octet(Tableau 7.3.11).

L'instruction DA est utilisée pour effectuer des opérations BCD. Les commandes INC et DEC permettent respectivement d'augmenter ou de diminuer de un le contenu d'une cellule mémoire.
Elles s'appliquent au contenu de l'accumulateur A, à l'un des registres de travail Rn, ou à une cellule mémoire adressée directement ou indirectement.
L'incrément d'une opération s'applique également au contenu du registre pointeur 16 bits DPTR.

Commandes d'opérations logiques.

Opérations doubles

(Tableau 7.3.12).

Les commandes AML, ORL, XRL permettent d'effectuer trois opérations logiques doubles sur des opérandes de 8 bits : ANL - multiplication logique (AND), ORL - addition logique (OR), XRL - OU exclusif (XOR).
Les opérations sont effectuées sur des bits individuels des opérandes. La source d'un des opérandes et en même temps le récepteur du résultat est soit un accumulateur (A), soit une cellule mémoire directement adressable (directe).
Pour la source de l'autre opérande, la méthode d'adressage registre, direct, indirect ou immédiat est utilisée.

Opérations uniques

(Tableau 7.3.13).
Le groupe comprend également un certain nombre d'opérations monoplaces sur le contenu de l'accumulateur A : opérations d'effacement (CLR), d'addition ou d'inversion logique (CPL), décalages cycliques et cycliques étendus de 1 bit vers la droite (RL, RLC) et vers la gauche. (RR, RRC), échange de tétrades ou décalage d'octets cyclique de 4 bits (SWAP), ainsi qu'une opération vide (NOP), à la suite de laquelle l'état de tous les registres MK (à l'exception du compteur de programme) reste inchangé.

Commandes de transfert de contrôle

Commandes de saut inconditionnelles

(Tableau 7.3.14).

Les commandes 1 à 3 diffèrent uniquement par le format de l'adresse de destination.

La commande LJMP (L - Long) effectue un saut « long » inconditionnel le long adresse spécifiée addr16, chargeant le compteur PC avec les deuxième et troisième octets de la commande.
La commande fournit une transition vers n'importe quel point de l'espace d'adressage de 64 Ko.

La commande AJMP (A - Absolute) permet un saut « absolu » vers une adresse à l'intérieur d'une page de 2 Ko, dont l'adresse de départ est spécifiée par les cinq bits de poids fort du compteur du programme PC (initialement, le contenu du PC est augmenté de 2).

La commande SJMP (S - Short) permet d'effectuer un saut inconditionnel « court » vers l'adresse, qui est calculé en ajoutant le décalage rel signé dans le deuxième octet de la commande avec le contenu du compteur PC, préalablement augmenté de 2. .

L'adresse de saut est comprise entre -128 et 127 octets par rapport à l'adresse de commande.
Pour accéder à n'importe quel autre point de l'espace d'adressage de 64 kilo-octets, la commande 4 peut également être utilisée avec l'adressage indirect @A+DPTR.
Dans ce cas, le contenu de A est interprété comme un entier non signé.

Une opération nulle (NOP), à la suite de laquelle l'état de tous les registres du microprocesseur (à l'exception du compteur de programme) reste inchangé.

Commandes de saut conditionnel

(Tableau 7.3.15).

Les instructions JZ et JNZ sautent si le contenu de l'accumulateur est respectivement égal ou non nul.
L'adresse de branchement est calculée en ajoutant le décalage de signe relatif rel avec le contenu du compteur du programme PC après avoir ajouté 2 (la longueur de l'instruction en octets).

Le contenu de la batterie reste inchangé.
Les commandes n'affectent pas les drapeaux.

Les commandes CJNE (3-6) permettent de mettre en œuvre un saut conditionnel basé sur le résultat de la comparaison de deux opérandes de 8 bits dont l'emplacement est indiqué dans les commandes.
Si leurs valeurs ne sont pas égales, une transition est effectuée.

L'adresse de saut est calculée en additionnant le décalage rel avec le contenu du compteur PC, préalablement augmenté de 3.
Sinon, la commande suivante est exécutée.

La colonne Algorithme montre l'influence des valeurs des opérandes 8 bits comparés sur l'indicateur de retenue C.
Commandes DJNZ (7, conçues pour organiser les cycles de programme.

Le registre Rn ou cellule directement adressée représente le compteur de répétition de cycle, et le décalage rel (dans les deuxième et troisième octets de commandes) est l'adresse relative de la transition vers le début du cycle.
Lorsque les commandes sont exécutées, le contenu du compteur est décrémenté de un et vérifié à zéro.
Si le contenu du compteur n'est pas nul, le passage au début de la boucle est effectué.
Sinon, la commande suivante est exécutée.

L'adresse de saut est calculée en ajoutant le décalage au contenu du compteur, préalablement augmenté de la longueur de la commande (par 2 ou 3).
Les drapeaux de commande ne sont pas affectés.

Commandes pour appeler des sous-programmes et revenir des programmes

(Tableau 7.3.16).
Les instructions LCALL « appel long » et ACALL « appel absolu » effectuent un appel inconditionnel à un sous-programme situé à l'adresse spécifiée.

La différence entre ces commandes et les commandes de saut inconditionnel évoquées ci-dessus est qu'elles enregistrent l'adresse de retour (le contenu du compteur) dans le programme principal sur la pile.
La commande return du sous-programme RET restaure la valeur du contenu du compteur de programme depuis la pile, et la commande RETI permet également des interruptions du niveau de service.

Les commandes de transfert de contrôle utilisent largement l'adressage relatif, qui prend en charge les modules de programme déplaçables.
L'adresse relative est un décalage rel signé de 8 bits, qui permet un branchement à partir de la position actuelle du compteur PC dans les deux sens de ±127 octets.

Pour passer à n’importe quel autre point de l’espace d’adressage de 64 Ko, vous pouvez utiliser soit l’adresse directe addr16, soit l’adresse indirecte @A+DPTR.
Dans ce dernier cas, le contenu de A est interprété comme un entier non signé.

L'option d'adressage direct courte addr11 à l'intérieur de la page actuelle de 2 Ko a été introduite pour la compatibilité avec l'architecture MK48.

Tous ces types d'adressage ne peuvent être appliqués qu'à l'opération de saut, et pour l'opération d'appel, seules les méthodes d'adressage direct addr16 et interne addr11 sont autorisées.
Toutes les opérations conditionnelles ne peuvent utiliser que l'adressage relatif.

Lorsque le MK51 reconnaît une demande d'interruption, il émet l'une des commandes LCALL addr16, qui stocke automatiquement l'adresse de retour sur la pile.
Cependant, contrairement au MK48, le MK51 n'a pas automatiquement enregistré les informations d'état.

Dans ce cas, la logique d'interruption cesse de répondre aux demandes du niveau accepté pour le service.
Pour abaisser le niveau d'interruption, utilisez la commande de retour d'interruption RETI, qui, en plus de l'opération équivalente à RET, comprend l'opération d'activation de l'interruption de ce niveau.
Les opérations conditionnelles typiques MK51 incluent également les opérations JZ, JNZ.
Il existe cependant une nouvelle opération « Compare and Go » CJNE.

Pour cette commande, l'opérande est d'abord comparé selon les règles de soustraction d'entiers avec une constante et, conformément au résultat de la comparaison, le drapeau CY est activé. Ensuite, en cas de divergence avec la constante, un branchement est effectué. . En comparant un accumulateur, un registre ou une cellule mémoire avec une séquence de constantes, on obtient moyen pratique Contrôles de correspondance, par exemple pour identifier des cas particuliers.

Essentiellement, la commande CJNE est un élément d'un opérateur de langage de haut niveau tel que CASE.

L'équipe DJNZ a été développée davantage.
Désormais, le programmeur peut utiliser non seulement l'un des registres de travail Rn comme compteur, mais également n'importe quelle cellule mémoire DSEG.

Instructions sur les opérations sur bits.

Le groupe se compose de 12 commandes qui permettent d'effectuer des opérations sur un ou deux bits (réinitialisation, mise à 1, inversion de bits, A et ET et OU logiques), et de 5 commandes conçues pour mettre en œuvre des transitions conditionnelles (Tableau 7.3.17).

Les instructions fournissent un adressage direct de 128 bits situés dans seize cellules RAM internes d'adresses 20h.
2Fh (tableau 7.3.3) et 128 bits situés dans des registres spéciaux dont les adresses sont des multiples de huit (indiquées en gras dans le tableau 7.3.4).

Lors de l'exécution d'opérations sur deux opérandes à un seul bit, le déclencheur du registre PSW est utilisé comme accumulateur logique, stockant l'indicateur de report C (Tableau 7.1.2).

Les commandes MOV (1,2) implémentent expéditeur bit d'une cellule binaire directement adressable de la RAM interne vers la bascule C ou dans le sens opposé.
Commandes CRL (3, 4), SETB (5, 6) respectivement réinitialiserà zéro ou installer L'indicateur de retenue C ou le bit spécifié est mis à un.
A l'aide des commandes CPL, ANL, ORL (7-12), des opérations logiques d'inversion, d'addition et de multiplication sont effectuées.

Le groupe comprend également des commandes (13-17) pour mettre en œuvre des opérations de saut conditionnel avec un décalage relatif relatif de 8 bits.
Les transitions peuvent être mises en œuvre à la fois lorsque le bit ou l'indicateur de retenue est activé (commandes 13, 16) et lorsqu'il est réinitialisé (commandes 14, 17).

La commande JBC, en plus de passer à l'adresse calculée lorsque la condition (bit) = 1 est remplie, remet ce bit à l'état zéro.
Lors de l'exécution de commandes de saut conditionnel, l'adresse de saut est calculée après avoir ajouté les nombres 3 ou 2 (reflétant le nombre d'octets dans la commande) au contenu du compteur.

Intel est le fondateur de l'architecture de la famille MCS-51, qui tire son nom du premier représentant de cette famille - le microcontrôleur 8051, sorti en 1980 basé sur la technologie n-MOS. Ensemble porte-bonheur périphériques, la possibilité de sélectionner de manière flexible la mémoire de programme externe ou interne et un prix abordable ont assuré le succès de ce microcontrôleur sur le marché. D'un point de vue technologique, le microcontrôleur 8051 était un produit très complexe pour l'époque - 128 000 transistors étaient utilisés dans le cristal, soit 4 fois le nombre de transistors dans le microprocesseur 8086 16 bits. Ce microcontrôleur reste le cœur de. la famille MCS-51 à ce jour.

Les principaux éléments de l'architecture de base de la famille (architecture du microcontrôleur 8051) sont :

ALU 8 bits ;

4 banques de registres, 8 chacune ;

Mémoire programme interne (résidente) 4 Ko, type ROM ou EPROM (8751) ;

Mémoire de données interne (résidente) 128 octets ;

21 registres de fonctions spéciales ;

Processeur booléen ;

Deux minuteries/compteurs 16 bits ;

Contrôleur de port série (UART) ;

Contrôleur d'interruption avec deux niveaux de priorité ;

Quatre ports d'E/S 8 bits, dont deux sont utilisés comme bus d'adresses/données pour accéder à la mémoire externe des programmes et des données ;

Générateur d'horloge intégré.

Ensuite, le microcontrôleur 8052 a été lancé, doté d'une quantité accrue de mémoire de programme et de données résidente, d'un troisième temporisateur et d'un contrôleur d'interruption étendu en conséquence.

La prochaine étape fondamentale dans le développement du MCS-51 a été le transfert de la technologie de fabrication vers le CMOS (modification 8xC51). Cela a permis de mettre en œuvre les modes Idl (inactif) et Power Down (consommation réduite), qui permettent une forte réduction de la consommation électrique du cristal et ont ouvert la voie à l'utilisation du microcontrôleur dans des applications dépendantes de l'énergie, par exemple, dans les appareils autonomes alimentés par batterie.

Et la dernière étape importante dans le développement du 8051 MK par Intel a été la sortie des microcontrôleurs 8xC51FA/FB/FC et 8xC51RA/RB/RC, qui par souci de concision sont souvent appelés 8xC51Fx et 8xC51Rx. La principale caractéristique distinctive de ce groupe de cristaux est la présence d’un minuteur/compteur spécialisé (SCA). De plus, les microcontrôleurs 8xC51Rx contiennent en outre un minuteur de surveillance (WDT). Examinons plus en détail l'architecture et les fonctionnalités de PCA.

Le RSA comprend :

minuterie/compteur 16 bits ;

Cinq modules d'échantillonnage et de comparaison 16 bits, chacun connecté à sa propre ligne de port E/S du microcontrôleur.

Le minuteur/compteur dessert les cinq modules d'échantillonnage et de comparaison, qui peuvent être programmés pour exécuter l'une des fonctions suivantes :

Échantillonnage 16 bits de la valeur du temporisateur sur le front positif d'un signal externe ;

Échantillonnage 16 bits de la valeur du temporisateur sur le front négatif d'un signal externe ;

Échantillonnage sur 16 bits de la valeur du temporisateur sur n'importe quel front d'un signal externe ;

Minuterie programmable 16 bits ;

Périphérique de sortie haute vitesse 16 bits ;

PWM 8 bits.

Toutes les fonctions ci-dessus sont exécutées dans PCA au niveau matériel et ne se chargent pas CPU. Cela vous permet d'augmenter le débit global, d'améliorer la précision des mesures et du traitement du signal et de réduire le temps de réponse du microcontrôleur aux événements externes, ce qui est particulièrement important pour les systèmes en temps réel. Le PCA implémenté dans 8xC51Fx (8xC51Rx) s'est avéré être le cas

Désignation

Max.

fréquence (MHz)

ROM/EPROM (octet)

compteurs

Heureusement, l'architecture de ces microcontrôleurs est devenue un standard de l'industrie et le PCA lui-même a été reproduit à plusieurs reprises dans diverses modifications du MK 8051.

Certaines caractéristiques d'un certain nombre de microcontrôleurs MCS-51 fabriqués par Intel sont présentées dans le tableau 1.1.

Initialement, les plus gros goulots d'étranglement de l'architecture MCS-51 étaient l'ALU basée sur une batterie de 8 bits et l'exécution des instructions relativement lente (les instructions les plus rapides nécessitent 12 processeurs pour s'exécuter).

Tableau 1.1

CAN, entrées x bits

périphérie,

particularités

U puissance (DANS)

Option basse tension

4 niveaux d'IRQ, sortie

4 niveaux d'IRQ, sortie

Version basse tension 8xC51Fx

4 niveaux d'IRQ, sortie

4 niveaux d'IRQ, sortie

4 niveaux d'IRQ, sortie

les émeutes fréquence d'horloge(Fréquence de synchronisation MK)). Cela limitait l'utilisation des microcontrôleurs de la famille dans les applications nécessitant une vitesse accrue et des calculs complexes (16 et 32 ​​bits). La question de la modernisation fondamentale de l'architecture MCS-51 est devenue urgente. Le problème de la modernisation était compliqué par le fait qu'au début des années 90, de nombreux développements avaient déjà été réalisés dans le domaine des logiciels et matériel famille MCS-51, et donc l'une des tâches principales de la conception de la nouvelle architecture était la mise en œuvre de la compatibilité matérielle et logicielle avec les développements basés sur MCS-51.

Pour résoudre ce problème, un groupe commun de spécialistes d'Intel et de Philips a été créé, mais les chemins de ces deux sociétés ont ensuite divergé. Ainsi, en 1995, deux familles sensiblement différentes apparaissent : les MCS-251/151 d'Intel et les MCS-51XA de Philips (voir sous-section 1.2).

Principales caractéristiques de l'architecture MCS-251 :

Espace d'adressage linéaire de 24 bits, adressant jusqu'à 16 Mo de mémoire ;

Architecture de registre qui permet d'accéder aux registres sous forme d'octets, de mots et de mots doubles ;

Mode d'adressage de page pour accélérer la récupération des instructions à partir de la mémoire de programme externe ;

File d'attente d'instructions ;

Jeu d'instructions étendu, comprenant des opérations arithmétiques et logiques 16 bits ;

Espace d'adressage de pile étendu (jusqu'à 64 Ko) ;

Exécutez la commande la plus rapide en 2 cycles d'horloge.

Le jeu d'instructions MCS-251 comprend deux jeux d'instructions : le premier jeu est une copie du jeu d'instructions MCS-51 et le second se compose d'instructions étendues qui tirent parti de l'architecture MCS-251. Avant d'utiliser le microcontrôleur, il doit être configuré, c'est-à-dire à l'aide du programmateur, « gravez » les bits de configuration qui déterminent quel ensemble d'instructions deviendra actif après la mise sous tension. Si vous installez le premier jeu d'instructions, alors dans ce cas, la famille MCS-251 sera compatible avec le MCS-51 au niveau du code binaire. Ce mode est appelé mode binaire. Si vous installez initialement un ensemble d'instructions étendues (mode source), les programmes écrits pour le MCS-51 nécessiteront une recompilation à l'aide d'outils croisés pour le MCS-251. Le mode source vous permet d'utiliser l'architecture MCS-251 avec une efficacité maximale et d'obtenir les performances les plus élevées.

Pour les utilisateurs qui souhaitent utiliser les microcontrôleurs MCS-251 en remplacement mécanique du MCS-51, Intel produit des microcontrôleurs MCS-151 déjà programmés en mode binaire.

Certaines caractéristiques d'un certain nombre de microcontrôleurs MCS-251/151 sont données dans le tableau 1.1.

Actuellement, Intel, destiné au marché des processeurs Pentium, réduit la production de cristaux MCS-51. En général, pour un développeur particulier, cela peut passer inaperçu, à moins qu'il n'utilise des microcontrôleurs 8xC51GB et 80C152Jx, qui n'ont pas leurs analogues exacts parmi les produits d'autres sociétés. Quant à tous les autres microcontrôleurs de la famille MCS-51, ils ont tous été répliqués à de nombreuses reprises par d'autres sociétés.

Le système de commande OMEVM offre de grandes capacités de traitement de données, assure la mise en œuvre d'opérations logiques et arithmétiques, ainsi qu'un contrôle en temps réel. Le traitement des données par bit, tétrade (4 bits), octet (8 bits) et 16 bits est implémenté.

Le LSI de la famille MCS-51 est un OMEVM 8 bits : ROM, RAM, registres spéciaux, ALU et bus externes sont basés sur des octets. Les données sur deux octets sont utilisées uniquement par le registre de pointeur (DPTR) et le compteur de programme (PC). Il convient de noter que le registre de pointeur de données peut être utilisé comme registre DPTR à deux octets ou comme registres spéciaux à un octet DPH et DPL. Le compteur de programme est toujours utilisé comme registre à deux octets.

Le jeu de commandes OMEVM dispose de 42 mnémoniques de commande pour spécifier les 33 fonctions de ce système.

La syntaxe de la plupart des commandes du langage assembleur consiste en un mnémonique de fonction, suivi d'opérandes indiquant les méthodes d'adressage et les types de données. Divers types les données ou les modes d'adressage sont déterminés par les opérandes définis, et non par des changements dans les mnémoniques.

Le système de commande peut être divisé en cinq groupes :

Il existe les types suivants d'adressage d'opérande source :

  • Adressage indirect des registres basé sur la somme des registres de base et d'index

Tableau des notations et symboles utilisés dans le système de commande

Désignation, symbole But
UN Batterie
Rn Registres de la banque de registres actuellement sélectionnée
r Le numéro du registre chargé spécifié dans la commande
direct Adresse de cellule de données interne de 8 bits directement adressable, qui peut être une cellule RAM de données interne (0-127) ou SFR (128-255)
@Rr Cellule RAM de données interne de 8 bits indirectement adressable
données8 Données immédiates 8 bits incluses dans le CPC
donnéesH Bits de poids fort (15-8) des données immédiates de 16 bits
donnéesL Bits les moins significatifs (7-0) de données immédiates de 16 bits
adresse11 Adresse de destination 11 bits
adresseL Bits les moins significatifs de l'adresse de destination
disp8 Octet de décalage signé de 8 bits
peu Un bit directement adressable dont l'adresse contient le COP situé dans la RAM de données interne ou SFR
a15, a14...a0 Bits d'adresse de destination
(X) Contenu de l'élément X
((X)) Contenu à l'adresse stockée dans l'élément X
(X)[M] Bit M de l'élément X

+
-
*
ET
OU
XOR
/X
Opérations :
ajout
soustraction
multiplication
Divisions
multiplication logique (opération ET)
addition logique (opération OU)
addition modulo 2 (OU exclusif)
inversion de l'élément X

Les mnémoniques de fonction sont associés de manière unique à des combinaisons spécifiques de méthodes d’adressage et de types de données. Au total, il existe 111 combinaisons de ce type possibles dans le système de commande. Le tableau affiche une liste de commandes, triées par ordre alphabétique.

Mnémotechnique Fonction Drapeaux
Commande APPEL Appel de sous-programme absolu
Ajout CA, C, VO
Ajout avec transport CA, C, VO
L'équipe AJMP Transition absolue
"ET" logique
"ET" logique pour les variables binaires C
Comparez et sautez si ce n'est pas égal C
Commande CLR A Réinitialisation de la batterie
Commande CLR Bit de réinitialisation C,bit
Équipe CPL A Inversion de batterie
L'équipe CPL Inversion de bits C,bit
Équipe DA A Correction de l'accumulateur décimal pour l'addition CA, C
Équipe DEC<байт> Décrémenter
Équipe DIV AB Division C, VO
L'équipe DJNZ<байт>, <смещение> Décrémenter et sauter s'il n'est pas égal à zéro
Équipe INC<байт> Incrément
Commande INCDPTR Incrément du pointeur de données
L'équipe JB , Sauter si le bit est activé
L'équipe JBC , Sauter si le bit est activé et réinitialiser ce bit
L'équipe JC Transition si le transfert est défini
Commande JMP @A+DPTR Transfert indirect
Équipe JNB , Sauter si le bit n'est pas défini
Équipe JNC Sauter si le transport n'est pas défini
L'équipe JNZ Sauter si le contenu de l'accumulateur n'est pas nul
Équipe JZ Sauter si le contenu de l'accumulateur est 0
Commande LCALL Appel long
L'équipe LJMP Longue traversée
Variable d'octet de transfert
Envoyer un bit de données C
Commande MOV DPTR,#data16 Charger un pointeur de données avec une constante de 16 bits
Commande MOVC A,@A+( ) Envoyer un octet depuis la mémoire du programme
Envoyer des données vers la mémoire externe (depuis la mémoire externe)


gastrogourou 2017