LA CLOCHE

Il y en a qui ont lu cette news avant vous.
Abonnez-vous pour recevoir les derniers articles.
E-mail
Nom
Nom de famille
Aimeriez-vous lire The Bell
Pas de spam

L'architecture de la famille MCS-51 est largement prédéterminée par son objectif - la construction compact et bon marché appareils numériques. Toutes les fonctions du micro-ordinateur sont mises en œuvre à l'aide d'un seul microcircuit. La famille MCS-51 comprend toute une gamme de microcircuits allant des microcontrôleurs les plus simples aux plus complexes. Les microcontrôleurs de la famille MCS-51 vous permettent d'effectuer à la fois les tâches de contrôle de divers appareils et de mise en œuvre de nœuds individuels du circuit analogique. Tous les microcircuits de cette famille fonctionnent avec le même système de commande MCS-51, la plupart d'entre elles sont réalisées dans les mêmes cas avec brochage correspondant(numérotation des pattes pour la caisse). Cela vous permet d'utiliser des puces de différentes sociétés pour l'appareil développé - Maxim, Atmel, NXP, etc. (catalog..php?page=components_list&id=39"> s.m. Recherche par paramètres) sans altération schéma appareils et programmes.

Image 1. Schéma structurel contrôleur I8751

Le schéma fonctionnel du contrôleur est illustré à la figure 1. et se compose des principales unités fonctionnelles suivantes : une unité de commande, une unité arithmétique et logique, une unité de temporisation/compteur, une interface série et une unité d'interruption, un compteur de programme, une mémoire de données, et la mémoire programme. L'échange bilatéral s'effectue à l'aide d'une autoroute de données interne à 8 bits.

Examinons de plus près le but de chaque bloc. Presque tous les représentants de la famille MCS-51 sont construits selon ce schéma.. Divers microcircuits de cette famille ne diffèrent que par des registres spéciaux (y compris le nombre de ports). Système de commande de tous les contrôleurs de la famille MCS-51 contient 111 commandes de base avec un format de 1, 2 ou 3 octets et ne change pas lors du passage d'une puce à l'autre. Cela offre une excellente portabilité des programmes d'une puce à l'autre.

Unité de contrôle et de synchronisation

Le bloc de synchronisation et de contrôle est conçu pour générer des signaux de synchronisation et de contrôle qui assurent la coordination travail conjoint Unités OEVM dans tous les modes de fonctionnement autorisés.L'unité de commande comprend :

  • - dispositif de formation d'intervalles de temps,
  • - logique d'E/S,
  • - registre d'instructions,
  • - registre de gestion de la consommation d'électricité,
  • - décodeur de commande, logique de commande informatique.

Dispositif de créneau horaire est destiné à la génération et à la sortie de signaux de synchronisation internes de phases, de cycles et de cycles. Le nombre de cycles machine détermine la durée d'exécution de l'instruction. La quasi-totalité des commandes OEVM sont exécutées en un ou deux cycles machine, à l'exception des instructions de multiplication et de division dont la durée est de quatre cycles machine. Notons la fréquence de l'oscillateur maître par F g. Alors la durée du cycle machine est de 12/F g, soit 12 périodes du signal de l'oscillateur maître. La logique d'entrée-sortie est conçue pour recevoir et émettre des signaux qui permettent l'échange d'informations avec des dispositifs externes via les ports d'entrée/sortie P0-P3.

Registre de commande est conçu pour enregistrer et stocker un 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 commande informatique, est converti en un microprogramme pour l'exécution de la commande.

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

Unité logique arithmétique (ALU) est un périphérique huit bits parallèle qui fournit des opérations arithmétiques et logiques. ALU se compose de :

  • - les registres accumulateurs, les registres de stockage temporaire TMP1 et TMP2,
  • - les constantes ROM,
  • - additionneur,
  • - registre supplémentaire (registre B),
  • - accumulateur (ACC),
  • - registre d'état du programme (PSW).

S'inscrire la batterie et registres de tenue- des registres à huit bits conçus pour recevoir et stocker des opérandes pendant la durée des opérations sur ceux-ci. Ces registres ne sont pas accessibles par programmation.

Constantes ROM assure le développement d'un code correcteur pour la représentation binaire-décimale des données, d'un code masque pour les opérations sur les bits et d'un code constant.

Additionneur parallèle 8 bits représente circuit combinatoireà transfert 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 considéré comme un registre de bloc-notes supplémentaire.

La batterie- un registre à 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

Interface série et bloc d'interruption (SIP) est conçu pour organiser l'entrée-sortie de flux d'informations séquentiels et organiser le système d'interruption de programme. Le bloc comprend :

  1. - Tampon PIP,
  2. - logique de commande,
  3. - registre de contrôle,
  4. - buffer émetteur,
  5. - tampon récepteur,
  6. - émetteur-récepteur port série,
  7. - registre de priorité d'interruption,
  8. - registre de validation d'interruption,
  9. - une logique de traitement des drapeaux d'interruption et un schéma de génération de vecteurs.

Compteur de programme conçu pour former l'adresse 16 bits actuelle de la mémoire de programme interne et l'adresse 8/16 bits mémoire externe programmes. Le compteur de programme se compose d'un tampon PC 16 bits, d'un registre PC et d'un circuit d'incrémentation (incrémentation du contenu de 1).

Mémoire de données (RAM) est destiné au stockage temporaire des informations utilisées lors de l'exécution du programme.

Orifices P0, P1, P2, P3 sont des ports d'entrée-sortie quasi-bidirectionnels et sont conçus pour assurer l'échange d'informations entre l'OEVM et des équipements externes, formant 32 lignes d'entrée-sortie.

Dispositif de minuterieÀ modèles de base La famille dispose de deux temporisateurs/compteurs 16 bits programmables (T/C0 et T/C1) qui peuvent être utilisés à la fois comme temporisateurs et compteurs d'événements externes.

Registre d'état du programme (PSW) est conçu pour stocker des informations sur l'état de l'ALU pendant l'exécution du programme.

Mémoire programme (EPROM) conçu pour stocker des programmes et est une mémoire morte (ROM). Divers microcircuits utilisent des ROM masquées qui sont effacées par un rayonnement ultraviolet ou ÉCLAT ROM.

Registre de pointeur de données (DPTR) est conçu pour stocker l'adresse 16 bits de la mémoire de données externe ou de la mémoire de programme.

Pointeur de pile (SP) est un registre à huit bits conçu pour organiser une zone de mémoire de données spéciale (pile) dans laquelle n'importe quelle cellule de mémoire peut être stockée temporairement.



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

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

● inclure tous les dispositifs (processeur, ROM, RAM, ports d'entrée/sortie, système d'interruption, outils de traitement des informations sur les bits, etc.) nécessaires pour mettre en œuvre un système de contrôle à microprocesseur avec une configuration minimale. Dans les années 1970, l'entreprise Intel développé et maîtrisé la production commerciale d'une famille de microcontrôleurs 8 bits MCS-48, unis par un certain nombre de caractéristiques communes (capacité numérique, système de commande, ensemble de blocs fonctionnels de base, etc.). La version de base de cette famille comprend :

● Processeur 8 bits ;

● mémoire programme interne (1/2/4K octets) ;

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

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

● un temporisateur-compteur 8 bits ;

● système d'interruption à un niveau avec deux sources de demande. En 1980, la même société a développé une nouvelle famille de microcontrôleurs MCS-51 à huit bits, qui est compatible avec l'architecture de la famille MCS-48, mais a des capacités plus larges.

L'architecture de la famille MCS-51 s'est avérée si réussie qu'elle reste à ce jour l'un des standards des MK 8 bits. Par conséquent, les MC de cette famille, qui sont largement utilisés dans des systèmes de contrôle relativement simples, ont été choisis comme objet d'étude.

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

Les séries ultérieures de microcircuits, tout en maintenant 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 des microcircuits de la famille MCS-51.
Schéma fonctionnel généralisé du MCS–51. La composition du MC, dont un schéma fonctionnel généralisé est illustré à la fig. 7.1.1, comprend :

● 8 bits CPU CPU composé de ALU, appareils de controle euh et générateur d'adresses F;

● ROM masquée d'une capacité de 4K octets pour le stockage des programmes ;

● 128 octets de RAM pour le stockage des données ;

● Quatre ports programmables P0–P3 pour entrée– sortie d'informations;

● Bloc d'interface série BPI pour l'échange d'informations avec des équipements externes via une ligne à deux fils ;

● bloc de temporisateurs/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 MC comprend un grand nombre de registres, qui sont affectés à des blocs fonctionnels distincts et ne sont pas représentés sur le schéma.

Le schéma ne montre pas non plus les circuits de commande. L'échange bilatéral d'informations entre les blocs s'effectue via un 8-bit interne bus de données SD-8.

Par 16 bits interne bus d'adresse SHA-16, l'adresse formée dans le CPU est affichée dans la ROM (12 bits de l'adresse) et dans la RAM (8 bits de poids faible).

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

Pour l'extension logique de l'interface, la combinaison des fonctions des lignes de port est utilisée. A titre d'exemple, sur la fig. 7.1.1 ligne pointillée montre les lignes du port P3, en effectuant alternative fonctions de transmission de signal 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 sorties du microcircuit MK (Fig. 7.1.1). Au lieu d'un générateur d'horloge interne, un oscillateur externe peut être utilisé pour la synchronisation. La désignation graphique conventionnelle du microcircuit MK est illustrée à la fig. 7.1.2, désignation et objet des conclusions - dans le tableau. 7.1.1. Considérez les blocs fonctionnels du MK et le principe de leur fonctionnement. Dispositif arithmétique-logique. L'unité arithmétique-logique est conçue pour effectuer des opérations arithmétiques (y compris la multiplication et la division) et logiques sur des opérandes à huit bits, ainsi que des opérations de décalage logique, de mise à zéro, de réglage, etc. Le schéma fonctionnel de l'ALU est illustré à la fig. 7.1.3.

L'ALU comprend

● huit bits parallèles additionneur Type combinatoire SM avec transfert 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 ;

S'inscrire B, utilisé pour mettre en oeuvre les opérations de multiplication et de division, ou comme registre super-opérationnel supplémentaire dont les fonctions sont définies par l'utilisateur ;

registres(indisponible par programmation) stockage temporaireРВХ1, РВХ2, destiné à recevoir et à stocker des opérandes pendant la durée de l'opération ;

● ROM constantes ROM stockant un code de correction pour la représentation de données décimales binaires, un code de masque pour les opérations sur les bits et un code constant ;

registre de mots d'état du programme PSW, fixant l'état de l'ALU après l'exécution de l'opération. En tableau. 7.1.2 fournit des informations sur l'attribution de bits à des chiffres individuels du registre PSW. Dispositif de contrôle. Unité de contrôle CPU (CU) prévu pour coordonner le travail conjoint de tous les nœuds MK en utilisant les signaux d'horloge et de contrôle générés. Il comprend (Fig. 7.1.4) :

unité de synchronisation et de contrôle USU, 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 selon le mode de fonctionnement du MK, génère l'ensemble nécessaire de signaux de commande. Un, deux ou quatre cycles machine sont alloués pour exécuter l'instruction.

Chaque cycle machine a six états S1–S6, A chaque état comprend biphasé 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 de la machine sont identiques, commençant par la phase S1P1 et se terminant par la phase S6P2.

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

● Registre de commande RK, décodeur de commande DC et PLA, permettant à chaque cycle machine de constituer un ensemble de micro-opérations en fonction du microprogramme de la commande en cours d'exécution ;

● logique d'entrée-sortie de LVV pour recevoir et émettre des signaux qui permettent l'échange d'informations entre MC et des appareils externes via les ports Р0–Р3 ;

● Le registre PCON, qui a 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 future.
Générateur d'adresses. Address shaper (FA), ou compteur de commandes PC, prévu pour former l'adresse de mémoire de programme 16 bits actuelle et l'adresse de mémoire de données externe 8/16 bits. Il comprend (Fig. 7.1.6) :

● 16 bits amortir B, qui communique entre le bus de données 8 bits de la SD et le bus interne 16 bits (IS) du générateur d'adresses ;

● Schéma d'incrémentation SI pour augmenter de un la valeur de l'adresse mémoire du programme en cours ;

● registre de stockage de l'adresse courante des commandes PTA provenant du SI ;

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

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

Mémoire de données. Mémoire de données prévu pour recevoir, stocker et émettre des informations utilisées dans le processus d'exécution du programme. La mémoire interne (résidente) (Fig. 7.1.7) de données est constituée de RAM d'une capacité de 128 octets, pointeur de pile PS, registre d'adresse RAM RA et décodeur Dsh. Le pointeur de pile SP est un registre 8 bits qui reçoit et stocke l'adresse de l'emplacement de pile auquel on a accédé en dernier. Après réinitialisation, le pointeur de pile est mis à l'adresse 07H, qui correspond au début de la pile avec l'adresse 08H. Le registre d'adresse RA associé au décodeur Dsh permet d'accéder à la cellule mémoire souhaitée contenant un octet ou bit d'information.

Le MK offre la possibilité d'augmenter la quantité 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 la pagination de la mémoire de données externe VPD avec une capacité de 2K octets en utilisant des instructions comme MOVX @ Rm(m = 0; 1). Dans ce cas, le port P0 fonctionne comme un bus d'adresse/données multiplexé, trois lignes du port P2 sont utilisées pour adresser une page RAM externe, et les cinq lignes restantes peuvent être utilisées comme lignes d'E/S.
Sur la fig. 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 :

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

● DPL, DPH - octets bas et haut du registre de pointeur de données DPTR, qui est utilisé comme registre d'adressage indirect dans les instructions 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 de haute résistance ;

● D - la période pendant laquelle les données du port P0 sont entrées dans le microcontrôleur. Mémoire 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 ROM (Fig. 7.1.10). La mémoire programme est adressée à l'aide d'un compteur PC 16 bits, sa capacité maximale est donc de 64 Ko. La mémoire programme interne se compose d'une ROM d'une capacité de 4K octets et d'un décodeur 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 MCU (comme illustré à la Fig. 7.1.11), la mémoire de programme interne est désactivée. Tous les accès 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 programme externe du 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 programme externe, une adresse 16 bits est toujours formée. L'octet de poids faible de l'adresse est transmis par le port P0 dans la première moitié du cycle machine et est fixé par la coupure du strobe ALE dans le registre.Dans la seconde moitié du cycle, le port P0 est utilisé pour entrer un octet de données de la mémoire externe dans le MCU.

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

Les chronogrammes des cycles de lecture et d'écriture pendant le fonctionnement du MK avec RAM externe sont illustrés à la fig. 7.1.12.
Les schémas indiquent :

● PCL OUT - sortie d'octet de poids faible du compteur de commandes PC ;

● PCN OUT - émission de l'octet de poids fort du compteur de commandes PC ;

● DPH est l'octet de poids fort du registre de pointeur de données DPTR, qui est utilisé comme registre d'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) de la mémoire du programme ;

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

● l'octet de poids faible de l'adresse А7…A0 est émis via le port Р0 ; un octet de données est sorti du MK et entré dans le MK lors du travail avec une mémoire de programme externe et une mémoire de données externe (avec division temporelle);

● l'octet de poids fort de l'adresse A15…A8 est émis via le port P2 lors de l'utilisation de la mémoire de programme externe et de la 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 sorties du port P3 sont données dans le tableau. 7.1.3.

Caractéristiques schématiques des ports

Sur la fig. 7.1.13 montre des schémas pour un canal de chacun des ports MK, y compris :

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

● amplification de sortie Cascade(chauffeur);

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

● un circuit pour transmettre un bit de données du côté sortie du port, constitué des tampons B2 et B3 (pour le port P4). La bascule est une bascule D, cadencée par le signal interne "Write to latch". Un bit de données de la sortie directe de la bascule D peut être lu par logiciel à travers le tampon B1 par le signal "Read latch" vers la ligne du bus de données interne (SD) 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 du transfert 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 des résistances de charge externes doivent être connectées à ses sorties. Lors de l'écriture de 1 sur le verrou de port, le transistor inverseur VT1 est désactivé et la broche externe du port P0.X est transférée dans un état de haute résistance. Dans ce mode, la broche de 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 comme sortie. Etages de sortie ports P1, P2, P3 (fig. 7.1.13, b, c, d) réalisé selon les circuits des onduleurs avec une résistance de charge interne, qui est utilisée comme transistor VT2.

Pour réduire le temps de commutation lors du passage des sorties du port de l'état 0 à l'état 1, un transistor supplémentaire VT3 est introduit en parallèle avec le transistor de charge VT2. Le transistor VT3 à l'aide d'éléments du circuit de porte est déverrouillé pendant un temps égal à deux périodes d'oscillation de l'oscillateur à cristal maître (pendant les phases S1P1, S2P2 du cycle machine). Etages de sortie les ports P0, P2 (Fig. 7.1.13, A, c) utilisant le multiplexeur MX peuvent être connectés soit aux 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 de port P3 est une sortie et que son verrou contient 1, alors son étage de sortie est contrôlé par le signal interne au matériel "Fonction de sortie alternative", qui fournit la fonction alternative correspondante, c'est-à-dire l'un des signaux ¯WR, ¯RD ou RxD est formé sur la broche externe. Si la broche du port est utilisée comme entrée, le signal alternatif qui y parvient (TxD, ¯INT0, ¯INT1, T0, T1) est transmis à la ligne interne « Fonction d'entrée alternative ».

Mode d'écriture de port.

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

Mode de lecture de port

Les commandes de lecture des ports lisent les informations directement à partir de contacts externes broches de port ou sorties de verrouillage. Dans le premier cas, le bit de données de la sortie du port est lu par programme à travers le tampon B2 par le signal «Read outputs» vers la ligne du bus de données interne (SD) du MK. Notez que les signaux "Write to latch", "Read latch", "Read pins" sont générés par le matériel lorsque les commandes correspondantes sont exécutées.

Dans le second cas, le mode dit "Lecture-Modification-Ecriture" est implémenté, 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-Ecriture est implémenté lorsque les commandes suivantes sont exécutées : ANL, ORL, XRL, JBC ; CPL ; I.N.C. ; DÉC; DJNC ; MOUV PX,Y ; CLR PX.Y; SETB PX,Y.

La lecture des informations des sorties de verrouillage élimine les erreurs lors de l'interprétation du niveau logique sur une broche de port. Lire la suite de l'article dans.

Intel est à l'origine 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. Un bon ensemble de périphériques, un choix flexible de mémoire programme externe ou interne et un prix abordable ont assuré le succès de ce microcontrôleur sur le marché. Du point de vue de la technologie, 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 du microprocesseur 16 bits 8086. 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 dans chacune ;

Mémoire programme interne (résidente) 4 Ko, de 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 temporisateurs/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'adresse/données pour accéder à la mémoire de programme et de données externe ;

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

Ensuite, le microcontrôleur 8052 a été lancé, qui comportait une quantité accrue de programme résident et de mémoire de données introduite par une troisième minuterie et 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 CMOS (modification 8xC51). Cela a permis de mettre en œuvre les modes Idl (idle) et Power Down (faible consommation), qui permettent une forte réduction de la consommation électrique du cristal et ont ouvert la voie à l'utilisation d'un microcontrôleur dans des applications volatiles, par exemple, dans appareils autonomes alimentés par batterie.

Et la dernière étape importante dans le développement du MK 8051 par Intel a été la sortie des microcontrôleurs 8xC51FA / FB / FC et 8xC51RA / RB / RC, souvent appelés 8xC51Fx et 8xC51Rx. Maison trait distinctif Ce groupe de cristaux est qu'ils ont une minuterie / compteur spécialisée (PCA). De plus, les microcontrôleurs 8xC51Rx contiennent en plus une horloge chien de garde (WDT). Considérez l'architecture et la fonctionnalité de PCA plus en détail.

Le RSA comprend :

temporisateur/compteur 16 bits ;

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

Le temporisateur/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 montant du signal externe ;

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

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

minuterie programmable 16 bits ;

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

PWM 8 bits.

La mise en œuvre de toutes les fonctions répertoriées s'effectue dans la PCA au niveau matériel et ne charge pas le processeur central. 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 si

La 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 données dans le tableau 1.1.

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

Tableau 1.1

E/S

Entrées ADC x chiffres

périphérie,

particularités

Votre animal de compagnie. (À)

Option basse tension

4 niveaux IRQ, sortie d'horloge

4 niveaux IRQ, sortie d'horloge

Version basse tension 8xC51Fx

4 niveaux IRQ, sortie d'horloge

4 niveaux IRQ, sortie d'horloge

4 niveaux IRQ, sortie d'horloge

périodes de fréquence d'horloge (fréquence de synchronisation MC)). Cela limitait l'utilisation des microcontrôleurs de la famille dans les applications nécessitant des performances accrues 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é créés dans le domaine des logiciels et du matériel de la famille MCS-51, à propos desquels l'une des principales tâches de conception nouvelle architecture il y avait une mise en œuvre de la compatibilité matérielle et logicielle avec les développements basés sur le MCS-51.

Pour résoudre ce problème, un groupe conjoint de spécialistes d'Intel et de Philips a été créé, mais plus tard, les chemins de ces deux sociétés ont divergé. En conséquence, deux familles sensiblement différentes sont apparues en 1995 : 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 24 bits, adressant jusqu'à 16 Mo de mémoire ;

Architecture de registre qui permet aux registres d'être appelés octets, mots et mots doubles ;

Mode d'adressage de page pour une récupération plus rapide des commandes à 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) ;

Le faire soi-même commande rapide pendant 2 temps.

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 programmeur, "gravez" les bits de configuration qui déterminent lequel des jeux d'instructions deviendra actif après la mise sous tension. Si vous installez le premier ensemble d'instructions, puis dans e ce cas Le MCU de la famille MCS-251 sera compatible avec le MCS-51 au niveau du code binaire. Ce mode est appelé mode binaire. Si vous définissez initialement un ensemble d'instructions étendues (mode source), les programmes écrits pour MCS-51 nécessiteront une recompilation sur des outils croisés pour MCS-251. Le mode source vous permet d'utiliser l'architecture MCS-251 avec une efficacité maximale et d'atteindre les performances les plus élevées.

Pour les utilisateurs axés sur l'utilisation des microcontrôleurs MCS-251 en remplacement mécanique du MCS-51, Intel lance les 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, limite 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. Comme pour tous les autres microcontrôleurs de la famille MCS-51, ils sont tous répliqués de nombreuses fois par d'autres sociétés.

Actuellement, diverses sociétés produisent de nombreuses modifications et analogues de cette famille, à la fois par Intel et d'autres fabricants, la fréquence d'horloge et la capacité de mémoire ont décuplé et continuent d'augmenter. L'ensemble de modules intégrés au LSI est également complété ; un grand nombre de modèles modernes ont un ADC résident haute vitesse intégré avec jusqu'à 12, et maintenant il peut y avoir plus de bits. Mais au cœur de la famille MSS51 se trouvent les BIS 8051, 80C51, 8751, 87C51, 8031, 80C31 d'Intel dont les premiers exemplaires sont sortis 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 - pas d'EEPROM sur la puce, 7 - EEPROM 4K avec effacement UV. Le troisième caractère: 3 - la ROM sera cristallisée, 5 - s'il n'y a pas de ROM, alors il y a une ROM masquée sur la puce.

Et donc 80S51 est un LSI k-MOS avec une ROM de masque sur une puce, 8031 ​​​​est un LSI n-MOS sans mémoire de programme (ROM, EPROM) sur une puce, 8751 est un LSI n-MOS avec un résident (situé sur une puce) RPROM avec effacement ultraviolet. Nous continuerons à considérer le LSI 8751, en faisant, si nécessaire, des réserves sur les différences des autres circuits, en citant les paramètres qui ont été publiés pour le premier 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 de MK (ayant des caractéristiques principales identiques), dont la principale différence est l'implémentation de la mémoire programme et la consommation d'énergie (voir tableau 3.1). Le microcontrôleur est à huit bits, c'est-à-dire a des instructions pour traiter des mots de huit bits, a une architecture Harvard, la fréquence d'horloge pour les échantillons de base de la famille est de 12 MHz.

Tableau 3.1.

micro-circuits

Mémoire programme interne, octets

Type de mémoire programme

Mémoire de données interne, octets

Fréquence d'horloge, MHz

Courant de consommation, mA

MK 8051 et 80C51 contiennent une mémoire ROM de programme programmable par masque d'une capacité de 4096 octets et sont conçus pour une utilisation en production de masse. MK 8751 contient une EPROM de 4096 octets avec effacement UV et est pratique au stade du développement du système lors du débogage des programmes, ainsi que lors de la production en petits lots ou lors de la création de systèmes nécessitant

ajustement périodique.

MK 8031 ​​​​et 80C31 ne contiennent pas de mémoire de programme intégrée. Ils, ainsi que les modifications décrites précédemment, peuvent utiliser jusqu'à 64 Ko de mémoire programme externe et sont efficacement utilisés dans les systèmes qui nécessitent une mémoire ROM de programme beaucoup plus grande (que 4 Ko sur une puce).

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 CI RAM externes.

    processeur central à huit bits ;

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

    Mémoire de données de 128 octets ;

    quatre ports d'entrée-sortie programmables à huit bits ;

    deux temporisateurs/compteurs multimodes 16 bits ;

    un système d'interruptions autovector avec cinq vecteurs et deux niveaux de priorité contrôlés par logiciel ;

    interface série, y compris un émetteur-récepteur duplex universel capable de fonctionner dans quatre modes ;

    générateur d'horloge.

Le système de commande 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 bancs de huit registres portant chacun les noms R0 ... R7, le choix d'un banc particulier est déterminé par le programme en définissant les bits correspondants dans le registre d'état du programme PSW ;

    128 drapeaux 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 du MC. Le microcontrôleur a les modes de fonctionnement suivants :

une). Réinitialisation générale. 2).Fonctionnement normal. 3). Mode basse consommation et mode veille. quatre). Mode de programmation de l'EPROM résidente, le cas échéant.

Ici, nous allons nous concentrer sur les deux premiers modes de fonctionnement, une description détaillée de la composition et du fonctionnement du MC dans tous les modes est donnée en annexe P1.

RON et la zone de processeur de bits 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 de la RAM résidente se trouvent des registres de fonctions spéciales (SFR, Special Function Registers). Leur but est donné dans le tableau. 3.2.

Tableau 3.2.

La désignation

Nom

La batterie

Registre B

Registre d'état du programme

pointeur de pile

Pointeur de données. 2 octets :

octet de poids faible

octet de poids fort

Registre de priorité d'interruption

Registre d'activation d'interruption

Registre du mode minuterie/compteur

Registre de commande de minuterie/compteur

Temporisateur/compteur 0. Octet de poids fort

Temporisateur/compteur 0. Octet de poids faible

Temporisateur/compteur 1. Octet de poids fort

Temporisateur/compteur 1. Octet de poids faible

Gestion des ports série

Tampon série

Gestion de la consommation

* - registres, en permettant petit à petit adressage

Examinons rapidement les fonctions des SFR répertoriées dans le tableau 3.2.

La batterie ACC - registre d'accumulateur. Des équipes conçues pour travailler

vous avec un accumulateur, utilisez le mnémonique "A", par exemple, MOV MAIS, R2 . Le mnémonique "ACC" est utilisé, par exemple, lors de l'adressage bit à bit de l'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. .

S'inscrire À . Utilisé lors des opérations de multiplication et de division. Pour les autres instructions, le registre B peut être considéré comme un registre supplémentaire de bloc-notes.

S'inscrire États programmes PSW contient des informations sur l'état du programme et est défini en partie automatiquement par le résultat de l'opération effectuée, 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.

La désignation

Tableau 3.4.

La désignation

Affectation des bits

Accéder au rythme

Portez le drapeau. Modifications lors de l'exécution d'un certain nombre d'instructions arithmétiques et logiques.

Matériel ou logiciel

Drapeau de transport supplémentaire. Activé/désactivé par le matériel lors de l'exécution d'instructions d'addition ou de soustraction pour indiquer un report ou un emprunt dans le bit 3 lors de la génération du quartet bas du résultat (D0-D3).

Matériel ou logiciel

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

Par programmation

Par programmation

Pointeur vers la banque des registres de travail

Par programmation

Adresses de la banque 0 (00H - 07H) Adresses de la banque 1 (08H - 0FH) Adresses de la banque 2 (10H - 17H) Adresses de la banque 3 (18H - 1FH)

indicateur 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é

Morceau de parité. Réinitialisez ou définissez par le matériel chaque cycle d'instruction pour indiquer un nombre pair ou impair de bits de batterie qui sont à l'état "1".

Matériel ou logiciel

Aiguille empiler PS - Un registre 8 bits dont le contenu est incrémenté avant que les données ne soient écrites dans la pile lors de l'exécution des commandes PUSH et CALL. Lors de la réinitialisation initiale, le pointeur de pile est défini sur 07H et la zone de pile dans la RAM de données commence à l'adresse 08H. Si nécessaire, en redéfinissant le pointeur de pile, la zone de pile peut être située n'importe où dans la RAM de données interne du microcontrôleur.

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

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

être stocké sous la forme d'un registre 16 bits ou de deux registres indépendants 8 bits.

Port0 - PortZ. Les bits séparés des registres des fonctions spéciales P0, P1, P2, P3 sont des bits - "verrous" des sorties des ports P0, P1, P2, P3.

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

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

registres de compteur de bits, respectivement, du temporisateur/compteur 0 et du temporisateur/compteur 1.

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

mesures/compteurs et un 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

RST BQ2 QB 1EA

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

MC pendant le fonctionnement fournit :

    le temps d'exécution minimum des commandes d'addition est de 1 µs ;

    multiplication et division matérielles 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 d'un quartz, d'une chaîne LC ou d'un générateur externe.

Le système de commande étendu fournit un adressage d'octets et de bits, une arithmétique binaire et binaire-décimale, une indication de débordement et une détermination pair/impair, et 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, en plus d'effectuer des opérations sur des types de données 8 bits, manipuler des données à un seul bit. Les bits individuels accessibles par logiciel peuvent être définis, réinitialisés ou remplacés par leur complément, peuvent être transmis, vérifiés et

Fig.3.2. Constatations externes

microcontrôleur

utilisé dans les calculs logiques. Alors que la prise en charge des types de données simples (lorsqu'elles existent

tendance actuelle à l'augmentation de la longueur des mots) peut à première vue sembler un pas en arrière, cette qualité rend les microcontrôleurs de la famille MCS51 particulièrement adaptés aux applications utilisant des contrôleurs. Les algorithmes de fonctionnement de ces derniers supposent à leur manière la présence de variables booléennes d'entrée et de sortie, difficiles à mettre en oeuvre à l'aide de microprocesseurs standards. Toutes ces propriétés sont collectivement appelées le processeur booléen de la famille MCS51. Cette puissante ALU fait de la famille de microcontrôleurs MCS51 un jeu d'instructions tout aussi bien adapté aux applications de contrôle en temps réel qu'aux algorithmes gourmands en données.

Le schéma de circuit du microcontrôleur est illustré à la fig. 3.2. Dans la version de base, il est conditionné dans un boîtier DIP à 40 broches. Considérez le but des conclusions.

Commençons par les câbles d'alimentation «0 À" et "5 À" , par lequel il reçoit la puissance principale. La consommation de courant est indiquée dans le tableau. 3.1.

Conclusion "RST" - réinitialiser le microcontrôleur. Lorsque cette broche est entraînée active haut, le mode général réinitialiser et MK effectue les actions suivantes :

Définit le compteur d'instructions 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 sur zéro ;

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

    désactive toutes les sources d'interruption, compteurs de temporisation et série

    sélectionne BANK 0 de RAM, prépare les ports P0-RZ pour la réception de données et détermine

partage les broches ALE et PME comme entrées pour l'horloge 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-P3 sur "1".

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

Tableau 3.5.

Informations

indéfini

0XXXX0000B pour k-MOS 0XXXXXXXB pour n-MOS

La sortie RST a également une fonction alternative. L'alimentation de secours est fournie par son intermédiaire pour préserver le contenu de la RAM du microcontrôleur inchangé lorsque le principal est retiré.

conclusion bq1, BQ2 conçu pour connecter un résonateur à quartz qui détermine la fréquence d'horloge du MC.

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

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

Conclusion ALE (UN robe L Anglais E noble autorisation junior adresses) strobe la sortie de la partie inférieure de l'adresse sur le port P0. La sortie est également utilisée lors de la programmation de l'EPROM, tandis qu'une impulsion stroboscopique lui est appliquée pendant 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 pour l'entrée - sortie bit à bit d'informations, mais en plus, chacun d'eux a sa propre spécialisation. Le schéma fonctionnel généralisé du port est illustré à 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 commande. Un ou zéro peut être écrit dans le verrou du bus interne du MK. Ces informations sont transmises via le commutateur de fonction aux touches de sortie et à la sortie du MK. A l'état un, 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. Au moment où un port exécute la fonction alternative pour laquelle il est spécialisé, l'état de verrouillage de sortie est libéré. Le microcontrôleur peut lire séparément l'état de verrouillage du port et l'état de sa sortie, définis par un signal externe. Pour ce faire, dans l'assembleur MK, il existe des commandes spéciales qui activent les lignes correspondantes. Pour lire l'état d'une broche sur le verrou du port correspondant,

être préenregistré

De l'interne

Loquet de gestion

Commutateur de fonction

Vcc

Fins de semaine

unité. Lorsque la ligne « verrouillage lecture » est activée en sortie de la cellule « ET » à laquelle cette ligne est reliée,

ses pneus MK D Q

Écrire dans le verrou C Q

loquet de lecture

Goupille de port

l'état du verrou qui arrive sur le bus interne du microcontrôleur, lorsqu'il est activé

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

Port P0 – port bidirectionnel universel

entrée sortie. Derrière ce port

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

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

données pour étendre la mémoire de programme et la mémoire de données

microcontrôleur. Lorsqu'une mémoire de programme externe est accédée ou qu'une commande d'accès à la mémoire de données externe est exécutée, la partie inférieure de l'adresse (A0…A7) est définie sur les broches du port, qui est stroboscopique sur la broche ALE. Ensuite, lors de l'écriture dans la mémoire de données, les informations en cours d'écriture à partir du bus interne du MK sont transmises aux broches du port P0. Dans les opérations de lecture, au contraire, les informations des broches du port vont au bus interne. Une caractéristique du port P0 est l'absence d'un transistor "pull-up" N2, qui alimente la sortie. Lorsqu'un verrou est écrit sur le port 1, il est simplement placé dans l'état d'impédance élevée nécessaire au bon fonctionnement 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 d'E/S bidirectionnel universel sans fonctions alternatives.

Port R2 – port E/S universel bidirectionnel, en tant que fonction alternative, délivrant la partie supérieure de l'adresse (А8…А15) lors de l'accès à la mémoire externe.

Port P3 – un accès d'entrée-sortie bidirectionnel universel, dont chaque bit permet l'exécution de diverses fonctions alternatives. Dans ce cas, les fonctions alternatives ne sont implémentées que si des unités sont écrites dans les verrous de sortie du port, sinon l'exécution des fonctions alternatives est bloquée. Nous les listons séparément pour chaque bit :

P3.0 RxD (R tête e X terne mangé, lire des données externes) - entrée de l'émetteur-récepteur série intégré.

P3.1 TxJ (J oui e X terne ate, transmettre des données externes) - sortie émetteur-récepteur série intégrée.

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

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

P3.4 С/T0 – entrée du temporisateur/compteur intégré à zéro.

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

P3.6 WR` (O rite, write) - contrôle la sortie du cycle d'écriture dans la mémoire de données.

P3.7 RD` (R ead, read) - commande de sortie du cycle de lecture de la mémoire de données.

Les broches de port P1, P2 et P3 sont capables de produire un courant d'environ 0,2 mA et de recevoir un courant de 3 mA à zéro, les broches du port P0 sont plus puissantes et capables de fournir un courant d'environ 0,8 mA à zéro et d'accepter 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.

La désignation

Destination de sortie

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

entrée sortie

Signal de réinitialisation générale. Sortie d'alimentation de secours RAM à partir 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 de l'émetteur - TxD

Entrée d'interruption externe 0- INT0`

Entrée d'interruption externe 1-INT1`

Entrée temporisateur/compteur 0 : - T0

Entrée temporisateur/compteur 1 : - T1

Sortie du signal stroboscopique lors de l'écriture dans la mémoire de données externe : - WR`

Sortie de signal stroboscopique lors de la lecture d'une mémoire de données externe - RD`

Conclusions pour connecter un résonateur à quartz.

sortie entrée

Conclusion générale

Port P2 bidirectionnel 8 bits. Adresse de sortie A8-A15 en mode de fonctionnement avec mémoire externe. En mode de test ROM interne, les sorties P2.0 - P2.6 sont utilisées comme entrée de l'adresse A8-A14. Conclusion P2.7 - autorisation de lire la ROM.

entrée sortie

Résolution de la mémoire programme

Sortie d'activation de verrouillage d'adresse. Lors de la programmation du signal EEPROM : PROG

entrée sortie

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

entrée sortie

Port bidirectionnel 8 bits P0. Adresse/bus de données pour travailler avec la mémoire externe. Sortie de données D7-D0 en mode test de la ROM interne (RPZU).

entrée sortie

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

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 des éventuelles instructions accédant aux registres IE et IP. Il faut 38 à 86 périodes de fréquence fOSC à partir du moment où la demande d'interruption est engagée pour servir l'interruption, selon la phase de la demande et le nombre de cycles machine de l'instruction pendant lesquels la demande a été reçue.

Lorsque l'interruption est implémentée dans le matériel, l'instruction 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 est effectué. Chaque source de demande d'interruption a sa propre source associée

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

Interruption externe INT0.

Interruption temporisateur/compteur TC0.

Interruption externe INT1.

Interruption temporisateur/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 est axé sur l'organisation d'entrées/sorties de données flexibles via les ports universels P0...P3 et le traitement des informations primaires. Attention particulière dédié aux opérations sur bits et transfert de contrôle par leur valeur. Les instructions qui effectuent de telles opérations constituent 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 de commande permet au programmeur d'utiliser la plupart des opérations avec ensemble complet méthodes d'adressage et ressources matérielles accessibles par logiciel.

2.7.1. Méthodes d'adressage

Chaque instruction indique au processeur l'opération à effectuer et les méthodes d'accès aux opérandes. Le code de commande comporte plusieurs champs qui ont un objectif fonctionnel spécifique. Les champs les plus importants de toute commande sont le code d'opération (COP), 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 pointe vers le numéro de la cellule de mémoire dans laquelle se trouve l'opérande ou où il est entré, alors on l'appelle une adresse directe.

Les méthodes d'adressage sont un ensemble de mécanismes d'accès aux opérandes. Certaines d'entre elles sont simples, conduisent à un format de commande compact et accès rapideà l'opérande, mais ont une quantité limitée de ressources disponibles. D'autres permettent de fonctionner 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 des méthodes d'adressage dans chaque jeu d'instructions est une combinaison de compromis de mécanismes d'adressage connus choisis par les concepteurs d'architecture en fonction de l'ensemble des tâches à résoudre.

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

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

Adressage direct. Dans le champ d'adresse de la commande, contient

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

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

Adressage direct. Le champ d'adresse d'instruction spécifie l'adresse directe de l'emplacement de mémoire de données dans lequel se trouve l'opérande ou où il est écrit. Par exemple, l'instruction MOV A,15h charge le contenu de la cellule DSEG à l'adresse 15h dans l'accumulateur. La cellule mémoire est directement adressable, tandis que l'accumulateur est implicitement adressé. Selon l'emplacement de l'opérande adressé, l'adressage direct est subdivisé en adressage direct de registre et en adressage absolu.

Adressage direct du registre. Le champ d'adresse de commande contient l'adresse de registre directe de la banque de registres actuelle. Il y a huit registres dans chaque banque et une adresse directe de trois bits est nécessaire pour les adresser. Dans les mnémoniques de commande, le registre adressable est noté Rn, où n=0...7. Tous les champs de la commande tiennent dans un octet. Un tel adressage est dit court. Par exemple, MOV R4, R1.

Adressage absolu direct vous permet d'accéder à n'importe quelle cellule DSEG et zone SFR. L'adresse directe dans ce cas prend un octet et la commande prend deux octets. Dans le système de commande, l'octet d'adresse directe est désigné par le mot direct (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 (emplacement 80h du SFR). Si les deux opérandes sont directement adressables en absolu, alors l'instruction devient une instruction à trois octets (par exemple MOV 80h,15h).

adressage indirect. Le champ d'adresse contient l'adresse de l'emplacement mémoire où se trouve l'adresse directe de l'opérande. Dans le système de commande, l'adressage indirect est indiqué par le caractère spécial @. propriété

les registres R0 et R1 (@Ri, i = 0.1) de chaque banque de registres doivent stocker l'adresse directe. Par exemple, si le contenu du registre R1 de la banque de registres actuelle est 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 l'adresse 15h dans l'accumulateur. Cependant, la commande MOV A,@R1 est d'un octet, mais surtout, il est possible par programmation changer l'adresse en changeant le contenu du registre R1.

Adressage relatif. Avec l'adressage relatif, l'adresse directe est formée en ajoutant l'adresse de base au champ d'adresse de la commande. Le contenu du compteur de programme est utilisé comme adresse de base et le champ d'adresse de l'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. Sa plage de présentation est (-128...+127). Lors de la détermination du numéro rel, gardez à l'esprit que le compteur de programme pointe vers la prochaine instruction à exécuter. L'adressage relatif est largement utilisé dans les commandes de transfert de contrôle, ce qui permet la création de modules de programme déplaçables. Les commandes de transfert de contrôle avec adressage relatif permettent un branchement par rapport à la position actuelle du compteur de programme PC dans les deux sens de (-128...+127) octets.

Dans les programmes en langage assembleur, le champ offset peut être utilisé pour spécifier l'étiquette à laquelle sauter. Suite à la traduction, l'assembleur calculera la valeur de décalage si elle ne dépasse pas (-128…+127). Sinon, un message d'erreur sera émis.

Adressage de base représente une sorte d'adressage relatif. L'adresse directe dans ce cas est formée en ajoutant l'adresse spécifiée dans la commande au contenu du registre de base, qui stocke l'adresse de base. La fonction du 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 utile 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 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 plusieurs pages de même longueur. L'adressage de page est effectué par un registre de page séparé, et les cellules de mémoire à l'intérieur d'une page sont adressées par l'adresse contenue dans l'instruction. L'adresse directe est formée en concaténant (attachant) l'adresse des pages et l'adresse de la cellule mémoire à l'intérieur de la page. Dans l'instruction MOVX A,@Ri, le port P2 (octet de poids fort de l'adresse) remplit la fonction de registre de page, et le contenu du registre Ri (octet de poids faible de l'adresse) spécifie l'adresse dans la page. Dans ce cas, la mémoire est divisée en 256 pages de 256 cellules dans chacune d'elles.

Adressage de pile utilisé dans les commandes sans adresse et est une combinaison de méthodes d'adressage d'auto-incrémentation et d'auto-décrémentation, fonctionnant sur le principe de LIFO (Dernière entrée - Première sortie) - "dernier entré - premier sorti". La pile est située dans DSEG et croît dans le sens de l'augmentation de l'adresse. L'adresse du sommet de la pile est contenue dans le pointeur de pile SP. Lorsqu'un octet est poussé sur la pile, le contenu de SP est d'abord incrémenté, puis l'adresse est écrite. Lors de la lecture d'un octet de la pile, lisez d'abord à l'adresse pointée par SP, puis décrémentez SP. Lorsque vous utilisez une pile, gardez à l'esprit que la profondeur de la pile (le nombre maximal de cellules mémoire occupées par la pile) n'est pas contrôlée par le matériel. Avec une augmentation excessive de la pile, les cellules de mémoire qui ne lui sont pas destinées peuvent être occupées par la 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 commandes est présenté dans les tableaux A2.1...A2.6 de l'annexe 2. Les tableaux indiquent le nom de la commande, son mnémonique, code binaire opérations, l'impact de la commande exécutée sur les drapeaux 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 conversion 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é, des espaces peuvent être ajoutés après la virgule si pris en charge par l'assembleur utilisé.

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 sur bits et opérations de transfert de contrôle.

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

contient 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 et deux commandes d'échange XCH et XCHD. Toutes les instructions de transfert de données dont la destination est l'accumulateur positionnent le drapeau de parité P du contenu de l'accumulateur, et les instructions d'adresse directe dont la destination est le registre PSW changent tous les drapeaux. La plus volumineuse est l'instruction MOV, qui utilise quatre méthodes d'adressage : registre direct (A, Rn, DPTR), direct (direct), indirect (@Ri), direct (#data, #data16). Le deuxième opérande de la commande est la source, le premier opérande est la destination. Il existe trois méthodes d'adressage (sauf direct) pour spécifier la destination, et les quatre pour spécifier la source. L'instruction MOV directe, directe à trois octets fournit un transfert entre deux cellules de mémoire (DSEG et SFR), y compris RSEG. Pour l'échange avec RSEG, des formats spéciaux à deux et un octets sont fournis :

L'instruction spéciale MOV DPTR,#data16 charge un pointeur DPTR 16 bits avec la valeur data16.

L'instruction MOVC vous permet de lire des informations de la mémoire de programme CSEG non pas dans le registre de commande du dispositif de contrôle, mais dans l'accumulateur du dispositif de commande. 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. L'accumulateur sert également de récepteur du résultat. La commande permet d'effectuer un recodage rapide par tables.

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

Les commandes PUSH et POP non adressées permettent le transfert de données

entre DSEG, RSEG et SFR.

La commande d'échange XCH fournit un échange d'octets bidirectionnel et la commande XCHD fournit les tétrades inférieures des opérandes d'octet.

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

contient des instructions pour ajouter ADD, transporter ajouter ADDC, emprunter soustraire SUBB, incrémenter et décrémenter d'un INC et DEC, correction décimale de l'addition BCD condensée, multiplier MUL et diviser DIV. Les opérations sont effectuées sur des entiers non signés. Dans les opérations d'addition et de soustraction, l'accumulateur est le premier opérande et la destination du résultat. Registre direct, absolu direct, adressage direct et indirect sont utilisés pour définir le deuxième opérande. Les opérations INC et DEC s'appliquent à un accumulateur, un registre directement adressable, 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 et de division non signées d'entiers impliquent l'accumulateur et le registre B. La multiplication multiplie la valeur 8 bits de A par la valeur 8 bits de B et écrit le résultat 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 défini si le produit est supérieur à 255. Lorsqu'une valeur 8 bits A est divisée par une valeur 8 bits B, le quotient est écrit dans A et le reste dans B. Une tentative de division par 0 définit le Indicateur de débordement OV.

La commande de correction décimale d'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 d'instructions logiques(Tableau A2.3 ) contient trois opérations typiques : ANL - ET logique, ORL - OU logique, XRL - OU exclusif logique. Source du premier opérande

est soit l'accumulateur A, soit une cellule mémoire directement adressable. 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 uniques au-dessus du contenu de l'accumulateur: CLR - efface, CPL - inversions, ainsi que RL, RLC, RR et RRC - opérations de décalages cycliques et étendus vers la droite et la gauche. Cela inclut également l'opération d'échange de tétrades dans l'accumulateur SWAP, qui peut être interprétée comme un décalage cyclique d'un octet de quatre bits.

Groupe d'instructions d'opération sur les bits(tableau A2.6) contient co-

commandes SETB - définir un bit sur 1, CLR - réinitialiser un bit sur 0, CPL - inverser un bit, ANL et ORL - ET logique et OU logique du contenu du drapeau C et un bit adressé directement, MOV - transfert de bit.

À Dans les opérations au niveau du bit, le drapeau C joue le rôle d'un accumulateur booléen. Le contenu du drapeau C ou le bit directement adressable de la zone BSEG sont utilisés comme opérandes. Dans les opérations ANL et ORL, vous pouvez utiliser le contenu du bit directement adressé (bit) ou l'inverse du contenu (/bit).

À ce groupe comprend également des instructions de saut conditionnel avec Décalage 8 bits rel. Un branchement conditionnel peut être exécuté lorsque le bit est activé (commande JB) ou désactivé (commande JNB). Il convient de noter en particulier la commande JBC qui, lorsqu'elle définir le bit implémente le branchement et en même temps réinitialise le bit à 0.

Groupe de commande de transfert de contrôle(tableaux A2.4 et A2.5)

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

À les commandes de transfert de contrôle sont largement utilisées adressage relatif, qui vous permet de créer des modules de programme déplaçables. L'adresse relative est Le décalage 8 bits rel est un octet signé qui fournit une transition vers (-128… +127) octets par rapport à la position actuelle du PC. Soit l'adresse directe addr16, soit l'adresse indirecte @A+DPTR peut être utilisée pour passer à n'importe quel autre point de l'espace d'adressage de 64 Ko. Dans ce dernier cas, le contenu de A est interprété comme un entier non signé. Une variante de l'adressage direct court addr11 dans la page actuelle 2K 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 in-page addr11. Toutes les commandes conditionnelles utilisent uniquement l'adressage relatif.

Lorsque le microcontrôleur reconnaît une demande d'interruption, il émet une instruction 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ù

LA CLOCHE

Il y en a qui ont lu cette news avant vous.
Abonnez-vous pour recevoir les derniers articles.
E-mail
Nom
Nom de famille
Aimeriez-vous lire The Bell
Pas de spam