Comment 8032 exécute-t-il le programme?

Jai étudié le microcontrôleur 8032. Il est mentionné que 8032 na pas de ROM interne. Maintenant, jai quelques questions

  • Avons-nous besoin dune ROM externe pour Exécuter nécessairement des programmes? Ne pouvons-nous pas utiliser la RAM interne de 256 octets?

  • Supposons que jutilise le microcontrôleur 8032 avec une ROM externe 2732 et également en utilisant un verrou pour stocker ladresse (dordre inférieur) du port P0. (qui peut transférer ladresse / les données). Maintenant, après avoir activé EA et connecté le PSEN comment 8032 exécute le programme? Que se passe-t-il si jallume le système? (Comment le compteur de programmes du microcontrôleur 8032 exécute-t-il les instructions? À partir de quelle adresse de mémoire externe le programme doit être lu?

Jai lisez ces manuels – Intel 8032H Keil , Atmel 80C32E .

Réponse

Si vous regardez un circuit 80 (C) 32 typique ci-dessous (à partir de ici ):

entrez la description de limage ici

Vous pouvez voir que le 8032 communique avec les EPROM, RAM et EEPROM externes via un bus – données 8 bits et adresse 16 bits. Cette dernière est verrouillée et donc démultiplexée avec le HCT573. Il y avait des puces avec le verrou intégré conçu pour être utilisé avec le 8031/8032 mais la configuration ci-dessus était la plus courante – en utilisant low -coût des puces mémoire standard. Il y a aussi un peu de logique  » glue  » pour décoder les adresses et les genres les signaux appropriés pour les mémoires (le HCT138 et le quad NAND).

Il est essentiel que la logique de collage soit conçue de telle sorte que lEPROM réside à ladresse 0 car après une réinitialisation, lexécution commence toujours par le 8032 récupérant le premier octet de linstruction à partir de cette adresse. Ceci est une fonction du matériel du 8032 et ne peut pas être modifié. En général, linstruction est une instruction LJMP de 3 octets qui saute au début du programme. Nous appelons cela le  » RESET VECTOR « . Dautres vecteurs occupent les octets immédiatement au-dessus du vecteur de réinitialisation – pour la routine de service dinterruption externe et la routine de service dinterruption de minuterie.

À lépoque, lEPROM serait programmée (écrite dans) par un programmeur séparé en dehors du circuit puis généralement branché sur une prise. Pas de programmation en circuit à lépoque. La RAM et lEEPROM pourraient être écrites par le micro, mais le programme devrait être chargé dans lEPROM avant que cela ne soit possible.

Commentaires

  • : Je vais +1. Pouvez-vous sil vous plaît élaborer la partie glue logic. Il semble que LJMP se déplacera au début du programme? Mais ici, le programme est en mémoire externe. Voici ce type dinstruction utilisé? Je veux dire simple, les instructions sont extraites de la mémoire externe et placées dans le IR, décodées et exécutées? Où est le cas de LJMP ici?
  • La logique de collage garantit simplement que ‘ est lEPROM qui ‘ est sélectionné lorsque ladresse est 0000. Dans la configuration ci-dessus, chaque fois que A15 = 0, lEPROM est sélectionnée. LJMP est une instruction de 3 octets qui prend une adresse nimporte où dans lespace mémoire de 16 bits du 8031, mais généralement vous pouvez simplement sauter par-dessus les autres vecteurs, de sorte que les deux octets suivants après le LJMP contiendraient une adresse près du début du EPROM. En règle générale, vous ne ‘ vous embêtez pas directement avec les adresses – vous utilisez un assembleur qui en garde la trace via des étiquettes symboliques.
  •  » Glue logic  » est un terme dargot utilisé pour désigner les petites fonctions logiques nécessaires entre le processeur et les mémoires.

Réponse

Non, vous ne pouvez pas utiliser la RAM interne pour contenir le code. Le 8051/8032 utilise une architecture Harvard, ce qui signifie quil est complètement séparé espaces de mémoire pour le code et les données. Les instructions sont extraites de lespace de code, mais la RAM réside dans lespace de données.

Maintenant, après avoir activé EA et connecté le PSEN, comment 8032 exécute-t-il le programme?

Le 8032 récupère les instructions de lespace de code. Puisque EA est affirmé, ces extractions (lectures de mémoire) apparaissent sur le bus de mémoire externe , avec PSEN affirmé. Lorsque PSEN nest PAS affirmé lors dune opération de lecture de mémoire externe, cest une lecture despace de données.

Que se passe-t-il si jallume le système?

Le 8032 commence à récupérer les instructions de l espace de code adresse 0.

Comment le compteur de programme du microcontrôleur 8032 exécute-t-il des instructions?

Le Le compteur de programme est simplement chargé de conserver ladresse de la prochaine instruction à exécuter. Dautres parties du processeur exécutent les instructions.

À partir de quelle adresse de mémoire externe le programme doit être lu?

Adresse 0.

Si vous souhaitez utiliser des interruptions dans votre programme, il existe dautres adresses dans la mémoire à faible espace de code qui leur sont réservées, donc le code que vous exécuter lors de la réinitialisation devra éventuellement « contourner » ces adresses réservées.

Commentaires

  • Voici la réponse à la première question. Je vais attribuer +1. Pourriez-vous sil vous plaît élaborer sur la deuxième partie de la question? Cette partie, je ne peux ‘ obtenir aucun indice.
  • Voir la modification ci-dessus.

Réponse

Le 8032, qui est une variante du 8052, na pas de ROM interne pour le stockage des programmes. À la place, une ROM / EPROM / EEPROM externe doit être utilisée pour contenir le programme.

Deux ports sont utilisés pour accéder à la mémoire externe: Le port 0 (lignes P0.0-P0.7) émet le 8 faible bits dune adresse 16 bits 64K, et sert également de bus de données 8 bits lecture / écriture après que ladresse a été verrouillée par la mémoire externe.

P2 (lignes P2.0-P2.7 ) sont utilisés pour émettre les 8 bits de haut de ladresse 64K 16 bits.

Bien que le 8032 dispose de 256 octets de RAM interne, cela peut être étendu en ajoutant une puce de RAM sur le bus dadresse externe également .

La ligne dadresse externe \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ est maintenue basse pour indiquer si un accès est en cours à la mémoire externe du programme, sinon externe La RAM est supposée.

Pour exécuter du code à partir de la mémoire externe, ladresse du compteur de programme est sortie sur les lignes de données Port 0 et Port 2; puis pendant le cycle de lecture, le ou les octets récupérés de la ROM lors de la lecture dans le port 0 et exécutés par le processeur.

Une seule instruction est récupérée à la fois.

\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ est un stroboscope utilisé lors de laccès à la mémoire externe du programme.

Commentaires

  • : Mais comment exécute-t-il un programme qui réside dans la mémoire externe? Regardez, je ne comprends pas comment le PC va faire face lorsque le programme est dans la mémoire externe. Je veux dire à chaque cycle m / c, il récupère un certain nombre doctets. Ensuite, après lavoir récupéré, le programme est exécuté immédiatement ou tout le programme est récupéré en une fois > si tel est le cas où sera-t-il stocké?
  • .: Donc initialement PC=0000h. Il commence à chercher des octets à chaque cycle m / c puis lexécute? Donc, dans la ROM, nous devons toujours graver le programme à partir de ladresse 0000h sinon nous ne pourrions pas lexécuter correctement.
  • @learner. Correct. Habituellement, il y aura un saut à ladresse vers le  » real  » début du code.
  • .: I attribuera +1 à votre réponse. Mais si le programme est exécuté instruction par instruction, comment la référence en avant comme celle-ci sera-t-elle gérée? L1:JNZ L2 .. L2:.....
  • Linstruction JNZ (et dautres instructions Jump et Branch) charge ladresse de destination du Jump dans le compteur de programme, de sorte que le processeur récupère le suivant instruction de cette adresse, plutôt que linstruction immédiatement après le saut.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *