Ik heb de 8032
microcontroller bestudeerd. Er wordt vermeld dat 8032
geen interne ROM heeft. Nu zijn er enkele vragen die ik heb
-
Hebben we een externe ROM nodig om programmas per se uitvoeren? Kunnen we “niet de 256 byte interne RAM gebruiken?
-
Stel dat ik de 8032-microcontroller met een externe ROM gebruik
2732
en ook met behulp van een latch voor het opslaan van het adres (lagere volgorde) van poort P0. (die adres / gegevens kan overdragen). Nu na het inschakelen van EA en het verbinden van de PSEN hoe voert 8032 het programma uit? Wat gebeurt er als ik het systeem aanzet? (Hoe voert de programmateller van de 8032 microcontroller instructies uit? Van welk adres van het externe geheugen moet het programma worden gelezen?
Ik heb lees deze handleidingen- Intel 8032H Keil , Atmel 80C32E .
Antwoord
Als je kijkt naar een typisch 80 (C) 32-circuit hieronder (van hier ):
Je kunt zien dat de 8032 met externe EPROM, RAM en EEPROM communiceert via een bus – 8 bit data en 16 bit adres. De laatste is vergrendeld en dus gedemultiplexed met de HCT573. Er waren enkele chips met de vergrendeling ingebouwd, ontworpen om te worden gebruikt met de 8031/8032, maar het bovenstaande was de meest voorkomende configuratie – met lage -kost standaard geheugenchips. Er is ook een beetje ” lijm ” logica om de adressen te decoderen en naar genera de juiste signalen voor de geheugens (de HCT138 en de quad NAND).
Het is van vitaal belang dat de lijmlogica zo is ontworpen dat de EPROM zich op adres 0 bevindt, want na een reset begint de uitvoering altijd met de 8032 het ophalen van de eerste byte van de instructie van dat adres. Dit is een functie van hardware in de 8032 en kan niet worden gewijzigd. Meestal is de instructie een 3-byte LJMP-instructie die naar het begin van het programma springt. We noemen dat de ” RESET VECTOR “. Andere vectoren bezetten de bytes direct boven de reset-vector voor de externe interruptserviceroutine en de timerinterruptserviceroutine.
In die dagen zou de EPROM worden geprogrammeerd (geschreven) door een afzonderlijke programmeur buiten de circuit en dan typisch aangesloten op een stopcontact. Geen in-circuit programmering in die tijd. De RAM en EEPROM kunnen worden geschreven door de micro, maar het programma moet in de EPROM worden geladen voordat dat mogelijk is.
Opmerkingen
Answer
Nee, je kunt het interne RAM niet gebruiken om code vast te houden. De 8051/8032 gebruikt een Harvard-architectuur, wat betekent dat het volledig gescheiden geheugenruimte voor code en gegevens. Instructies worden opgehaald uit de coderuimte, maar het RAM-geheugen bevindt zich in de gegevensruimte.
Na het inschakelen van EA en het aansluiten van de PSEN, hoe voert 8032 het programma uit?
De 8032 haalt instructies op uit de coderuimte. Aangezien EA wordt bevestigd, verschijnen deze ophaalacties (geheugenuitlezingen) op de externe geheugenbus , met PSEN
bevestigd. Wanneer PSEN
wordt NIET beweerd bij het lezen van een extern geheugen, het is een gelezen gegevensruimte.
Wat gebeurt er als ik het systeem aanzet?
De 8032 begint instructies op te halen uit coderuimte adres 0.
Hoe voert de programma-teller van 8032 microcontroller instructies uit?
De programmateller is eenvoudigweg verantwoordelijk voor het vasthouden van het adres van de volgende uit te voeren instructie. Andere delen van de CPU voeren de instructies uit.
Van welk adres van het externe geheugen moet het programma worden gelezen?
Adres 0.
Als u interrupts in uw programma wilt gebruiken, zijn er andere adressen in geheugen met weinig coderuimte die voor hen zijn gereserveerd, dus de code die u uitvoeren op reset zal uiteindelijk “rondspringen” in die gereserveerde adressen.
Reacties
- Dit is het antwoord op de eerste vraag. Ik zal het een +1 geven. Kunt u het tweede deel van de vraag toelichten? Dat deel kan ik ‘ geen idee krijgen.
- Zie bewerken hierboven.
Antwoord
De 8032, een variant van de 8052, heeft geen intern ROM voor programmaopslag. In plaats daarvan moet een externe ROM / EPROM / EEPROM worden gebruikt om het programma vast te houden.
Twee poorten worden gebruikt om toegang te krijgen tot extern geheugen: Poort 0 (regels P0.0-P0.7) zenden de lage 8 bits van een 16-bits 64K-adres, en dienen ook als de 8-bits databus voor lezen / schrijven nadat het adres is vergrendeld door het externe geheugen.
P2 (regels P2.0-P2.7 ) worden gebruikt om de hoge 8-bits van het 16-bits 64K-adres uit te zenden.
Hoewel de 8032 256 bytes intern RAM heeft, kan dit worden uitgebreid door een RAM-chip toe te voegen aan de externe adresbus .
De externe adresregel \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ wordt laag gehouden om aan te geven of er toegang wordt verkregen tot extern programmageheugen, anders extern RAM wordt verondersteld.
Om code uit het externe geheugen uit te voeren, wordt het adres van de programmateller uitgevoerd op de datalijnen van poort 0 en poort 2; vervolgens worden tijdens de leescyclus de byte (n) opgehaald uit het ROM bij het lezen in poort 0 en uitgevoerd door de processor.
Er wordt slechts één instructie tegelijk opgehaald.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ is een stroboscoop die wordt gebruikt tijdens de geheugentoegang van het externe programma.
Opmerkingen
- .: Maar hoe voert het programma uit dat zich in het externe geheugen bevindt? Kijk, ik snap niet hoe de pc het zal doen als het programma zich in het externe geheugen bevindt. Ik bedoel, bij elke m / c-cyclus haalt het een aantal bytes op. Na het ophalen wordt het programma onmiddellijk uitgevoerd of wordt het hele programma in één keer opgehaald > als dat het geval is, waar wordt het opgeslagen?
- .: Dus in eerste instantie
PC=0000h
. Het begint bytes op te halen bij elke m / c-cyclus en voert het vervolgens uit? Dus in de ROM moeten we het programma altijd vanaf adres0000h
branden, anders zouden we het niet correct kunnen uitvoeren. - @learner. Correct. Gewoonlijk zal er bij het adres een sprong zijn naar het ” echte ” begin van de code.
- .: I zal je antwoord een +1 geven. Maar als het programma instructie voor instructie wordt uitgevoerd, hoe zal het doorsturen van dergelijke referentie dan worden beheerd?
L1:JNZ L2 .. L2:....
. - De JNZ-instructie (en andere Jump en Branch-instructies) laadt het bestemmingsadres van de Jump in de programmateller, zodat de processor de volgende instructie van dat adres, in plaats van de instructie direct na de Jump.
glue logic
gedeelte nader toelichten. Het lijkt erop datLJMP
naar het begin van het programma gaat? Maar hier staat het programma in het externe geheugen. Hier wordt dit soort instructie gebruikt? Ik bedoel eenvoudig: de instructies worden opgehaald uit het externe geheugen en in deIR
geplaatst, gedecodeerd en uitgevoerd? Waar is het geval vanLJMP
hier?