Contacts

Schéma fonctionnel des microcontrôleurs mcs 51. Microcontrôleurs de la famille mcs51. Mode de lecture des ports

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. Différents types de données ou 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)

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-minuterie 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.

Actuellement, diverses sociétés produisent de nombreuses modifications et analogues de cette famille, tant par Intel que par d'autres fabricants, la vitesse d'horloge et la capacité de mémoire ont décuplé et continuent d'augmenter. L'ensemble des modules intégrés au LSI est également en cours d'extension : un grand nombre de modèles modernes disposent d'un CAN résident haut débit intégré avec jusqu'à 12 bits, et maintenant il peut y en avoir plus. Mais la famille MCS51 est basée sur les Intel LSI 8051, 80С51, 8751, 87С51, 8031, 80С31, dont les premiers échantillons ont été publiés en 1980.

Les microcontrôleurs de la famille MCS51 sont fabriqués à l'aide de la technologie n-MOS de haute qualité (série 8ХХХ, analogique - série 1816 en Russie et en Biélorussie) et de la technologie k-MOS (série 8ХСХХ, analogique - série 1830). Le deuxième caractère après 8 signifie : 0 – il n'y a pas d'EPROM sur la puce, 7 – une EPROM 4K avec effacement ultraviolet. Troisième caractère : 3 – ROM sur puce, 5 – s'il n'y a pas de ROM, alors il y a une ROM de masque sur la puce.

Et donc 80С51 - LSI basé sur la technologie k-MOS avec un masque ROM sur la puce, 8031 ​​​​- LSI n-MOS sans mémoire programme (ROM, RPOM) sur la puce, 8751 - LSI n-MOS avec un résident (situé sur la puce) RPOM avec effacement ultraviolet. Nous examinerons plus en détail le LSI 8751, en faisant, si nécessaire, des réserves sur les différences entre les autres circuits, en citant les paramètres publiés pour les premiers LSI série. Si nécessaire, vous pouvez trouver des informations supplémentaires sur toutes les modifications modernes dans les annuaires d'entreprise et la documentation technique.

A. Caractéristiques générales et affectation des broches

La famille MCS51 est basée sur cinq modifications du MK (ayant des caractéristiques de base identiques), dont la principale différence réside dans la mise en œuvre de la mémoire programme et de la consommation électrique (voir tableau 3.1). Le microcontrôleur est à huit bits, c'est-à-dire possède des commandes pour traiter des mots de huit bits, possède une architecture Harvard, la fréquence d'horloge des échantillons de base de la famille est de 12 MHz.

Tableau 3.1.

Microcircuits

Mémoire de programme interne, octets

Type de mémoire programme

Mémoire de données interne, octet

Fréquence d'horloge, MHz

Consommation de courant, mA

Les MK 8051 et 80C51 contiennent une mémoire programme ROM programmable par masque d'une capacité de 4 096 octets pendant la fabrication de la puce et sont conçus pour être utilisés dans la production de masse. MK 8751 contient un RPOM de 4 096 octets avec effacement ultraviolet et est pratique au stade du développement du système lors du débogage de programmes, ainsi que lors de la production en petits lots ou lors de la création de systèmes nécessitant une réécriture pendant le fonctionnement.

ajustement périodique.

Les MK 8031 ​​​​​​et 80C31 ne contiennent pas de mémoire de programme intégrée. Comme les modifications décrites précédemment, elles peuvent utiliser jusqu'à 64 Ko de mémoire de programme externe et sont efficacement utilisées dans des systèmes qui nécessitent un volume nettement plus important (que 4 Ko sur la puce) de mémoire de programme ROM.

Chaque MK de la famille contient une mémoire de données résidente d'une capacité de 128 octets avec la possibilité d'étendre la quantité totale de données RAM jusqu'à 64 Ko grâce à l'utilisation de circuits intégrés RAM externes.

    processeur central à huit bits ;

    Mémoire programme de 4 Ko (8751 et 87C51 uniquement) ;

    Mémoire de données de 128 octets ;

    quatre ports d'E/S programmables à huit bits ;

    deux minuteries/compteurs multimodes 16 bits ;

    système d'interruption auto-vecteur avec cinq vecteurs et deux niveaux de priorité contrôlés par logiciel ;

    interface série, comprenant un émetteur-récepteur duplex universel capable de fonctionner selon quatre modes ;

    générateur d'horloge.

Le système de commandes MK contient 111 commandes de base avec un format de 1, 2 ou 3 octets. Le microcontrôleur possède :

    32 registres à usage général RON, organisés en quatre banques de huit registres portant chacune des noms R0... R7, le choix d'une banque ou d'une autre est déterminé par le programme en mettant les bits correspondants dans le registre d'état du programme PSW ;

    128 indicateurs contrôlés par logiciel (processeur de bits, voir ci-dessous) ;

    un ensemble de registres de fonctions spéciales qui contrôlent les éléments MK. Il existe les modes de fonctionnement suivants du microcontrôleur :

1). Réinitialisation générale. 2). Fonctionnement normal. 3).Mode faible consommation d’énergie et mode veille. 4). Mode de programmation pour RPOM résident, si disponible.

Nous nous concentrerons ici sur les deux premiers modes de fonctionnement ; une description détaillée de la composition et du fonctionnement du MK dans tous les modes est donnée en annexe P1.

Le RON et la zone du processeur binaire sont situés dans l'espace d'adressage de la RAM résidente avec des adresses de 0 à 80h.

Dans la zone supérieure des adresses RAM résidentielles se trouvent des registres de fonctions spéciales (SFR, Special Function Registers). Leur objectif est donné dans le tableau. 3.2.

Tableau 3.2.

Désignation

Nom

Batterie

Registre B

Registre de l'état du programme

Pointeur de pile

Pointeur de données. 2 octets :

Octet faible

Octet de poids fort

Registre des priorités d'interruption

Registre d'activation des interruptions

Registre du mode minuterie/compteur

Registre de contrôle de minuterie/compteur

Minuterie/compteur 0. Octet de poids fort

Minuterie/compteur 0. Octet faible

Minuterie/compteur 1. Octet de poids fort

Minuterie/compteur 1. Octet faible

Contrôle du port série

Tampon série

Gestion des consommations

* - les registres, en permettant au niveau du bit adressage

Examinons brièvement les fonctions des registres SFR présentées dans le tableau 3.2.

Batterie ACC - registre accumulateur. Commandes conçues pour fonctionner

vous avec la batterie, utilisez le mnémonique "A", par exemple, MOV UN, P2 . Le mnémonique ACC est utilisé, par exemple, lors de l'adressage au niveau du bit d'un accumulateur. Ainsi, le nom symbolique du cinquième bit de l'accumulateur lors de l'utilisation de l'assembleur A5M51 sera le suivant : ACC. 5. .

Registre DANS . Utilisé lors des opérations de multiplication et de division. Pour d'autres instructions, le registre B peut être traité comme un registre temps réel supplémentaire.

Registre État programmes P.S.W. contient des informations sur l'état du programme et est installé en partie automatiquement en fonction du résultat de l'opération effectuée, et en partie par l'utilisateur. La désignation et le but des bits de registre sont donnés respectivement dans les tableaux 3.3 et 3.4.

Tableau 3.3.

Désignation

Tableau 3.4.

Désignation

Affectation des bits

Accès aux bits

Portez le drapeau. Modifications lors de l'exécution d'une série d'instructions arithmétiques et logiques.

Matériel ou logiciel

Drapeau de transport supplémentaire. Activé/effacé dans le matériel pendant les instructions d'addition ou de soustraction pour indiquer un report ou un emprunt dans le bit 3 lorsque le quartet le moins significatif du résultat (D0-D3) est généré.

Matériel ou logiciel

Indicateur 0. Indicateur défini par l'utilisateur.

Par programmation

Par programmation

Index bancaire du registre de travail

Par programmation

Banque 0 avec adresses (00Н - 07Н) Banque 1 avec adresses (08Н - 0FН) Banque 2 avec adresses (10Н - 17Н) Banque 3 avec adresses (18Н - 1FН)

Drapeau de débordement. Défini ou effacé par le matériel lors de l'exécution d'instructions arithmétiques pour indiquer une condition de débordement

Matériel ou logiciel

De rechange. Contient un déclencheur de lecture/écriture qui peut être utilisé

Bit de parité. Réinitialisation ou configuration du matériel à chaque cycle d'instruction pour indiquer si le nombre de bits de batterie à l'état "1" est pair ou impair.

Matériel ou logiciel

Aiguille empiler PS - Un registre de 8 bits dont le contenu est incrémenté avant d'écrire des données dans la pile lorsque les instructions PUSH et CALL sont exécutées. Lors de la réinitialisation initiale, le pointeur de pile est réglé sur 07H et la zone de pile dans la RAM de données commence à l'adresse 08H. Si nécessaire, en remplaçant le pointeur de pile, la zone de pile peut être située n'importe où dans la RAM interne des données du microcontrôleur.

Aiguille données DPTR se compose d'un octet de poids fort (DPH) et d'un octet de poids faible

(MPL). Contient une adresse de 16 bits lors de l'accès à la mémoire externe. Peut être utilisé

être soit un registre de 16 bits, soit deux registres indépendants de huit bits.

Port0 - PortZ. Les bits séparés des registres des fonctions spéciales P0, P1, P2, RZ sont les bits « verrous » des ports P0, P1, P2, RZ.

Tampon cohérent port SBUF représente deux registres distincts : le tampon émetteur et le tampon récepteur. Lorsque des données sont écrites sur le SBUF, elles entrent dans le tampon de l'émetteur et l'écriture d'un octet sur le SBUF lance automatiquement la transmission via le port série. Lorsque les données sont lues à partir de SBUF, elles sont extraites du tampon du récepteur.

Registres minuteur. Les paires de registres (TH0, TL0) et (TH1, TL1) forment 16

registres de comptage de bits pour le temporisateur/compteur 0 et le temporisateur/compteur 1, respectivement.

Registres gestion. Les registres des fonctions spéciales IP, IE, TMOD, TCON, SCON et PCON contiennent des bits de contrôle et des bits d'état du système d'interruption,

compteurs/compteurs et port série. Ils seront discutés en détail ci-dessous.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RDV BQ2 BQ 1 E.A.

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

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

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

Lorsqu'il fonctionne, le MC fournit :

    le temps d'exécution minimum des commandes d'ajout est de 1 μs ;

    multiplication et division matérielle avec un temps d'exécution minimum de 4 μs.

Le MK offre la possibilité de régler la fréquence de l'oscillateur interne à l'aide de quartz, d'une chaîne LC ou d'un oscillateur externe.

Le système d'instructions étendu fournit un adressage d'octets et de bits, une arithmétique décimale binaire et binaire, une indication de débordement et une détermination paire/impaire, ainsi que la possibilité de mettre en œuvre un processeur logique.

La caractéristique la plus importante et la plus distinctive de l'architecture de la famille MCS51 est que l'ALU peut manipuler des données monobit en plus d'effectuer des opérations sur des types de données 8 bits. Les bits individuels accessibles par logiciel peuvent être définis, effacés ou remplacés par leur complément, peuvent être transmis, vérifiés et

Figure 3.2. Broches externes

microcontrôleur

utilisé dans les calculs logiques. Alors que la prise en charge des types de données simples (si disponible)

Même si la tendance actuelle vers des mots plus longs peut sembler à première vue un pas en arrière, cette qualité rend la famille de microcontrôleurs MCS51 particulièrement adaptée aux applications basées sur des contrôleurs. Les algorithmes de fonctionnement de ces derniers supposent la présence de variables booléennes d'entrée et de sortie, difficiles à mettre en œuvre à l'aide de microprocesseurs standards. Toutes ces propriétés sont collectivement appelées processeur booléen de la famille MCS51. Cette puissante ALU rend la famille de microcontrôleurs MCS51 adaptée à la fois aux applications de contrôle en temps réel et aux algorithmes gourmands en données.

Le schéma de circuit du microcontrôleur est présenté sur la figure. 3.2. Dans la version de base, il est conditionné dans un boîtier DIP à 40 broches. Regardons le but des épingles.

Commençons par les broches d'alimentation «0 DANS" Et "5 DANS" , grâce à laquelle il reçoit une nutrition de base. La consommation actuelle est indiquée dans le tableau. 3.1.

Conclusion "RST" - réinitialisation du microcontrôleur. Lorsqu'un niveau haut actif est appliqué à cette broche, le mode général réinitialiser et MK effectue les actions suivantes :

Met à zéro le compteur de programme PC et tous les registres de fonctions spéciales, à l'exception des verrous de port P0-P3, du pointeur de pile SP et du registre SBUF ;

    le pointeur de pile prend la valeur égale à 07H ;

    désactive toutes les sources d'interruption, le compteur de minuterie et la série

    sélectionne BANK 0 RAM, prépare les ports P0-RZ pour recevoir des données et déterminer

partage les broches ALE et PME comme entrées pour la synchronisation externe ;

      dans les registres de fonctions spéciales PCON, IP et IE, les bits réservés prennent des valeurs aléatoires et tous les autres bits sont remis à zéro ;

      le registre SBUF est réglé sur des valeurs aléatoires.

      définit les verrous des ports P0-PZ sur "1".

Les états des registres du microcontrôleur après réinitialisation sont indiqués dans le tableau 3.5.

Tableau 3.5.

Information

Incertain

0ХХХ0000V pour k-MOS 0XXXXXXXB pour n-MOS

La broche RST a également une fonction alternative. Une alimentation de secours est fournie via celui-ci pour maintenir le contenu de la RAM du microcontrôleur inchangé lorsque la principale est retirée.

conclusions BQ1, BQ2 sont destinés à connecter un résonateur à quartz qui détermine la fréquence d'horloge du MK.

Conclusion EA` (E externe UN robe externe adresse) - conçu pour activer le mode de lecture des codes de contrôle à partir de la mémoire de programme externe lorsqu'un niveau bas actif est appliqué à cette broche. La sortie a un autre objectif (fonction). Il est alimenté en tension de programmation par le RPOM en mode programmation.

Conclusion PME (P. programme M emory E capable autorisation mémoire programmes) - est conçu pour contrôler le cycle de lecture de la mémoire du programme et est automatiquement activé par le MK à chaque cycle de la machine.

Conclusion ALE (UN robe L longueur E capable autorisation junior adresses) active la sortie de la partie de poids faible de l'adresse via le port P0. La sortie est également utilisée lors de la programmation du RPOM, tandis qu'une impulsion stroboscopique lui est fournie pour le processus de programmation.

Le MK contient quatre groupes de ports : P0, P1, P2 et P3. Ce sont les 40 broches restantes du microcontrôleur. Ces ports peuvent servir à l'entrée et à la sortie d'informations bit par bit, mais en plus, chacun d'eux a sa propre spécialisation. Un schéma fonctionnel généralisé du port est présenté sur la Fig. 3.3. Le port contient des commutateurs de sortie FET connectés à la broche, un commutateur de fonction, un verrou bascule D et une logique de contrôle. Une unité ou un zéro peut être écrit sur le verrou du bus interne du MK. Ces informations sont envoyées via le commutateur de fonction aux commutateurs de sortie et à la sortie du MK. Dans le premier état, les deux transistors N et N1 sont fermés, mais N2 est ouvert. A l'état zéro N s'ouvre-

Xia, et N2 se ferme. Dès qu'un port exécute une fonction alternative pour laquelle il est spécialisé, l'état de verrouillage de sortie est effacé. Le microcontrôleur peut lire séparément l'état du verrou du port et l'état de sa sortie, définis par un signal externe. A cet effet, l'assembleur MK contient des commandes spéciales qui activent les lignes correspondantes. Pour lire l'état de la broche dans le verrou du port correspondant, le

être pré-enregistré

De l'interne

Loquet de contrôle

Commutateur de fonction

VCC

Fin de semaine

unité. Lorsque la ligne « read latch » est activée, la sortie de la cellule « AND » à laquelle cette ligne est connectée apparaît.

ses pneus MK D Q

Écrire pour verrouiller C Q

Loquet de lecture

Broche de port

L'état du verrou est transmis au bus interne du MC lorsqu'il est activé

"sortie de lecture" - l'état de la broche externe du port.

Port P0 – port bidirectionnel universel

E/S Au-delà de ce port

la fonction d'organiser des bus d'adresses externes et

Riz. 3.3. Schéma fonctionnel du port du microcontrôleur

données pour étendre la mémoire du programme et la mémoire des données

microcontrôleur. Lorsque l'on accède à la mémoire de programme externe ou qu'une commande est exécutée pour accéder à la mémoire de données externe, la partie de poids faible de l'adresse (A0...A7) est définie au niveau des broches du port, qui est fermée au niveau haut de la broche ALE. Ensuite, lors de l'écriture des données en mémoire, les informations enregistrées depuis le bus interne du MK sont envoyées aux broches du port P0. Lors des opérations de lecture, au contraire, les informations des broches du port sont envoyées au bus interne. Une caractéristique du port P0 est l'absence d'un transistor « pull-up » N2, qui alimente la sortie. Lors de l'écriture sur le verrou du port de l'unité, il est simplement transféré dans un état à haute impédance, nécessaire au fonctionnement normal du bus de données. S'il est nécessaire d'alimenter des périphériques externes via la sortie, des résistances externes doivent être fournies entre les circuits d'alimentation et la sortie du port.

Port P1 – port E/S bidirectionnel universel sans fonctions alternatives.

Port P2 – un port E/S bidirectionnel universel, qui, comme fonction alternative, délivre la partie haute de l'adresse (A8...A15) lors de l'accès à la mémoire externe.

Port P3 – un port E/S bidirectionnel universel, dont chaque bit permet la mise en œuvre de diverses fonctions alternatives. Dans ce cas, les fonctions alternatives ne sont implémentées que si elles sont écrites sur les verrous des broches du port ; sinon, l'exécution des fonctions alternatives est bloquée. Listons-les séparément pour chaque bit :

P3.0 RxD (R. ead e X interne D manger, lire des données externes) – entrée de l’émetteur-récepteur série intégré.

P3.1 TxD (T ouais e X interne D mangé, transmettre des données externes) – sortie de l’émetteur-récepteur série intégré.

P3.2 INT0` (INTéruption, interruption) – entrée d'interruption externe 0.

P3.3 INT1` – entrée d'interruption externe 1.

P3.4 C/T0 – zéro entrée de minuterie/compteur intégrée.

P3.5 C/T1 – entrée du premier temporisateur/compteur intégré.

P3.6 WR` (W rite, write) – sortie pour contrôler le cycle d’écriture dans la mémoire de données.

P3.7 RD` (R. ead, read) – contrôle la sortie du cycle de lecture à partir de la mémoire de données.

Les broches des ports P1, P2 et P3 sont capables de délivrer un courant d'environ 0,2 mA par unité et de recevoir un courant de 3 mA à zéro ; les broches du port P0 sont plus puissantes et sont capables de délivrer un courant d'environ 0,8 mA. dans une unité et recevant un courant de 5 mA à zéro. De brèves informations sur le but des broches du microcontrôleur sont données dans le tableau 3.6.

Tableau 3.6.

Désignation

Objectif de sortie

Port bidirectionnel 8 bits P1. Entrée d'adresse A0-A7 lors de la vérification de la ROM interne (RPM)

entrée sortie

Signal de réinitialisation générale. Alimentation de secours de la RAM provenant d'une source externe (pour 1816)

Port P3 bidirectionnel 8 bits avec fonctionnalités supplémentaires

entrée sortie

Données série du récepteur - RxD

Données série du transmetteur - 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 du signal stroboscopique lors de l'écriture dans la mémoire de données externe : - WR`

Sortie du signal stroboscopique lors de la lecture à partir de la mémoire de données externe – RD`

Câbles pour connecter un résonateur à quartz.

quitter l'entrée

Conclusion générale

Port bidirectionnel 8 bits P2. Adresse de sortie A8-A15 en mode mémoire externe. En mode de vérification de la ROM interne, les broches P2.0 à P2.6 sont utilisées comme entrée des adresses A8-A14. Broche P2.7 - Autorisation de lecture de la ROM.

entrée sortie

Résolution de la mémoire du programme

La fixation d'adresse active le signal de sortie. Lors de la programmation du signal RPOM : PROG

entrée sortie

Blocage du travail avec la mémoire interne. Lors de la programmation du RPOM, le signal UPR est donné

entrée sortie

Port bidirectionnel 8 bits P0. Bus d'adresses/données pour travailler avec la mémoire externe. Sortie de données D7-D0 en mode test ROM interne (RPM).

entrée sortie

Puissance de sortie à partir d'une source de tension +5 V

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.

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. L'adresse directe dans ce cas 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 O utput) - «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ù



Avez-vous aimé l'article? Partagez-le