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 ):
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
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 ladresse0000h
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.
glue logic
. Il semble queLJMP
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 leIR
, décodées et exécutées? Où est le cas deLJMP
ici?