Hvordan utfører 8032 program?

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 ):

skriv inn bildebeskrivelse 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

  • .: Jeg vil gi +1 til det. Kan du utdype glue logic -delen. Det ser ut til at LJMP 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 i IR, dekodet og utført? Hvor er tilfellet med LJMP her?
  • Limlogikken sørger bare for at den ‘ er EPROM som ‘ er valgt når adressen er 0000. I konfigurasjonen ovenfor, når A15 = 0, blir EPROM valgt. LJMP er en 3-byte-instruksjon som tar en adresse hvor som helst i 80-biters minne i 8031, men vanligvis kan du bare hoppe over de andre vektorene, så de følgende to bytene etter LJMP vil inneholde en adresse nær starten av EPROM. Du slipper ‘ vanligvis ikke med adresser direkte – du bruker en samler som holder styr på dem via symbolske etiketter.
  • » Limlogikk » er et slanguttrykk som brukes til å referere til de mindre logiske funksjonene som kreves mellom prosessoren og minnene.

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 adressen 0000h 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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *