Jag har studerat 8032
mikrokontroller. Det nämns att 8032
inte har intern ROM. Nu är det få frågor jag har
-
Behöver vi en extern ROM för att exekvera program nödvändigtvis? Kan vi inte använda 256 byte internt RAM?
-
Antag att jag använder 8032 mikrokontroller med en extern ROM
2732
och även använda en spärr för att lagra adressen (lägre ordning) för port P0. (som kan överföra adress / data). Efter att ha aktiverat EA och anslutit PSEN hur kör 8032 programmet? Vad händer om jag slår på systemet? (Hur kör programräknaren på 8032 mikrokontroller intrång? Från vilken adress till externt minne programmet ska läsas?
Jag har läs dessa bruksanvisningar- Intel 8032H Keil , Atmel 80C32E .
Svar
Om du tittar på en typisk 80 (C) 32-krets nedan (från här ):
Du kan se att 8032 pratar med extern EPROM, RAM och EEPROM via en buss – 8-bitars data och 16-bitars adress. Den senare är spärrad och därmed demultiplexad med HCT573. Det fanns några marker med spärren inbyggd designad för att användas med 8031/8032 men ovan var den vanligaste konfigurationen – med låg -kostnad standardminneschips. Det finns också en del av ” lim ” logik för att avkoda adresserna och släktena de rätta signalerna för minnena (HCT138 och fyrhjulet NAND).
Det är viktigt att limlogiken är utformad så att EPROM finns vid adress 0 för efter en återställning börjar körningen alltid av 8032 hämtar den första byten av instruktionen från den adressen. Detta är en funktion av hårdvara i 8032 och kan inte ändras. Instruktionen är vanligtvis en 3-byte LJMP-instruktion som hoppar till början av programmet. Vi kallar det för ” RESET VECTOR ”. Andra vektorer upptar byten omedelbart ovanför återställningsvektorn – för den externa avbrottsrutinen och timeravbrottstjänstrutinen.
Under dessa dagar skulle EPROM programmeras (skrivas till) av en separat programmerare utanför och sedan vanligtvis ansluten till ett uttag. Ingen kretsprogrammering på den tiden. RAM och EEPROM kan skrivas av mikro, men programmet måste laddas in i EPROM innan något av detta är möjligt.
Kommentarer
Svar
Nej, du kan inte använda det interna RAM-minnet för att hålla koden. 8051/8032 använder en Harvard-arkitektur, vilket innebär att den har helt separat minnesutrymmen för kod och data. Instruktioner hämtas från kodutrymme, men RAM-minnet finns i datautrymme.
Nu efter att ha aktiverat EA och anslutit PSEN hur kör 8032 programmet?
8032 hämtar instruktioner från kodutrymme. Eftersom EA påstås visas dessa hämtningar (minnesläsningar) på den externa minnesbussen , med PSEN
påstått. När PSEN
påstås INTE vid en extern minnesläsning, det är en data-space-läsning.
Vad händer om jag slår på systemet?
8032 börjar hämta instruktioner från kodutrymme adress 0.
Hur utför programräknaren för 8032 mikrokontroller intrång?
programräknaren är helt enkelt ansvarig för att hålla adressen till nästa instruktion som ska utföras. Andra delar av CPU: n utför instruktionerna.
Från vilken adress till externt minne ska programmet läsas?
Adress 0.
Om du vill använda avbrott i ditt program, finns det andra adresser i minne med lågt kodutrymme som är reserverade för dem, så koden som du exekvera vid återställning måste så småningom ”hoppa runt” de reserverade adresserna.
Kommentarer
- Detta är svaret på den första frågan. Jag kommer att +1. Kan du snälla beskriva den andra delen av frågan? Den delen kan jag ’ inte få någon ledtråd.
- Se redigering ovan.
Svar
8032, som är en variant av 8052, har ingen intern ROM för programlagring. Istället måste en extern ROM / EPROM / EEPROM användas för att hålla programmet.
Två portar används för att komma åt externt minne: Port 0 (rader P0.0-P0.7) avger den låga 8 bitar av en 16-bitars 64K-adress, och fungerar även som läs / skriv 8-bitars databuss efter att adressen har spärrats av det externa minnet.
P2 (rader P2.0-P2.7 ) används för att avge de höga 8-bitarna i 16-bitars 64K-adressen.
Även om 8032 har 256 byte internt RAM-minne kan detta utökas genom att lägga till ett RAM-chip på den externa adressbussen också .
Den externa adressraden \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ hålls lågt för att indikera om åtkomst görs till externt programminne, annars externt RAM antas.
För att köra kod från externt minne matas adressen från programräknaren ut på datalinjerna Port 0 och Port 2; sedan under läscykeln hämtas byten (erna) från ROM: n vid avläsning i port 0 och exekveras av processorn.
Endast en instruktion hämtas åt gången.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ är en strobe som används vid åtkomst till externt programminne.
Kommentarer
- .: Men hur kör det program som finns i externt minne? Titta, jag förstår inte hur datorn klarar när programmet finns i externt minne. Jag menar vid varje m / c-cykel, det hämtar ett antal byte. Efter att det hämtats körs programmet omedelbart eller hela programmet hämtas samtidigt > om så är fallet där kommer det att sparas?
- .: Så initialt
PC=0000h
. Det börjar hämta byte vid varje m / c-cykel och kör sedan det? Så i ROM bör vi alltid bränna programmet från adressen0000h
annars skulle vi inte kunna köra det korrekt. - @learner. Korrekt. Vanligtvis kommer adressen att hoppa till ” verklig ” början på koden.
- .: I kommer +1 ditt svar. Men om programmet körs instruktioner efter instruktioner, hur kommer framåt referens som detta att hanteras?
L1:JNZ L2 .. L2:....
. - JNZ-instruktionen (och andra instruktioner för hopp och gren) laddar måladressen för hoppet i programräknaren, så att processorn hämtar nästa instruktion från den adressen snarare än instruktionen direkt efter hoppet.
glue logic
-delen. Det verkar som attLJMP
kommer att flytta till början av programmet? Men här finns programmet i externt minne. Här används den här instruktionen? Jag menar att enkla instruktioner hämtas från externt minne och placeras iIR
, avkodas och körs? Var är fallet medLJMP
här?