Jeg har studeret 8032
mikrokontroller. Det nævnes, at 8032
ikke har intern ROM. Nu er der få spørgsmål, jeg har
-
Har vi brug for en ekstern ROM til udføre programmer nødvendigvis? Kan vi ikke bruge 256 byte internt RAM?
-
Antag, at jeg bruger 8032-mikrocontrolleren med en ekstern ROM
2732
og også ved hjælp af en lås til lagring af adresse (lavere rækkefølge) på port P0. (som kan overføre adresse / data). Efter aktivering af EA og tilslutning af PSEN hvordan udfører 8032 programmet? Hvad sker der, hvis jeg tænder systemet? (Hvordan udfører programtælleren på 8032 mikrokontroller intruktioner? Fra hvilken adresse på den eksterne hukommelse programmet skal læses?
Jeg har læs disse manualer- Intel 8032H Keil , Atmel 80C32E .
Svar
Hvis du ser på et typisk 80 (C) 32 kredsløb nedenfor (fra her ):
Du kan se, at 8032 taler til ekstern EPROM, RAM og EEPROM via en bus – 8 bit data og 16 bit adresse.Den sidstnævnte er låst og dermed demultiplexet med HCT573. Der var nogle chips med låsen indbygget designet til at blive brugt med 8031/8032 men ovenstående var den mere almindelige konfiguration – ved hjælp af lav -omkostninger standardhukommelseschips. Der er også en smule ” lim ” logik til at afkode adresserne og til slægter de korrekte signaler til hukommelserne (HCT138 og quad NAND).
Det er vigtigt, at limlogikken er designet således, at EPROM ligger på adresse 0, efter at en nulstilling starter udførelse altid af 8032 henter den første byte af instruktionen fra den adresse. Dette er en funktion af hardware i 8032 og kan ikke ændres. Instruktionen er typisk en 3-byte LJMP-instruktion, der springer til starten af programmet. Vi kalder det ” RESET VECTOR “. Andre vektorer besætter bytes umiddelbart over reset-vektoren – for den eksterne afbrydelsesrutine og timer-afbrydelsesrutinen.
I disse dage ville EPROM blive programmeret (skrevet til) af en separat programmør uden for kredsløb og derefter typisk sat i en stikkontakt. Ingen programmering i kredsløb i disse dage. RAM og EEPROM kunne skrives af mikro, men programmet skulle indlæses i EPROM, før noget af det var muligt.
Kommentarer
Svar
Nej, du kan ikke bruge det interne RAM til at holde kode. 8051/8032 bruger en Harvard-arkitektur, hvilket betyder, at den har helt separat hukommelsespladser til kode og data. Instruktioner hentes fra kodeområdet, men RAMen ligger i datarummet.
Nu efter aktivering af EA og tilslutning af PSEN hvordan udfører 8032 programmet?
8032 henter instruktioner fra kodeområdet. Da EA er hævdet, vises disse hentninger (hukommelseslæser) på den eksterne hukommelsesbus , med PSEN
hævdede. Når PSEN
er IKKE påstået ved en ekstern hukommelseslæsning, det er en data-space-læsning.
Hvad sker der, hvis jeg tænder systemet?
8032 begynder at hente instruktioner fra kodeområde adresse 0.
Hvordan udfører programtælleren til 8032 mikrocontroller intruktioner?
programtælleren er simpelthen ansvarlig for at holde adressen på den næste instruktion, der skal udføres. Andre dele af CPUen udfører instruktionerne.
Fra hvilken adresse på den eksterne hukommelse programmet skal læses?
Adresse 0.
Hvis du vil bruge afbrydelser i dit program, er der andre adresser i hukommelsen med lavt kodeområde, der er reserveret til dem, så den kode, du udfør ved nulstilling bliver i sidste ende nødt til at “hoppe rundt” om de reserverede adresser.
Kommentarer
- Dette er svaret på det første spørgsmål. Jeg vil give +1 til det. Kan du venligst uddybe den anden del af spørgsmålet? Den del kan jeg ‘ ikke få noget fingerpeg om.
- Se redigering ovenfor.
Svar
8032, som er en variant af 8052, har ingen intern ROM til programlagring. I stedet skal en ekstern ROM / EPROM / EEPROM bruges til at holde programmet.
To porte bruges til at få adgang til ekstern hukommelse: Port 0 (linjer P0.0-P0.7) udsender den lave 8 bit af en 16-bit 64K-adresse og tjener også som læse / skrive 8-bit databus, efter at adressen er blevet låst af den eksterne hukommelse.
P2 (linjer P2.0-P2.7 ) bruges til at udsende de høje 8-bits i 16-bit 64K-adressen.
Selvom 8032 har 256 byte internt RAM, kan dette udvides ved at tilføje en RAM-chip på den eksterne adressebus også .
Den eksterne adresselinje \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ holdes lavt for at indikere, om der er adgang til ekstern programhukommelse, ellers ekstern RAM antages.
For at udføre kode ud af ekstern hukommelse udsendes adressen fra programtælleren på Port 0 og Port 2 datalinjerne; derefter, under læsecyklussen, hentede byte (r) fra ROMen ved læsning i Port 0 og udføres af processoren.
Der hentes kun en instruktion ad gangen.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ er en strobe, der bruges under den eksterne programhukommelsesadgang.
Kommentarer
- .: Men hvordan udfører det program, der ligger i ekstern hukommelse? Se, jeg forstår ikke, hvordan pcen klarer sig, når programmet er i ekstern hukommelse. Jeg mener, at ved hver m / c-cyklus henter det et antal byte. Så efter hentning er det, at programmet udføres med det samme, eller hele programmet hentes på én gang >, hvis det er tilfældet, hvor gemmes det?
- .: Så oprindeligt
PC=0000h
. Det begynder at hente bytes ved hver m / c-cyklus og udfører det derefter? Så i ROMen skal vi altid brænde programmet fra adresse0000h
ellers kunne vi ikke udføre det korrekt. - @learner. Korrekt. Normalt vil der være et spring ved adresse til ” reelle ” starten på koden.
- .: I vil give dit svar +1. Men hvis programmet udføres instruktioner ved instruktioner, hvordan vil fremadrettet reference som dette blive styret?
L1:JNZ L2 .. L2:....
. - JNZ-instruktionen (og andre instruktioner om spring og gren) indlæser destinationsadressen for springet i programtælleren, så processoren henter den næste instruktion fra den adresse snarere end instruktionen umiddelbart efter springet.
glue logic
-delen. Det ser ud til, atLJMP
vil flytte til starten af programmet? Men her er programmet i ekstern hukommelse. Her er denne form for instruktion brugt? Jeg mener enkle instruktioner hentes fra ekstern hukommelse og placeres iIR
, afkodes og udføres? Hvor er tilfældet medLJMP
her?