Jeg har studert 8032
mikrokontroller. Det er nevnt at 8032
ikke har intern ROM. Nå er det få spørsmål jeg har
-
Trenger vi en ekstern ROM for å kjøre programmer nødvendigvis? Kan vi ikke bruke 256 byte internt RAM?
-
Anta at jeg bruker 8032-mikrokontrolleren med en ekstern ROM
2732
og også ved hjelp av en sperre for å lagre adressen (lavere orden) til port P0. (som kan overføre adresse / data). Nå etter at du har aktivert EA og koblet PSEN hvordan utfører 8032 programmet? Hva skjer hvis jeg slår på systemet? (Hvordan utfører programtelleren til 8032 mikrokontroller inngrep? Fra hvilken adresse til eksternt minne programmet skal leses?
Jeg har les disse håndbøkene- Intel 8032H Keil , Atmel 80C32E .
Svar
Hvis du ser på en typisk 80 (C) 32-krets nedenfor (fra her ):
Du kan se at 8032 snakker med ekstern EPROM, RAM og EEPROM via en buss – 8 bit data og 16 bit adresse. Sistnevnte er låst og dermed demultipleksert med HCT573. Det var noen sjetonger med låsen innebygd designet for å brukes med 8031/8032, men ovennevnte var den vanligste konfigurasjonen – ved bruk av lav -kostnad standard minnebrikker. Det er også litt av » lim » logikk for å dekode adressene og til slekter te de riktige signalene for minnene (HCT138 og quad NAND).
Det er viktig at limlogikken er utformet slik at EPROM ligger på adresse 0 fordi etter en tilbakestilling begynner utførelsen alltid av 8032 henter den første byten av instruksjonen fra den adressen. Dette er en funksjon av maskinvare i 8032 og kan ikke endres. Instruksjonen er vanligvis en 3-byte LJMP-instruksjon som hopper til begynnelsen av programmet. Vi kaller det » RESET VECTOR «. Andre vektorer okkuperer byte rett over tilbakestillingsvektoren – for den eksterne avbruddsrutiner og timeravbruddsrutiner.
I disse dager ville EPROM være programmert (skrevet til) av en separat programmerer utenfor og deretter vanligvis koblet til en stikkontakt. Ingen kretsprogrammering i disse dager. RAM og EEPROM kan skrives av mikroen, men programmet må lastes inn i EPROM før noe av det var mulig.
Kommentarer
Svar
Nei, du kan ikke bruke den interne RAM-en til å holde koden. 8051/8032 bruker en Harvard-arkitektur, noe som betyr at den har helt separat minneplasser for kode og data. Instruksjoner hentes fra kodeplass, men RAM-en ligger i datarommet.
Nå etter aktivering av EA og tilkobling av PSEN hvordan utfører 8032 programmet?
8032 henter instruksjoner fra kodeplass. Siden EA er hevdet, vises disse hentingene (minnet leser) på den eksterne minnebussen , med PSEN
hevdet. Når PSEN
er IKKE hevdet på en ekstern minneleseoperasjon, det er en data-space-lesing.
Hva skjer hvis jeg slår på systemet?
8032 begynner å hente instruksjoner fra koderom adresse 0.
Hvordan utfører programtelleren til 8032 mikrokontroller inntrengninger?
The programtelleren er ganske enkelt ansvarlig for å holde adressen til neste instruksjon som skal utføres. Andre deler av CPU-en utfører instruksjonene.
Fra hvilken adresse til eksternt minne programmet skal leses?
Adresse 0.
Hvis du vil bruke avbrudd i programmet ditt, er det andre adresser i minne med lite kodeplass som er reservert for dem, så koden du utføre ved tilbakestilling vil til slutt måtte «hoppe rundt» de reserverte adressene.
Kommentarer
- Dette er svaret på det første spørsmålet. Jeg vil gi +1 til det. Kan du utdype den andre delen av spørsmålet? Den delen kan jeg ‘ ikke få noe ledetråd.
- Se redigeringen ovenfor.
Svar
8032, som er en variant av 8052, har ingen intern ROM for programlagring. I stedet må en ekstern ROM / EPROM / EEPROM brukes for å holde programmet.
To porter brukes til å få tilgang til eksternt minne: Port 0 (linjer P0.0-P0.7) sender ut den lave 8 biter av en 16-biters 64K-adresse, og tjener også som lese / skriv 8-bits databuss etter at adressen er blitt låst av det eksterne minnet.
P2 (linjer P2.0-P2.7 ) brukes til å sende ut de høye 8-bitene til 16-biters 64K-adressen.
Selv om 8032 har 256 byte internt RAM, kan dette utvides ved å legge til en RAM-brikke på den eksterne adressebussen også .
Den eksterne adresselinjen \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ holdes lavt for å indikere om det blir gjort tilgang til eksternt programminne, ellers eksternt RAM antas.
For å utføre kode ut av eksternt minne, blir adressen fra programtelleren sendt ut på datalinjene Port 0 og Port 2; deretter under lesesyklusen hentes byte (r) fra ROM-en som er lest inn i port 0 og utført av prosessoren.
Bare en instruksjon blir hentet om gangen.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ er en strobe som brukes under eksternt programminnetilgang.
Kommentarer
- .: Men hvordan utfører det program som ligger i eksternt minne? Jeg ser ikke hvordan PC-en vil klare seg når programmet er i eksternt minne. Jeg mener at ved hver m / c-syklus henter det noe antall byte. Så etter henting er det programmet som kjøres umiddelbart eller hele programmet hentes samtidig > hvis det er tilfelle hvor vil det bli lagret?
- .: Så i utgangspunktet
PC=0000h
. Det begynner å hente byte ved hver m / c-syklus og kjører den deretter? Så i ROM-en bør vi alltid brenne programmet fra adressen0000h
ellers kunne vi ikke utføre det riktig. - @learner. Riktig. Vanligvis vil det være et hopp på adressen til » ekte » starten på koden.
- .: I vil gi svaret ditt +1. Men hvis programmet blir utført instruksjon etter instruksjon, hvordan vil videre referanse som dette bli administrert?
L1:JNZ L2 .. L2:....
. - JNZ-instruksjonen (og andre instruksjoner for hopp og gren) laster destinasjonsadressen til hoppet inn i programtelleren, slik at prosessoren henter neste instruksjon fra den adressen, i stedet for instruksjonen umiddelbart etter hoppet.
glue logic
-delen. Det ser ut til atLJMP
vil flytte til begynnelsen av programmet? Men her er programmet i eksternt minne. Her er denne typen instruksjoner brukt? Jeg mener enkle instruksjonene blir hentet fra eksternt minne og plassert iIR
, dekodet og utført? Hvor er tilfellet medLJMP
her?