Am studiat microcontrolerul 8032
. Se menționează că 8032
nu are ROM internă. Acum sunt câteva întrebări pe care le am
-
Avem nevoie de un ROM extern pentru a executați programe în mod necesar? Nu putem folosi RAM internă de 256 de octeți?
-
Să presupunem că folosesc microcontrolerul 8032 cu un ROM extern
2732
și, de asemenea, folosind un zăvor pentru stocarea adresei (ordinea inferioară) a portului P0. (care poate transfera adresa / datele). Acum, după activarea EA și conectarea PSEN cum execută programul 8032? Ce se întâmplă dacă pornesc sistemul? (Cum execută contorizarea programului microcontrolerul 8032? De la ce adresă de memorie externă ar trebui citit programul?
Am citiți aceste manuale- Intel 8032H Keil , Atmel 80C32E .
Răspuns
Dacă vă uitați la un circuit tipic 80 (C) 32 de mai jos (de la aici ):
Puteți vedea că 8032 vorbește cu EPROM, RAM și EEPROM externe printr-un autobuz – date de 8 biți și adresă de 16 biți. Acesta din urmă este blocat și astfel demultiplexat cu HCT573. Au existat câteva cipuri cu zăvor încorporat concepute pentru a fi utilizate cu 8031/8032, dar cele de mai sus au fost configurația mai comună -cost cipuri de memorie standard. Există, de asemenea, un pic de ” lipici ” logică pentru decodarea adreselor și a genurilor Te semnalele adecvate pentru amintiri (HCT138 și quad NAND).
Este vital ca logica lipiciului să fie concepută astfel încât EPROM să se afle la adresa 0, deoarece după o resetare, execuția începe întotdeauna de la 8032 preluând primul octet al instrucțiunii de la adresa respectivă. Aceasta este o funcție a hardware-ului din 8032 și nu poate fi modificată. De obicei, instrucțiunea este o instrucțiune LJMP de 3 octeți care sare la începutul programului. O numim ” RESET VECTOR „. Alți vectori ocupă octeții imediat deasupra vectorului de resetare – pentru rutina de întrerupere externă și rutina de întrerupere a temporizatorului.
În acele zile, EPROM ar fi programată (scrisă) de către un programator separat în afara circuit și apoi de obicei conectat la o priză. Fără programare în circuit în acele zile. RAM și EEPROM ar putea fi scrise de micro, dar programul ar trebui încărcat în EPROM înainte ca oricare dintre acestea să fie posibil.
Comentarii
Răspuns
Nu, nu puteți utiliza memoria RAM internă pentru a păstra codul. 8051/8032 folosește o arhitectură Harvard, ceea ce înseamnă că are o separare completă spații de memorie pentru cod și date. Instrucțiunile sunt preluate din spațiul de cod, dar memoria RAM se află în spațiul de date.
Acum, după activarea EA și conectarea PSEN cum 8032 execută programul?
8032 preia instrucțiuni din spațiul de cod. Deoarece EA este afirmată, aceste preluări (citiri de memorie) apar pe magistrala de memorie externă , cu PSEN
afirmat. Când PSEN
NU este afirmat asupra unei operații de citire a memoriei externe, este o citire a spațiului de date.
Ce se întâmplă dacă pornesc sistemul?
8032 începe să preia instrucțiunile de la spațiul de cod la adresa 0.
Cum execută introducerile contorul de programe al microcontrolerului 8032?
programul contor este pur și simplu responsabil pentru păstrarea adresei următoarei instrucțiuni care urmează a fi executată. Alte părți ale procesorului execută instrucțiunile.
De la ce adresă de memorie externă ar trebui citit programul?
Adresa 0.
Dacă doriți să utilizați întreruperi în programul dvs., există alte adrese în memorie cu spațiu de cod redus care sunt rezervate pentru acestea, deci codul pe care îl executarea la resetare va trebui în cele din urmă să „sară în jurul” acelor adrese rezervate.
Comentarii
- Acesta este răspunsul la prima întrebare. Voi face +1. Ați putea, vă rog, să detaliați a doua parte a întrebării? Partea respectivă nu o pot ‘ obține niciun indiciu.
- Consultați editarea de mai sus.
Răspuns
8032, care este o variantă a 8052, nu are ROM intern pentru stocarea programului. În schimb, un ROM / EPROM / EEPROM extern trebuie utilizat pentru a ține programul.
Două porturi sunt folosite pentru a accesa memoria externă: Portul 0 (liniile P0.0-P0.7) emite cel mai mic 8 biți ai unei adrese de 16 biți 64K și servesc și ca magistrală de date de citire / scriere pe 8 biți după ce adresa a fost blocată de memoria externă.
P2 (liniile P2.0-P2.7 ) sunt utilizate pentru a emite 8 biți mari ai adresei de 16 biți 64K.
Deși 8032 are 256 de octeți de RAM internă, aceasta poate fi extinsă adăugând și un cip RAM pe magistrala de adrese externe .
Linia de adresă externă \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ este menținută la un nivel scăzut pentru a indica dacă se face acces la memoria externă a programului, altfel extern Se presupune că RAM.
Pentru a executa cod din memoria externă, adresa de pe contorul de program este transmisă pe liniile de date Port 0 și Port 2; apoi în timpul ciclului de citire, octeții preluați din ROM-ul citit în portul 0 și executați de procesor.
O singură instrucțiune este preluată odată.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ este un stroboscop folosit în timpul accesului la memoria externă a programului.
Comentarii
- .: Dar cum execută programul care se află în memoria externă? Uite, nu înțeleg cum va rezolva computerul atunci când programul se află în memoria externă. Adică, la fiecare ciclu m / c, acesta obține un număr de octeți. Apoi, după preluare, programul este executat imediat sau întregul program este preluat simultan > dacă acesta este cazul în care va fi stocat?
- .: Deci inițial
PC=0000h
. Începe să preia octeți la fiecare ciclu m / c și apoi îl execută? Deci, în ROM întotdeauna ar trebui să ardem programul de la adresa0000h
altfel nu am putea să-l executăm corect. - @learner. Corect. De obicei, va exista un salt la adresa către ” real ” începutul codului.
- .: I va da +1 la răspunsul dvs. Dar dacă programul este executat instrucțiune prin instrucțiune, cum va fi gestionată o referință în acest fel?
L1:JNZ L2 .. L2:....
. - Instrucțiunea JNZ (și alte instrucțiuni Jump and Branch) încarcă adresa de destinație a Jump în contorul programului, astfel încât procesorul va prelua următoarea instrucțiune de la adresa respectivă, mai degrabă decât instrucțiunea imediat după Salt.
glue logic
. Se pare căLJMP
va trece la începutul programului? Dar aici programul se află în memoria externă. Aici se folosește acest tip de instrucțiuni? Adică simple, instrucțiunile sunt preluate din memoria externă și plasate înIR
, decodate și executate? Unde este cazulLJMP
aici?