Sunteți pe pagina 1din 77

1

SISTEME CU MICROPROCESOARE

1 . Introducere

Aparatele i sistemele controlate cu microprocesor au aprut i
s-au perfecionat odat cu apariia pe pia a miroproesoarelor
(1970 -1980) dup care (n special dup 1985) s-au rspndit foarte
rapid, nlocuind aproape complet aparatele i sistemele de msur
i control numerice clasice (cu logic cablat), att n tehnica de
laborator ct i n instrumentaia industrial, mai ales n controlul
automat.

Clasificarea sistemelor cu microprocessor

n funcie de complexitatea sistemului din care face parte vom
avea:
- aparate de msur cu microprocesor utilizate ca instrumente
de laborator sau de teren;
- sisteme de msur cu microprocesor folosite n complexe de
msur i control n industrie.

1.1 Avantajele folosirii microprocesoarelor n sistemele de
msur i control

Includerea unui microprocesor ntr-un sistem de msur i
control d posibilitatea ca manevrele de operator s fie preluate
(parial sau total) de ctre microprocesor i n plus s se obin
cteva avantaje importante:
1. Preluarea comenzilor de operator cum ar fi reglaje de zero i
de cap de scar, selectarea gamelor asigurnd un plus de precizie i
siguran n exploatare.
2
2. Autocalibrarea i compensarea automat a influenei factorilor
de clim. De asemenea se calculeaz abaterile i se corecteaz
rezultatul final al msurrii.
3. mbuntirea preciziei prin eliminarea erorilor sistematice
(prin autocalibrare, autocorecie).
4. Micorarea numrului de componente ale sistemului prin
eliminarea componentelor destinate implementrii logicii cablate.
5. Creterea versatilitii aparatului prin obinerea unor
posibiliti suplimentare de msur pe baza programelor interne.
6. Creterea vitezei de lucru prin automatizarea operaiilor de
msurare.
7. Posibilitatea determinrii prin calcul a altor parametrii de
semnal (valoare de vrf, valoare medie, valoare efectiv, calculul
distorsiunilor, a spectrului de amplitudini, determinarea fazei,
defazajului).
8. Posibilitatea autotestrii prin programe speciale executate de
microprocesorul ncorporat, la comanda operatorului sau n cazul
apariiei unei anomalii in funcionare. n acest caz se poate
declana o procedur de testare i semnalizare a eventualelor
defecte.
Toate aceste avantaje arat clar c sistemele de msur i
control moderne nu pot exista fr a fi controlate de ctre
microprocesoare.

1.2 Microprocesoare : o privire general

n cele ce urmeaz ne vom referi la un microprocesor generic
(presupus de 8 bii) i vom ncepe cu precizarea unor termeni i
notaii utilizate n lucrrile din domeniul microprocesoarelor.

Definiii i terminologie
3

Sistemul de calcul este un echipament care transform datele de
intare n rezultate de ieire pe baza unui algoritm materializat ntr-
un program. Aceast definiie reprezint sensul clasic al noiunii
de calculator .
Sistemele inteligente sunt acele sisteme care pot prelucra
informaii incomplete definite sau aproape complet definite. Astfel
de sisteme sunt sistemele fuzzy sau reelele neuronale.
n cazul n care informaiile de prelucrat sunt complet definite
atunci avem de-a face cu algoritmi secveniali. Acest tip de
algoritmi a stat la baza construciei mainilor secveniale (Von
Newman).
Dac operaiile elementare independente se pot executa paralel (pe
mai multe uniti de calcul), avem de-a face cu algoritmi paraleli.
ncepnd cu anii 1970 au aprut tendine de automatizare a
proceselor de producie bazate iniial pe automate numerice cablate
(logic cablat) i apoi pe sisteme cu microprocesoare (logic
programat). De dat recent sunt sistemele bazate pe arhitecturi
paralele (sisteme multiprocesor , sisteme distribuite).
Arhitectura mainii secveniale standard (Von Newman) este
urmtoarea:











Unitate
Central

Memorie
Subsistem de intrare/ieire

Om/proces

4






Unitatea central (CPU-Central Processing Unit), transform
datele n rezultate pe baza execuiei instruciunilor programului
memorat.
Memoria este mediul principal de stocare/regsire a datelor,
rezultatelor i programelor.
Subsistemul de intrare-ieire este destinat realizrii interfeei
om-main sau proces-main.
Partea fizic a unui sistem de calcul (componentele electronice)
este relative simpl, poate fi produs n serie i este relativ ieftin.
Termenul hardware se refer tocmai la aceast parte
Ceea ce transform acest echipament ieftin ntr-o diversitate de
instrumente, controlere industriale, calculatoare speciale sau de uz
general, sunt programele (utilitare sau de aplicaii) i sistemele de
programe (operare, exploatare), adic software care vor determina
hardware-ul de uz general s execute ceea ce dorim.
Un alt termen frecvent utilizat este firmware, care desemneaz
programe speciale stocate n memorii nevolatile, al cror rol este
de a asigura faciliti de configurare i testare a echipamentului,
precum i minima sa funcionare. Exemplu biosul de la
calculatoarele personale.
Microprocesoarele actuale se produc ntr-o gam larg de
variante, de la cele de uz general sau cele destinate aplicaiilor
industriale, pn la procesoarele de semnal sau coprocesoarele cu
funcii bine precizate. De asemenea, microprocesoarele pot fi:
5
- microprocesoare monocip (unitatea central i circuitele de
suport sunt dispuse n interiorul aceleiai capsule de circuit
integrat).
- microprocesoare multicip la care unitatea central i
circuitele de suport, sunt realizate sub form de circuite integrate
distincte.
Microprocesoarele pentru aplicaii dedicate mai ales cele
destinate mediului industrial sunt realizate monocip, oferind un
plus de comoditate n proiectare i o fiabilitate sporit. De
exemplu, microprocesorul 80186, al firmei Intel, include
aproximativ toate componentele sistemelor cu 8086, adic unitatea
central, generatorul de tact, controlerul de magistral i cel de
ntreruperi, controlerul DMA, contor/timer-ul, logica de
decodificare, etc.
Deseori microprocesoarele monocip includ att memorie de
lucru, ct i interfee de intrare/ieire, adic structura minimal a
unui microcalculator, motiv pentru care ele se mai numesc i
microcalculatoare ntr-un singur cip (Single Component
Microcomputer). Deoarece aceast categorie de microprocesoare
sunt destinate mai ales aplicaiilor de control n mediul industrial,
ele se ntlnesc i sub denumirea de microcontrolere.
Microprocesoarele de uz general multicip au fost realizate i n
variante monocip, purtnd numele de microprocesoare nglobate.
De exemplu, familiile 80186 sau 80386EX sunt produse de Intel i
n varianta monocip avnd avantajul utilizrii suportului de
programe i exploatare dezvoltat pentru sistemele de calcul
existente curent pe pia (de exemplu calculatoarele personale).

Elemente tehnologice

6
Microprocesoarele i circuitele de suport se pot produce n
urmtoarele tehnologii:
1 . Tehnologia bipolar permite obinerea unor viteze de
lucru mari, dar cu un consum ridicat i cu probleme de climatizare
deosebite.
2 . Tehnologia MOS a evoluat mult, oferind condiii de
obinere a unor performane de vitez deosebit, n condiiile unui
consum redus i al unui grad de integrare foarte ridicat. Exist 3
familii MOS mai importante:
PMOS se bazeaz pe realizarea tranzistoarelor MOS cu canal
p, prin difuzia impuritilor de tip p (bor), ntr-un substrat de siliciu
de tip n , pentru a forma drena i sursa. Se remarc prin densitate
mare de integrare, ns microprocesorul este relativ lent.
NMOS se bazeaz pe relizarea tranzistoarelor MOS cu canal
n prin difuzia impuritilor de tip n (fosfor sau arseniu) ntr-un
substrat de siliciu de tip p, pentru a forma drena i sursa. Se obine
o densitate de componente similar cu cea specific PMOS, dar
asigur o vitez mai mare pentru circuitele realizate, ns este mult
mai scump dect tehnologia PMOS.
CMOS combin ambele tipuri de tranzistoare ntr-o structur
complementar, rezultatul fiind o vitez de lucru medie, imunitate
mare la zgomote i un consum extreme de redus.
HMOS este o tehnologie mai recent i a fost utilizat cu
succes de firma INTEL la realizarea noilor sale generaii de
microprocesoare i microcontrolere. Aceast tehnologie folosete
tranzistoare cu canal n, proiectate special pentru a lucra la tensiuni
joase i la viteze mari.
CHMOS este rodul mbinrii performanelor de vitez
deosebit ale tehnologiei HMOS, cu consumul sczut al celei
CMOS. Rezultatul a fost remarcabil, astfel nct majoritatea
7
productorilor de microprocesoare i microcontrolere au trecut la
aceast tehnologie.

Bii , octei , cuvinte

Marea majoritate a echipamentelor numerice folosesc pentru
reprezentarea intern a numerelor sistemul binar, caracterizat de
utilizarea a numai 2 cifre: 0 i 1. Bitul reprezint cea mai mic
unitate de informaie, echivalent cu o afirmaie (DA , 1) sau o
infirmaie (NU, 0).
Pentru uniti mai mari, cea mai important este octetul, obinut
din gruparea a 2 8 bii. Octetul reprezint unitatea cea mai
folosit pentru caracterizarea dimensiunii blocurilor de memorie.
Dac aceast dimensiune este mare, se pot folosi multiplii acestuia:
Kilooctet 2
10
bii
Megaoctet 2
20
bii 2
10
KB
Gigaoctet 2
30
bii 2
10
MB 2
20
KB
Un cuvnt este un grup de bii ce desemneaz cantitatea
maxim de informaie ce poate fi transferat la un moment dat de
un dispozitiv numeric. Cuvntul este materializat prin ci paralele
de comunicaie a informaiei numite magistrale. Numrul de bii al
unui cuvnt constituie lungimea sa. Lungimea unui cuvnt este una
dintre caracteristicile cele mai importante ale unui microprocesor,
deoarece hotrte precizia datelor i viteza de prelucrare a
acestora.

Algoritmi , programe i limbaj main

Fiind dat o problem pentru rezolvarea acesteia trebuie gsit
o metod adecvat algoritmul. Un algritm este o secven de
operaii, grupate ntr-o succesiune de etape (pai) ce permit
8
rezolvarea problemelor specificate. Pentru a fi neles de
microprocesor, algoritmul trebuie prezentat ntr-un limbaj adecvat,
limbaj care const ntr-un set de simboluri i reguli de sintax
foarte bine precizate. Materializarea algoritmului cu ajutorul unui
limbaj se face ntr-un program ce const ntr-o succesiune de
operaii elementare instruciuni.
La nivelul cel mai de jos, instruciunile programului se
prezint ca iruri de bii ce pot fi transformate cu uurin n
impulsuri electrice, dar care sunt foarte greu de manevrat de ctre
programator. Acest limbaj, singurul neles de procesor este numit
limbaj main. Din acest motiv, au fost create programe speciale,
care permit utilizarea unor limbaje mai apropiate de cel uman
(limbaj de asamblare).
Ulterior au fost create o multitudine de limbaje (BASIC,
FORTRAN, C etc) , numite de nivel ridicat, a cror scop a fost
gsirea unei modaliti ct mai accesibile de a programa un
microprocesor.

Logic cablat i logic programat

Logica cablat presupune un automat de control n care
secvena de semnale de sincronizare/coordonare sunt elaborate pe
baza unei scheme fixe (de obicei cu pori i bistabile interconectate
convenabil), imposibil de modificat.
Logica programat se bazeaz pe un automat de control
flexibil, capabil s genereze semnale de sincronizare/coordonare,
pe baza unui program executat de microprocesor. Majoritatea
aparaturii moderne utilizeaz logic programat. Prin simpla
modificare a programului, ntreaga funcionare a aparatului se
poate schimba.

9
Puterea de calcul i viteza de lucru a microprocesorului

Prin putere de calcul se nelege mai ales capabilitatea de
prelucrare numeric a acestuia i este determinat de lungimea
cuvntului, de arhitectura intern i viteza de execuie a
instruciunilor.Viteza microprocesorului este condiionat de 2
factori:
-Frecvena ceasului un tact mai rapid determin un procesor s
execute un program mult mai rapid;
-Arhitectura intern permite creterea vitezei de lucru
(meninnd frecvena ceasului neschimbat) pe baza trecerii de la
execuia strict secvenial a operaiilor, la execuia lor paralel,
ntr-un mod transparent pentru utilizator, folosind tehnici ca:
utilizarea memoriilor CACHE, creterea numrului de magistrale
interne ale unitilor de prelucrare, succesiune pipeline
(suprapunerea parial a operaiilor).
-Viteza de execuie a instruciunilor este dificil de msurat
direct. Se definete de obicei ca durata de execuie a unor
instruciuni foarte des folosite sau ca numr mediu de instruciuni
executate ntr-o secund.
-Setul de instruciuni - condiioneaz indirect viteza de calcul.
Cu ct modul de codificare a instruciunilor este mai simplu i
secvena microoperaiilor este mai rapid, cu att microprocesorul
va avea o vitez de lucru mai mare.
Microprocesoarele cu set complet de instruciuni (CISC)
consum un timp relative ridicat pe instruciune, dar compenseaz
acest lucru printr-o gam divers de instruciuni.
Spre deosebire de ele, microprocesoarele cu set redus de
instruciuni (RISC) sunt optimizate astfel nct instruciunile s fie
executate foarte rapid, chiar mai multe ntr-un singur tact main .

10
Arhitectura intern a unui microprocessor

Ca orice unitate central a unui sistem de calcul,
microprocesorul conine urmtoarele componente principale:
- unitatea de control CPU ;
- unitatea logico-aritmetic ALU;
- registre interne;
Acestea comunic ntre ele prin ci de transfer informaiei
numite magistrale, ce leag ntre ele mai multe dispozitive, dar la
un moment dat doar dou dispozitive pot schimba informaie:
sursa i destinaia. Coordonarea transferurilor pe magistral se face
de ctre un dispozitiv master, cele subordonate fiind slave.
Microprocesorul posed i o magistral intern, legat printr-o
interfa la magistrala extern.
Structura intern a unui microprocesor generic este urmtoatea:
















PS

CLK
Gen
IR PC
SP
Inst DCD
CPU





BI
ADD
BUS
DATA
BUS
REG DCD
R
2
R
1

R
4
R
3

B
X
TMP
ACC
ALU
CMD
BUS
Cuartz
INT
Reset
11






Unitatea de control

Asigur sincronizarea i coordonarea operaiilor din interiorul
i exteriorul microprocesorului. Ca orice automat secvenial
sincron, unitatea central este guvernat de un semnal de tact
(CLK), produs de un circuit de ceas intern sau extern
microprocesorului. n majoritatea cazurilor, oscilatorul, care
asigur tactul, este pilotat cu cuar i asigur frecvene ntre 1 i 40
MHz (microprocesoarele ce echipeaz calculatoarele moderne
ajung pn la frecvene de ordinal GHz).
n principal, unitatea de control solicit instruciunile stocate n
memoria de program, le decodific i pe baza acestora comand
funcionarea celorlalte blocuri (ALU, registre etc ) interne
microprocesorului, n vederea executrii corecte a acestora.

Unitatea logico aritmetic

ALU execut operaiile aritmetice i logice impuse de
instruciunile programului, sub coordonarea direct a unitii de
control.
Operaiile aritmetice pot fi: adunare i scdere (de baz -
obligatorii), respectiv nmulire, mprire, ridicare la putere
(suplimentare).
Operaiile logice pot fi: NU, I, SAU (de baz - obligatorii),
respectiv SAU EXCLUSIV, deplasri, rotiri (suplimentare).
12
Participanii la o operaie aritmetic sau logic se numesc
operanzi, iar semnul grafic asociat acesteia se numete operator.
Dac operaia necesit un singur operand (schimbarea semnului
sau negarea), ea se numete operaie unar. Dac operaia necesit
2 operanzi (adunare, I logic), ea se numete binar.

Registrele interne

Au rolul de a stoca temporar operanzii i rezultatele vehiculate
prin ALU, pe parcursul uneia sau mai multor instruciuni.
Registrele folosite n mod uzual la calcule se numesc registre
generale, iar cele folosite la operaii speciale (adresarea,
manevrarea stivelor) se numesc registre funcionale.
Registrele generale pot ndeplini mai multe roluri:
- manevr pentru stocarearea temporar a unui operand sau
a unui rezultat;
- acumulator (ACC) registru folosit n operaiile de adunare
pentru cumularea unui ir de valori (unul din operanzi se gsete
ntr-un registru de lucru, iar cellalt l constituie chiar coninutul
acumularorului), iar la sfrit rezultatul se depune tot n
acumulator;
- contor cu autoincrementare sau cu autodecrementare, ce
permite realizarea simpl a buclelor de program i parcurgerea
irurilor de date;
-baz (B) i index (X) ce permite adresarea irurilor de
valori (vectori), plasate n locaii succesive de memorie;
-indicator de stiv (SP) - permite adresarea unei zone de
memorie (stiv), special creat pentru a facilita manevrarea datelor,
pe principiul ultimul sositprimul servit (LIFO), prin operaii de
tipul PUSH, POP, precum i execuia subrutinelor sau a tratrii
ntreruperilor.
13
Un microprocesor posed cel puin 2 registre generale
(acumulator i manevr). Majoritatea microprocesoarelor folosesc
seturi de 4 16 registre, ce pot prelua unul din rolurile prezentate
mai sus.
Registrele funcionale
ndeplinesc sarcini dedicate pentru controlul derulrii
instruciunilor n microprocesor.
-Registrul de stare program (PS) conine o serie de
informaii ce descriu starea execuiei progarmului (indicatorii de
condiie, care reprezint modul de terminare a unei operaii logico-
aritmetice, utilizat la realizarea salturilor condiionate, precum i a
indicatorilor de semnalare a evenimentelor speciale i a modurilor
de lucru);
-Registrul de instruciuni (IR) destinat stocrii instruciunii
pe parcursul execuiei sale;
-Contorul de program (PC) indic n permanen
instruciunea curent (de executat);

Execuia instruciunilor i indicatorii de condiie

Vom considera citirea i execuia unei instruciuni tipice de un
cuvnt. Pentru aceasta:
-de la adresa coninut n contorul de program (PC) interfaa de
magistral citete un cuvnt, printr-un ciclu de citire al instruciunii
-coninutul locaiei citite este transferat prin magistrala intern n
registrul de instruciuni (IR);
-contorul de program este incrementat pentru a indica
instruciunea imediat urmtoare;
-imediat ce codul instruciunii este disponibil, n registrul de
instruciuni (IR), el este decodificat i transformat n semnale de
14
activare a diverselor microoperaii din care este compus execuia
propriu-zis a instruciunii;
-nc din faza final a execuiei instruciunii, se poate declana
citirea instruciunii urmtoare;
n cazul instruciunilor de mai multe cuvinte, se fac referiri
succesive la memorie.
Multe microoperaii presupun folosirea ALU pentru calcule
ascunse (calcule de adres). Operaiile de calcul produc rezultate
ce trebuie testate pentru a lua o decizie. ALU dispune de un set de
bistabili care fac parte integrant din registrul de stare program
(PS) i care memoreaz modul de finalizare al operaiei executate.
Aceti bistabili se numesc indicatori de condiie i ei pot fi testai
n instruciuni de salt condiionat.
Indicatorii cei mai utilizai sunt prezentai n continuare:
-Z (ZERO) se seteaz dac rezultatul este nul;
-S (SIGN) se seteaz dac rezultatul este negativ;
-C (CARRY) se seteaz dac apare un transport;
-V (OVERFLOW) se seteaz dac rezultatul unei operaii
ntre numere cu semn are un semn incorect (datorit transporturilor
nedorite spre poziia semnului).

Seturi de instruciuni

Instruciunea este o operaie elementar ce se execut de
microprocesor n cadrul unui program. Orice instruciune este
identificat pe baza unui cod de operaie ce face parte integrant
din corpul acesteia. Codul de operaie este completat de informaii
suplimentare, numite uzual argumente.
Codul operaiei este singura poriune a instruciunii care se
decodific intern i declaneaz secvena de microoperaii din
unitatea de comand (exist instruciuni formate numai din cod).
15
Lista complet de instruciuni pe care o poate interpreta i
executa un microprocesor se numete set de instruciuni.
Instruciunile sunt stocate n memorie sub form de cuvinte
consecutive, care materializeaz programul existnd dou categorii
de instruciuni mprite pe baza formatului:
- instruciuni cu format fix la care lungimea acestora i
structura diverselor cmpuri componente este fix, indiferent de
codul instruciunii;
- instruciuni cu format variabil la care lungimea i
structura cmpurilor componente este dependent de codul
instruciunii.

Formate uzuale de instruciuni


a)
CO
Cod
operaie
AO
Adres
operand
AO
Adres
operand
AR
Adres
rezultant
AI
Adres
instruciune


b
)
CO
Cod
operaie
AO
Adres
operand
AO
Adres
operand
AR sau AI
Adres rezultant sau
Adres instruciune


c)
CO
Cod
operaie
AO
Adres
operand
AO sau AI
Adres operand sau Adres
instruciune


d
)
CO
Cod
operaie
AO sau AI
Adres operand sau Adres instruciune

16

a) - instruciune cu patru adrese: dou adrese de operanzi, o
adres pentru rezultat i o adres pentru urmtoarea instruciune.
Formatul este incomod, datorit numrului mare de argumente,
care nu sunt folosite ntotdeauna.
b) - instruciune cu trei adrese: dou adrese de operanzi i o
adres pentru rezultat sau pentru urmtoarea instruciune. n acest
caz se presupune c instruciunile sunt plasate n locaii succesive,
astfel c adresa instruciunii urmtoare este subneleas.
Instruciunile care nu respect aceast secven (salturi, apeluri de
subrutine), de regul nu sunt instruciuni de calcul i ca urmare
ultimul cmp poate fi folosit pentru adresa urmtoarei instruciuni
de executat.
c) - instruciuni cu dou adrese: dou adrese de operand, din
care ultima poate fi pentru urmtoarea instruciune. Rezultatul unei
operaii este depus ntr-un loc implicit cunoscut (de obicei, n
acumulator).
d) - instruciuni cu o singur adres: o adres de operand sau
pentru urmtoarea instruciune. n aceast situaie att unul din
operanzi, ct i rezultatul operaiei au un loc prestabilit. Acest
format este cel mai economic.
Microprocesoarele actuale folosesc , de obicei , instruciuni cu
format variabil cu una sau cu dou adrese , deoarece permit o
utilizare optim a memoriei de program i o scurtare semnificativ
a timpului de extragere decodificare .

Instruciuni de transfer de date

Transfer informaia dintr-un registru (sau locaie de memorie)
n alt registru. Operaiile curente sunt de transfer (ncrcare,
memorare) i interschimbare.
17

Instruciuni aritmetice i logice

n aceast categorie intr: adunare (ADD), scdere (SUB),
nmulire (MUL), mprire (DIV), complementare (CPL), test i
comparare, I logic (AND), SAU logic (OR), SAU exclusiv
(XOR), negare (NEG), incrementare (INC), decrementare (DEC),
deplasri stnga sau dreapta, rotiri stnga (RL) sau dreapta (RR),
tergerea (CLR) unui registru sau nscrierea unui bit cu o valoare
dorit (SETB/RESB).


Instruciuni de control al programului

Instruciunile din acest categorie au drept caracteristic faptul
c oricare din ele modific derularea secvenial a programului,
provocnd ncrcarea contorului de program cu o valoare dintr-un
cmp de adres al instruciunii curente, sau cu o adres calculat
ntr-un pas precedent al programului.
O instruciune de ramificare, numit i salt, determin prsirea
secvenei normale a programului, fr un mecanism de reinere a
locului unde s-a ntmplat acest lucru. O posibil revenire este
lsat complet n seama programatorului.
Exist dou tipuri de salt:
-salt necondiionat (JMP);
-salt condiionat (JZ, JC), ce are loc doar dac este ndeplinit o
condiie specificat prin starea indicatorilor de condiie poziionai
anterior.
Unele microprocesoare au o instruciune, considerat tot de
salt, care determin CPU s ignore una sau mai multe instruciuni
dintr-o secven (SKIP).
18
Instruciunile de apel (CALL) i revenire (RET) din subroutine,
realizeaz i salvarea adresei de ntoarcere (a locului de unde
trebuie reluat programul dup execuia subrutinei).

Instruciuni de control al microprocesorului

n acest grup pot fi nscrise unele instruciuni speciale de
control:
-oprire (HALT) ce suspend execuia programului curent pn
la apariia unei cereri de ntrerupere extern ;
-nici o operaie (NOP);
-activarea (EI) sau dezactivarea (DI) sistemului de ntreruperi.

Instruciuni de intrare / ieire

Acest grup include dou instruciuni de transfer, cu porturi de
intrare/ieire, adic citire port (IN) sau scriere port (OUT).

Tehnici de adresare a memoriei

Din analiza formatelor de instruciuni, am observat c pentru a
defini complet operaia de executat este nevoie s cunoatem locul
unde sunt amplasai operanzii, adic adresele lor. n general, un
operand se poate afla n registre sau n memoria de lucru.
Adresa unui registru se poate codifica pe un numr redus
de bii (uzual 3 sau 4 bii), ce poate face parte chiar din cmpul
destinat codului operaie.
n al doilea caz, adresa locaiei de memorie unde se afl
operandul este precizat ntr-un cmp separat, ce face parte din
corpul instruciunii.
19
Regsirea unei informaii presupune determinarea adresei
utiliznd un set de convenii i metode de calcul, cunoscute sub
numele de tehnici de adresare.
Principalele tehnici de adresare ntlnite la majoritatea
microprocesoarelor sunt:

Adresarea implicit
Pleac de la ideea c adresa (locul) unui operand este implicit
cunoscut i definit chiar de operaia executat, n timp ce al
doilea operand se afl ntr-un registru de lucru.
Multe instruciuni cu adresare implicit sunt reprezentate pe un
singur cuvnt, necesitnd pentru extragere o singur referire la
memorie.

Ex: ADD r ACC ACC + r ,

unde r este un registru de lucru;

Adresarea direct
Este legat de prezena unui operand n memorie, n care adresa
lui nu mai poate fi implicit cunoscut. Corpul instruciunii are un
cmp explicit pentru adres. n timpul execuiei instruciunii se mai
face o referire suplimentar la memorie, pentru extragerea
operandului.

Ex : ADD r , adr r r + ( adr ) ,

unde (adr) este coninutul locaiei de memorie cu adresa adr.
n cazul instruciunii de forma:

ADD adr ACC ACC + ( adr ) ,
20

avem un caz tipic de combinaie a adresrii implicite i a celei
directe.

Adresare imediat
Presupune aducerea operandului chiar n corpul instruciunii
(nlocuind corpul de adres cu operandul). Avantajul const n
economia unor referiri suplimentare la memorie n timpul execuiei
unei instruciuni, util mai ales la operaii cu constante.

ADD r ,4 r r + 4 ,

unde 4 este o constant plasat n corpul instruciunii.

Adresarea indexat

Este principalul mijloc de adresare a irurilor de date dispuse la
adrese consecutive, pornind de la o adres de baz. Adresarea
indexat utilizeaz un registru special, numit registru de index, n
care se plaseaz numrul de ordine al elementului din ir, care
trebuie prelucrat. n corpul instruciunii sunt specificate adresa de
baz i adresa registrului de index.

Ex : ADD r , adr [ x ] r r + ( adr +x )

Adresarea bazat

Este folosit ca mijloc alternativ (la adresarea indexat) de
acces la irurile de date. Adresa irului este plasat n registru
special numit registru de baz, iar indexul face parte din corpul
instruciunii.
21
Adresarea bazat combinat cu adresarea indexat dau un
mijloc foarte eficient de acces la blocurile mari de date.

Ex : ADD r , B[10] r r + (B+10) ,

unde r este registrul de lucru, B este registrul de baz, iar prin
(B+10) se nelege coninutul locaiei de memorie cu adresa dat de
registrul de baz la care s-a adugat 10.
nlocuind constanta 10 cu x, adic B[x] se obine o adresare
bazat i indexat.

Adresarea indirect

Este o modalitate de regsire a informaiei pe baza interpretrii
operandului, nu ca o valoare de calcul ci ca o nou adres de unde
se poate extrage valoarea sa adevrat. Adresarea indirect permite
partajarea unei date ntre mai multe uniti de program, dar i
accesul la irurile de date.

EX : ADD r , (adr) r r+(adr)

Prin (adr) se nelege coninutul locaiei de memorie cu adresa
adr, la care se afl o nou adres.
Alte tipuri de adresri:
-adresare relativ la care calculul adresei se face n raport
cu coninutul contorului de program;
-adresare cu autoincrementare i autodecrementare (punere
i extragere din stiv);
-adresare paginat;
22
De obicei microprocesoarele nu admit combinarea oricrei
insruciuni cu orice mod de adresare. Instruciunile de transfer
implementeaz cele mai multe moduri de adresare.







Microprocesorul i circuitele externe


Un sistem cu microprocesor, n afar de unitatea central,
cuprinde memoria i subsistemul de intrare/ieire ce sunt conectate
printro magistral extern.

Magistral extern a unui microprocesor

Realizarea unui sistem cu microprocesor se face n jurul unei
magistrale ce servete drept cale de transfer a informaiei. i n
interiorul microprocesorului principalele sale componente sunt
dispuse tot n jurul unei magistrale, numit magistral intern. n
afara microprocesorului, aceasta are drept corespondent magistrala
extern.
Legtura ntre cele dou magistrale se face printr-o interfa
special, al crui rol este de a asigura att o separare electric, un
numr relativ redus de terminale externe, dar i adaptarea la
acelai protocol de comunicaie ntre dispozitive.
Liniile unei magistrale se grupeaz n date (DATA BUS),
adrese (AD BUS), comenzi/control (CMD BUS) i alimentri.
23
Magistrala de date (DATA BUS), permite transferal
informaiei bidirecional, fiind compus dintr-un numr de linii
egal cu lungimea cuvntului microprocesorului. Disciplina de
magistral impune ca la un moment dat ntr-un sistem s se afle n
dialog doar dou dispozitive, unul surs i unul destinaie, sensul
de transfer fiind unic i dictat de cele dou tipuri de operaii de
baz admise: citire i scriere. Rezult c dispozitivele ce se
conecteaz mpreun pe aceeai magistral de date trebuie s
dispun de buffere cu trei stri (3-State) astfel nct s nu apar
conflicte electrice n timpul transferurilor.
Magistrala de adrese (AD BUS) este unidirecional (de la
microprocesor spre exterior) i servete la vehicularea adreselor ce
permit localizarea n memorie sau ntr-un registru de interfa a
informaiei utile.
Magistrala de comenzi (CMD BUS) conine semnale
unidirecionale, menite s asigure coordonarea i sincronizarea
transferurilor cu dispozitivele externe precum memorie i interfee
I/O. Aceste semnale permit identificarea tipului de operaie de
transfer ( RD-citire, WR -scriere), natura dispozitivului ( MRQ -memorie,
IORQ -interfee I/O), precum i natura informaiei vehiculate (date,
MI -instruciuni).
Microprocesorul dispune i de linii speciale pentru generatorul
de tact (X1 i X2, pentru conectarea cuarului sau CLK pentru
semnalul de tact extern),precum i pentru sincronizarea cu
dispozitivele externe (RDY), iniializarea (RESET), cereri de
ntrerupere (INT) i de magistral (BRQ i BACK). Unele
microprocesoare folosesc aceleai linii pentru adrese i date,
acestea fiind multiplexate. La nceputul fiecrui transfer,
procesorul depune nti adresele (ce pot fi ngheate ntr-un
24
registru LATCH) i apoi folosete aceleai linii pentru citirea sau
scrierea datelor.

Memoria

Sistemele cu microprocesoare utilizeaz dou tipuri de memorii
pentru stocarea datelor si programelor.
-Memorie numai cu posibilitate de citire care este nevolatil i
care este scris de utilizator (EPROM i EEPROM), aceasta fiind
memoria de program.
-Memorie cu posibiliti de citire/scriere (RAM), care este
volatil i servete la stocarea temporar a informaiilor (date
rezultate i chiar programe), aceasta fiind memoria de lucru.
Microprocesoarele de uz general, de regul multicip, nu dispun
de resurse proprii de memorie (cu excepia registrelor de lucru ce
pot fi considerate memorii RAM foarte rapide dar de capacitate
mic).
Multe microprocesoare actuale sunt dotate cu memorie RAM
proprie foarte rapid, de capacitate relativ modest (4 16 KB), al
crui rol este de a funciona ca tampon ntre CPU i memoria
extern, mai lent, dar de mare capacitate. Aceast memorie,
numit memorie CACHE, realizeaz funcia de accelerator,
mpreun cu un dispozitiv intern de gestionare, funcie ce este
complet transparent pentru utilizator.

Subsistemul de intrare/ieire

Face legtura ntre microprocesor i periferice prin interfee
specializate, numite generic porturi. n principiu, transferal datelor
de la sau ctre porturi se face cu instruciuni speciale, numite
instruciuni de intrare/ieire. Citirea unui port se face cu o
25
instruciune de intrare (IN), iar scrierea ctre un port se face cu o
instruciune de ieire (OUT). Utilizatorul are acces la funciile
interfeei prin intermediul registrelor acesteia. Registrele de
interfa se grupeaz n trei categorii:
-registre de control, destinate manevrrii interfeei i
perifericului asociat;
-registre de stare, cu ajutorul crora se verific condiiile i
modul de execuie al operaiilor, precum i erorile aprute;
-registre de date, prin care se face transferul propriu zis.

Structura simplificat a unei interfee este prezentat n figura
urmtoare:



















AD BUS
CMD BUS
DATA
BUS

Decodor i
control
interfa
Registru
de control
Registru
de stare
Registru
de date
Registru
de date







DISPOZITIV
PERIFERIC

Tampon
26
Tipuri de Interfee

-interfaa paralel permite interconectarea perifericelor cu
vitez de lucru ridicat;
-interfaa serial permite interconectarea perifericelor cu
vitez redus, dar folosind un numr mic de linii (de regul dou
sau trei), conform unui standard (RS 232, RS 422, RS 485 etc);
-contor/temporizator: este o interfa special folosit ca i
contor sau generator de impulsuri programabil;
-interfaa video: permite obinerea imaginilor grafice ale
caracterelor sau curbelor pe un ecran monitor TV sau cu cristale
lichide.

Transferuri , cicluri , stri

Principala utilitate a unei magistrale este transferul informaiei.
Pentru aceasta, un microprocesor trebuie s precizeze:
-natura operaiei dorite: poate fi citire sau scriere i este
identificat cu ajutorul unor semnale speciale de pe magistrala de
comenzi ( RD sau WR );
-natura dispozitivului implicat n transfer ce poate fi memorie
au interfa de intrare/ieire ( MRQ - memorie, IORQ - interfaa I/O);
-adresa locaiei sau registrului dorit (AD BUS);

Transferul are loc pe durata unui ciclu de magistral. Cum
microprocesorul este guvernat de un semnal de tact precis, rezult
c i ciclul de magistral este corelat cu acest tact. Perioada tactului
se numete stare, iar fiecare ciclu are un numr determinat de stri.
Ciclurile de citire/scriere ale microprocesorului sunt date n
diagramele urmtoare:

27































CLK
Dat stabil

T
1
T
2

T
3

Ciclu de citire

AD BUS

DATA BUS

RD

MRQ , IRQ

Adres stabil
dres stabil
CLK
Dat stabil

T
1
T
2

T
3

Ciclu de scriere

AD BUS

DATA BUS

WR

MRQ , IRQ

Adres stabil

28
nti microprocesorul pune o adres valid pe liniile AD BUS
(locaie de memories sau registru I/O), apoi activeaz pe rnd
semnalele care specific natura dispozitivului ( MRQ sau IORQ ) i apoi
operaia dorit ( RD sau WR ).
n timpul ciclului de citire, microprocesorul ateapt
dispozitivul adresat s pun pe magistrala de date un cuvnt valid,
pe care-l preia spre sfritul ciclului.Dac dispozitivul nu poate
rspunde n timp util, el poate folosi dezactivarea liniei READY,
fornd microprocesorul s atepte.
Folosirea liniei READY pentru sincronizarea cu dispozitive
lente determin microprocesorul s insereze automat o succesiune
de stri de ateptare, acestea sunt introduse n interiorul ciclului,
lungindu-i convenabil durata. Dac dispozitivul adresat nu
activeaz linia READY, sistemul se poate bloca.


ntreruperi i accesul direct la memorie
O problem important n orice sistem de calcul este
sincronizarea activitii microprocesorului cu evenimentele
externe. Toate aceste evenimente au un punct comun: sunt
asincrone n raport cu execuia programului de ctre procesor.
Programul trebuie informat printr-un mijloc oarecare c un astfel
de eveniment s-a produs i c trebuie tratat corespunztor (printr-o
secven specific numit rutin de tratare).
Exist trei tipuri de mecanisme utilizate pentru tratarea
evenimentelor externe:
- ateptarea (bucla) programat;
- ntreruperi;
- accesul direct la memorie.

29
Ateptarea programat
n forma sa cea mai simpl, const ntr-o secven de program
care citete n permanen o informaie de stare i testeaz un
indicator, pentru a afla dac evenimentele au avut loc.
Procesorul nu execut nici o alt activitate pn ce evenimentul
nu s-a produs rezultnd timpi inutilizabili pentru sistem.

ntreruperi
Sunt faciliti hardware oferite de microprocesoare, prin care un
dispozitiv periferic atrage atenia asupra producerii unor
evenimente externe ce reclam o intervenie prompt.
nainte ca o ntrerupere s poat avea loc, este necesar s se
ndeplineasc condiiile:
-perifericul n cauz trebuie s fie capabil s genereze o
ntrerupere;
-sistemul trebuie s posede toate mecanismele hardware de
transmitere a semnalului de ntrerupere de la periferic la CPU;
-programul ce se execut de microprocesor trebuie s conin
secvene de cod special destinate lucrului cu ntreruperi (rutine de
tratare a ntreruperilor);
-perifericul trebuie s genereze semnalul de ntrerupere.

Apariia unei ntreruperi n activitatea curent a
microproesorului determin urmtoarea secven de evenimente:
-instruciunea n curs de execuie se ncheie normal;
-starea intern a procesorului (registrul de stare i contorul de
program) este salvat pentru a permite mai trziu reluarea
activitii din locul unde a fost ntrerupt;
-microprocesorul ncarc noi informaii de stare i execut un
salt de la o rutin de tratare specific, ce realizeaz toate aciunile
urgente implicate de apariia evenimentului;
30
-la sfritul rutinei de tratare (marcat cu o instruciune de
revenire din ntrerupere IRET) se restaureaz starea procesorului
salvat anterior;
-restaurarea este ncheiat cu rencrcarea contorului de
program cu valoarea salvat i prin aceasta, reluarea programului
ntrerupt.
Observaii
-tratarea ntreruperii trebuie s nlture cauza apariiei acesteia,
astfel secvena de mai sus se poate repeta;
-dac sosesc noi ntreruperi de aceeai natur, n timpul
execuiei rutinei de tratare, se poate ajunge la situaia ca aceasta s
fie restartat recursive, pn la apariia unor erori sau pierderea
controlului asupra programului;
-procesoarele actuale suport instruciuni ce permit activarea,
respectiv dezactivarea tratrii ntreruperilor. Pe baza acestora se
pot elimina ntreruperile neprevzute.
Microprocesoarele mai simple sunt dotate cu o singur intare
pentru semnale de ntrerupere (INT), dar cele mai multe posed o
intrare suplimentar (NMI), care permite tratarea unor evenimente
imperative, motiv pentru care nu exist nici un mecanism intern
de inhibare a acestora
(ntreruperi nemascabile). O problem important apare la
conectarea ntreruperilor de la mai multe periferice. Cum pot fi
luate acestea n considerare dac microprocesorul dispune doar de
o singur intrare INT. Rspunsul este dat de introducerea unui
mecanism de multiplexare/arbitrare a cererilor de ntrerupere, bazat
pe o logic cu prioriti.
O soluie este folosirea unui controler de ntreruperi. Acesta
dispune de un codor de prioriti care determin solicitantul cu cel
mai mare nivel de prioritate i genereaz semnalul de ntrerupere
ctre procesor. n momentul acceptrii ntreruperii, controlerul
31
pune pe magistral un cuvnt de identificare al perifericului
solicitant, astfel nct microprocesorul s fie capabil s activeze
rutina de tratare specificat.
O alt soluie este cea n care logica de arbitrare i multiplexare
a fost distribuit chiar n circuitele de interfa. Fiecare circuit are o
intrare de autorizare a ntreruperilor (IEI) i o ieire de semnalizare
a activitii ctre perifericul urmtor (IEO). Dac IEI1, atunci
perifericul n cauz poate genera o ntrerupere. Dac acelai
periferic se afl n curs de tratare, el va pune IEO0. Un dispozitiv
cu IEI0 este obligat s transmit IEO0.
Prioritatea este stabilit pe baza poziiei fizice a perifericului
ntr-un lan de prioriti.
Odat generat ntreruperea i acceptat de procesor, perifericul
i va pune cuvntul de identificare pe magistral, pentru a permite
activarea rutinei de tratare corect.

























ntrerupere nemascabil
1
NMI
MICROPROCESOR
INT
Periferic 1
Periferic 2
Periferic n
IEI
IEI
IEI
IEO
IEO
IEO
32


















































ntrerupere nemascabil
0
1
Controler
de
ntreruperi
n
NMI
MICROPROCESOR
INT
Periferic 1
Periferic 2
Periferic n
33

Accesul direct la memorie

Permite ca dou procesoare s partajeze aceeai magistral n
scopul realizrii accesului la aceleai resurse. Unul dintre ele este
chiar unitatea central a sistemului, iar cellalt este dedicat numai
interceptrii i arbitrrii cererilor provenite de la periferice, precum
i coordonrii transferurilor solicitate, fr a mai apela la unitatea
central.
Acest procesor dedicat controler pentru acces direct la memorie
(DMA) funcioneaz n dou moduri:
-modul slave, funionnd ca un circuit de interfa obinuit, ce
poate fi programat prin instruciuni I/O, programarea are ca scop
precizarea locaiei de memorie de unde ncepe transferul i sensul
transferului;
-modul master controlerul preia controlul magistralei (dup
ce a primit acceptul CPU) i dirijeaz traficul de informaie,
genernd toate semnalele de control necesare.
Ciclurile DMA se pot ntreptrunde cu cele CPU, mai ales dac
rata de transfer a perifericului nu este prea mare, caz n care
execuia programului principal este ncetinit foarte puin.
Multe controlere DMA sunt capabile s gestioneze mai multe
periferice. Astfel, cererile DMA, notate DRQ, emise de periferice,
ajung la controler, care le arbitreaz i care solicit apoi eliberarea
temporar a magistralei de ctre procesor prin activarea semnalului
BREQ.
Procesorul termin ciclul de memorie sau I/O n curs, dup care
se deconecteaz de la magistral i semnalizeaz acest lucru
activnd linia BACK.
Controlerul DMA preia acum controlul magistralei i
semnalizeaz acest lucru perifericului, prin smnal de acceptare
34
DACK. La terminarea unui transfer DMA, perifericul dezactiveaz
linia DRQ, controlerul eliberez magistrala, semnaliznd acest
lucru i procesorului prin linia BRQ, acesta preia din nou controlul
magistralei i totul reintr n normal.





















Avantajul imediat al tehnicii de transfer prin acces direct la
memorie este c acesta permite eliberarea procesorului de sarcina
gestionrii directe a intrrilor i ieirilor de date din sistem: este
suficient s programm controlerul DMA pentru citirea unui bloc
de date de la un periferic (de exemplu. CAN), dup care procesorul
este liber s realizeze o alt activitate ce nu are nevoie de datele

DRQ

DACK

DRQ

DACK

DRQ0

DACK0
BREQ

BACK

DRQ1

DACK1






BREQ

BACK


Microprocesor
Periferice
Controler DMA
35
solicitate. Unitatea de transfer a datelor prin DMA este blocul, de
aceea la sfritul transferului este considerat a fi epuizarea blocului
de date.

Microcontrolerul 8051(INTEL)

Familia de microcontrolere de 8 bii MCS51 lansat i produs
de Intel a devenit practic un standard industrial. Ea a stat la baza
dezvoltrii de microcontrolere compatibile realizate de firme ca:
Philips, Siemens, Dallas, etc. Arhitectura MCS51 este optimizat
pentru aplicaii de control. Intel ofer o gam larg de
microcontrolere compatibile cu 8051 ce difer ntre ele doar prin
opiuni i tehnologie. Principalele caracteristici ale familiei MCS51
sunt prezentate n tabelul urmtor:

CHIP ROM
intern
RAM
intern
Timere
16 biti
Surse
int.
8031 - 128 2 5
8051 4k 128 2 5
80C51 4k 128 2 5
8032 - 256 3 6
8052 8k 256 3 6
80C52 8k 256 3 6
89C52 8k Flash 256 3 6

Microcontrolerul 8051 are n structura sa:
- unitate aritmetica i logic de 8 bii ce poate executa operaii
de adunare, scdere, nmulire, mprire, incrementare, I,
SAU, SAU Exclusiv, complementare i rotire,
- memorie de program de tip ROM 4k octei
36
- memorie de date RAM 128 octei
- 4 porturi paralele de intrare/ieire
3 0
P P de 8 bii
- un port serial duplex
- dou circuite numrtoare/temporizatoare N/T0, N/T1 de cte
16 bii
- 5 surse de ntrerupere cu dou nivele de prioriti
- generator de tact 1, 2 12
z
MH
Deasemenea microcontrolerul are posibilitatea de adresare a unei
memorii externe de program i a unei memorii externe de date cu
capacitate maxim de 64k octei.
Toate microcontrolerele din familia MCS51 au spaiu separat
pentru memoria de date i de program. Acest lucru permite o
cretere de vitez datorat att suprapunerii pariale a unor
microoperatii, ct i crearea posibilitatii de adresare scurt (cu un
singur octet de adres).
Memoria de program poate fi doar citit. La 8051 primii 4k
octei de program sunt n chip. Restul se afl n exterior, iar pentru
a citi aceast memorie de program extern se folosete semnalul
PSEN (Program Store Enable).
Memoria de date ocup un spaiu separat fa de memoria
program. La 8051 exist 128 octei RAM n chip. Memoria de date
extern poate fi accesat prin generarea de ctre unitatea central a
semnalelor de citire RD sau scriere WR. Memoria de program i
cea de date (extern) pot fi combinate dac dorim prin folosirea
semnalelor RD si PSEN pentru a genera smnal de citire pentru o
memorie comun n care s avem att memorie program ct i
memorie de date.

Memoria de program

37
Dup reset CPU i ncepe execuia de la adresa 0000H unde
trebuie s existe o instruciune de salt peste zona vectorilor de
ntrerupere. Aceast zon ncepe de la adresa 0003H unde este
plasat rutina de tratare a ntreruperii externe INTR0. Harta
memoriei program arat astfel:













Adresele vectorilor de tratare a ntreruperilor sunt:
0003h INTRO 0
000Bh Timer 0
0013h INTR 1
001Bh Timer 1
0023h Seriala
002Bh Timer 2 (doar pentru 8x52)

Dac rutina de tratare a ntreruperii este foarte scurt ea poate
fi plasat n cei 8 octei rezervai. Rutinele mai lungi pot folosi o
instruciune de salt peste locaiile rezervate ntreruperilor
urmtoare, dac acestea se folosesc.
FFFFh
2000h
1FFFh
0000h
ROM
extern
ROM
intern
sau
FFFFh
0000h
ROM
extern
38
Cei 4k octei (8k octei la 8x52) de memorie program pot fi n
capsul sau extern. Aceast selecie este posibil folosind linia EA
(External Acces). Daca EA=0 se acceseaz 64k octei memorie
extern. Dac EA=1, atunci se execut program din:
- memoria intern 4k octei (0000h-0FFFh);
- memoria externa de pn la 64k octei ntre adresele 1000h i
FFFFh.
n timpul execuiei programului din memoria intern nu se
genereaz semnalul PSEN. Porturile P0 i P2 sunt dedicate pentru
a se folosi ca magistral de adres. Deasemenea P0 este folosit i
ca magistral de date prin multiplexarea adreselor A0-A7 i datelor
D0-D7.
Modul de conectare al memoriei program este prezentat n
continuare:















Pentru citirea memoriei program se emite octetul inferior al
PC (Program Counter) ca o adres la portul P0. Cu ajutorul
P0
DO-D7
AO-A7
MEM
PROG
A8-A15
OE
80C51
ALE
P2
PSEN
LATCH
STB
39
semnalului ALE (Adress Catch Enable) se nscrie aceast adres
ntr-un latch. ntre timp la portul P2 se emite octetul superior al PC.
Odat ce adresa este stabil se activeaz semnalul PSEN pentru
citirea datelor din memoria de program, date care sunt citite de
portul P0.
Adresarea memoriei program se face ntotdeauna pe 16 bii.
Execuia programelor din memoria program extern sacrific astfel
dou porturi P0 i P2.
Memoria de date intern

Microcontrolerul 8051 are o memorie intern de date RAM de
128 octei adresabil direct i indirect n spaiul de adresare Fh h 7 00 .
Aceast zon este mprit astfel:
!















Spaiul 00h-07h reprezint, dup reset, grupul de registre R0-R7
utilizate pentru surse sau destinaii n multe instruciuni ca:
Zona adresabila
la nivel de bit
Zona registrelor
R0-R7
Zona de uz
general
30h
28h
20h
10h
08h
00h
2Fh
7Fh
1Fh
17h
0Fh
07h
18h
R
0
00h
7Fh
R
1
R
2
R
3
R
4
R
5
R
6 R
7
40

ADD A,Rn
MOV Rn,#data

ntr-o astfel de instruciune, registrele R0-R7 sunt adresate
direct cu un cmp de 3 bii ) 7 0 ( = n cuprins mpreun cu codul
operaiei, n primul octet corespunztor codului main al
instruciunii. Ex:


ADD A,Rn cod instr.: 0010.1rrr
ADD A,R0 28h
ADD A,R1 29h
....................
ADD A,R7 2Fh

Registrele R0 i R1 sunt utilizate i pentru adresarea indirect a
memoriei de date interne ca de exemplu, n instruciunile:


MOV A,@Ri
ADD A,@Ri
INC @Ri


n aceste instruciuni indicele i cu valorile 0 sau 1 este precizat
n primul cuvnt din codul main printr-un bit. Deasemenea,
registrele R0 i R1 sunt utilizate pentru adresarea indirect a
memoriei de date externe n instruciunile:

41
MOVX A,@Ri
MOVX @Ri,A

n aceste instruciuni, coninutul registrului R0 sau R1
reprezint octetul mai puin semnificativ al adresei. Octetul mai
semnificativ al adresei este dat de portul P2.
Exist posibilitatea ca, prin programarea biilor RS1 i RS0 ai
registrului de stare a programului (PSW), grupul de registre R0-R7
s fie ales conform tabelului:

PSW.4
RS1
PSW.3
RS0
Adresa
grupului
R0-R7
0 0 00h-07h
0 1 08h-0Fh
1 0 10h-17h
1 1 18h-1Fh

Locaiile memoriei din spaiul 20h-2Fh reprezint o zon de
memorie adresabil i la nivel de bit n instruciuni de tipul:
CPL bit
JB bit,rel
Adresarea biilor se realizeaz direct, cu un octet coninut n
codul main al instruciunii corespunzatoare. Ex:

CPL C are codul 10110011
CPL bit are codul 10110010 adr.bit

42
Zona de memorie 80h-FFh este o zon de memorie cu acces
direct i pe bit folosit pentru registrele cu funciuni speciale. La
microcontrolerul 8x52 aceast zon este dublat cu o zon de
memorie RAM dar la care accesul se face numai indirect. Astfel
memoria intern de date arat astfel:

















Memoria intern de date este utilizat deasemenea pentru stiv.
Registrul indicator de stiv SP este ncrcat, dup reset, cu valoarea
07h. Exist posibilitatea de modificare a zonei din memoria intern
de date utilizat pentru stiv, prin ncrcarea altei valori n registrul
SP.
De exemplu prin ncarcarea valorii 2Fh n registrul SP stiva
ncepe de la valoarea 30h.

Adresabila
numai direct
(SFR)
FFh
80h
7Fh
00h
Adresabila
numai indirect
(8x52)

Adresabila
direct si
indirect
43
Registrele interne ale 8051

Registrele interne se numesc registre cu funcii speciale i sunt
adresabile doar direct n spatiul de adresare 80h-FFh. Deasemenea
se pot adresa direct biii unora din registrele cu funcii speciale.
Registrele interne i funciile speciale ale acestora:
-A registru acumulator (8 bii)
Se foloseste ca surs i destinaie, prin adresare implicit, n
multe operaii aritmetice i logice. De exemplu, n instructiunea
ADD A,@data, acumulatorul d un operand surs i este i
destinaia rezultatului prin adresarea implicit.
-B registru de 8 bii
Este un registru ce se utilizeaz ca surs i destinaie, prin
adresare implicit, n instruciunile de nmulire MUL AB i
mprire DIV AB precum i pentru uz general prin adresare
direct.
-DPTR registru pointer pentru date (16 bii) compus din
DPH (8 bii) i DPL (8 bii). Registrul DPTR se utilizeaz pentru
adresarea indirect a memoriei de date extern n instruciunile
MOVX A,@DPTR i MOVX @DPTR, A precum i pentru
adresarea indirect a memoriei de program n instruciunea MOVC
A,@A+DPTR.
-SP registru indicator de stiv (8 bii). Stiva necesar
funcionrii microcontrolerului este organizat n memoria intern
de date. Dup reset, SP are valoarea 07h. La scriarea unui octet n
memoria stiv, coninutului registrului SP se incrementeaz cu o
unitate.
-PSW registru de stare a programului (registru cu indicatorii
de condiii)
44
Indicatorul de transport C (PSW.7) se poziioneaz la nivel 1
logic n urma execuiei unei instruciuni de adresare care a produs
un transport i n urma execuiei unei instruciuni de scdere care a
necesitat un mprumut. Dac execuia unei instruciuni de
scdere/adunare nu produce mprumut/transport, indicatorul C se
poziioneaz la nivel logic 0. Astfel, indicatorul C se utilizeaz
pentru aplicaii n operaii aritmetice cu operanzi fr semn.
Deasemenea indicatorul C este folosit i n operaii logice i de
transfer al controlului:
ADD A,direct
ANL C,bit
RLC A
JC Rel
Indicatorul de transport auxiliar AC (PSW.6) se poziioneaz la
nivel logic 1 n urma unei operaii de adunare/scdere care
produce transport/mprumut din/n poziia bitului 3.
Indicatorul de depire OV (PSW.2) se poziioneaz la nivel
logic 1 n urma execuiei unei instruciuni de adunare dac s-a
produs un transport din poziia bitului 6 i nu s-a produs un
transport din poziia bitului 7 indicnd astfel depirea domeniului
de valori ) 127 128 ( .
Indicatorul de paritate P (PSW.0) conine suma modulo 2 a
biilor registrului acumulator. La nivel logic 1 indic un numr
impar de bii cu nivel logic 1 n acumulator. Bitul P nu este
modificat de nici o instruciune de scriere n registrul PSW.
Ceilali bii ai PSW sunt: F (PSW.5) disponibil pentru uz
general, PSW.1 rezervat pentru dezvoltri ulterioare (nefolosit),
RS1 i RS0 (PSW.4 i PSW.3) pentru selecia grupului de registre
R0-R7.
45
- SBUF registru serial fiind compus de fapt din dou registre
separate de 8 bii avnd aceeai adres direct, unul pentru
transmisie i unul pentru recepie folosite pentru interfaa serial.
Cnd un octet de date este scris n SBUF acesta este plasat n
bufferul de transmisie i declanseaz nceputul transmisiei seriale a
acestuia. Cnd se realizeaz o recepie se citete coninutul
bufferului de recepie. Adresa direct a registrului SBUF este 99H.
-Registrele de control exist mai multe astfel de registre, care
conin bii de control i de stare pentru ntreruperi,
temporizatoare/numrtoare i portul serial. Ele vor fi descrise la
funciile corespunzatoare.
-Registrele de temporizare exist dou perechi de registre de
cte 8 bii T0 (TH0, TL0) T1 (TH1, TL1) folosite ca
numrtoare/temporizatoare de 16 bii programabile n 4 moduri
diferite. Celelalte registre interne i funciile acestora vor fi
discutate ulterior.

Moduri de adresare

Modurile de adresare folosite de microcontrolerul 8051 sunt:

- Adresare direct

n adresarea direct operandul este specificat de un cmp de 8 bii
de adres din instruciune. Doar RAM-ul intern de date i SRF pot
fi adresate direct.
Ex: MOV A,30h
MOV A,DPL

- Adresarea indirect
46

n adresarea indirect instruciunea specific un registru ce
conine adresa operandului. Doar RAM-ul intern i cel extern poate
fi adresat indirect. Adresa pe 8 bii a operandului se afl n unul din
registrele R0 sau R1. Registrul Ri, i=0 sau 1 este precizat printr-un
bit din codul main al instruciunii.

Ex: MOV A,@Ri 1110 011I
MOV @Ri,A 1111 011I
MOV @Ri,direct 1010 011I ADR.DIRECT
MOV direct,@Ri 1000 011I ADR.DIRECT

Adresa pe 16 bii a operandului se afl n DPTR fiind folosit
pentru transfer de date din memoria RAM extern n instruciuni de
tipul:

MOVX A,@DPTR
MOVX @DPTR,A

- Instruciuni cu regitrii
Instruciunile cu regitrii de lucru interni (R0-R7) au avantajul
eliminrii unui octet de adres din instruciune deoarece adresa
operandului se poate coda pe 3 bii din codul instruciune.
Ex: MOV A,Rn 1110 1rrr
MOV Rn,direct 1010 1rrr adr direct
Exist i instruciuni specifice orientate pe manevrarea
regitrilor. Unele instruciuni opereaz doar n acumulator sau
DPTR nefiind necesar nici un octet suplimentar de adres n codul
instruciunii.
Ex: CLR A 1110 0100
DEC A 0001 0100
47
DIV A,B 1000 0100
JMP @A+DPTR 0111 0011
MOVX A,@DPTR 1110 0000

- Constante imediate

Valoarea constantei urmeaz codului n memoria program. De
exemplu MOV A,#data ncarc valoarea dat n acumulator.
Ex: MOV A,#100 100A
MOV A,#64H

- Adresarea indexat
Se folosete pentru a accesa memoria de program ce poate fi
doar citit. Acest mod se folosete pentru a citi tabele din memoria
de program. Registrul de baz de 16 bii (unul din registre DPTR
sau PC) indic baza tabelului iar acumulatorul este incrcat cu
poziia din tabel dorit. Adresa de citire din tabel rezult ca sum
dintre coninutul acumulatorului i pointerul de baz.

Tipuri de instruciuni

Instruciuni aritmetice
Aceste instructiuni sunt:
Adunare ADD A,<BYTE>
Adunare cu C ADDC A,<BYTE>
Scdere SUBB A,<BYTE>
Incrementare INC <BYTE>
Decrementare DEC <BYTE>
nmulire MUL AB
mprire DIV AB
Ajustare zecimal DA
48

Instruciuni logice
Instruciunile logice disponibile sunt:
ANL A,<BYTE>
ANL <BYTE>,A
ANL <BYTE>,#data
ORL <BYTE>,A
ORL A,<BYTE>
ORL <BYTE>, #data
XRL A,<BYTE>
XRL <BYTE>, A
XRL <BYTE>,#data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A

O operaie de tipul ANL A,<byte> poate lua una din formele
urmtoare:
- Adresare direct ANL A,30H
- Adresare indirect ANL A,@R1
- Adresare registru ANL A,R6
- Adresare imediat ANL A,#100
Toate operaiile asupra memoriei de date pot fi executate fr a
folosi acumulatorul. De ex. XRL <byte>, #data execut un sau
exclusiv ntre octetul de memorie i data imediat fr folosirea
acumulatorului. Instruciunea SWAP A schimb ntre ele partea
superioar i cea inferioar din acumulator.
49

Instruciuni pentru transferul datelor cu memoria intern

Formatul general al instruciunii este: MOV <dest>,<sursa> i
permite transferul ntre dou locaii interne RAM sau SRF fr a
folosi acumulatorul sau ntre un registru i o locaie de memorie.
Trebuie inut cont de faptul c pentru 8052 spaiul de memorie
superior celor 128 octei RAM poate fi adresat doar indirect, iar
spaiul registrelor cu funcii speciale poate fi adresat doar direct.
Stiva se afl n memoria RAM intern i crete spre adresele
superioare. Instruciunea PUSH mai nti incrementeaz SP (Stach
Pointer) i apoi depune octetul pe stiv. Instruciunile PUSH i
POP se folosesc doar n modul de adresare direct pentru a indica
octetul ce va fi salvat sau restaurat. Dac stiva depete cei 128 de
octei din RAM-ul intern, octeii depui n continuare se pierd iar
cei restaurai au valori nedeterminate. Instruciunile de transfer
includ i instruciuni pe 16 bii care pot fi folosite pentru a iniializa
pointerul de date DPTR pentru citiri de tabele din memoria
program sau pentru accesul la memoria extern de date.
Principalele instruciuni care adreseaz spaiul intern al memoriei
de date sunt:
MOV A,<src>
MOV <dest>,A
MOV <dest>,<src>
MOV DPTR,#data 16
PUSH <src>
POP <dest>
XCH A,<byte>
XCHD A,@Ri

50
Instruciunea XCH A,<byte> face ca acumulatorul i octetul
s-i schimbe valorile ntre ele. Instruciunea XCHD A,@Ri este
asemntoare, dar doar cei mai puin semnificativi 4 bii sunt
schimbai.

Instruciuni pentru transferul datelor cu memoria extern

n acest caz poate fi folosit doar adresarea indirect. Alegerea
tipului de transfer se face dup numrul de octei de adres. Dac
se dorete adresarea cu un singur octet de adres se vor folosi
regitrii R0 sau R1.
Pentru adresarea cu doi octei de adres se va folosi registrul
DPTR. Dezavantajul folosirii adresei pe 16 bii este acela al
folosirii portului P2 care astfel nu poate fi folosit pentru aplicaie.
Selectarea memoriei externe se face cu operaii de tipul MOVX ce
pot fi:

MOVX A,@Ri
MOVX @Ri,A
MOVX A,@DPTR
MOVX @DPTR,A

Setul de instruciuni al microcontrolerului 8051 conine i dou
instruciuni pentru citirea tabelelor din memoria program. Aceste
instruciuni sunt:

MOVC A,@A+DPTR
MOVC A,@A+PC

51
Instruciunea MOVC A,@A+DPTR transfer intrarea din tabel
n acumulator. DPTR este setat s indice nceputul tabelei iar
acumulatorul intrarea din tabel.
Instruciunea MOVC A,@A+PC se compune din urmtoarele
microoperaii:

) ) (( ) (
1 ) ( ) (
PC A A
PC PC
+
+

Folosirea acestui tip de citire a datelor este ilustrat de programul
urmtor:

MOV A,INTR_TABLE
CALL TABLE
------------------
Subrutina TABLE va arta astfel:
TABLE: MOVC A,@A+PC
RET
data1
-------
dataN
Imediat dup instruciunea RET se plaseaz tabela cu intrri de
la 1 la 255. Intrarea 0 nu se foloseste deoarece n timpul execuiei
instruciunii MOVC, PC-ul conine adresa instruciunii de
ntoarcere RET.

Offset relativ

Destinaia adresei unde se face un salt condiionat este
specificat n asamblor de un tabel sau de o adres n memoria
program. Destinaia se d ca un offset relativ la poziia curent a
PC. Aceasta nseamn, n cod complement lui doi, c octetul offset
se adun la PC dac saltul are loc. Domeniul de salt este cuprins
52
ntre -128 i +127 octei n memoria program, relativ la primul
octet ce urmeaz dup instruciune.

Instructiuni de salt

Aceste instruciuni sunt:
JMP addr
JMP @A+DPTR

Instruciunea JMP addr ascunde de fapt trei instruciuni:
SJMP, AJMP, LJMP
1. SJMP formeaz adresa destinaie ca offset relativ, avnd
doi octei coninnd codul operaiei i offsetul relativ. Distana
maxim de salt este limitat la -128, +127 octei relativ la
instruciunea ce urmeaz dup SJMP.
2. LJMP formeaz adresa de salt ca o constant pe 16 bii.
Instruciunea are 3 octei constnd n codul operaiei i doi octei
de adres, destinaia fiind oriunde n spaiul de 64 k.
3. AJMP formeaz adresa destinaie ca o constant pe 11
bii. Instruciunea are 2 octei lungime, unul conine codul operaiei
din 5 bii i pe 3 bii adresele cele mai semnificative. Al doilea
octet conine restul adresei. Adresa de salt poate fi oriunde n
spaiul de 2k octei relativ la instruciunea ce urmeaz dup AJMP.
JMP @A+DPTR ofer posibiliti de salt pentru lucru cu
tabele. Adresa destinaie este obinut ca sum dintre registrul
DPTR i coninutul acumulatorului. Adresa de salt este pe 16 bii.
n mod uzual DPTR este setat cu adresa tabelului i funcie de
adresa acumulatorului avem o anumit specificaie.
TABLE:AJMP CASE0
AJMP CASE1

53
AJMP CASEN



MOV DPTR,#TABLE
MOV A,INDEX
RL A ;nmulire cu doi
JMP @A+DPTR

Lucrul cu subrutine

Apelul unei subrutine se face cu instruciuni de tipul CALL
adr. De fapt sunt dou instruciuni LCALL i ACALL cu
adresare pe 16 bii, respectiv pe 11 bii. Subrutinele trebuie s se
termine cu RET pentru a reveni la instruciunea de dup CALL.
ntreruperile se vor termina cu RETI.
Salturi condiionate
Acestea specific destinaia adresei ca un offset relativ la
instructiunea ce urmeaz dup instruciunea de salt. Distana de salt
este limitat la -128 la +127 octeti fa de primul octet al
instruciunii urmtoare. Nu exist flag z n PSW. Instruciunile JZ
i JNZ testeaz direct coninutul acumulatorului dac este zero i n
funcie de coninut face saltul sau continu programul. DJNZ este o
instruciune de control pentru bucle la fel ca i CJNE. Formatul lor
este:
DJNZ <byte>, rel
CJNE A,<byte>,rel
CJNE <byte>,#data,rel

Porturile paralele ale 8051

54
Microcontrolerul 8051 conine patru porturi paralele
bidirecionale de cte 8 bii. Fiecare port are un registru intern de 8
bii P0P3 i un amplificator de magistral bidirecional. Prin
structura microcontrolerului, porturile paralele pot realiza funcii
alternative care determin utilizri specifice ale porturilor.
Astfel amplificatoarele de magistral ale porturilor P0 i P2 se
utilizeaz pentru accesul memoriilor externe. Portul P1 este un port
clasic de intrare/ieire. Liniile portului P3 pot avea utilizri
alternative.

Portul P1
Un operand surs pentru o instruciune de adresare direct a
unui port poate fi dat de coninutul registrului portului sau de
nivelele logice ale liniilor (pinilor) portului.











n instruciunea ANL P1,A un operand surs este coninutul
registrului portului P1.
n instruciunea ANL A,P1 un operand sursa este dat de nivelele
logice corespunztoare ale pinilor portului P1.
Aceast logic de funcionare se realizeaz prin comenzi
corespunztoare de citire a bistabilelor P1.X, respectiv a pinilor
Citire bistabil
P
1
.x
Linia x
Magistral intern
comand scriere
n bistabil P
1.
x
citire
P
1.
x
A
1
A
2
D

T

Q

Q

Rs

T

PIN
P
1
.x
55
P1.X. Nivelul logic dintr-un bistabil al unui port poate fi diferit de
nivelul logic al pinului corespunztor. De ex. Dac ieirea Q a
bistabilului P1.X este la nivel logic1, tranzistorul T este blocat i
nivelul logic al pinului P1.X poate fi comandat din exterior.
Rezistena Rs este o rezisten de sarcin activ cu rolul de a
mri viteza de comutare de la nivel logic 0 la nivel logic 1.
Aceast mrire de vitez se obine prin generarea de ctre sarcina
activ a unui curent de 30 mA pe durata a dou perioade ale
generatorului de tact, ncepnd cu frontul de comutare 1 0 logic de
la ieirea Q a bistabilului P1.X.
Structura unei astfel de rezistene active este :









Tranzistorul T2 cu canal iniial, genereaz n permanen un
curent de 0,25 mA. n regim staionar avnd Q la nivelul logic 0
sau 1, tranzistorul T1 de tipul cu canal indus, este blocat
deoarece nivelele logice de la ntrzierile circuitului SAU_NU sunt
complementare. Dup frontul de comutare a semnalului de la
nivelul 1 la 0 logic, n intervalul a dou perioade T0 ale
generatorului de tact, ntrzierile circuitului SAU_NU sunt la
nivelul logic 0 i tranzistorul T1 genereaz un curent de 30 mA.
Acest curent mrete viteza de comutare de la nivelul logic 0 la
nivelul logic 1 a semnalului de ieire de la pinul P1.X.

T
1

T
2

0,25mA
linie ntrziere
2T0
PIN
P1.x
bistabil P1.x
T
Vcc
Q

56
Portul P3
Portul P3 poate realiza aceleai funciuni ca i portul P1 i n
plus poate fi utilizat pentru funcii alternative de intrare sau de la
ieire. Pentru realizarea funciei alternative de intrare
corespunztoare unui pin P3.X circuitul conine amplificatorul
repetor A3 a crui ieire este conectat n structura
microcontrolerului n concordan cu funcia alternativ realizat.
















Deasemenea pentru realizarea funciei alternative de intrare
este necesar blocarea tranzistorului T care se obine prin aplicarea
de nivele logice 1 la intrrile circuitului I-NU. Astfel se impune
programarea la nivel logic 1 a bistabilului P3.X. cealalt intrare a
circuitului I-NU este conectat intern la nivel logic 1 n
circuitul corespunzator unui pin P3.X cu funcie alternative de
intrare.
D Q

Rs
PIN
P3.x
T
comand citire
bistabil P3.x
Linie x
Magistrala interna
Funcie alternativ
( , , ) TXD RD WR
Vcc
Funcie alternativ
0
( , , ) RXD T etc

Bistabil
P3.x
A
3
A
1
A
2
Q
comanda scriere

bistabil P3.X
comand citire

pin P3.x
57
Funcia alternativ de ieire corespunztoare unui pin P3.X se
realizeaz prin comanda unei intrri n circuitul I-NU, cealalt
intrare fiind stabilit la nivel logic 1 prin programarea
bistabilului P3.X. n cazul realizrii funciei TXD (pin P3.1) linia de
intrare n circuitul I-NU pentru funcia alternativ este la nivel
logic 1 cu excepia intervalului corespunztor transmisiei unui
caracter, declanat de scrierea unui octet n registrul intern SBUF.
n cazul realizrii funciilor RD i WR liniile de intrare n circuitele I-
NU pentru funciile alternative sunt la nivel logic1, cu excepia
intervalelor corespunztoare ciclurilor de scriere, respectiv citire
n/din memoria de date extern.
Portul P2

Portul P2 are funcia alternativ de transfer al octetului mai
semnificativ al adresei n cicluri de extragere coduri instructiuni
din memoria de program extern, n cicluri de citire din memoria
de program extern, cu instruciuni MOVC i n cicluri de acces la
memoria de date extern cu instruciuni MOVX n care adresarea
se realizeaz cu registru DPTR. n aceste cicluri linia de comand
adresare este la nivel logic 1 i impune poziia 1 pentru
comutatorul k:










D Q

Rs
PIN
P2.x
T
comand citire
bistabil P2.x
Linie x
Magistrala interna
Bit de
adres

Vcc
Bistabil
P2.x
A
1
A
2
Q
comanda scriere

bistabil P2.X
1
0 K
Comand
adres

58







Astfel bitul de adres corespunztor comand ieirea P2.X a
portului. Deasemenea, nivelul logic 1 la ieirea circuitului I
comand sarcina activ R
S
astfel nct s genereze un curent mai
mare de 0,25 mA dac bitul de adres are nivel logic 1. Se
asigur astfel comanda corespunztoare a circuitelor de memorie
extern. n afara intervalelor corespunztoare ciclurilor indicate
mai sus portul P2 poate fi utilizat pentru intrri/ieiri de uz general.
Portul P0
Are funcia alternativ de transfer al octetului mai puin
semnificativ al adresei, precum i al octetului cod instruciune sau
dat n orice ciclu de acces la memoriile externe.













D Q

Ts
PIN
P0.x
T
comand citire
bistabil P0.x
Linie x
Magistrala interna
Bit de
adres/date

Vcc
Bistabil
P0.x
A
1
Q
comanda scriere

bistabil P0.X
1
0
K
Comand
adres/date

59








n intervalele corespunztoare acestor cicluri, linia de
comand adresare/transfer date, este la nivel logic 1 i impune
poziia 1 pentru comutatorul k. Astfel prin liniile portului P0 se
poate realiza transferul adresei i datei de intrare sau ieire, prin
multiplexarea n timp. La ieirea circuitului I se obine nivel logic
1 care deschide tranzistorul T
S
n intervalele de transfer bii de
adres cu nivel logic 1, sau de ieire bii de date cu nivel logic
1. n afara acestor intervale, tranzistorul Ts este blocat. n
ciclurile de acces la memoriile externe, bistabilele (biii) registrului
P0 se ncarc cu nivele logice 1.
n afara ciclurilor de acces la memoriile externe, portul P0
poate fi utilizat pentru intrri/ieiri de uz general. Ieirile P0.X sunt
de tipul dren n gol (Ts-blocat), iar intrrile P0.X sunt de
impedan ridicat (T i T
S
= blocate, Q = 1 prin programare).

Funcionarea sincronizat a microcontrolerului 8051

Pentru funcionarea sincronizat, microcontrolerul conine un
generator de tact. Semnalul de comand al generatorului de tact
este dat de un oscilator cu frecvena maxim MHz 12
0
= f . Pentru
realizarea oscilatorului, microcontrolerul conine un circuit
inversor cu intrarea i ieirea conectate la pinii XTAL1 i XTAL2.
60
Configuraia de oscilator se obine prin conectarea ntre pinii
XTAL1 i XTAL2 a unui cristal de cuar i a doi condensatori
conectai de la cei doi pini la mas.
Funcionarea sincronizat a microcontrolerului se desfoar n
faze, stri i cicluri main. O faz a microcontrolerului
corespunde duratei
0 0
/ 1 R T = a perioadei de tact. Dou faze succesive
notate P1, P2 definesc o stare a microcontrolerului. Un ciclu
main se desfoar pe durata a 12 perioade T0 adic 6 stri. Cele
12 perioade ale unui ciclu main sunt notate S1P1, S1P2, S2P1,
S2P2, . S6P1, S6P2.
Microcontrolerul 8051 execut o instruciune n unul sau dou
cicluri main cu excepia instruciunilor de multiplicare i divizare
ce se realizeaz n 4 cicli main.













Execuia unei instruciuni ncepe n faza S1P1 a unui ciclu
main prin extragerea din memoria program a primului octet al
instruciunii i transferul acestuia n registrul de instruciuni al
microcontrolerului n faza S1P2. n cazul unei instruciuni cu codul
FAZA
CLK
P1 P2 P2 P1 P1 P2
S1
S2
S3
t
STARE
61
main de doi oceti, al doilea octet se extrage din memoria
program n starea S4 a aceluiai ciclu main. Rezult c intr-un
ciclu main se pot efectua dou extrageri de coduri instruciune.
Dac este nevoie i de cel de-al treilea octet, acesta se va extrage n
faza S1P2 a celui de-al doilea ciclu main. n strile n care se
face extragere de cod instruciunea are loc i incrementarea
contorului de program PC. Execuia unei instruciuni se termin n
faza S6P2 a ciclului main corespunztor. Pentru accesul
memoriilor externe, adresa se formeaz din valoarea portului P2
(octetul superior) i valoarea portului P0 (octetul inferior).
Transferul unui octet de date se face prin liniile portului P0. rezult
c portul P0 este folosit att pentru adrese ct i pentru date prin
tehnici de multiplexare. Se impune astfel memorarea temporar
ntr-un registru extern a octetului mai puin semnificativ al adresei.
Memorarea adresei inferioare n registru se realizeaz pe baza
semnalului de validare registru de adresare ALE. Pentru selecia
diferit a celor dou tipuri de memorie (de program i RAM)
microcontrolerul genereaz semnalul PSEN pentru validarea
memoriei de program extern i semanlele WR i RD pentru memoria
de date extern. Diagramele de timp corespunzatoare extragerii de
coduri instruciuni din memorii program sunt:

62

Circuitele de numrare/temporizare ale microcontrolerului
8051

Microcontrolerul 8051 conine dou circuite de
numrare/temporizare notate cu N/T0 i N/T1. Fiecare circuit
conine dou registre numrtoare de cte 8 bii , TH0, TL0, TH1,
TL1 din grupul registrelor cu funcii speciale. Structura unui circuit
numrtor/temporizator este prezentat n figura de mai jos.
Funcia de temporizare se realizeaz prin numarare de
impulsuri cu o frecvena egal cu frecvena oscilatorului divizat
CLK
ALE
S1
S2 S3 S4 S5
S6
PSEN


COD INSTRUCTIUNE
PCL
PCL

COD INSTRUCTIUNE
P0-P7
PCL PCL
A0-A7
PCH
PCH
PCH
A15-A8
P2.7-P2.0
63
cu 12. Rezult c frecvena pentru temporizare avnd f0=12 MHz
este f=1 MHz.
Funcia de numrare se realizeaz prin numrarea fronturilor
de cdere ale semnalului aplicat la pinul Ti al microcontrolerului.
Aceste fronturi se detecteaz prin testarea de ctre microcontroler a
strii liniei Ti n fazele S5P2 ale ciclurilor main. Se consider
detectat un front de cdere dac n fazele S5P2 din dou cicluri
main consecutive rezultatul testrii va fi un nivel logic 1
urmat de un nivel 0 logic. Detecia unui front de cdere
determin incrementarea cu o unitate a coninutului registrului
numrator n faza S3P1 a ciclului main urmtor detectrii
frontului de cdere. Rezult c funcia de numrare a fronturilor de
cdere ale semnalului extern aplicat pinului Ti se efectueaz corect
dac fiecare nivel corespunztor acestui semnal este meninut pe o
durat mai mare dect durata unui ciclu main. Astfel frecvena
maxim a semnalului de la linia de intrare Ti este f0/24 adic
500KHz pentru f0=12MHz.














Generator
de tact
Divizor
frecven
(
12
)
C/Ti
(TMOD)
Registru
numrtor
THi,TLi
GATE i
(TMOD)
TR i
(TCON)
TF i
(TCON)
f
0

f
0
/12
0
1
1
K1 K2
Cerere ntrerupere
PIN P3.i+2
Ti
PIN P3.i+4
/ INTi
64





Pentru controlul funcionrii circuitelor
numrtoare/temporizatoare se utilizeaz registrele interne TMOD
i TCON din grupul registrelor cu funcii speciale. Funcia de
numrare sau temporizare se realizeaz prin comanda
corespunztoare a comutatorului K1. Acest comutator este
comandat de bitul C/Ti din registrul TMOD (C/T0=TMOD.2,
C/T1=TMOD.6). Dup cum rezult i din figura anterioar vom
avea:
C/Ti = 0 temporizator
C/Ti = 1 numrtor
Declanarea i blocarea proceselor de numrare/temporizare,
corespunztoare poziiilor cuplat respectiv decuplat ale
comutatorului K2 se pot stabili prin programarea biilor TRi din
registrul TCON i GATEi din registrul TMOD i prin semnal
extern conectat la pinul INTi al microcontrolerului. Comanda
proceselor de numrare/temporizare se poate realiza prin program
prin stabilirea bitului GATEi la nivelul logic 0.
n acest caz declanarea i blocarea se comand prin
programarea bitului TRi. Dac biii GATEi i TRi se programeaz
la nivel logic 1, comanda se realizeaz cu semnalul conectat la
intrarea INTi a microcontrolerului.
Procesele de numrare/temporizare evolueaz n sensul
creterii coninutului registrului numrtor. La depirea valorii
maxime corespunztoare capacitii numrtorului, bitul indicator
de depire TFi din registrul TCON este poziionat la nivel logic
1 semnaliznd o cerere de ntrerupere. Coninutul numrtorului
65
devine zero sau se ncarc cu o valoare programat n funcie de
modul de lucru al circuitului numrtor/temporizator. Bitul
indicator de depire se poziioneaz la nivelul logic 0 dup
acceptarea cererii de ntrerupere de ctre logica de control.
Exist 4 moduri de lucru n funcie de modul de utilizare al
registrelor TLi i THi. Selecia modului de lucru se realizeaz prin
programarea biilor M1 i M0 (TMOD.1, TMOD.0) pentru N/T0 si
M1 si M0 (TMOD.5, TMOD.4) pentru N/T1.\
n modul 0 registrul numrtor este de 13 bii format din
registrul TH i cei mai puin semnificativi 5 bii ai registrului TL.


!



Coninutul registrului astfel obinut este incrementat pn la
valoarea maxim. Urmtoarea incrementare duce la anularea
coninutului numrtorului.
n modul 1 registrul numrtor este de 8 bii format din
registrul TL ca n fig. urmtoare:











Reg. TL
TL.4 TL.0

Reg. TL
TH.7 TH.0
TF

Reg. TL
TL.7 TL.0

Reg. TL
TH.7 TH.0
66






La depirea capacitii de numrare, registrul TL se ncarc cu
coninutul registrului TH. Accest mod de lucru este util pentru
temporizri cu valori programabile. Durata temporizrii este dat
de perioada cu care apar depiri ale capacitii de numrare.
Rezult c durata temporizrii este dat de:

)] ( 256 [
12
0
TH
f
T =

n modul de lucru 3 cele dou circuite de
numrare/temporizare opereaz n mod diferit. Circuitul N/T0
conine ca numrtor registrul TL0. n plus registrul TH0 este
inclus ntr-o structur de temporizator care utilizeaz biii TR1 i
TF1 corespunztori circuitului N/T1 n celelalte moduri de lucru.


Prin programarea circuitului N/T0 n modul 3 i a circutului
N/T1 n modurile 0, 1 sau 2, comutatorul K2 este cuplat indiferent
de circuitul de comand. Blocarea procesului de numrare se poate
TR1
TMOD.6

TL.0 TL.4
TL . Re

g

TH.0 TH.7
TH . Re

g


TF1
TCON.7
REG TH0
Cerere
ntrerupere
f
0
/12
K
67
face prin programarea modului 3 pentru circuitul N/T1. Circuitul
N/T1 n modul 3 nu poate efectua cereri de ntreruperi, iar
declanarea numrtorului 1 se face doar prin programarea in alt
mod de lucru.

Portul serial al microcontrolerului 8051

Este utilizat pentru transferul de informaie ntre
microcontroler i componentele externe sistemului cu comunicaie
serial. Transferul serial al unui cuvnt de la emitor la receptor se
realizeaz prin conversia paralel-serie a cuvntului i apoi
conversia serie-paralel.
Comunicaia serial ntre dou echipamente poate realiza
transferul de informaie n ambele sensuri alternativ printr-o
singur linie (comunicaie semiduplex) sau simultan prin dou linii
(comunicaie duplex).
n cazul comunicaiei asincrone, transferul cuvintelor dintr-un
mesaj se poate realiza la intervale de timp variabile. Un cuvnt
conine o secven de 8 sau 9 bii de date. Transmisia presupune
ncrcarea succesiv a liniei de comunicaie cu biii corespunztori
cuvntului de transmis, cu frecvena de comunicaie fc exprimat
n bii/s. Recepia const n testarea periodic a strii liniei de
comunicaie n scopul citirii secvenei de bii de date. Pentru
transferul corect al unui cuvnt este necesar ca receptorul s
citeasc starea liniei de comunicaie cu aceeai frecven i faz cu
care se ncarc biii cuvntului la emisie. Sincronizarea de faz a
circuitului de recepie cu cel de emisie se realizeaz pe baza
frontului de cdere corespunztor bitului de start. Dup bitul de
start cu nivel logic 0 urmeaz emisia biilor de date (8 sau 9)
ncepnd cu bitul de semnificaie minim (LSB). Ultimul bit de
date emis poate fi bit de paritate utilizat pentru verificarea
68
corectitudinii cuvntului recepionat. Dup ultimul bit de date
urmeaz un bit de stop cu nivel logic 1.












Portul serial al microcontrolerului 8051 poate fi utilizat pentru
comunicaie serial asincron de tip duplex prin liniile de
transmisie TXD (P3.1) respectiv recepie RXD (P3.0).
Microcontrolerul 8051 are 2 registre interne notate SBUF, unul
pentru transmisie i unul pentru recepie. Cele dou registre au
aceeai adres 99H. Adresarea direct ca i operand surs a adresei
99H se refer la registrul SBUF de recepie. Adresarea direct ca i
operand destinaie a adresei 99H se refer la registrul SBUF de
transmisie. Pentru recepie, portul serial utilizeaz un registru de
deplasare care realizeaz conversia serie paralel a datelor de pe
linia de recepie. Coninutul registrului de deplasare este transferat
n registrul SBUF doar dup asamblarea complet a unui octet.
Dup transferul octetului din registrul de deplasare n registrul de
recepie SBUF se poate trece la obinerea unui nou octet n
registrul de deplasare nainte de citirea octetului precedent din
registrul de recepie SBUF. Dac citirea octetului precedent nu se
realizeaz nainte de terminarea asamblrii noului octet, rezult
LSB MSB
BIT
START BIT BIT BIT Paritate
Data.0 Data.7 (opional)
Bit
stop
1/f
c

69
pierderea octetului precedent. Portul serial al microcontrolerului
8051 poate funciona n 4 moduri de lucru stabilite prin
programarea biilor SM0 i SM1 din registrul de control al portului
serial SCON.

Modul 0
Se folosete pentru realizarea unei comunicaii semiduplex.
Astfel, linia RXD se utilizeaz alternativ pentru recepia sau
transmisia unor secvene de 8 bii de date cu frecvena de
comunicaie 12 /
0
f bii/s (f0frecvena oscilatorului de tact).
Semnalul cu frecvena de comunicaie 12 /
0
f este disponibil la linia
TXD. Declanarea transmisiei se realizeaz prin ncrcarea unui
octet n registrul SBUF. La sfritul transmisiei celor 8 bii de date,
portul serial poziioneaz la nivel 1 bitul indicator de ntrerupere
la transmisie Ti preciznd posibilitatea de ncrcare a unui octet n
registrul de transmisie. Declanarea recepiei se realizeaz dac
bitul de validare a recepiei REN este programat la nivel 1. La
sfritul recepiei celor 8 bii de date, portul serial poziioneaz la
nivel 1 bitul indicator de ntrerupere la recepie Ri.

Modurile de lucru 1, 2, 3 ale portului serial se utilizeaz
pentru comunicaie asincron de tip duplex. Astfel se realizeaz
transmisia prin linia TXD i recepia prin linia RXD a unor cuvinte
ce conin un bit de start cu nivel 0, 8 bii de date i un bit de stop
cu nivel 1.
n modurile 2 i 3, cuvintele conin i un bit cu nivel logic
programabil ce urmeaz celor 8 bii de date. n modurile 1,2,3
declanarea transmisiei se realizeaz prin scrierea octetului de
transmis n registrul SBUF. La nceputul transmisiei bitului de
stop, portul serial poziioneaz la nivel 1 bitul indicator de
70
ntrerupere Ti. Validarea recepiei se face prin programarea la nivel
1 a bitului de validare recepie REN. Declanarea recepiei unui
cuvnt se realizeaz de frontul de cdere al bitului de start.
Dac bitul SM2 (SCON.5) este programat la nivel 0, portul
serial poziioneaz la nivel 1 bitul indicator de ntrerupere la
recepie Ri, la mijlocul intervalului de recepie a bitului de stop
corespunztor cuvntului recepionat. Dac bitul SM2 (SCON.5)
este programat la nivel 1, portul serial poziioneaz la nivel 1
bitul indicator de ntrerupere la recepie Ri, numai dac bitul
urmtor celor 8 bii de date (RB8) are nivel 1.
Deoarece n modurile 2 i 3, nivelul logic al bitului urmtor
celor 8 bii de date poate fi programat la transmisie n TB8, rezult
posibilitatea de recepie selectiv in funcie de SM2 a cuvintelor
ncrcate pe o linie de comunicaie. Acest lucru poate fi folosit
pentru comunicaii multiprocesor.
Un cuvnt de comand conine 8 bii de date cu adresa unui
microprocesor din sistem i un bit urmtor cu nivel 1. Un cuvnt
de date conine dup cei 8 bii de date un bit cu nivel 1.
Porturile seriale ale microcontrolerelor 8051 din sistem sunt
programate n modurile 2 sau 3 i cu SM2 la nivel 1. Astfel
recepia unui cuvnt de comand poziioneaz la nivel 1 bitul Ri
din fiecare microcontroler.
Subrutina de ntrerupere analizeaz cei 8 bii ce pot fi de
adres. Microcontrolerul ce recunoate propria adres poziioneaz
SM2 la 0 pentru a recepiona cuvintele de date ce urmeaz.
Celelalte C din sistem menin SM2=1 i nu genereaz ntrerupere
de recepie.
n modurile 1 i 3 valoarea frecvenei de comunicaie poate fi
stabilit prin programare. Pentru aceasta se folosete Timerul 1 ca
generator de frecven de comunicaie programat n modul 2.

71
0
) (
)] 1 ( 256 [ 12 32
2
f
TH
f
SMOD
c


=

unde, SMOD este un bit din PCON. De cele mai multe ori
utilizatorul tie frecvena de comunicaie i dorete s tie valoarea
ce trebuie nscris n TH1.

c
SMOD
f
f
TH


=
12 32
2
256 1
0
) (


THi trebuie s fie o valoare ntreag. Rotunjind pe TH1 la ntregul
cel mai apropiat se produce o modificare a frecvenei de
comunicaie iar utilizatorul trebuie s schimbe valoarea cuarului.
Ex:
}
biti/sec. 7 , 4807 1
1 (SMOD)
MHz 12 f
biti/sec. 4800
real 0
= =

=
=
=
c
c
f TH
f

Dac am dori:
cuartului schimbarea impune se
biti/sec. 10416 f
biti/sec. 8928 249
5 , 249 1
0 (SMOD)
MHz 12 f
biti/sec. 9600
THI
1
0
)
`

=
= =
=

=
=
=
TH
c
f
TH
f


n modul 2 de lucru al portului serial valoarea frecvenei de
comunicaie este:

= =
= =
=
= =
=
0 9 bitul dac 0 Ri
1 9 bitul dac 1 Ri
1 2 SM
cuvnt pt. 1 Ri 0 2 SM
f
64
2
f
0
) SMOD (
c
.
Comand 8 bii date +1+stop (SM2=1) rec.adr.
Date 8 bii date +0+stop (SM2=0) rec.date cel
cu adr.01C
72
(SM2=1) pt. adr. BAD

Sistemul de ntreruperi al C8051

Sursele de cereri de ntreruperi pentru 8051 C sunt externe i
interne. Sursele externe transmit cererile de ntrerupere prin pinii
) 3 . 3 P ( INT1 i ) 2 . 3 P ( 0 INT ai microcontrolerului. Sursele interne de
ntrerupere sunt circuite de numrare/temporizare
1 0
/ , / T N T N i portul
serial. Cererile de ntrerupere generate de sursele de ntrerupere
poziioneaz la nivel 1 biii corespunztori din registrele interne
TCON i SCON dup cum urmeaz:
- IE0 (TCON.1) si IE1 (TCON.3) pentru ntreruperi externe
- TF0 (TCON.5) i TF1 (TCON.7) pentru ntreruperi de la
circuitele de numrare/temporizare.
- Ri (SCON.0) i Ti (SCON.1) pentru ntreruperi de la
portul serial.
Strile acestor bii indicatori de cereri de ntrerupere sunt
testate de logica de control a ntreruperilor microcontrolerului n
faza S5P2 a fiecrui ciclu main. Astfel logica de control a
ntreruperilor identific sursele care solicit ntrerupere i asigur
apelul subrutinei de ntrerupere corespunztoare unei surse, n
concordan cu condiiile de validare i prioritile stabilite pentru
surse prin programare. Strile biilor indicatori de cereri de
ntrerupere pot fi stabilite prin programare.
O surs extern poate solicita o cerere de ntrerupere prin
comanda pinului ` 1 INT sau 0 INT cu nivel logic 0 sau cu un front de
cdere, n funcie de nivelul logic programat n bitul IT0 sau IT1.
n cazul variantei de cerere de ntrerupere extern prin nivel, bitul
IEi urmrete n permanen nivelul logic de comand a intrrii
i INT .
73
Astfel, o cerere de ntrerupere indicat prin nivel logic 1 al
bitului IEi corespunde nivelului logic 0 de comand a pinului
i INT , avnd n vedere prezena circuitului inversor. Nivelul logic
0 corespunztor unei cereri de ntrerupere extern prin nivel
trebuie meninut pn la apelul de ctre microcontroler a subrutinei
de ntrerupere corespunztoare. Comanda liniei i INT la nivel 1
trebuie s se efectueze nainte de sfritul execuiei subrutinei de
ntrerupere corespunztoare, pentru a se evita apelul repetat al
acesteia. n cazul variantei de cerere de ntrerupere prin front de
cdere, bitul IEi este poziionat la nivel 1 de un front de cdere
prezent la intrarea i INT . Detecia fronturilor de cdere se realizeaz
prin eantionarea strii intrrii i INT cu frecvena ciclurilor main.
Rezult c pentru detecia corect a unui front de cdere este
necesar comanda intrrii i INT cu nivel 1, apoi cu nivel 0,
fiecare nivel logic trebuind s fie meninut pe o durat cel putin
egal cu durata unui ciclu main. Nivelul logic1 din bitul IEi,
rezultat ca urmare a deteciei unui front de cdere, se menine pn
la apelul de ctre microcontroler a subrutinei de ntrerupere
corespunzatoare, cnd bitul IEi este poziionat la nivel 0 de ctre
logica de control a microcontrolerului.!











DETECTOR DE FRONT
DE CDERE
IT0
TCON.0
IE0
TCON.1
K1
0
1

TF0
TCON.5
INT0
PIN P3.2


N/T0
DETECTOR DE FRONT
DE CDERE
IT1
TCON.2
IE1
TCON.3
K2
0
1

TF1
TCON.7
INT1
PIN P3.3


N/T0
74

Cererile de ntrerupere de la un circuit de
numrare/temporizare N/Ti0, i=0, 1, sunt generate la depirea
valorii maxime corespunztoare capacitii numrtorului, cnd
bitul indicator de depire TFi se poziioneaz la nivel logic 1.
La apelul subrutinei de ntrerupere corespunztoare, bitul TFi este
poziionat la nivel logic 0 de ctre logica de control a
ntreruperilor microntrolerului.
Cererile de ntrerupere de la portul serial sunt generate de la
sfritul transmisiei sau recepiei unui cuvnt, cnd biii indicatori
de cereri de ntrerupere Ti respectiv Ri se poziioneaz la nivelul
logic 1. La apelul subrutinei de ntrerupere corespunztoare,
strile biilor Ti i Ri nu sunt modificate de ctre logica de control
a ntreruperilor microcontrolerului, astfel subrutina de ntrerupere
se testeaz biii Ri i Ti pentru determinarea tipului de ntrerupere
(recepie respectiv transmisie) i apoi se programeaz nivelul logic
n biii Ri i Ti. Sursele de cereri de ntreruperi pentru
microcontrolerul 8051 sunt mascabile. Astfel validarea sau
invalidarea acceptrii de ctre microcontroler a cererilor de
ntreruperi corespunztoare diferitelor surse se pot stabili prin
programarea registrului de validare ntrerupere IE. Invalidarea
tuturor surselor de cereri de ntrerupere se realizeaz prin
programarea bitului EA (IE.7). La nivel logic 0. Dac bitul EA
este programat la nivel 1 validarea sau invalidarea surselor de
cereri de ntrerupere se programeaz independent pentru fiecare
surs utiliznd biii de validare a ntreruperilor din registrul IE,
dup cum urmeaz:
- EX0 (IE.0) pentru INT0
- ET0 (IE.1) pentru N/T0
- EX1 (IE.2) pentru INT1
- ET1 (IE.3) pentru N/T1
75
- ES (IE.4) pentru portul serial
Programarea nivelului logic 1 n bitul IE.i conduce la validarea
sursei de cereri de ntrerupere corespunztoare.

Sistemul de prioriti al ntreruperilor

Sistemul de prioriti pentru deservirea cererilor de ntrerupere
cuprinde dou nivele de prioritate. Fiecare surs de cerere de
ntrerupere poate fi plasat n unul din cele dou niveluri de
prioritate, prin programarea corespunztoare a biilor registrului de
control a prioritii ntreruperilor IP dup cum urmeaz:
- PX0 (IP.0) pentru INT0
- PT0 (IP.1) pentru N/T0
- PX1 (IP.2) pentru INT1
- PT1 (IP.3) pentru N/T1
- PS (IP.4) pentru portul serial.
Programarea nivelului 1 in bitul IPi conduce la starea sursei de
cereri de ntreruperi corespunztoare la nivelul de prioritate
ridicat.
Execuia unei subrutine de ntrerupere corespunztoare unei
surse de ntrerupere programat la nivel ridicat de prioritate nu
poate fi ntrerupt.
n cazul a dou cereri de ntrerupere de la dou surse din niveluri
de prioritate diferite ce apar simultan, microcontrolerul servete
prima cerere de ntrerupere corespunztoare sursei de ntrerupere
cu un nivel de prioritate ridicat. n cazul cererilor de ntrerupere
simultane de la surse de acelai nivel de prioritate se utilizeaz un
al doilea criteriu de prioritate stabilit prin structura
microcontrolerului . Acest al doilea criteriu este stabilit pentru
ambele niveluri de prioritate i plaseaz sursele de cereri de
ntreruperi n ordinea scderii prioritii, dup cum urmeaz:
76
INT0, NIT0, INT1, NIT1, i portul serial. Logica de control a
ntreruperilor microcontrolerului 8051 eantioneaz starea biilor
indicatori de cereri de ntrerupere n faza S5P2 a fiecrui ciclu
main i analizeaz rezultatele fiecrei eantionri n ciclul main
urmtor. Aceast analiz const n identificarea sursei de prioritate
maxim care solicit ntrerupere. Dup ciclul de analiz,
microcontrolerul execut intern ciclurile corespunztoare unei
instruciuni:
LCALL addr., unde addr este funcie de surs de cerere de
ntrerupere servit dac sunt ndeplinite condiiile urmtoare:
- Ciclul de analiz este ultimul din execuia unei instruciuni.
- Ciclul de analiz nu corespunde execuiei unei instruciuni din
subrutina de ntrerupere corespunztoare unei surse de acelai
nivel de prioritate sau de nivel de prioritate mai ridicat
- Ciclul de analiz nu corespunde execuiei unei instruciuni
RETI sau a unei instruciuni de acces la registrele IE i IP.
La execuia unei instruciuni LCALL addr., pentru apelul unei
subrutine de ntrerupere se salveaz n memoria stiv coninutul
numrtorului de adrese PC i se ncarc n aceasta adresa de
nceput a subrutinei de ntrerupere. Aceast adres este funcie de
sursa de cerere de ntrerupere servit i este stabilit prin structura
microcontrolerului dup cum urmeaz:
- INT0 03h
- NIT0 0Bh
- INT1 13h
- N/T1 1Bh
- Port serial 23h
Subrutina de ntrerupere se termin cu o instruciune RETI prin
care se realizeaz ncrcarea PC din memoria stiva cu adresa de
revenire n programul ntrerupt. Deasemenea, prin execuia
77
instruciunii RETI se informeaz logica de control a ntreruperilor
cu privire la terminarea subrutinei de ntrerupere.

S-ar putea să vă placă și