Horloge du programme de balance mcs 51. Microcontrôleurs MCS-51. Schéma fonctionnel, ALU, mémoire de données. Commandes d'opération logique

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)
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 :
  • Commandes arithmétiques ;
  • Commandes logiques ;
  • Commandes de transfert de données ;
  • Commandes du processeur de bits ;
  • Commandes de branchement et de transfert de contrôle.
Il existe les types suivants d'adressage d'opérande source :
  • Adressage du registre
  • Adressage direct
  • Adressage indirect par registre
  • Adressage direct
  • Adressage indirect des registres basé sur la somme des registres de base et d'index
Instructions arithmétiques Le jeu d'instructions contient les opérations arithmétiques suivantes : addition, addition avec indicateur de retenue, soustraction avec emprunt, incrémentation, décrémentation, comparaison, correction décimale, multiplication et division. L'ALU effectue des opérations sur des entiers non signés. Dans les opérations à deux opérandes : ajouter (ADD), ajouter avec report (ADDC) et soustraire avec emprunt (SUBB), l'accumulateur est le premier opérande et reçoit le résultat de l'opération. Le deuxième opérande peut être un registre de travail de la banque de registres de travail sélectionnée, un registre de mémoire de données interne avec adressage indirect et direct du registre, ou un octet de données direct. Ces opérations affectent les indicateurs de dépassement inférieur, de report, de report intermédiaire et de parité dans le mot d'état du processeur (PSW). L'utilisation du bit de report vous permet d'augmenter considérablement la précision des opérations d'addition (ADDC) et de soustraction (SUBB). L'exécution d'opérations d'addition et de soustraction sensibles au signe peut être réalisée par un logiciel contrôlant l'indicateur de débordement (OV) du registre PSW. L'indicateur de report intermédiaire (AC) garantit que les opérations arithmétiques sont effectuées en code décimal binaire. Les opérations d'incrémentation et de décrémentation n'affectent pas les indicateurs. Les opérations de comparaison n'affectent ni l'opérande de destination ni l'opérande source, mais elles affectent les indicateurs de report. Il existe trois opérations arithmétiques effectuées uniquement sur l'accumulateur : deux commandes pour vérifier le contenu de l'accumulateur A (JZ, JNZ) et une commande de correction décimale pour ajouter des codes BCD. Lors d'une opération de multiplication, le contenu de l'accumulateur A est multiplié par le contenu du registre B et le résultat est placé comme suit : l'octet de poids faible dans le registre B, l'octet de poids fort dans le registre A. Dans le cas d'une opération de division, l'entier de la division est placé dans l'accumulateur A, le reste de la division est placé dans le registre B. Commandes logiques avec variables d'octets Le système de commandes permet d'implémenter des opérations logiques : « ET », « OU », « OU EXCLUSIF » sur l'accumulateur registre (A) et l’octet source. Le deuxième opérande (octet source) peut être un registre de travail dans la banque de registres de travail sélectionnée ; un registre RAM interne adressé à l'aide d'un adressage de registre indirect ; Cellules RAM internes directement adressables et registres spéciaux ; valeur directe. Les opérations logiques spécifiées peuvent être implémentées sur n'importe quel registre directement adressable de la RAM interne ou un registre à usage spécial utilisant le contenu de l'accumulateur A ou des données directes comme deuxième opérande. Il existe des opérations logiques qui sont effectuées uniquement sur la batterie : réinitialiser et inverser les huit bits de A ; décalage cyclique vers la gauche et la droite ; décalage cyclique vers la gauche et la droite, en tenant compte du drapeau de report ; échangeant les places des tétrades senior et junior (nibles) à l'intérieur de la batterie. Commandes de transfert de données Les tableaux de symboles (codes) programmés dans la ROM peuvent être sélectionnés à l'aide de commandes de transfert de données utilisant l'adressage indirect. Un octet constant peut être transféré à l'accumulateur à partir d'un emplacement mémoire programme adressé par la somme d'un registre de base (PC ou DPTR) et d'un registre d'index (le contenu de A). Cela fournit, par exemple, un moyen pratique d'implémenter un algorithme pour convertir le code ASCII en code à sept segments. N'importe quelle cellule d'un bloc de 256 octets de RAM de données externes peut être sélectionnée à l'aide d'un adressage indirect de registre via les registres pointeurs R0 ou R1 (la banque de registres de travail sélectionnée). Un emplacement dans l'espace d'adressage RAM externe de 64 Ko peut également être sélectionné à l'aide de l'adressage indirect du registre via le registre de pointeur de données DPTR. Les commandes de transfert entre registres directement adressables vous permettent d'écrire une valeur d'un port vers une cellule RAM interne sans utiliser de registres de travail ou d'accumulateur. Dans un processeur logique, n'importe quel bit de transfert peut être placé dans un bit de report et vice versa. Le contenu de l'accumulateur peut être échangé avec le contenu des registres de travail (de la banque sélectionnée) et avec le contenu des cellules RAM internes adressées par adressage indirect des registres, ainsi qu'avec le contenu des cellules RAM internes directement adressables et avec le contenu de registres à usage spécial. Les moins significatifs (bits 3-0) du contenu de l'accumulateur peuvent être échangés avec la valeur faible du contenu des cellules RAM internes sélectionnées par adressage indirect des registres. Instructions du processeur de bits Le processeur de bits fait partie de la famille d'architecture de microcontrôleur MCS51 et peut être considéré comme un processeur de bits indépendant. Le processeur de bits exécute un ensemble d'instructions, possède sa propre RAM adressable par bits et sa propre entrée-sortie. Les commandes qui fonctionnent sur des bits fournissent un adressage direct de 128 bits (0-127) dans seize cellules RAM internes (cellules avec des adresses 20Н-2FH) et un adressage direct au niveau des bits de registres spéciaux, dont les adresses sont des multiples de huit. Chacun des bits adressables individuellement peut être mis à "1", remis à "0", inversé, vérifié. Des transitions peuvent être mises en œuvre : si le bit est activé ; si le bit n'est pas activé ; sauter si le bit est activé, effacer ce bit ; le bit peut être réécrit dans (à partir de) le bit de report. Entre n'importe quel bit directement adressable et l'indicateur de retenue, des opérations logiques « ET » et « OU » peuvent être effectuées, où le résultat est entré dans le bit de l'indicateur de retenue. Les instructions de traitement des bits assurent la mise en œuvre de fonctions logiques combinatoires complexes et l'optimisation des programmes utilisateur. Commandes de branchement et de transfert de contrôle L'espace d'adressage de la mémoire du programme n'a pas d'organisation par page, ce qui vous permet de déplacer librement des fragments de programme dans l'espace d'adressage sans nécessiter de réaffectation (modification) du numéro de page. Le déplacement de fragments de programme individuels permet à différents programmes d'utiliser les modules de programme déplacés. Les instructions de saut et d'appel de sous-programme 16 bits vous permettent d'accéder à n'importe quel point de l'espace d'adressage de la mémoire programme de 64 Ko. Les instructions de saut et d'appel de sous-programme de 11 bits fournissent des sauts dans un module de programme de 2 Ko. Le système de commandes contient des commandes pour des sauts conditionnels et inconditionnels par rapport à l'adresse de départ du programme suivant dans la plage de (RS)-128 à (ZS)+127. Les commandes de vérification de bits individuels permettent d'effectuer des transitions conditionnelles sur l'état « 0 » ou « 1 » de bits directement adressables. Les commandes de vérification du contenu de l'accumulateur (zéro/non nul) permettent des sauts conditionnels à travers le contenu de A. Les sauts de registre indirects dans le système d'instruction fournissent un branchement par rapport au registre de base (le contenu de DPTR ou PC) avec un décalage situé dans l'accumulateur A. Adressage des registres L'adressage des registres est utilisé pour accéder aux huit registres de travail de la banque de registres de travail sélectionnée (ces mêmes registres peuvent être sélectionnés en utilisant l'adressage direct et l'adressage indirect des registres comme cellules RAM de données internes normales). L'adressage de registre est utilisé pour accéder aux registres A, B, AB (registre double), DPTR et l'indicateur de retenue C. L'utilisation de l'adressage de registre vous permet d'obtenir l'équivalent sur deux octets d'instructions d'adressage direct sur trois octets. Adressage direct L'adressage direct par octets est utilisé pour accéder aux emplacements de mémoire de données interne (RAM) (0 à 127) et aux registres spéciaux. L'adressage direct des bits est utilisé pour accéder aux 128 bits adressables individuellement situés dans les emplacements d'adresse 20H-2FH et aux bits adressables individuellement des registres spéciaux. Le bit le plus significatif de l'octet de code d'adresse directe sélectionne l'un des deux groupes de bits adressables séparément situés dans la RAM ou dans des registres spéciaux. Les bits directement adressables avec les adresses 0 à 127 (00H-7FH) sont situés dans un bloc de 16 cellules RAM internes avec les adresses 20H-2FH. Les cellules spécifiées sont numérotées séquentiellement du bit le moins significatif de l'octet de poids faible au bit le plus significatif de l'octet de poids fort. Les bits adressables séparément dans les registres spéciaux sont numérotés comme suit : les cinq bits les plus significatifs de l'adresse coïncident avec les cinq bits les plus significatifs de l'adresse du registre lui-même, et les trois bits les moins significatifs déterminent l'emplacement d'un bit individuel dans le registre. Adressage indirect par registre L'adressage indirect par registre est utilisé pour accéder aux cellules RAM de données internes. Les registres R10 et R1 de la banque de registres sélectionnée sont utilisés comme registres pointeurs. Les instructions PUSH et POP utilisent le contenu du pointeur de pile (SP). L'adressage indirect du registre est également utilisé pour accéder à la mémoire de données externe. Dans ce cas, à l'aide des registres pointeurs R0 et R1 (la banque sélectionnée de registres de travail), une cellule est sélectionnée dans un bloc de 256 octets de mémoire de données externe. Le numéro de bloc est prédéfini par le contenu du port P2. Le pointeur de données 16 bits (DPTR) peut être utilisé pour accéder à n'importe quel emplacement dans l'espace d'adressage de la mémoire de données externe jusqu'à 64 Ko. Adressage direct L'adressage direct vous permet de sélectionner des constantes explicitement spécifiées dans la commande à partir de l'espace d'adressage de la mémoire du programme. Adressage indirect des registres par la somme des registres de base et d'index L'adressage indirect des registres par la somme du registre de base et du registre d'index (le contenu de l'accumulateur A) simplifie la visualisation des tables câblées dans la mémoire programme. N'importe quel octet du tableau peut être sélectionné à l'adresse déterminée par la somme du contenu de DPTR ou PC et du contenu de A. Tableau des notations et symboles utilisés dans le système d'instructions
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 envoyées au COP
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 de 8 bits avec le signe m
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 : addition soustraction multiplication division 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
AJOUTER une commande<байт-источник> Ajout CA, C, VO
Commande ADDC A<байт-источник> Ajout avec transport CA, C, VO
L'équipe AJMP Transition absolue
L'équipe ANL<байт-назначения>, <байт-источникa> "ET" logique
Équipe ANL C,<байт-источникa> "ET" logique pour les variables binaires
Équipe CJNE<байт-назначения>, <байт-источник>, <смещение> 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 ak umulya ora
L'équipe CPL Inversion de bits C,bit
Équipe DA A Correction de l'accumulateur décimal pour la position 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
Commande MOV<байт-назначения>, <байт-источника> Variable d'octet de transfert
Commande MOV<бит-назначения>, <бит-источника> 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
L'équipe MOVX<байт приемника>, <байт источника> Envoyer des données vers la mémoire externe (depuis la mémoire externe)
L'équipe MUL AB Multiplication C, VO
Commande NOP Pas d'opération PC
L'équipe ORL<байт-назначения>, <байт-источникa> "OU" logique pour les octets variables
Équipe ORL C,<бит источникa> "OU" logique pour les variables binaires C
Commande POP Lecture à partir de la pile
Commande POUSSER Écrire sur la pile
Commande RET Retour du sous-programme
L'équipe RETI Retour d'interruption
Équipe RL A Décaler le contenu de l'accumulateur vers la gauche
Équipe RLC A Décaler le contenu de l'accumulateur vers la gauche via le drapeau de retenue
Commande RR A Décaler le contenu de l'accumulateur vers la droite
Équipe RRC A Décaler le contenu de l'accumulateur vers la droite via le drapeau de retenue C
Commande SETB Définir le bit C
L'équipe SJMP<метка> Courte transition
L'équipe SUBB A,<байт источника> Soustraction avec emprunt CA, C, VO
ÉCHANGER une commande Échange de cahiers à l'intérieur de la batterie
XCH Une commande,<байт> Échangez le contenu de l'accumulateur avec une variable d'octet
Commande XCHD A,@R1 Échange de cahiers
L'équipe XRL<байт-назначения>, <байт-источникa> "XOR" logique pour les variables d'octet

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

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

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

Unité de contrôle et de synchronisation

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

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

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

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

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

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


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

PLAN DE CONFÉRENCE

1. Introduction

2. Instructions arithmétiques et logiques

3. Commandes de transfert de données

4. Opérations booléennes

5. Instructions de saut

1. Introduction

Système de commande MCS-51 prend en charge un seul ensemble d'instructions, conçu pour exécuter des algorithmes de contrôle d'actionneur 8 bits. Il est possible d'utiliser des méthodes rapides pour adresser la RAM interne et effectuer des opérations binaires sur de petites structures de données. Il existe un système étendu pour traiter les variables à un seul bit en tant que type de données indépendant, qui permet l'utilisation de bits individuels dans les commandes logiques et de contrôle de l'algèbre booléenne.

Modes d'adressage  : ensemble de commandes MCS-51 prend en charge les modes d’adressage suivants. Adressage direct: L'opérande est déterminé par l'adresse 8 bits dans l'instruction. L'adressage direct est utilisé uniquement pour la moitié inférieure de la mémoire de données interne et des registres SFR. Adressage indirect: L'instruction adresse un registre contenant l'adresse de l'opérande. Ce type d'adressage est utilisé pour la RAM externe et interne. Les registres peuvent être utilisés pour spécifier des adresses 8 bits R0 Et R1 banque de registres sélectionnée ou pointeur de pile PS. Pour l'adressage 16 bits, seul le registre de pointeur de données est utilisé DPTR.

Instructions d'inscription : registres R0 à R7 La banque de registres actuelle peut être adressée via des instructions spécifiques contenant un champ de 3 bits indiquant le numéro de registre dans l'instruction elle-même. Dans ce cas, le champ d'adresse correspondant est absent de la commande. Opérations utilisant des registres spéciaux: certaines instructions utilisent des registres individuels (par exemple, les opérations sur accumulateur, DPTR, etc.). Dans ce cas, l'adresse de l'opérande n'est pas du tout spécifiée dans la commande. Il est prédéterminé par le code d'opération.

Constantes immédiates : la constante peut être située directement dans la commande après l'opcode.

Adressage d'index : L'adressage d'index ne peut être utilisé que pour accéder à la mémoire programme et uniquement en mode lecture. Dans ce mode, les tables de la mémoire programme sont visualisées. Registre 16 bits ( DPTR ou compteur de programme) indique l'adresse de base de la table souhaitée, et l'accumulateur indique le point d'entrée dans celle-ci.

Ensemble de commandesdispose de 42 mnémoniques de commande pour préciser les 33 fonctions de ce système. La syntaxe de la plupart des instructions du langage assembleur consiste en une fonction mnémonique suivie 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 commandes peut être divisé en cinq groupes : commandes arithmétiques ; commandes logiques ; commandes de transfert de données ; commandes de processeur de bits ; commandes de branchement et de transfert de contrôle. Les notations et symboles utilisés dans le système de commande sont indiqués ci-dessous.

Tableau. Notations et symboles utilisés dans le système de commande

Désignation, symbole

But

Batterie

Registres de la banque de registres actuellement sélectionnée

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 un registre de fonctions spéciales SFR (128 à 255)

Cellule RAM de données interne de 8 bits indirectement adressable

8 bits direct données incluses dans le code opération (OPC)

donnéesH

Bits les plus significatifs (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

Adresse de destination 11 bits

adresseL

Bits les moins significatifs de l'adresse de destination

Octet de décalage signé de 8 bits

Bit directement adressable dont l'adresse contient le COP situé dans la RAM de données interne ou dans le registre de fonctions spéciales SFR

a15, a14...a0

Bits d'adresse de destination

Contenu de l'élément X

Contenu à l'adresse stockée dans l'élément X

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.

2. Instructions arithmétiques et logiques

Comment p exemple instruction arithmétique, l'opération d'ajout peut être effectuée par l'une des commandes suivantes.

AJOUTERUN,7 F 16 – ajouter le chiffre 7 au contenu du registre A F 16 et stocker le résultat dans le registre A ;

AJOUTERUN,@ R.0 – ajouter au contenu du registre A le numéro dont l'adresse (@ – commercial à ) est stocké dans un registre R. 0 (adressage indirect), et stocke le résultat dans le registre A ;

AJOUTER A,R7– ajouter le contenu du registre A au contenu du registre R. 7 et sauvegardez le résultat dans le registre A ;

AJOUTER UN,#127– ajouter au contenu du registre A un numéro dont l'adresse de cellule de stockage est 127 ( # – symbole numérique) et enregistrez le résultat dans le registre T- concernant A.

Toutes les instructions arithmétiques sont exécutées en un seul cycle machine à l'exception de l'instruction INC DPTR(décalage du pointeur de données DPTRà l'octet suivant), nécessitant deux cycles machine, ainsi que des opérations de multiplication et de division effectuées en 4 cycles machine. N'importe quel octet de la mémoire de données interne peut être incrémenté et décrémenté sans utiliser de pile.

Instructions MUL AB effectue la multiplication (multiplication) des données de l'accumulateur par les données du registre B, en plaçant le produit dans les registres A (moitié basse) et B (moitié haute).

Instructions DIVAB divise (division) le contenu de l'accumulateur par la valeur du registre B, laissant le reste dans B et le quotient dans l'accumulateur.

Instructions DA A est destiné aux opérations arithmétiques décimales binaires (opérations arithmétiques sur les nombres représentés en code décimal binaire). Il ne convertit pas le nombre binaire en BCD, mais ne fournit le résultat correct que lors de l'ajout de deux nombres décimaux binaires.

Exemple commande logique: Une opération ET logique peut être effectuée par l'une des commandes suivantes :

ANLUN,7 F 16 – multiplication logique du contenu du registre A par le nombre 7 F 16 et le résultat est stocké dans le registre A ;

ANLUN,@ R.1 – multiplication logique du contenu du registre A par le numéro dont l'adresse est stockée dans le registre R. 1 (adressage indirect), et stocke le résultat dans le registre A ;

ANL A, R6– multiplication logique du contenu du registre A par le contenu du registre R. 6, et sauvegardez le résultat dans le registre A ;

ANL A,#53 – multiplication logique du contenu du registre A par un nombre dont l'adresse de cellule de stockage est 53 16, et le résultat est stocké dans le registre A.

Toutes les opérations logiques sur le contenu de l'accumulateur sont effectuées en un cycle machine, le reste en deux. Les opérations logiques peuvent être effectuées sur l'un des 128 octets inférieurs de la mémoire de données interne ou sur n'importe quel registre SFR (registres de fonctions spéciales) en mode d'adressage direct sans utiliser de pile.

Les opérations de décalage rotatif RL A, RLC A, etc. déplacent le contenu de l'accumulateur d'un bit vers la droite ou vers la gauche. Dans le cas d'un décalage cyclique vers la gauche, le bit de poids faible est déplacé vers la position de poids fort. Dans le cas d'un décalage cyclique vers la droite, c'est l'inverse qui se produit.

Opération ÉCHANGER UNéchange les tétrades basses et hautes de la batterie.

3. Commandes de transfert de données

Équipe MOV destination, src vous permet de transférer des données entre des cellules RAM internes ou des zones de registre de fonctions spéciales SFR sans utiliser de batterie. Dans ce cas, le travail avec la moitié supérieure de la RAM interne ne peut être effectué qu'en mode d'adressage indirect, et l'accès aux registres SFR– uniquement en mode d'adressage direct.

Dans tous les microcircuits MCS-51 La pile est placée directement dans la mémoire de données résidente et grandit vers le haut. Instructions POUSSER incrémente d'abord la valeur dans le registre du pointeur de pile PS, puis écrit un octet de données sur la pile. Équipes POUSSER Et POPULAIRE ne sont utilisés qu'en mode d'adressage direct (écriture ou restauration d'un octet), mais la pile est toujours accessible en adressant indirectement via un registre PS. Ainsi, la pile peut également utiliser les 128 premiers octets de la mémoire de données. Les mêmes considérations excluent la possibilité d'utiliser des instructions de pile pour adresser des registres SFR.

Les instructions de transfert de données incluent une opération de transfert de 16 bits MOV DPTR,#données16, qui est utilisé pour initialiser le registre du pointeur de données DPTR lors de la visualisation de tables dans la mémoire programme ou pour accéder à la mémoire de données externe.

Opération XCH A, octet utilisé pour échanger des données entre l’accumulateur et l’octet adressé. Équipe XCHD A,@Ri similaire au précédent, mais n'est effectué que pour les tétrades inférieures impliquées dans l'échange d'opérandes.

Pour accéder à la mémoire de données externe, seul l'adressage indirect est utilisé. Dans le cas d'adresses à un octet, des registres sont utilisés R0 ou R1 banque de registres actuelle et pour 16 bits – registre de pointeur de données DPTR. Quelle que soit la méthode d'accès à la mémoire de données externe, la batterie joue le rôle de source ou de récepteur d'informations.

Pour accéder aux tables situées dans la mémoire programme, utilisez les commandes suivantes :

MOVCA,@A+ DPTR ;

MOVCA,@A+ PC .

Le contenu du registre de pointeur de données est utilisé comme adresse de base de la table DPTR ou PC(compteur de programme), et le décalage est pris à partir de UN. Ces instructions sont utilisées exclusivement pour lire des données dans la mémoire du programme, mais pas pour y écrire.

4. Opérations booléennes

Microcircuits MCS-51 contiennent un processeur « booléen ». La RAM interne dispose de 128 bits directement adressables. Espace de registre de fonction spéciale SFR peut également prendre en charge des champs jusqu'à 128 bits. Les instructions binaires effectuent des branchements conditionnels, des transferts, des réinitialisations, des inversions et des opérations ET et OU. Tous les bits spécifiés sont disponibles en mode d'adressage direct.

Mors de transport FC dans le registre des fonctions spéciales « mot d'état du programme » P.S.W." est utilisé comme accumulateur d'un bit pour un processeur booléen.

5. Instructions de saut

Les adresses des opérations de saut sont indiquées en langage assembleur par une étiquette ou par une valeur réelle dans l'espace mémoire du programme. Les adresses de branchement conditionnelles sont assemblées dans un décalage relatif - un octet de signe ajouté au compteur du programme PC si la condition de transition est remplie. Les limites de ces transitions se situent entre moins 128 et 127 par rapport au premier octet suivant l'instruction. Dans le registre des fonctions spéciales "mot d'état du programme" P.S.W." il n'y a pas de drapeau zéro, donc les instructions JZ Et JNZ vérifier la condition « égal à zéro » en testant les données dans l'accumulateur.

Il existe trois types de commandes de saut inconditionnel : SJMP, LJMP Et AJMP– des adresses de destination dont le format diffère. Instructions SJMP code l'adresse sous forme de décalage relatif et prend deux octets. La distance de saut est limitée à la plage de moins 128 à 127 octets par rapport à l'instruction suivante SJMP.

Dans les instructions LJMP L'adresse de destination est utilisée comme constante de 16 bits. La longueur de la commande est de trois octets. L'adresse de destination peut être située n'importe où dans la mémoire du programme.

Équipe AJMP utilise une constante d'adresse de 11 bits. La commande se compose de deux octets. Lorsque cette instruction est exécutée, les 11 bits inférieurs du compteur d'adresse sont remplacés par l'adresse de 11 bits de l'instruction. Les cinq bits les plus significatifs du compteur de programme PC restent inchangés. Ainsi, la transition peut s'effectuer à l'intérieur d'un bloc de 2 Ko dans lequel se trouve l'instruction qui suit l'instruction AJMP.

Il existe deux types d'appels de commande à un sous-programme : APPEL Et UN APPEL. Instructions APPEL utilise l'adresse 16 bits du sous-programme appelé. Dans ce cas, le sous-programme peut être situé n'importe où dans la mémoire du programme. Instructions UN APPEL utilise une adresse de sous-programme de 11 bits. Dans ce cas, la routine appelée doit être située dans un seul bloc de 2 Ko avec l'instruction suivante UN APPEL. Les deux versions de l'instruction placent l'adresse de l'instruction suivante sur la pile et la chargent dans le compteur du programme. PC nouvelle valeur correspondante.

Le sous-programme se termine par l'instruction RETRAIT, qui permet de revenir à l'instruction suite à la commande APPEL. Cette instruction extrait l'adresse de retour de la pile et la charge dans le compteur du programme. PC . Instructions RÉTI utilisé pour revenir des routines d'interruption. La seule différence RÉTI depuis RETRAIT est-ce RÉTI informe le système que le traitement de l'interruption est terminé. Si au moment de l'exécution RÉTI il n'y a pas d'autres interruptions, alors c'est identique RETRAIT.

Instructions DJNZ conçu pour contrôler les cycles. Pour exécuter une boucle N une fois que vous devez charger un octet avec une valeur dans le compteur N et fermez le corps de la boucle avec la commande DJNZ, indiquant le début du cycle.

Équipe CJNE compare ses deux opérandes sous forme d'entiers non signés et passe à l'adresse qui y est spécifiée si les opérandes comparés ne sont pas égaux. Si le premier opérande est inférieur au second, alors le bit de report FC est réglé sur "1".

Toutes les instructions sous forme assemblée occupent 1, 2 ou 3 octets.

CDU 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 à 73

Shcherbina A.N.Ordinateurs, systèmes et réseaux. Microcontrôleurs et microprocesseurs dans les systèmes de contrôle : Cheb. allocation / A.N. Shcherbina, P.A. Nechaev-SPb. : De-in Polytechnique. Univ., 2012.-226 p.

Correspond au contenu de la norme éducative de l'État pour les domaines de formation et de spécialités dans le domaine de la gestion des systèmes techniques, de l'énergie et du génie électrique et au contenu du programme approximatif de la discipline « Informatique, systèmes et réseaux ».

Les problèmes fondamentaux de l'organisation logique des systèmes à microprocesseurs sont examinés à l'aide de l'exemple de l'architecture de base de la famille de microcontrôleurs MCS-51 d'Intel. La technologie de programmation des microcontrôleurs en langages Assembly et SI est décrite.

Peut être utile aux étudiants et aux enseignants des établissements techniques supérieurs, aux spécialistes de l'automatisation des processus technologiques et des équipements de production, ainsi qu'aux ingénieurs concepteurs de systèmes à microprocesseurs.

Il correspond également au contenu de la norme éducative nationale des disciplines « Microcontrôleurs et microprocesseurs dans les systèmes de contrôle » et « Dispositifs d'automatisation électronique » pour la formation de licence, d'ingénierie et de master dans le sens 140400 « Énergie électrique et génie électrique ».

Publié par décision du conseil de rédaction et d'édition

Université polytechnique d'État de Saint-Pétersbourg.

© Shcherbina A.N., Nechaev P.A., 2012

© État de Saint-Pétersbourg

Université Polytechnique, 2012

ISBN978-5-7422-3553-8


Introduction... 7

Chapitre 1. Architecture de la famille MCS51. dix

1.1 Caractéristiques générales 10

1.2 Schéma fonctionnel 11



1.3 Affectation des broches du microcontrôleur 8051 15

1.4 Organisation de la mémoire 17

1.4.1 Mémoire programme (ROM) 18

1.4.2 Mémoire de données (RAM) 19

1.4.3 Registres de fonctions spéciales. 20

1.4.4 Registre des drapeaux (PSW) 23

1.5 Dispositif de contrôle et de synchronisation 26

1.6 Organisation des ports E/S 27

1.6.1 Informations générales. 27

1.6.2 Fonctions alternatives. 27

1.7. Minuteries/compteurs des microcontrôleurs de la famille 8051. 28

1.7.1. Structure minuterie-compteur. 28

1.7.2 Modes de fonctionnement des minuteries-compteurs. trente

1.8. Port série 32

1.8.1. Structure du port série. 32

1.8.2. Registre de contrôle/état de l'émetteur-récepteur SCON.. 34

1.8.3. Registre de contrôle de puissance PCON.. 36

1.9. Système d'interruption 37

1.9.1. Structure du système d'interruption. 37

1.9.2 Exécution de la routine d'interruption. 40

Chapitre 2. Caractéristiques du microcontrôleur 80C51GB.. 42

2.1 Caractéristiques fonctionnelles 42

2.2 Ports E/S P0-P5 43

2.2.1 Fonctionnement des ports d'E/S. 43

2.2.2 Écrire sur le port.. 46

2.3 Caractéristiques du système d'interruption 8XC51GB.. 49

Activer/désactiver les interruptions. 50

Interrompre la gestion des priorités. 51

Interruptions externes. 54

2.3. Nœud ADC 56

2.4. Surveillance du matériel 61

2.5. Détection de panne d'horloge 63

2.6. Matrice de compteurs programmables RSA 64

2.6.1. Structure de l'APC..64

2.6.2. Registre de mode compteur PCA (CMOD) 66

2.6.3. Registre de contrôle du compteur PCA (CON) 67

2.6.4. Modules de comparaison/engagement. 68

2.7. Port série amélioré 76

2.8. Minuteries/compteurs 79

Disposition des broches des microcontrôleurs du groupe 8XC51GB.. 86

Chapitre 3. Programmation du MK 8051GB.. 89

3.1. Modèle de programme 89

3.2 Types de données 93

3.3 Méthodes d'adressage des données 93

3.4 Système de commande 95

3.4.1 Caractéristiques générales. 95

3.4.2 Types de commandes. 96

3.4.3 Types d'opérandes. 97

3.4.4 Commandes de transfert de données du microcontrôleur. 98

3.4.5 Instructions arithmétiques 8051. 101

3.4.6 Commandes d'opération logique du microcontrôleur 8051. 104

3.4.7 Commandes pour les opérations sur les bits du microcontrôleur 8051. 106

3.5 Programmes de débogage 111

Chapitre 4. Langage de programmation ASM-51. 112

4.2 Rédaction du texte du programme 113

4.3 Alphabet des langues. 114

4.4 Identifiants. 115

4.5 Nombres 117

4.6 Directives 118

4.7 Implémentation des sous-programmes dans le langage ASM51 122

4.7.1 Structure d'un sous-programme-procédure en langage ASM51. 122

4.7.2 Passage de variables de paramètre à un sous-programme. 123

4.7.3 Implémentation des sous-programmes-fonctions dans le langage ASM51. 123

4.7.4 Implémentation de routines de gestion des interruptions dans le langage ASM51. 124

4.8 Programmation structurée en langage assembleur. 125

4.9 Caractéristiques de la diffusion de programmes multimodules... 126

4.10 Utilisation des segments 128

4.10.1 Division de la mémoire MK en segments.. 128

4.10.2 Segments de mémoire absolue. 129

4.10.2 Segments de mémoire déplaçables. 131

Chapitre 5. Langage de programmation C-51. 134

5.1 Caractéristiques générales de la langue 134

5.3 Structure des programmes S-51 136

5.3. Éléments du langage de programmation S-51 138

5.3.1. Symboles.. 138

5.3.2. Unités lexicales, séparateurs et utilisation des espaces. 141

5.3.3 Identifiants... 142

5.3.4 Mots-clés. 143

5.3.5 Constantes.. 143

5.4. Expressions dans les opérateurs de langage 146

programmation C-51 146

5.5. Priorités opérationnelles 148

5.6. Opérateurs du langage de programmation C-51 149

5.6.1. Opérateurs de déclaration. 150

5.6.2 Instructions exécutables... 150

5.6.3 Opérateur d'affectation. 151

5.6.4 Opérateur conditionnel. 151

5.6.5 Opérateur structurel (). 152

5.6.6 Opérateur de boucle pour. 152

5.6.7 Opérateur de boucle avec vérification de condition avant le corps de la boucle while. 153

5.6.8 Opérateur de boucle avec vérification de condition après le corps de la boucle do while. 154

5.6.9 Pause opérateur. 155

5.6.10 Continuer l'opérateur. 155

5.6.11 Opérateur de sélection de commutateur. 155

5.6.12 Opérateur de saut inconditionnel goto. 157

5.6.13 Opérateur d'expression. 158

5.6.14 Instruction Return du sous-programme return. 158

5.6.15 Opérateur vide. 158

5.7. Déclaration de variables dans le langage de programmation C-51. 159

5.7.1. Déclaration de variables. 159

5.7.3 Types de données entiers. 161

5.7.4 Nombres à virgule flottante. 162

5.7.5 Variables de type énuméré. 162

5.7.6. Déclaration de tableaux dans le langage de programmation C-51. 164

5.7.7. Structures.. 165

5.7.8. Combinaisons (mélanges) 166

5.8. Utiliser des pointeurs dans C-51 167

5.8.1. Déclaration de pointeurs. 167

5.8.2. Pointeurs non typés. 168

5.8.3. Pointeurs dépendants de la mémoire. 169

5.9. Déclaration de nouveaux types de variables 169

5.10. Initialisation des données 170

5.11. Utilisation de sous-programmes dans le langage de programmation C-51. 170

5.11.1. Définition des sous-programmes... 171

5.11.2. Paramètres du sous-programme.. 173

5.11.3. Pré-déclaration des sous-programmes.. 174

5.11.4 Appel de sous-programmes.. 176

5.11.5 Appel récursif de sous-programmes... 176

5.11.6 Routines de traitement des interruptions. 177

5.11.7 Portée des variables et des sous-programmes... 178

5.12. Programmes multimodules 179

Chapitre 6. Préparation de programmes dans l'environnement de développement intégré Keil μVision2. 182

6.1 Créer un projet dans ASM-51 182

6.2 Exemple de création d'un projet en C pour un contrôleur de formation dans l'environnement de développement intégré Keil μVision2 188

Chapitre 7. Description du contrôleur de formation.. 199

7.1. Structure du contrôleur 199

7.2. Espace d'adressage 200

7.2.1. Allocation de mémoire. 200

7.2.2 Mémoire externe. 201

7.2.3. Mémoire de données interne. 202

7.3. Allocation des ports d'E/S 202

7.4. Port série……………………………...203

7.5. Travailler avec l'écran LCD 205

7.6. Panneaux de contrôle……………………………………………………………213

ANNEXE P2 STRUCTURE DU RAPPORT DE TRAVAIL DE LABO……..217

Annexe P3 Codes de commande machine. 217

Références... 224


Introduction

Dans la maîtrise des spécialités liées à l'automatisation des processus technologiques et de la production, l'étude des microcontrôleurs est l'une des sections importantes.

Il y a un développement et une émergence continus de microcontrôleurs et de microprocesseurs 16 et 32 ​​bits dans le monde, mais la plus grande part du marché mondial des microprocesseurs reste à ce jour avec les appareils 8 bits. Selon toutes les prévisions des sociétés d'analyse dans un avenir proche, la position de leader des microcontrôleurs 8 bits sur le marché mondial restera.

Actuellement, parmi tous les microcontrôleurs 8 bits, la famille MCS-51 est le leader incontestable en termes de nombre de variétés et de nombre d'entreprises produisant ses modifications. Il tire son nom du premier représentant de cette famille - le microcontrôleur 8051. Un ensemble réussi de périphériques, la possibilité de sélectionner de manière flexible la mémoire de programme externe ou interne et un prix abordable ont assuré le succès de ce microcontrôleur sur le marché.

Avantages de la famille MCS-51 :

· une architecture qui est de facto un standard ;

· extrême ampleur de la famille et variété des possibilités ;

· disponibilité de versions de processeurs hautes performances et avancées ;

· un nombre important de développements logiciels et matériels disponibles gratuitement ;

· facilité de programmation matérielle, y compris la programmation en circuit ;

· faible coût et disponibilité des puces de base ;

· disponibilité de versions spécialisées de contrôleurs pour des conditions d'application spéciales

· disponibilité de versions de contrôleurs avec un niveau réduit d'interférences électromagnétiques ;

· largement connu parmi les développeurs de l'ancienne génération, tant dans le monde que dans les pays de la CEI ;

· soutien de l'architecture par les principaux établissements d'enseignement du monde.

Et enfin, le principal avantage : après avoir maîtrisé la puce de base de la famille, il est facile de commencer à travailler avec des « monstres » informatiques tels que les microcontrôleurs de Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

La famille MCS-51 comprend toute une gamme de microcircuits depuis les microcontrôleurs les plus simples jusqu'aux plus complexes. Il existe aujourd'hui plus de 200 modifications de la famille de microcontrôleurs 8051, produites par près de 20 entreprises. Chaque année, de nouvelles variantes de représentants de cette famille apparaissent.

Les principales orientations de développement sont :

· performances accrues (fréquence d'horloge augmentée et architecture repensée) ;

· réduction de la tension d'alimentation et de la consommation d'énergie ;

· augmentation de la quantité de mémoire RAM et FLASH sur la puce avec possibilité de programmation en circuit ;

· introduction de dispositifs complexes tels que des systèmes de contrôle d'entraînement, des interfaces CAN et USB, etc. dans la périphérie du microcontrôleur.

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 réalisés dans des boîtiers identiques avec le même brochage (numérotation des pattes du boîtier). Cela vous permet d'utiliser des microcircuits de différents fabricants pour l'appareil développé sans modifier le schéma de circuit de l'appareil et du programme.

Les principaux fabricants mondiaux de variétés de la 51ème famille sont Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems et plusieurs autres.

Les caractéristiques des analogues des microcontrôleurs de la famille MCS-51 (Intel 8XC51FA, 8XC51GB, 80С152) dotés de capacités avancées sont présentées dans le tableau. EN 1.

Tableau B.1

RAM ROM RSA CDA WDT Conditions générales Placenta. Canaux Particularités
Atmel : AT89C2051
- - - - UART Flash 2 Ko
AT89C4051 - - - - UART Flash 4 Ko
AT89S4D12 128 Ko - - - UART, SPI Flash 4 Ko
Semi-conducteur DALLAS : DS5000FP
- - - + UART Chargeur d'amorçage
DS5001FP - - - + UART Chargeur d'amorçage
DS8xC520 16K - - + 2xUART 2 DPTR
SIEMENS : C505C
16K - + + UART, PEUT 8 DPTR
C515C 64 Ko - + + UART+SSC+CAN 4 PWM, 8 DPTR
Philips : *89C51RA+
- + - + UART 2 DPTR, 4 niveaux. trans., pointage, Flash 8K
P51XAG1x 8K - - + 2UART
Intel : 8xC51RA
8K - + + UART 4 niveaux d'IRQ, sortie
8XC196KC 64 Ko 16K - + - UART 3 MLI
80C196 Ko 64 Ko 8K - + - UART MLI

Chapitre 1. Architecture de la famille MCS51

Les microcontrôleurs monopuce 8 bits de la famille MCS-51 ont acquis une grande popularité parmi les développeurs de systèmes de contrôle à microprocesseur en raison de leur architecture bien conçue. L'architecture d'un microcontrôleur est un ensemble de ressources matérielles internes et externes accessibles par logiciel et un système de commande. 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é. Les microcontrôleurs qui remplissent toutes les fonctions d'un micro-ordinateur à l'aide d'un seul microcircuit sont appelés ordinateurs monopuces (SOC).

Intel a publié environ 50 modèles basés sur le cœur de fonctionnement du microcontrôleur Intel 8051. Dans le même temps, de nombreuses autres sociétés, telles qu'Atmel et Philips, ont commencé à produire leurs propres microcontrôleurs développés selon la norme MCS-51.

Caractéristiques générales

Principales caractéristiques de la famille :

· Unité centrale de traitement (CPU) 8 bits, axée sur le contrôle des actionneurs ;

· Le processeur dispose d'un circuit matériel de multiplication et de division intégré de 8 bits ;

· la présence dans le jeu d'instructions d'un grand nombre d'opérations pour travailler avec des bits directement adressables permet de parler d'un processeur pour travailler avec des données binaires (processeur booléen) ;

· mémoire de programme interne (située sur la puce) de type masquée ou reprogrammable, d'un volume de 4 à 32 Ko pour divers cristaux, dans certaines versions elle est absente ;

· au moins 128 octets de RAM de données résidente, utilisée pour l'organisation, les banques d'enregistrement, la pile et le stockage des données utilisateur ;

· au moins 32 lignes d'interface bidirectionnelles (ports), configurables individuellement pour l'entrée ou la sortie d'informations ;

· deux compteurs/timers multimodes 16 bits permettant de compter les événements externes, d'organiser les temporisations et de synchroniser le port de communication ;

· Émetteur-récepteur asynchrone duplex bidirectionnel (UART), conçu pour organiser les canaux de communication entre le microcontrôleur et les appareils externes avec une large gamme de taux de transfert d'informations. Il existe des outils pour l'intégration matérielle et logicielle des microcontrôleurs dans un système connecté ;

· système d'interruption prioritaire à deux niveaux prenant en charge au moins 5 vecteurs d'interruption provenant de 4 sources d'événements internes et 2 externes ;

· générateur d'horloge intégré.

Schéma structurel

Le schéma fonctionnel du contrôleur est présenté sur la Fig. 1.1 et comprend les principales unités fonctionnelles suivantes : unité de contrôle, unité arithmétique-logique, unité de minuterie/compteur, interface série et unité d'interruption, compteur de programme, mémoire de données et mémoire de programme. La communication bidirectionnelle s'effectue à l'aide d'un bus de données interne de 8 bits. 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).

Unité de synchronisation et de contrôle- 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;

logique d'entrée/sortie ;

registre de commandes ;

registre de gestion de la consommation d'électricité;

décodeur de commande, logique de contrôle informatique.

Riz. 1.1. Schéma fonctionnel du contrôleur I8051.

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

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

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

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

registres accumulateurs, registres de stockage temporaire TMP1 et TMP2 ;

Constantes ROM ;

additionneur;

registre supplémentaire (registre B);

batterie (ACC);

registre d'état du programme (PSW).

Registre accumulateur et registres de maintien- 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

Interface série et unité d'interruption (SIP) 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. Le bloc comprend :

Tampon PIP ;

logique de contrôle ;

registre de contrôle;

tampon d'émetteur ;

tampon du récepteur ;

émetteur-récepteur de port série ;

registre de priorité d'interruption ;

registre d'activation d'interruption ;

logique de traitement du drapeau d'interruption et circuit de génération de vecteurs.

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

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

Ports 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'ordinateur et les périphériques externes, formant 32 lignes d'entrée-sortie.

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

Mémoire de programme (EPROM) conçu pour stocker des programmes et est une mémoire morte (ROM). Différentes puces utilisent des ROM masquées, effaçables aux ultraviolets ou FLASH.

Registre de pointeur de données (DPTR) conçu pour stocker une adresse de 16 bits de mémoire de données externe.

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

1.3 Affectation des broches du microcontrôleur 8051(Fig.1.2)

· U ss - potentiel du fil commun (« masse ») ;

· U cc - tension d'alimentation principale +5 V ;

· X1,X2 - bornes pour connecter un résonateur à quartz ;

· RST - entrée de réinitialisation générale du microcontrôleur ;

· PSEN - autorisation de mémoire de programme externe, délivrée uniquement lors de l'accès à une ROM externe ;

· ALE - stroboscope d'adresse de mémoire externe ;

· EA - désactivation de la mémoire interne du programme ; le niveau 0 à cette entrée oblige le microcontrôleur à exécuter le programme uniquement à partir d'une ROM externe ; ignorer l'interne (si ce dernier est présent) ;

Riz. 1.2. 8051 affectations de broches.

· P1 - port d'entrée/sortie quasi-bidirectionnel à huit bits, chaque bit du port peut être programmé pour l'entrée et la sortie d'informations, quel que soit l'état des autres bits ;

· P2 est un port quasi-bidirectionnel à huit bits similaire à P1 ; les broches de ce port sont utilisées pour fournir des informations d'adresse lors de l'accès à un programme externe ou à une mémoire de données (si un adressage 16 bits de cette dernière est utilisé). De plus, les broches du port sont utilisées lors de la programmation pour saisir les bits les plus significatifs de l'adresse dans le microcontrôleur ;

· РЗ - un port quasi-bidirectionnel de huit bits, similaire à P1, les broches de ce port peuvent exécuter un certain nombre de fonctions alternatives utilisées lors du fonctionnement de minuteries, d'un port d'E/S série, d'un contrôleur d'interruption et d'un programme externe et mémoire de données ;

· P0 est un port d'entrée/sortie d'informations bidirectionnelles multiplexées à huit bits ; l'octet faible de l'adresse et des données sont émis via ce port à des moments différents.

Organisation de la mémoire

L'ensemble de la série MCS-51 possède une architecture Harvard, c'est-à-dire des espaces d'adressage séparés pour la mémoire des programmes et des données. La structure de la mémoire est représentée sur la Fig. 1.3.

Le volume de mémoire programme interne (résidente) (ROM, EPROM ou OTP ROM) située sur la puce, selon le type de puce, peut être 0 (sans ROM), 4K (puce de base), 8K, 16K ou 32K. Si nécessaire, l'utilisateur peut étendre la mémoire du programme en installant une ROM externe. L'accès à la ROM interne ou externe est déterminé par la valeur du signal sur la broche EA (External Access) :

EA=V cc (tension d'alimentation) - accès à la ROM interne ;

EA=V ss (potentiel de terre) - accès à la ROM externe.

Pour les cristaux sans ROM (ROMless), la broche EA doit être connectée en permanence à V ss.

Riz. 1.3. Organisation de la mémoire de la famille MCS-51

Stroboscope de lecture de ROM externe - (Program Store Enable) est généré lors de l'accès à la mémoire de programme externe et est inactif lors de l'accès à la ROM située sur la puce. La zone des adresses mémoire de programme inférieures est utilisée par le système d'interruption. L'architecture de la puce centrale 8051 prend en charge cinq sources d'interruption :

· deux interruptions externes ;

· deux interruptions de minuteries ;

· interruptions du port série.

En figue. La figure 1.4 montre une carte de la zone inférieure de la mémoire programme.

Riz. 1.4. Carte de la zone de mémoire programme inférieure

Mémoire de programme (ROM)

Pour les microcontrôleurs de la famille 8051, la mémoire de programme et la mémoire de données sont indépendantes et indépendantes l'une de l'autre, adressées par diverses commandes et signaux de contrôle.

Le volume de mémoire programme intégrée située sur la puce du microcontrôleur 8051 est de 4 Ko (jusqu'à 32 dans la famille). Lors de l'accès à la mémoire de programme externe, tous les microcontrôleurs 8051 utilisent toujours une adresse de 16 bits, ce qui leur donne accès à 64 Ko de ROM. Le microcontrôleur accède à la mémoire du programme lors de la lecture des opcodes et des opérandes (à l'aide du compteur de programme du PC) et lors de l'exécution de commandes pour copier un octet de la mémoire du programme vers l'accumulateur. Lors de l'exécution de commandes de copie de données, l'adressage de la cellule de mémoire du programme à partir de laquelle les données seront lues peut être effectué à l'aide à la fois du compteur PC et d'un registre de pointeur de données spécial à deux octets DPTR.

Mémoire de données (RAM)

Le volume de mémoire de données située sur la puce est de 128 octets. La capacité de la mémoire de données externe peut atteindre 64 Ko. Les 32 premiers octets sont organisés en quatre banques de registres à usage général, respectivement désignées banque 0 à banque 3. Chaque banque se compose de huit registres R0 à R7. A tout moment, le programme n'a accès, avec adressage des registres, qu'à une seule banque de registres dont le numéro est contenu dans les troisième et quatrième bits du mot d'état du programme PSW.

Adresses de la zone de bits de la mémoire du microcontrôleur 8051

Tableau 1.1

Adresse d'octet (Hex) Adresses de bits par chiffre
J7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

L'espace d'adressage restant peut être configuré par le développeur à sa discrétion : il peut accueillir les zones de pile, de système et de données utilisateur. Les cellules de mémoire de données sont accessibles de deux manières. La première méthode est l'adressage direct d'une cellule mémoire. Dans ce cas, l'adresse de la cellule est l'opérande de l'instruction correspondante. La deuxième méthode est l'adressage indirect à l'aide des registres pointeurs R0 ou R1 : avant d'exécuter la commande correspondante, il faut saisir l'adresse de la cellule à accéder dans l'un d'eux.

Pour accéder à la mémoire de données externe, seul l'adressage indirect est utilisé à l'aide des registres R0 et R1 ou à l'aide du registre pointeur DPTR 16 bits.

Une partie de la mémoire de données est une zone de bits dans laquelle il est possible d'adresser chaque chiffre des cellules mémoire à l'aide d'instructions binaires spéciales. L'adresse des bits directement adressables peut également être écrite sous la forme (ByteAddress).(Bit). La correspondance de ces deux méthodes d'adressage peut être déterminée à partir du tableau. 1.1.