Sunteți pe pagina 1din 36

SISTEME CU MICROPROCESOARE

1 . Introducere
Aparatele i sistemele controlate cu microprocesor au ap rut i s-au perfec ionat odat cu apari ia pe pia a miroproesoarelor (1970 -1980) dup care (n special dup 1985) s-au r spndit foarte rapid, nlocuind aproape complet aparatele i sistemele de m sur i control numerice clasice (cu logic cablat ), att n tehnica de laborator ct i n instrumenta ia industrial , mai ales n controlul automat.

Clasificarea sistemelor cu microprocessor


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

1.1 Avantajele folosirii microprocesoarelor n sistemele de m sur

i control

Includerea unui microprocesor ntr-un sistem de m sur i control d posibilitatea ca manevrele de operator s fie preluate (par ial sau total) de c tre microprocesor i n plus s se ob in 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. Autocalibrarea i compensarea automat a influen ei factorilor de clim . De asemenea se calculeaz abaterile i se corecteaz rezultatul final al m sur rii. 3. mbun t irea preciziei prin eliminarea erorilor sistematice (prin autocalibrare, autocorec ie). 4. Mic orarea num rului de componente ale sistemului prin eliminarea componentelor destinate implement rii logicii cablate. 5. Cre terea versatilit ii aparatului prin ob inerea unor posibilit i suplimentare de m sur pe baza programelor interne. 6. Cre terea vitezei de lucru prin automatizarea opera iilor de m surare. 7. Posibilitatea determin rii 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 autotest rii prin programe speciale executate de microprocesorul ncorporat, la comanda operatorului sau n cazul apari iei unei anomalii in func ionare. n acest caz se poate declan a o procedur de testare i semnalizare a eventualelor defecte. Toate aceste avantaje arat clar c sistemele de m sur i control moderne nu pot exista f r a fi controlate de c tre microprocesoare.

1.2 Microprocesoare : o privire general


n cele ce urmeaz ne vom referi la un microprocesor generic (presupus de 8 bi i) i vom ncepe cu precizarea unor termeni i nota ii utilizate n lucr rile din domeniul microprocesoarelor.

Defini ii i terminologie
Sistemul de calcul este un echipament care transform datele de intare n rezultate de ie ire pe baza unui algoritm materializat ntr-un program. Aceast defini ie reprezint sensul clasic al no iunii de calculator . Sistemele inteligente sunt acele sisteme care pot prelucra informa ii incomplete definite sau aproape complet definite. Astfel de sisteme sunt sistemele fuzzy sau re elele neuronale. n cazul n care informa iile de prelucrat sunt complet definite atunci avem de-a face cu algoritmi secven iali. Acest tip de algoritmi a stat la baza construc iei ma inilor secven iale (Von Newman). Dac opera iile elementare independente se pot executa paralel (pe mai multe unit i de calcul), avem de-a face cu algoritmi paraleli. 1

ncepnd cu anii 1970 au ap rut tendin e de automatizare a proceselor de produc ie bazate ini ial 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 ma inii secven iale standard (Von Newman) este urm toarea:

Unitate Central

Memorie

Subsistem de intrare/ie ire

Om/proces Unitatea central (CPU-Central Processing Unit), transform datele n rezultate pe baza execu iei instruc iunilor programului memorat. Memoria este mediul principal de stocare/reg sire a datelor, rezultatelor i programelor. Subsistemul de intrare-ie ire este destinat realiz rii interfe ei om-ma in sau proces-ma in . 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 aplica ii) 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 c ror rol este de a asigura facilit i de configurare i testare a echipamentului, precum i minima sa func ionare. 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 aplica iilor industriale, pn la procesoarele de semnal sau coprocesoarele cu func ii bine precizate. De asemenea, microprocesoarele pot fi: - microprocesoare monocip (unitatea central i circuitele de suport sunt dispuse n interiorul aceleia i capsule de circuit integrat). - microprocesoare multicip la care unitatea central i circuitele de suport, sunt realizate sub form de circuite integrate distincte. Microprocesoarele pentru aplica ii 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 interfe e de intrare/ie ire, 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 aplica iilor de control n mediul industrial, ele se ntlnesc i sub denumirea de microcontrolere. 2

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 utiliz rii suportului de programe i exploatare dezvoltat pentru sistemele de calcul existente curent pe pia (de exemplu calculatoarele personale).

Elemente tehnologice
Microprocesoarele i circuitele de suport se pot produce n urm toarele tehnologii: 1 . Tehnologia bipolar permite ob inerea unor viteze de lucru mari, dar cu un consum ridicat i cu probleme de climatizare deosebite. 2 . Tehnologia MOS a evoluat mult, oferind condi ii de ob inere a unor performan e de vitez deosebit , n condi iile 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 impurit ilor 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 impurit ilor de tip n (fosfor sau arseniu) ntr-un substrat de siliciu de tip p, pentru a forma drena i sursa. Se ob ine 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 genera ii de microprocesoare i microcontrolere. Aceast tehnologie folose te tranzistoare cu canal n, proiectate special pentru a lucra la tensiuni joase i la viteze mari. CHMOS este rodul mbin rii performan elor de vitez deosebit ale tehnologiei HMOS, cu consumul sc zut al celei CMOS. Rezultatul a fost remarcabil, astfel nct majoritatea produc torilor de microprocesoare i microcontrolere au trecut la aceast tehnologie.

Bi i , octe i , 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 informa ie, echivalent cu o afirma ie (DA , 1) sau o infirma ie (NU, 0). Pentru unit i mai mari, cea mai important este octetul, ob inut din gruparea a 2 8 bi i. Octetul reprezint unitatea cea mai folosit pentru caracterizarea dimensiunii blocurilor de memorie. Dac aceast dimensiune este mare, se pot folosi multiplii acestuia: Kilooctet 210 bi i Megaoctet 220 bi i 210 KB Gigaoctet 230 bi i 210 MB 220 KB Un cuvnt este un grup de bi i ce desemneaz cantitatea maxim de informa ie ce poate fi transferat la un moment dat de un dispozitiv numeric. Cuvntul este materializat prin c i paralele de comunica ie a informa iei numite magistrale. Num rul de bi i al unui cuvnt constituie lungimea sa. Lungimea unui cuvnt este una dintre caracteristicile cele mai importante ale unui microprocesor, deoarece hot r te precizia datelor i viteza de prelucrare a acestora.

Algoritmi , programe i limbaj ma in


Fiind dat o problem pentru rezolvarea acesteia trebuie g sit o metod adecvat algoritmul. Un algritm este o secven de opera ii, grupate ntr-o succesiune de etape (pa i) ce permit rezolvarea problemelor specificate. Pentru a fi n eles de microprocesor, algoritmul trebuie prezentat ntr-un limbaj adecvat, limbaj care 3

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 opera ii elementare instruc iuni. La nivelul cel mai de jos, instruc iunile programului se prezint ca iruri de bi i ce pot fi transformate cu u urin n impulsuri electrice, dar care sunt foarte greu de manevrat de c tre programator. Acest limbaj, singurul n eles de procesor este numit limbaj ma in . 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 c ror scop a fost g sirea unei modalit i ct mai accesibile de a programa un microprocesor.

Logic cablat

i logic programat

Logica cablat presupune un automat de control n care secven a de semnale de sincronizare/coordonare sunt elaborate pe baza unei scheme fixe (de obicei cu por i 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 func ionare a aparatului se poate schimba.

Puterea de calcul i viteza de lucru a microprocesorului


Prin putere de calcul se n elege mai ales capabilitatea de prelucrare numeric a acestuia i este determinat de lungimea cuvntului, de arhitectura intern i viteza de execu ie a instruc iunilor.Viteza microprocesorului este condi ionat de 2 factori: -Frecven a ceasului un tact mai rapid determin un procesor s execute un program mult mai rapid; -Arhitectura intern permite cre terea vitezei de lucru (men innd frecven a ceasului neschimbat ) pe baza trecerii de la execu ia strict secven ial a opera iilor, la execu ia lor paralel , ntr-un mod transparent pentru utilizator, folosind tehnici ca: utilizarea memoriilor CACHE, cre terea num rului de magistrale interne ale unit ilor de prelucrare, succesiune pipeline (suprapunerea par ial a opera iilor). -Viteza de execu ie a instruc iunilor este dificil de m surat direct. Se define te de obicei ca durata de execu ie a unor instruc iuni foarte des folosite sau ca num r mediu de instruc iuni executate ntr-o secund . -Setul de instruc iuni - condi ioneaz indirect viteza de calcul. Cu ct modul de codificare a instruc iunilor este mai simplu i secven a microopera iilor este mai rapid , cu att microprocesorul va avea o vitez de lucru mai mare. Microprocesoarele cu set complet de instruc iuni (CISC) consum un timp relative ridicat pe instruc iune, dar compenseaz acest lucru printr-o gam divers de instruc iuni. Spre deosebire de ele, microprocesoarele cu set redus de instruc iuni (RISC) sunt optimizate astfel nct instruc iunile s fie executate foarte rapid, chiar mai multe ntr-un singur tact ma in .

Arhitectura intern a unui microprocessor


Ca orice unitate central a unui sistem de calcul, microprocesorul con ine urm toarele componente principale: - unitatea de control CPU ; - unitatea logico-aritmetic ALU; - registre interne; Acestea comunic ntre ele prin c i de transfer informa iei numite magistrale, ce leag ntre ele mai multe dispozitive, dar la un moment dat doar dou dispozitive pot schimba informa ie: sursa i destina ia. Coordonarea transferurilor pe magistral se face de c tre 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 urm toatea: 4

ACC ALU TMP PS

REG DCD X B R3 R1 R4 R2 BI

ADD BUS

DATA BUS IR CLK Gen


Cuartz

PC SP CPU CMD BUS INT

Inst DCD

Reset

Unitatea de control
Asigur sincronizarea i coordonarea opera iilor din interiorul i exteriorul microprocesorului. Ca orice automat secven ial 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 frecven e ntre 1 i 40 MHz (microprocesoarele ce echipeaz calculatoarele moderne ajung pn la frecven e de ordinal GHz). n principal, unitatea de control solicit instruc iunile stocate n memoria de program, le decodific i pe baza acestora comand func ionarea celorlalte blocuri (ALU, registre etc ) interne microprocesorului, n vederea execut rii corecte a acestora.

Unitatea logico aritmetic


ALU execut opera iile aritmetice i logice impuse de instruc iunile programului, sub coordonarea direct a unit ii de control. Opera iile aritmetice pot fi: adunare i sc dere (de baz - obligatorii), respectiv nmul ire, mp r ire, ridicare la putere (suplimentare). Opera iile logice pot fi: NU, I, SAU (de baz - obligatorii), respectiv SAU EXCLUSIV, deplas ri, rotiri (suplimentare). Participan ii la o opera ie aritmetic sau logic se numesc operanzi, iar semnul grafic asociat acesteia se nume te operator. Dac opera ia necesit un singur operand (schimbarea semnului sau negarea), ea se nume te opera ie unar . Dac opera ia necesit 2 operanzi (adunare, I logic), ea se nume te binar .

Registrele interne
Au rolul de a stoca temporar operanzii i rezultatele vehiculate prin ALU, pe parcursul uneia sau mai multor instruc iuni. Registrele folosite n mod uzual la calcule se numesc registre generale, iar cele folosite la opera ii speciale (adresarea, manevrarea stivelor) se numesc registre func ionale. Registrele generale pot ndeplini mai multe roluri: - manevr pentru stocarearea temporar a unui operand sau a unui rezultat; 5

- acumulator (ACC) registru folosit n opera iile de adunare pentru cumularea unui ir de valori (unul din operanzi se g se te ntr-un registru de lucru, iar cel lalt l constituie chiar con inutul acumularorului), iar la sfr it 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 loca ii 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 opera ii de tipul PUSH, POP, precum i execu ia subrutinelor sau a trat rii ntreruperilor. Un microprocesor posed cel pu in 2 registre generale (acumulator i manevr ). Majoritatea microprocesoarelor folosesc seturi de 4 16 registre, ce pot prelua unul din rolurile prezentate mai sus. Registrele func ionale ndeplinesc sarcini dedicate pentru controlul derul rii instruc iunilor n microprocesor. -Registrul de stare program (PS) con ine o serie de informa ii ce descriu starea execu iei progarmului (indicatorii de condi ie, care reprezint modul de terminare a unei opera ii logico-aritmetice, utilizat la realizarea salturilor condi ionate, precum i a indicatorilor de semnalare a evenimentelor speciale i a modurilor de lucru); -Registrul de instruc iuni (IR) destinat stoc rii instruc iunii pe parcursul execu iei sale; -Contorul de program (PC) indic n permanen instruc iunea curent (de executat);

Execu ia instruc iunilor i indicatorii de condi ie


Vom considera citirea i execu ia unei instruc iuni tipice de un cuvnt. Pentru aceasta: -de la adresa con inut n contorul de program (PC) interfa a de magistral cite te un cuvnt, printr-un ciclu de citire al instruc iunii -con inutul loca iei citite este transferat prin magistrala intern n registrul de instruc iuni (IR); -contorul de program este incrementat pentru a indica instruc iunea imediat urm toare; -imediat ce codul instruc iunii este disponibil, n registrul de instruc iuni (IR), el este decodificat i transformat n semnale de activare a diverselor microopera ii din care este compus execu ia propriu-zis a instruc iunii; -nc din faza final a execu iei instruc iunii, se poate declan a citirea instruc iunii urm toare; n cazul instruc iunilor de mai multe cuvinte, se fac referiri succesive la memorie. Multe microopera ii presupun folosirea ALU pentru calcule ascunse (calcule de adres ). Opera iile 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 opera iei executate. Ace ti bistabili se numesc indicatori de condi ie i ei pot fi testa i n instruc iuni de salt condi ionat. Indicatorii cei mai utiliza i sunt prezenta i 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 opera ii ntre numere cu semn are un semn incorect (datorit transporturilor nedorite spre pozi ia semnului).

Seturi de instruc iuni


Instruc iunea este o opera ie elementar ce se execut de microprocesor n cadrul unui program. Orice instruc iune este identificat pe baza unui cod de opera ie ce face parte integrant din corpul acesteia. Codul de opera ie este completat de informa ii suplimentare, numite uzual argumente. Codul opera iei este singura por iune a instruc iunii care se decodific intern i declan eaz secven a de microopera ii din unitatea de comand (exist instruc iuni formate numai din cod). 6

Lista complet de instruc iuni pe care o poate interpreta i executa un microprocesor se nume te set de instruc iuni. Instruc iunile sunt stocate n memorie sub form de cuvinte consecutive, care materializeaz programul existnd dou categorii de instruc iuni mp r ite pe baza formatului: - instruc iuni cu format fix la care lungimea acestora i structura diverselor cmpuri componente este fix , indiferent de codul instruc iunii; - instruc iuni cu format variabil la care lungimea i structura cmpurilor componente este dependent de codul instruc iunii. Formate uzuale de instruc iuni a) b) c) d) CO Cod opera ie CO Cod opera ie CO Cod opera ie CO Cod opera ie AO Adres operand AO Adres operand AO Adres operand AO Adres operand AO Adres operand AR Adres rezultant AI Adres instruc iune

AR sau AI Adres rezultant sau Adres instruc iune

AO sau AI Adres operand sau Adres instruc iune AO sau AI Adres operand sau Adres instruc iune

a) - instruc iune cu patru adrese: dou adrese de operanzi, o adres pentru rezultat i o adres pentru urm toarea instruc iune. Formatul este incomod, datorit num rului mare de argumente, care nu sunt folosite ntotdeauna. b) - instruc iune cu trei adrese: dou adrese de operanzi i o adres pentru rezultat sau pentru urm toarea instruc iune. n acest caz se presupune c instruc iunile sunt plasate n loca ii succesive, astfel c adresa instruc iunii urm toare este subn eleas . Instruc iunile care nu respect aceast secven (salturi, apeluri de subrutine), de regul nu sunt instruc iuni de calcul i ca urmare ultimul cmp poate fi folosit pentru adresa urm toarei instruc iuni de executat. c) - instruc iuni cu dou adrese: dou adrese de operand, din care ultima poate fi pentru urm toarea instruc iune. Rezultatul unei opera ii este depus ntr-un loc implicit cunoscut (de obicei, n acumulator). d) - instruc iuni cu o singur adres : o adres de operand sau pentru urm toarea instruc iune. n aceast situa ie att unul din operanzi, ct i rezultatul opera iei au un loc prestabilit. Acest format este cel mai economic. Microprocesoarele actuale folosesc , de obicei , instruc iuni 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 .

Instruc iuni de transfer de date


Transfer informa ia dintr-un registru (sau loca ie de memorie) n alt registru. Opera iile curente sunt de transfer (nc rcare, memorare) i interschimbare. Instruc iuni aritmetice i logice n aceast categorie intr : adunare (ADD), sc dere (SUB), nmul ire (MUL), mp r ire (DIV), complementare (CPL), test i comparare, I logic (AND), SAU logic (OR), SAU exclusiv (XOR), negare (NEG), incrementare (INC), decrementare (DEC), deplas ri stnga sau dreapta, rotiri stnga (RL) sau dreapta (RR), tergerea (CLR) unui registru sau nscrierea unui bit cu o valoare dorit (SETB/RESB).

Instruc iuni de control al programului Instruc iunile din acest categorie au drept caracteristic faptul c oricare din ele modific derularea secven ial a programului, provocnd nc rcarea contorului de program cu o valoare dintr-un cmp de adres al instruc iunii curente, sau cu o adres calculat ntr-un pas precedent al programului. O instruc iune de ramificare, numit i salt, determin p r sirea secven ei normale a programului, f r un mecanism de re inere a locului unde s-a ntmplat acest lucru. O posibil revenire este l sat complet n seama programatorului. Exist dou tipuri de salt: -salt necondi ionat (JMP); -salt condi ionat (JZ, JC), ce are loc doar dac este ndeplinit o condi ie specificat prin starea indicatorilor de condi ie pozi iona i anterior. Unele microprocesoare au o instruc iune, considerat tot de salt, care determin CPU s ignore una sau mai multe instruc iuni dintr-o secven (SKIP). Instruc iunile de apel (CALL) i revenire (RET) din subroutine, realizeaz i salvarea adresei de ntoarcere (a locului de unde trebuie reluat programul dup execu ia subrutinei). Instruc iuni de control al microprocesorului n acest grup pot fi nscrise unele instruc iuni speciale de control: -oprire (HALT) ce suspend execu ia programului curent pn la apari ia unei cereri de ntrerupere extern ; -nici o opera ie (NOP); -activarea (EI) sau dezactivarea (DI) sistemului de ntreruperi. Instruc iuni de intrare / ie ire Acest grup include dou instruc iuni de transfer, cu porturi de intrare/ie ire, adic citire port (IN) sau scriere port (OUT).

Tehnici de adresare a memoriei


Din analiza formatelor de instruc iuni, am observat c pentru a defini complet opera ia de executat este nevoie s cunoa tem locul unde sunt amplasa i 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 num r redus de bi i (uzual 3 sau 4 bi i), ce poate face parte chiar din cmpul destinat codului opera ie. n al doilea caz, adresa loca iei de memorie unde se afl operandul este precizat ntr-un cmp separat, ce face parte din corpul instruc iunii. Reg sirea unei informa ii presupune determinarea adresei utiliznd un set de conven ii 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 opera ia executat , n timp ce al doilea operand se afl ntr-un registru de lucru. Multe instruc iuni 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 prezen a unui operand n memorie, n care adresa lui nu mai poate fi implicit cunoscut . Corpul instruc iunii are un cmp explicit pentru adres . n timpul execu iei instruc iunii se mai face o referire suplimentar la memorie, pentru extragerea operandului. 8

Ex : ADD r , adr

r + ( adr ) ,

unde (adr) este con inutul loca iei de memorie cu adresa adr. n cazul instruc iunii de forma: ADD adr ACC ACC + ( adr ) , avem un caz tipic de combina ie a adres rii implicite i a celei directe. Adresare imediat Presupune aducerea operandului chiar n corpul instruc iunii (nlocuind corpul de adres cu operandul). Avantajul const n economia unor referiri suplimentare la memorie n timpul execu iei unei instruc iuni, util mai ales la opera ii cu constante. ADD r ,4 r r+4 , unde 4 este o constant plasat n corpul instruc iunii. 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 num rul de ordine al elementului din ir, care trebuie prelucrat. n corpul instruc iunii sunt specificate adresa de baz i adresa registrului de index. Ex : ADD 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 instruc iunii. 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 n elege con inutul loca iei de memorie cu adresa dat de registrul de baz la care s-a ad ugat 10. nlocuind constanta 10 cu x, adic B[x] se ob ine o adresare bazat i indexat . Adresarea indirect Este o modalitate de reg sire a informa iei pe baza interpret rii operandului, nu ca o valoare de calcul ci ca o nou adres de unde se poate extrage valoarea sa adev rat . Adresarea indirect permite partajarea unei date ntre mai multe unit i de program, dar i accesul la irurile de date. EX : ADD r , (adr) r r+(adr) Prin (adr) se n elege con inutul loca iei de memorie cu adresa adr, la care se afl o nou adres . Alte tipuri de adres ri: -adresare relativ la care calculul adresei se face n raport cu con inutul contorului de program; -adresare cu autoincrementare i autodecrementare (punere i extragere din stiv ); -adresare paginat ; De obicei microprocesoarele nu admit combinarea oric rei insruc iuni cu orice mod de adresare. Instruc iunile de transfer implementeaz cele mai multe moduri de adresare. r r + ( adr +x )

Microprocesorul i circuitele externe


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

Magistral extern a unui microprocesor Realizarea unui sistem cu microprocesor se face n jurul unei magistrale ce serve te drept cale de transfer a informa iei. 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 . Leg tura ntre cele dou magistrale se face printr-o interfa special , al c rui rol este de a asigura att o separare electric , un num r relativ redus de terminale externe, dar i adaptarea la acela i protocol de comunica ie ntre dispozitive. Liniile unei magistrale se grupeaz n date (DATA BUS), adrese (AD BUS), comenzi/control (CMD BUS) i aliment ri. Magistrala de date (DATA BUS), permite transferal informa iei bidirec ional, fiind compus dintr-un num r 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 destina ie, sensul de transfer fiind unic i dictat de cele dou tipuri de opera ii de baz admise: citire i scriere. Rezult c dispozitivele ce se conecteaz mpreun pe aceea i magistral de date trebuie s dispun de buffere cu trei st ri (3-State) astfel nct s nu apar conflicte electrice n timpul transferurilor. Magistrala de adrese (AD BUS) este unidirec ional (de la microprocesor spre exterior) i serve te la vehicularea adreselor ce permit localizarea n memorie sau ntr-un registru de interfa a informa iei utile. Magistrala de comenzi (CMD BUS) con ine semnale unidirec ionale, menite s asigure coordonarea i sincronizarea transferurilor cu dispozitivele externe precum memorie i interfe e I/O. Aceste semnale permit identificarea tipului de opera ie de transfer ( RD -citire, WR -scriere), natura dispozitivului ( MRQ -memorie,
IORQ -interfe e I/O), precum i natura informa iei vehiculate (date, MI -instruc iuni). Microprocesorul dispune i de linii speciale pentru generatorul de tact (X1 i X2, pentru conectarea cuar ului sau CLK pentru semnalul de tact extern),precum i pentru sincronizarea cu dispozitivele externe (RDY), ini ializarea (RESET), cereri de ntrerupere (INT) i de magistral (BRQ i BACK). Unele microprocesoare folosesc acelea i linii pentru adrese i date, acestea fiind multiplexate. La nceputul fiec rui transfer, procesorul depune nti adresele (ce pot fi nghe ate ntr-un registru LATCH) i apoi folose te acelea i 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 posibilit i de citire/scriere (RAM), care este volatil i serve te la stocarea temporar a informa iilor (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 excep ia 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 c rui rol este de a func iona ca tampon ntre CPU i memoria extern , mai lent , dar de mare capacitate. Aceast memorie, numit memorie CACHE, realizeaz func ia de accelerator, mpreun cu un dispozitiv intern de gestionare, func ie ce este complet transparent pentru utilizator. Subsistemul de intrare/ie ire Face leg tura ntre microprocesor i periferice prin interfe e specializate, numite generic porturi. n principiu, transferal datelor de la sau c tre porturi se face cu instruc iuni speciale, numite instruc iuni de 10

intrare/ie ire. Citirea unui port se face cu o instruc iune de intrare (IN), iar scrierea c tre un port se face cu o instruc iune de ie ire (OUT). Utilizatorul are acces la func iile interfe ei prin intermediul registrelor acesteia. Registrele de interfa se grupeaz n trei categorii: -registre de control, destinate manevr rii interfe ei i perifericului asociat; -registre de stare, cu ajutorul c rora se verific condi iile i modul de execu ie al opera iilor, precum i erorile ap rute; -registre de date, prin care se face transferul propriu zis. Structura simplificat a unei interfe e este prezentat n figura urm toare:
CMD BUS

AD BUS

Decodor i control interfa

Registru de control

Registru de stare Registru de date DISPOZITIV PERIFERIC

DATA BUS

Tampon

Registru de date

Tipuri de Interfe e
-interfa a paralel permite interconectarea perifericelor cu vitez de lucru ridicat ; -interfa a serial permite interconectarea perifericelor cu vitez redus , dar folosind un num r 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; -interfa a video: permite ob inerea imaginilor grafice ale caracterelor sau curbelor pe un ecran monitor TV sau cu cristale lichide.

Transferuri , cicluri , st ri
Principala utilitate a unei magistrale este transferul informa iei. Pentru aceasta, un microprocesor trebuie s precizeze: -natura opera iei 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/ie ire ( MRQ memorie, IORQ - interfa a I/O); -adresa loca iei sau registrului dorit (AD BUS);

11

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 nume te stare, iar fiecare ciclu are un num r determinat de st ri. Ciclurile de citire/scriere ale microprocesorului sunt date n diagramele urm toare: Ciclu de citire T1 CLK AD BUS MRQ , IRQ RD DATA BUS Dat stabil Adres stabil dres stabil T2 T3

Ciclu de scriere T1 CLK AD BUS MRQ , IRQ WR DATA BUS Dat stabil Adres stabil T2 T3

nti microprocesorul pune o adres valid pe liniile AD BUS (loca ie de memories sau registru I/O), apoi activeaz pe rnd semnalele care specific natura dispozitivului ( MRQ sau IORQ ) i apoi opera ia dorit ( RD sau WR ). n timpul ciclului de citire, microprocesorul a teapt dispozitivul adresat s pun pe magistrala de date un cuvnt valid, pe care-l preia spre sfr itul ciclului.Dac dispozitivul nu poate r spunde n timp util, el poate folosi dezactivarea liniei READY, for nd microprocesorul s a tepte. Folosirea liniei READY pentru sincronizarea cu dispozitive lente determin microprocesorul s insereze automat o succesiune de st ri de a teptare, acestea sunt introduse n interiorul ciclului, lungindu-i convenabil durata. Dac dispozitivul adresat nu activeaz linia READY, sistemul se poate bloca. 12

ntreruperi i accesul direct la memorie


O problem important n orice sistem de calcul este sincronizarea activit ii microprocesorului cu evenimentele externe. Toate aceste evenimente au un punct comun: sunt asincrone n raport cu execu ia programului de c tre procesor. Programul trebuie informat printr-un mijloc oarecare c un astfel de eveniment s-a produs i c trebuie tratat corespunz tor (printr-o secven specific numit rutin de tratare). Exist trei tipuri de mecanisme utilizate pentru tratarea evenimentelor externe: - a teptarea (bucla) programat ; - ntreruperi; - accesul direct la memorie. A teptarea programat n forma sa cea mai simpl , const ntr-o secven de program care cite te n permanen o informa ie 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 facilit i hardware oferite de microprocesoare, prin care un dispozitiv periferic atrage aten ia asupra producerii unor evenimente externe ce reclam o interven ie prompt . nainte ca o ntrerupere s poat avea loc, este necesar s se ndeplineasc condi iile: -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 con in secven e de cod special destinate lucrului cu ntreruperi (rutine de tratare a ntreruperilor); -perifericul trebuie s genereze semnalul de ntrerupere. Apari ia unei ntreruperi n activitatea curent a microproesorului determin urm toarea secven de evenimente: -instruc iunea n curs de execu ie se ncheie normal; -starea intern a procesorului (registrul de stare i contorul de program) este salvat pentru a permite mai trziu reluarea activit ii din locul unde a fost ntrerupt ; -microprocesorul ncarc noi informa ii de stare i execut un salt de la o rutin de tratare specific , ce realizeaz toate ac iunile urgente implicate de apari ia evenimentului; -la sfr itul rutinei de tratare (marcat cu o instruc iune de revenire din ntrerupere IRET) se restaureaz starea procesorului salvat anterior; -restaurarea este ncheiat cu renc rcarea contorului de program cu valoarea salvat i prin aceasta, reluarea programului ntrerupt. Observa ii -tratarea ntreruperii trebuie s nl ture cauza apari iei acesteia, astfel secven a de mai sus se poate repeta; -dac sosesc noi ntreruperi de aceea i natur , n timpul execu iei rutinei de tratare, se poate ajunge la situa ia ca aceasta s fie restartat recursive, pn la apari ia unor erori sau pierderea controlului asupra programului; -procesoarele actuale suport instruc iuni ce permit activarea, respectiv dezactivarea trat rii ntreruperilor. Pe baza acestora se pot elimina ntreruperile neprev zute. 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. R spunsul 13

este dat de introducerea unui mecanism de multiplexare/arbitrare a cererilor de ntrerupere, bazat pe o logic cu priorit i. O solu ie este folosirea unui controler de ntreruperi. Acesta dispune de un codor de priorit i care determin solicitantul cu cel mai mare nivel de prioritate i genereaz semnalul de ntrerupere c tre procesor. n momentul accept rii ntreruperii, controlerul pune pe magistral un cuvnt de identificare al perifericului solicitant, astfel nct microprocesorul s fie capabil s activeze rutina de tratare specificat . O alt solu ie 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 ie ire de semnalizare a activit ii c tre perifericul urm tor (IEO). Dac IEI 1, atunci perifericul n cauz poate genera o ntrerupere. Dac acela i periferic se afl n curs de tratare, el va pune IEO 0. Un dispozitiv cu IEI 0 este obligat s transmit IEO 0. Prioritatea este stabilit pe baza pozi iei fizice a perifericului ntr-un lan de priorit i. Odat generat ntreruperea i acceptat de procesor, perifericul i va pune cuvntul de identificare pe magistral , pentru a permite activarea rutinei de tratare corect .

Periferic 1

Periferic 2

Controler de 1 ntreruperi

INT

MICROPROCESOR

Periferic n

NMI

ntrerupere nemascabil

14

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

Accesul direct la memorie


Permite ca dou procesoare s partajeze aceea i magistral n scopul realiz rii accesului la acelea i resurse. Unul dintre ele este chiar unitatea central a sistemului, iar cel lalt este dedicat numai intercept rii i arbitr rii cererilor provenite de la periferice, precum i coordon rii transferurilor solicitate, f r a mai apela la unitatea central . Acest procesor dedicat controler pentru acces direct la memorie (DMA) func ioneaz n dou moduri: -modul slave, fun ionnd ca un circuit de interfa obi nuit, ce poate fi programat prin instruc iuni I/O, programarea are ca scop precizarea loca iei 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 informa ie, genernd toate semnalele de control necesare. Ciclurile DMA se pot ntrep trunde cu cele CPU, mai ales dac rata de transfer a perifericului nu este prea mare, caz n care execu ia programului principal este ncetinit foarte pu in. 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 c tre 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 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.

15

DRQ DACK

DRQ0 DACK0 BREQ BACK

BREQ BACK

DRQ DACK Periferice

DRQ1 DACK1

Microprocesor

Controler DMA Avantajul imediat al tehnicii de transfer prin acces direct la memorie este c acesta permite eliberarea procesorului de sarcina gestion rii directe a intr rilor i ie irilor de date din sistem: este suficient s program m 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 solicitate. Unitatea de transfer a datelor prin DMA este blocul, de aceea la sfr itul transferului este considerat a fi epuizarea blocului de date.

Microcontrolerul 8051(INTEL)
Familia de microcontrolere de 8 bi i MCS51 lansat i produs de Intel a devenit practic un standard industrial. Ea a stat la baza dezvolt rii de microcontrolere compatibile realizate de firme ca: Philips, Siemens, Dallas, etc. Arhitectura MCS51 este optimizat pentru aplica ii de control. Intel ofer o gam larg de microcontrolere compatibile cu 8051 ce difer ntre ele doar prin op iuni i tehnologie. Principalele caracteristici ale familiei MCS51 sunt prezentate n tabelul urm tor: CHIP 8031 8051 80C51 8032 8052 80C52 89C52 ROM intern 4k 4k 8k 8k 8k Flash RAM intern 128 128 128 256 256 256 256 Timere 16 biti 2 2 2 3 3 3 3 Surse int. 5 5 5 6 6 6 6

Microcontrolerul 8051 are n structura sa: y unitate aritmetica i logic de 8 bi i ce poate executa opera ii de adunare, sc dere, nmul ire, mp r ire, incrementare, I, SAU, SAU Exclusiv, complementare i rotire, y memorie de program de tip ROM 4k octe i y memorie de date RAM 128 octe i y 4 porturi paralele de intrare/ie ire P0 z P3 de 8 bi i y un port serial duplex 16

y dou circuite num r toare/temporizatoare N/T0, N/T1 de cte 16 bi i y 5 surse de ntrerupere cu dou nivele de priorit i y generator de tact 1, 2 z 12MH z Deasemenea microcontrolerul are posibilitatea de adresare a unei memorii externe de program i a unei memorii externe de date cu capacitate maxim de 64k octe i. Toate microcontrolerele din familia MCS51 au spa iu separat pentru memoria de date i de program. Acest lucru permite o cre tere de vitez datorat att suprapunerii par iale 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 octe i de program sunt n chip. Restul se afl n exterior, iar pentru a citi aceast memorie de program extern se folose te semnalul PSEN (Program Store Enable). Memoria de date ocup un spa iu separat fa de memoria program. La 8051 exist 128 octe i RAM n chip. Memoria de date extern poate fi accesat prin generarea de c tre 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
Dup reset CPU i ncepe execu ia de la adresa 0000H unde trebuie s existe o instruc iune 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:
FFFFh FFFFh

ROM extern ROM extern

2000h 1FFFh ROM intern

sau

0000h

0000h

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 octe i rezerva i. Rutinele mai lungi pot folosi o instruc iune de salt peste loca iile rezervate ntreruperilor urm toare, dac acestea se folosesc. Cei 4k octe i (8k octe i la 8x52) de memorie program pot fi n capsul sau extern. Aceast selec ie este posibil folosind linia EA (External Acces). Daca EA=0 se acceseaz 64k octe i memorie extern . Dac EA=1, atunci se execut program din: - memoria intern 4k octe i (0000h-0FFFh); - memoria externa de pn la 64k octe i ntre adresele 1000h i FFFFh. 17

n timpul execu iei 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:
P0 DO-D7

80C51
ALE P2 PSEN

LATCH

AO-A7

STB

MEM
PROG
A8-A15 OE

Pentru citirea memoriei program se emite octetul inferior al PC (Program Counter) ca o adres la portul P0. Cu ajutorul 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 bi i. Execu ia 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 octe i adresabil direct i indirect n spa iul de adresare 00h z 7 Fh . Aceast zon este mp r it astfel: Error!
7Fh Zona de uz general 30h 28h 20h 18h 10h 08h 00h 00h 1Fh 17h 0Fh Zona registrelor R0-R7 7Fh 2Fh Zona adresabila la nivel de bit

R0

R1

R2

R3

R4

R5

R6

R7 07h

Spa iul 00h-07h reprezint , dup reset, grupul de registre R0-R7 utilizate pentru surse sau destina ii n multe instruc iuni ca: ADD A,Rn MOV Rn,#data 18

ntr-o astfel de instruc iune, registrele R0-R7 sunt adresate direct cu un cmp de 3 bi i ( n ! 0 z 7) cuprins mpreun cu codul opera iei, n primul octet corespunz tor codului ma in al instruc iunii. Ex: ADD A,Rn ADD A,R0 ADD A,R1 .................... ADD A,R7 cod instr.: p p p 0010.1rrr 28h 29h 2Fh

Registrele R0 i R1 sunt utilizate i pentru adresarea indirect a memoriei de date interne ca de exemplu, n instruc iunile: MOV A,@Ri ADD A,@Ri INC @Ri n aceste instruc iuni indicele i cu valorile 0 sau 1 este precizat n primul cuvnt din codul ma in printr-un bit. Deasemenea, registrele R0 i R1 sunt utilizate pentru adresarea indirect a memoriei de date externe n instruc iunile: MOVX A,@Ri MOVX @Ri,A n aceste instruc iuni, con inutul registrului R0 sau R1 reprezint octetul mai pu in semnificativ al adresei. Octetul mai semnificativ al adresei este dat de portul P2. Exist posibilitatea ca, prin programarea bi ilor RS1 i RS0 ai registrului de stare a programului (PSW), grupul de registre R0-R7 s fie ales conform tabelului: PSW.4 RS1 0 0 1 1 PSW.3 RS0 0 1 0 1 Adresa grupului R0-R7 00h-07h 08h-0Fh 10h-17h 18h-1Fh

Loca iile memoriei din spa iul 20h-2Fh reprezint o zon de memorie adresabil i la nivel de bit n instruc iuni de tipul: CPL bit JB bit,rel Adresarea bi ilor se realizeaz direct, cu un octet con inut n codul ma in al instruc iunii corespunzatoare. Ex: CPL CPL C bit are codul are codul 10110011 10110010 adr.bit

Zona de memorie 80h-FFh este o zon de memorie cu acces direct i pe bit folosit pentru registrele cu func iuni 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:

19

FFh

Adresabila numai indirect (8x52)

Adresabila numai direct


(SFR)

80h 7Fh

Adresabila direct si indirect

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

Registrele interne ale 8051


Registrele interne se numesc registre cu func ii speciale i sunt adresabile doar direct n spatiul de adresare 80h-FFh. Deasemenea se pot adresa direct bi ii unora din registrele cu func ii speciale. Registrele interne i func iile speciale ale acestora: yA registru acumulator (8 bi i) Se foloseste ca surs i destina ie, prin adresare implicit , n multe opera ii aritmetice i logice. De exemplu, n instructiunea ADD A,@data, acumulatorul d un operand surs i este i destina ia rezultatului prin adresarea implicit . yB registru de 8 bi i Este un registru ce se utilizeaz ca surs i destina ie, prin adresare implicit , n instruc iunile de nmul ire MUL AB i mp r ire DIV AB precum i pentru uz general prin adresare direct . yDPTR registru pointer pentru date (16 bi i) compus din DPH (8 bi i) i DPL (8 bi i). Registrul DPTR se utilizeaz pentru adresarea indirect a memoriei de date extern n instruc iunile MOVX A,@DPTR i MOVX @DPTR, A precum i pentru adresarea indirect a memoriei de program n instruc iunea MOVC A,@A+DPTR. ySP registru indicator de stiv (8 bi i). Stiva necesar func ion rii microcontrolerului este organizat n memoria intern de date. Dup reset, SP are valoarea 07h. La scriarea unui octet n memoria stiv , con inutului registrului SP se incrementeaz cu o unitate. yPSW registru de stare a programului (registru cu indicatorii de condi ii) Indicatorul de transport C (PSW.7) se pozi ioneaz la nivel 1 logic n urma execu iei unei instruc iuni de adresare care a produs un transport i n urma execu iei unei instruc iuni de sc dere care a necesitat un mprumut. Dac execu ia unei instruc iuni de sc dere/adunare nu produce mprumut/transport, indicatorul C se pozi ioneaz la nivel logic 0. Astfel, indicatorul C se utilizeaz pentru aplica ii n opera ii aritmetice cu operanzi f r semn. Deasemenea indicatorul C este folosit i n opera ii logice i de transfer al controlului: ADD A,direct ANL C,bit RLC A JC Rel Indicatorul de transport auxiliar AC (PSW.6) se pozi ioneaz la nivel logic 1 n urma unei opera ii de adunare/sc dere care produce transport/mprumut din/n pozi ia bitului 3. 20

Indicatorul de dep ire OV (PSW.2) se pozi ioneaz la nivel logic 1 n urma execu iei unei instruc iuni de adunare dac s-a produs un transport din pozi ia bitului 6 i nu s-a produs un transport din pozi ia bitului 7 indicnd astfel dep irea domeniului de valori ( 128 z 127 ) . Indicatorul de paritate P (PSW.0) con ine suma modulo 2 a bi ilor registrului acumulator. La nivel logic 1 indic un num r impar de bi i cu nivel logic 1 n acumulator. Bitul P nu este modificat de nici o instruc iune de scriere n registrul PSW. Ceilal i bi i ai PSW sunt: F (PSW.5) disponibil pentru uz general, PSW.1 rezervat pentru dezvolt ri ulterioare (nefolosit), RS1 i RS0 (PSW.4 i PSW.3) pentru selec ia grupului de registre R0-R7. y SBUF registru serial fiind compus de fapt din dou registre separate de 8 bi i avnd aceea i adres direct , unul pentru transmisie i unul pentru recep ie folosite pentru interfa a 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 recep ie se cite te con inutul bufferului de recep ie. Adresa direct a registrului SBUF este 99H. yRegistrele de control exist mai multe astfel de registre, care con in bi i de control i de stare pentru ntreruperi, temporizatoare/num r toare i portul serial. Ele vor fi descrise la func iile corespunzatoare. yRegistrele de temporizare exist dou perechi de registre de cte 8 bi i T0 (TH0, TL0) T1 (TH1, TL1) folosite ca num r toare/temporizatoare de 16 bi i programabile n 4 moduri diferite. Celelalte registre interne i func iile 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 bi i de adres din instruc iune. Doar RAM-ul intern de date i SRF pot fi adresate direct. Ex: MOV A,30h MOV A,DPL - Adresarea indirect n adresarea indirect instruc iunea specific un registru ce con ine adresa operandului. Doar RAM-ul intern i cel extern poate fi adresat indirect. Adresa pe 8 bi i a operandului se afl n unul din registrele R0 sau R1. Registrul Ri, i=0 sau 1 este precizat printr-un bit din codul ma in al instruc iunii. 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 bi i a operandului se afl n DPTR fiind folosit pentru transfer de date din memoria RAM extern n instruc iuni de tipul: MOVX A,@DPTR MOVX @DPTR,A - Instruc iuni cu regi trii Instruc iunile cu regi trii de lucru interni (R0-R7) au avantajul elimin rii unui octet de adres din instruc iune deoarece adresa operandului se poate coda pe 3 bi i din codul instruc iune. Ex: MOV A,Rn 1110 1rrr MOV Rn,direct 1010 1rrr adr direct Exist i instruc iuni specifice orientate pe manevrarea regi trilor. Unele instruc iuni opereaz doar n acumulator sau DPTR nefiind necesar nici un octet suplimentar de adres n codul instruc iunii. Ex: CLR A 1110 0100 DEC A 0001 0100 DIV A,B 1000 0100 21

JMP MOVX

@A+DPTR A,@DPTR

0111 0011 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 100 p A MOV A,#64H - Adresarea indexat Se folose te pentru a accesa memoria de program ce poate fi doar citit . Acest mod se folose te pentru a citi tabele din memoria de program. Registrul de baz de 16 bi i (unul din registre DPTR sau PC) indic baza tabelului iar acumulatorul este inc rcat cu pozi ia din tabel dorit . Adresa de citire din tabel rezult ca sum dintre con inutul acumulatorului i pointerul de baz .

Tipuri de instruc iuni


Instruc iuni aritmetice Aceste instructiuni sunt: Adunare ADD A,<BYTE> Adunare cu C ADDC A,<BYTE> Sc dere SUBB A,<BYTE> Incrementare INC <BYTE> Decrementare DEC <BYTE> nmul ire MUL AB mp r ire DIV AB Ajustare zecimal DA Instruc iuni logice Instruc iunile 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 opera ie de tipul ANL A,<byte> poate lua una din formele urm toare: - Adresare direct ANL A,30H - Adresare indirect ANL A,@R1 - Adresare registru ANL A,R6 - Adresare imediat ANL A,#100 22

Toate opera iile asupra memoriei de date pot fi executate f r a folosi acumulatorul. De ex. XRL <byte>, #data execut un sau exclusiv ntre octetul de memorie i data imediat f r folosirea acumulatorului. Instruc iunea SWAP A schimb ntre ele partea superioar i cea inferioar din acumulator. Instruc iuni pentru transferul datelor cu memoria intern Formatul general al instruc iunii este: MOV <dest>,<sursa> i permite transferul ntre dou loca ii interne RAM sau SRF f r a folosi acumulatorul sau ntre un registru i o loca ie de memorie. Trebuie inut cont de faptul c pentru 8052 spa iul de memorie superior celor 128 octe i RAM poate fi adresat doar indirect, iar spa iul registrelor cu func ii speciale poate fi adresat doar direct. Stiva se afl n memoria RAM intern i cre te spre adresele superioare. Instruc iunea PUSH mai nti incrementeaz SP (Stach Pointer) i apoi depune octetul pe stiv . Instruc iunile PUSH i POP se folosesc doar n modul de adresare direct pentru a indica octetul ce va fi salvat sau restaurat. Dac stiva dep e te cei 128 de octe i din RAM-ul intern, octe ii depu i n continuare se pierd iar cei restaura i au valori nedeterminate. Instruc iunile de transfer includ i instruc iuni pe 16 bi i care pot fi folosite pentru a ini ializa pointerul de date DPTR pentru citiri de tabele din memoria program sau pentru accesul la memoria extern de date. Principalele instruc iuni care adreseaz spa iul 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 Instruc iunea XCH A,<byte> face ca acumulatorul i octetul s - i schimbe valorile ntre ele. Instruc iunea XCHD A,@Ri este asem n toare, dar doar cei mai pu in semnificativi 4 bi i sunt schimba i. Instruc iuni pentru transferul datelor cu memoria extern n acest caz poate fi folosit doar adresarea indirect . Alegerea tipului de transfer se face dup num rul de octe i de adres . Dac se dore te adresarea cu un singur octet de adres se vor folosi regi trii R0 sau R1. Pentru adresarea cu doi octe i de adres se va folosi registrul DPTR. Dezavantajul folosirii adresei pe 16 bi i este acela al folosirii portului P2 care astfel nu poate fi folosit pentru aplica ie. Selectarea memoriei externe se face cu opera ii de tipul MOVX ce pot fi: MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A Setul de instruc iuni al microcontrolerului 8051 con ine i dou instruc iuni pentru citirea tabelelor din memoria program. Aceste instruc iuni sunt: MOVC MOVC A,@A+DPTR A,@A+PC

Instruc iunea MOVC A,@A+DPTR transfer intrarea din tabel n acumulator. DPTR este setat s indice nceputul tabelei iar acumulatorul intrarea din tabel. Instruc iunea MOVC A,@A+PC se compune din urm toarele microopera ii: ( PC ) n ( PC )  1 ( A) n (( A)  PC ) Folosirea acestui tip de citire a datelor este ilustrat de programul urm tor: MOV A,INTR_TABLE 23

CALL TABLE -----------------Subrutina TABLE va ar ta astfel: TABLE: MOVC A,@A+PC RET data1 ------dataN Imediat dup instruc iunea RET se plaseaz tabela cu intr ri de la 1 la 255. Intrarea 0 nu se foloseste deoarece n timpul execu iei instruc iunii MOVC, PC-ul con ine adresa instruc iunii de ntoarcere RET.

Offset relativ
Destina ia adresei unde se face un salt condi ionat este specificat n asamblor de un tabel sau de o adres n memoria program. Destina ia se d ca un offset relativ la pozi ia 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 ntre -128 i +127 octe i n memoria program, relativ la primul octet ce urmeaz dup instruc iune. Instruc tiuni de salt Aceste instruc iuni sunt: JMP addr JMP @A+DPTR Instruc iunea JMP addr ascunde de fapt trei instruc iuni: SJMP, AJMP, LJMP 1. SJMP formeaz adresa destina ie ca offset relativ, avnd doi octe i con innd codul opera iei i offsetul relativ. Distan a maxim de salt este limitat la -128, +127 octe i relativ la instruc iunea ce urmeaz dup SJMP. 2. LJMP formeaz adresa de salt ca o constant pe 16 bi i. Instruc iunea are 3 octe i constnd n codul opera iei i doi octe i de adres , destina ia fiind oriunde n spa iul de 64 k. 3. AJMP formeaz adresa destina ie ca o constant pe 11 bi i. Instruc iunea are 2 octe i lungime, unul con ine codul opera iei din 5 bi i i pe 3 bi i adresele cele mai semnificative. Al doilea octet con ine restul adresei. Adresa de salt poate fi oriunde n spa iul de 2k octe i relativ la instruc iunea ce urmeaz dup AJMP. JMP @A+DPTR ofer posibilit i de salt pentru lucru cu tabele. Adresa destina ie este ob inut ca sum dintre registrul DPTR i con inutul acumulatorului. Adresa de salt este pe 16 bi i. n mod uzual DPTR este setat cu adresa tabelului i func ie de adresa acumulatorului avem o anumit specifica ie. TABLE:AJMP CASE0 AJMP CASE1 AJMP CASEN MOV DPTR,#TABLE MOV A,INDEX RL A ;nmul ire cu doi JMP @A+DPTR Lucrul cu subrutine Apelul unei subrutine se face cu instruc iuni de tipul CALL adr. De fapt sunt dou instruc iuni LCALL i ACALL cu adresare pe 16 bi i, respectiv pe 11 bi i. Subrutinele trebuie s se termine cu RET pentru a reveni la instruc iunea de dup CALL. ntreruperile se vor termina cu RETI. Salturi condi ionate 24

Acestea specific destina ia adresei ca un offset relativ la instructiunea ce urmeaz dup instruc iunea de salt. Distan a de salt este limitat la -128 la +127 octe ti fa de primul octet al instruc iunii urm toare. Nu exist flag z n PSW. Instruc iunile JZ i JNZ testeaz direct con inutul acumulatorului dac este zero i n func ie de con inut face saltul sau continu programul. DJNZ este o instruc iune 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 Microcontrolerul 8051 con ine patru porturi paralele bidirec ionale de cte 8 bi i. Fiecare port are un registru intern de 8 bi i P0P3 i un amplificator de magistral bidirec ional. Prin structura microcontrolerului, porturile paralele pot realiza func ii alternative care determin utiliz ri 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/ie ire. Liniile portului P3 pot avea utiliz ri alternative. Portul P1 Un operand surs pentru o instruc iune de adresare direct a unui port poate fi dat de con inutul registrului portului sau de nivelele logice ale liniilor (pinilor) portului. Citire bistabil P1.x A1 Linia x Magistral intern comand scriere n bistabil P1.x

D T A2

Q Q T

Rs PIN P1.x

citire P1.x n instruc iunea ANL P1,A un operand surs este con inutul registrului portului P1. n instruc iunea ANL A,P1 un operand sursa este dat de nivelele logice corespunz toare ale pinilor portului P1. Aceast logic de func ionare se realizeaz prin comenzi corespunz toare de citire a bistabilelor P1.X, respectiv a pinilor P1.X. Nivelul logic dintr-un bistabil al unui port poate fi diferit de nivelul logic al pinului corespunz tor. De ex. Dac ie irea 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. Rezisten a Rs este o rezisten de sarcin activ cu rolul de a m ri viteza de comutare de la nivel logic 0 la nivel logic 1. Aceast m rire de vitez se ob ine prin generarea de c tre sarcina activ a unui curent de 30 mA pe durata a dou perioade ale generatorului de tact, ncepnd cu frontul de comutare 0 p 1 logic de la ie irea Q a bistabilului P1.X. Structura unei astfel de rezisten e active este :

25

Vcc
0,25mA linie ntrziere

T1

2T0
Q

T2 PIN P1.x

bistabil P1.x

Tranzistorul T2 cu canal ini ial, genereaz n permanen un curent de 0,25 mA. n regim sta ionar 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 m re te viteza de comutare de la nivelul logic 0 la nivelul logic 1 a semnalului de ie ire de la pinul P1.X. Portul P3 Portul P3 poate realiza acelea i func iuni ca i portul P1 i n plus poate fi utilizat pentru func ii alternative de intrare sau de la ie ire. Pentru realizarea func iei alternative de intrare corespunz toare unui pin P3.X circuitul con ine amplificatorul repetor A3 a c rui ie ire este conectat n structura microcontrolerului n concordan cu func ia alternativ realizat . comand citire bistabil P3.x A1 Vcc Linie x Magistrala interna comanda scriere bistabil P3.X D Q
Bistabil P3.x

Func ie alternativ (TXD , RD , WR )

Rs PIN P3.x

Q A2 A3 Func ie alternativ

comand citire pin P3.x

( RXD, T0 , etc)
Deasemenea pentru realizarea func iei alternative de intrare este necesar blocarea tranzistorului T care se ob ine prin aplicarea de nivele logice 1 la intr rile 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 func ie alternative de intrare. Func ia alternativ de ie ire corespunz toare unui pin P3.X se realizeaz prin comanda unei intr ri n circuitul I-NU, cealalt intrare fiind stabilit la nivel logic 1 prin programarea bistabilului P3.X. n cazul realiz rii func iei TXD (pin P3.1) linia de intrare n circuitul I-NU pentru func ia alternativ este la nivel logic 26

1 cu excep ia intervalului corespunz tor transmisiei unui caracter, declan at de scrierea unui octet n registrul intern SBUF. n cazul realiz rii func iilor WR i RD liniile de intrare n circuitele I-NU pentru func iile alternative sunt la nivel logic 1 , cu excep ia intervalelor corespunz toare ciclurilor de scriere, respectiv citire n/din memoria de date extern . Portul P2 Portul P2 are func ia 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 instruc iuni MOVC i n cicluri de acces la memoria de date extern cu instruc iuni MOVX n care adresarea se realizeaz cu registru DPTR. n aceste cicluri linia de comand adresare este la nivel logic 1 i impune pozi ia 1 pentru comutatorul k: Comand Bit de adres comand citire adres bistabil P2.x A1 Vcc Linie x Magistrala interna comanda scriere bistabil P2.X D Q
1 0 K

Rs PIN P2.x

Bistabil P2.x

Q A2

comand citire pin P2.x Astfel bitul de adres corespunz tor comand ie irea P2.X a portului. Deasemenea, nivelul logic 1 la ie irea circuitului I comand sarcina activ RS astfel nct s genereze un curent mai mare de 0,25 mA dac bitul de adres are nivel logic 1 . Se asigur astfel comanda corespunz toare a circuitelor de memorie extern . n afara intervalelor corespunz toare ciclurilor indicate mai sus portul P2 poate fi utilizat pentru intr ri/ie iri de uz general. Portul P0 Are func ia alternativ de transfer al octetului mai pu in semnificativ al adresei, precum i al octetului cod instruc iune sau dat n orice ciclu de acces la memoriile externe. Bit de adres /date Comand adres /date

comand citire bistabil P0.x

A1 Vcc Linie x Magistrala interna comanda scriere bistabil P0.X comand citire pin P0.x 27 D Q
1 K 0

Ts PIN P0.x

Bistabil P0.x

Q A2

n intervalele corespunz toare acestor cicluri, linia de comand adresare/transfer date, este la nivel logic 1 i impune pozi ia 1 pentru comutatorul k. Astfel prin liniile portului P0 se poate realiza transferul adresei i datei de intrare sau ie ire, prin multiplexarea n timp. La ie irea circuitului I se ob ine nivel logic 1 care deschide tranzistorul TS n intervalele de transfer bi i de adres cu nivel logic 1 , sau de ie ire bi i de date cu nivel logic 1 . n afara acestor intervale, tranzistorul Ts este blocat. n ciclurile de acces la memoriile externe, bistabilele (bi ii) registrului P0 se ncarc cu nivele logice 1 . n afara ciclurilor de acces la memoriile externe, portul P0 poate fi utilizat pentru intr ri/ie iri de uz general. Ie irile P0.X sunt de tipul dren n gol (Ts-blocat), iar intr rile P0.X sunt de impedan ridicat (T i TS = blocate, Q = 1 prin programare). Func ionarea sincronizat a microcontrolerului 8051 Pentru func ionarea sincronizat , microcontrolerul con ine un generator de tact. Semnalul de comand al generatorului de tact este dat de un oscilator cu frecven a maxim f 0 ! 12 MHz . Pentru realizarea oscilatorului, microcontrolerul con ine un circuit inversor cu intrarea i ie irea conectate la pinii XTAL1 i XTAL2. Configura ia de oscilator se ob ine prin conectarea ntre pinii XTAL1 i XTAL2 a unui cristal de cuar i a doi condensatori conecta i de la cei doi pini la mas . Func ionarea sincronizat a microcontrolerului se desf oar n faze, st ri i cicluri ma in . O faz a microcontrolerului corespunde duratei T0 ! 1 / R0 a perioadei de tact. Dou faze succesive notate P1, P2 definesc o stare a microcontrolerului. Un ciclu ma in se desf oar pe durata a 12 perioade T0 adic 6 st ri. Cele 12 perioade ale unui ciclu ma in sunt notate S1P1, S1P2, S2P1, S2P2, . S6P1, S6P2. Microcontrolerul 8051 execut o instruc iune n unul sau dou cicluri ma in cu excep ia instruc iunilor de multiplicare i divizare ce se realizeaz n 4 cicli ma in . CLK P1 S1 P2 P1 S2 P2 P1 S3 P2

t
FAZA STARE

Execu ia unei instruc iuni ncepe n faza S1P1 a unui ciclu ma in prin extragerea din memoria program a primului octet al instruc iunii i transferul acestuia n registrul de instruc iuni al microcontrolerului n faza S1P2. n cazul unei instruc iuni cu codul ma in de doi oc eti, al doilea octet se extrage din memoria program n starea S4 a aceluia i ciclu ma in . Rezult c intr-un ciclu ma in se pot efectua dou extrageri de coduri instruc iune. Dac este nevoie i de cel de-al treilea octet, acesta se va extrage n faza S1P2 a celui de-al doilea ciclu ma in . n st rile n care se face extragere de cod instruc iunea are loc i incrementarea contorului de program PC. Execu ia unei instruc iuni se termin n faza S6P2 a ciclului ma in corespunz tor. 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 pu in semnificativ al adresei. Memorarea adresei inferioare n registru se realizeaz pe baza semnalului de validare registru de adresare ALE. Pentru selec ia diferit a celor dou tipuri de memorie (de program i RAM) microcontrolerul genereaz semnalul PS pentru validarea memoriei de 28

program extern i semanlele RD i WR pentru memoria de date extern . Diagramele de timp corespunzatoare extragerii de coduri instruc iuni din memorii program sunt:
CLK S1 S2 S3 S4 S5 S6

ALE

PS

P0-P7

A0-A7

A15-A8 P2.7-P2.0

Microcontrolerul 8051 con ine dou circuite de num rare/temporizare notate cu N/T0 i N/T1. Fiecare circuit con ine dou registre num r toare de cte 8 bi i , TH0, TL0, TH1, TL1 din grupul registrelor cu func ii speciale. Structura unui circuit num r tor/temporizator este prezentat n figura de mai jos. Func ia de temporizare se realizeaz prin numarare de impulsuri cu o frecven a egal cu frecven a oscilatorului divizat cu 12. Rezult c frecven a pentru temporizare avnd f0=12 MHz este f=1 MHz. Func ia de num rare se realizeaz prin num rarea fronturilor de c dere ale semnalului aplicat la pinul Ti al microcontrolerului. Aceste fronturi se detecteaz prin testarea de c tre microcontroler a st rii liniei Ti n fazele S5P2 ale ciclurilor ma in . Se consider detectat un front de c dere dac n fazele S5P2 din dou cicluri ma in consecutive rezultatul test rii va fi un nivel logic 1 urmat de un nivel 0 logic. Detec ia unui front de c dere determin incrementarea cu o unitate a con inutului registrului num rator n faza S3P1 a ciclului ma in urm tor detect rii frontului de c dere. Rezult c func ia de num rare a fronturilor de c dere ale semnalului extern aplicat pinului Ti se efectueaz corect dac fiecare nivel corespunz tor acestui semnal este men inut pe o 29

PCL
COD INSTRUCTIUNE

PCL

COD INSTRUCTIUNE

PCL

PCL

PCH

PCH

PCH

Circuitele de num rare/temporizare ale microcontrolerului 8051

durat mai mare dect durata unui ciclu ma in . Astfel frecven a maxim a semnalului de la linia de intrare Ti este f0/24 adic 500KHz pentru f0=12MHz.

Generator de tact

f0

Divizor frecven ( z12 )

f0/12

C/Ti (TMOD)
0

K1

K2
1

Ti
PIN P3.i+4
1

Registru num r tor THi,TLi

GATE i (TMOD)

TR i (TCON)

TF i (TCON)

/ INTi
PIN P3.i+2

Cerere ntrerupere

Pentru controlul func ion rii circuitelor num r toare/temporizatoare se utilizeaz registrele interne TMOD i TCON din grupul registrelor cu func ii speciale. Func ia de num rare sau temporizare se realizeaz prin comanda corespunz toare 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 num r tor Declan area i blocarea proceselor de num rare/temporizare, corespunz toare pozi iilor cuplat respectiv decuplat ale comutatorului K2 se pot stabili prin programarea bi ilor TRi din registrul TCON i GATEi din registrul TMOD i prin semnal extern conectat la pinul INTi al microcontrolerului. Comanda proceselor de num rare/temporizare se poate realiza prin program prin stabilirea bitului GATEi la nivelul logic 0 . n acest caz declan area i blocarea se comand prin programarea bitului TRi. Dac bi ii GATEi i TRi se programeaz la nivel logic 1, comanda se realizeaz cu semnalul conectat la intrarea INTi a microcontrolerului. Procesele de num rare/temporizare evolueaz n sensul cre terii con inutului registrului num r tor. La dep irea valorii maxime corespunz toare capacit ii num r torului, bitul indicator de dep ire TFi din registrul TCON este pozi ionat la nivel logic 1 semnaliznd o cerere de ntrerupere. Con inutul num r torului devine zero sau se ncarc cu o valoare programat n func ie de modul de lucru al circuitului num r tor/temporizator. Bitul indicator de dep ire se pozi ioneaz la nivelul logic 0 dup acceptarea cererii de ntrerupere de c tre logica de control. Exist 4 moduri de lucru n func ie de modul de utilizare al registrelor TLi i THi. Selec ia modului de lucru se realizeaz prin programarea bi ilor 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 num r tor este de 13 bi i format din registrul TH i cei mai pu in semnificativi 5 bi i ai registrului TL. Reg. TL TL.4 z TL.0 Reg. TL TH.7 z TH.0

Error!

30

Con inutul registrului astfel ob inut este incrementat pn la valoarea maxim . Urm toarea incrementare duce la anularea con inutului num r torului. n modul 1 registrul num r tor este de 8 bi i format din registrul TL ca n fig. urm toare: Reg. TL TL.7 z TL.0
TF

Reg. TL TH.7 z TH.0 La dep irea capacit ii de num rare, registrul TL se ncarc cu con inutul registrului TH. Accest mod de lucru este util pentru temporiz ri cu valori programabile. Durata temporiz rii este dat de perioada cu care apar dep iri ale capacit ii de num rare. Rezult c durata temporiz rii este dat de:
T ! 12 [ 256  (TH )] f0

n modul de lucru 3 cele dou circuite de num rare/temporizare opereaz n mod diferit. Circuitul N/T0 con ine ca num r tor registrul TL0. n plus registrul TH0 este inclus ntr-o structur de temporizator care utilizeaz bi ii TR1 i TF1 corespunz tori circuitului N/T1 n celelalte moduri de lucru. f0/12 K REG TH0

TF1 TCON.7

Cerere ntrerupere

TR1 TMOD.6
Re g . T T . zT .

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 num rare se poate face prin programarea modului 3 pentru circuitul N/T1. Circuitul N/T1 n modul 3 nu poate efectua cereri de ntreruperi, iar declan area num r torului 1 se face doar prin programarea in alt mod de lucru. Portul serial al microcontrolerului 8051 Este utilizat pentru transferul de informa ie ntre microcontroler i componentele externe sistemului cu comunica ie serial . Transferul serial al unui cuvnt de la emi tor la receptor se realizeaz prin conversia paralel-serie a cuvntului i apoi conversia serie-paralel. 31

Re g . TH TH.7 z TH.0

Comunica ia serial ntre dou echipamente poate realiza transferul de informa ie n ambele sensuri alternativ printr-o singur linie (comunica ie semiduplex) sau simultan prin dou linii (comunica ie duplex). n cazul comunica iei asincrone, transferul cuvintelor dintr-un mesaj se poate realiza la intervale de timp variabile. Un cuvnt con ine o secven de 8 sau 9 bi i de date. Transmisia presupune nc rcarea succesiv a liniei de comunica ie cu bi ii corespunz tori cuvntului de transmis, cu frecven a de comunica ie fc exprimat n bi i/s. Recep ia const n testarea periodic a st rii liniei de comunica ie n scopul citirii secven ei de bi i de date. Pentru transferul corect al unui cuvnt este necesar ca receptorul s citeasc starea liniei de comunica ie cu aceea i frecven i faz cu care se ncarc bi ii cuvntului la emisie. Sincronizarea de faz a circuitului de recep ie cu cel de emisie se realizeaz pe baza frontului de c dere corespunz tor bitului de start. Dup bitul de start cu nivel logic 0 urmeaz emisia bi ilor de date (8 sau 9) ncepnd cu bitul de semnifica ie minim (LSB). Ultimul bit de date emis poate fi bit de paritate utilizat pentru verificarea corectitudinii cuvntului recep ionat. Dup ultimul bit de date urmeaz un bit de stop cu nivel logic 1 .
BIT START

BIT Data.0

BIT Data.7

BIT Paritate (op ional)

Bit stop

LSB

MSB

1/fc

Portul serial al microcontrolerului 8051 poate fi utilizat pentru comunica ie serial asincron de tip duplex prin liniile de transmisie TXD (P3.1) respectiv recep ie RXD (P3.0). Microcontrolerul 8051 are 2 registre interne notate SBUF, unul pentru transmisie i unul pentru recep ie. Cele dou registre au aceea i adres 99H. Adresarea direct ca i operand surs a adresei 99H se refer la registrul SBUF de recep ie. Adresarea direct ca i operand destina ie a adresei 99H se refer la registrul SBUF de transmisie. Pentru recep ie, portul serial utilizeaz un registru de deplasare care realizeaz conversia serie paralel a datelor de pe linia de recep ie. Con inutul 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 recep ie SBUF se poate trece la ob inerea unui nou octet n registrul de deplasare nainte de citirea octetului precedent din registrul de recep ie SBUF. Dac citirea octetului precedent nu se realizeaz nainte de terminarea asambl rii noului octet, rezult pierderea octetului precedent. Portul serial al microcontrolerului 8051 poate func iona n 4 moduri de lucru stabilite prin programarea bi ilor SM0 i SM1 din registrul de control al portului serial SCON. Modul 0 Se folose te pentru realizarea unei comunica ii semiduplex. Astfel, linia RXD se utilizeaz alternativ pentru recep ia sau transmisia unor secven e de 8 bi i de date cu frecven a de comunica ie f 0 / 12 bi i/s (f0 frecven a oscilatorului de tact). Semnalul cu frecven a de comunica ie f 0 / 12 este disponibil la linia TXD. Declan area transmisiei se realizeaz prin nc rcarea unui octet n registrul SBUF. La sfr itul transmisiei celor 8 bi i de date, portul serial pozi ioneaz la nivel 1 bitul indicator de ntrerupere la transmisie Ti preciznd posibilitatea de nc rcare a unui octet n registrul de transmisie. Declan area recep iei se realizeaz dac bitul de validare a recep iei REN este programat la nivel 1. La sfr itul recep iei celor 8 bi i de date, portul serial pozi ioneaz la nivel 1 bitul indicator de ntrerupere la recep ie Ri. Modurile de lucru 1, 2, 3 ale portului serial se utilizeaz pentru comunica ie asincron de tip duplex. Astfel se realizeaz transmisia prin linia TXD i recep ia prin linia RXD a unor cuvinte ce con in un bit de start cu nivel 0, 8 bi i de date i un bit de stop cu nivel 1. 32

n modurile 2 i 3, cuvintele con in i un bit cu nivel logic programabil ce urmeaz celor 8 bi i de date. n modurile 1,2,3 declan area transmisiei se realizeaz prin scrierea octetului de transmis n registrul SBUF. La nceputul transmisiei bitului de stop, portul serial pozi ioneaz la nivel 1 bitul indicator de ntrerupere Ti. Validarea recep iei se face prin programarea la nivel 1 a bitului de validare recep ie REN. Declan area recep iei unui cuvnt se realizeaz de frontul de c dere al bitului de start. Dac bitul SM2 (SCON.5) este programat la nivel 0, portul serial pozi ioneaz la nivel 1 bitul indicator de ntrerupere la recep ie Ri, la mijlocul intervalului de recep ie a bitului de stop corespunz tor cuvntului recep ionat. Dac bitul SM2 (SCON.5) este programat la nivel 1, portul serial pozi ioneaz la nivel 1 bitul indicator de ntrerupere la recep ie Ri, numai dac bitul urm tor celor 8 bi i de date (RB8) are nivel 1. Deoarece n modurile 2 i 3, nivelul logic al bitului urm tor celor 8 bi i de date poate fi programat la transmisie n TB8, rezult posibilitatea de recep ie selectiv in func ie de SM2 a cuvintelor nc rcate pe o linie de comunica ie. Acest lucru poate fi folosit pentru comunica ii multiprocesor. Un cuvnt de comand con ine 8 bi i de date cu adresa unui microprocesor din sistem i un bit urm tor cu nivel 1. Un cuvnt de date con ine dup cei 8 bi i 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 recep ia unui cuvnt de comand pozi ioneaz la nivel 1 bitul Ri din fiecare microcontroler. Subrutina de ntrerupere analizeaz cei 8 bi i ce pot fi de adres . Microcontrolerul ce recunoa te propria adres pozi ioneaz SM2 la 0 pentru a recep iona cuvintele de date ce urmeaz . Celelalte Q C din sistem men in SM2=1 i nu genereaz ntrerupere de recep ie. n modurile 1 i 3 valoarea frecven ei de comunica ie poate fi stabilit prin programare. Pentru aceasta se folose te Timerul 1 ca generator de frecven de comunica ie programat n modul 2. 2 ( SMOD ) f0 fc ! 32 12 [256  (TH 1)] unde, SMOD este un bit din PCON. De cele mai multe ori utilizatorul tie frecven a de comunica ie i dore te s tie valoarea ce trebuie nscris n TH1.
TH 1 ! 256  2 ( SMOD ) f 0 32 12 f c

THi trebuie s fie o valoare ntreag . Rotunjind pe TH1 la ntregul cel mai apropiat se produce o modificare a frecven ei de comunica ie iar utilizatorul trebuie s schimbe valoarea cuar ului. Ex: f c ! 4800 biti/sec. f 0 ! 12 MHz TH ! 1 f c real ! 4807,7 biti/sec. (SMOD) ! 1 a Dac am dori: f c ! 9600 biti/sec. f 0 ! 12 MHz TH 1 ! 249 ,5 (SMOD) ! 0 f TH 1 ! 249 ! 8928 biti/sec. se impune schimbarea cuartului f THI ! 10416 biti/sec. n modul 2 de lucru al portului serial valoarea frecven ei de comunica ie este:

33

2 (SMOD ) f0 64 SM 2 ! 0 Ri ! 1 pt.  cuvnt fc !

Comand Date

8 bi i date +1+stop 8 bi i date +0+stop

Ri ! 1 dac bitul 9 ! 1 SM 2 ! 1 Ri ! 0 dac bitul 9 ! 0 (SM2=1) rec.adr. (SM2=0) rec.date cel cu adr.01C (SM2=1) pt. adr. BAD

Sistemul de ntreruperi al QC8051 Sursele de cereri de ntreruperi pentru Q C 8051 sunt externe i interne. Sursele externe transmit cererile de ntrerupere prin pinii INT0( P3.2) i INT1( P3.3) ai microcontrolerului. Sursele interne de ntrerupere sunt circuite de num rare/temporizare N / T0 , N / T1 i portul serial. Cererile de ntrerupere generate de sursele de ntrerupere pozi ioneaz la nivel 1 bi ii corespunz tori 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 num rare/temporizare. - Ri (SCON.0) i Ti (SCON.1) pentru ntreruperi de la portul serial. St rile acestor bi i indicatori de cereri de ntrerupere sunt testate de logica de control a ntreruperilor microcontrolerului n faza S5P2 a fiec rui ciclu ma in . Astfel logica de control a ntreruperilor identific sursele care solicit ntrerupere i asigur apelul subrutinei de ntrerupere corespunz toare unei surse, n concordan cu condi iile de validare i priorit ile stabilite pentru surse prin programare. St rile bi ilor indicatori de cereri de ntrerupere pot fi stabilite prin programare. O surs extern poate solicita o cerere de ntrerupere prin comanda pinului INT 0 sau INT1` cu nivel logic 0 sau cu un front de c dere, n func ie de nivelul logic programat n bitul IT0 sau IT1. n cazul variantei de cerere de ntrerupere extern prin nivel, bitul IEi urm re te n permanen nivelul logic de comand a intr rii INT i . Astfel, o cerere de ntrerupere indicat prin nivel logic 1 al bitului IEi corespunde nivelului logic 0 de comand a pinului INT i , avnd n vedere prezen a circuitului inversor. Nivelul logic 0 corespunz tor unei cereri de ntrerupere extern prin nivel trebuie men inut pn la apelul de c tre microcontroler a subrutinei de ntrerupere corespunz toare. Comanda liniei INT i la nivel 1 trebuie s se efectueze nainte de sfr itul execu iei subrutinei de ntrerupere corespunz toare, pentru a se evita apelul repetat al acesteia. n cazul variantei de cerere de ntrerupere prin front de c dere, bitul IEi este pozi ionat la nivel 1 de un front de c dere prezent la intrarea INT i . Detec ia fronturilor de c dere se realizeaz prin e antionarea st rii intr rii INT i cu frecven a ciclurilor ma in . Rezult c pentru detec ia corect a unui front de c dere este necesar comanda intr rii INT i cu nivel 1, apoi cu nivel 0, fiecare nivel logic trebuind s fie men inut pe o durat cel putin egal cu durata unui ciclu ma in . Nivelul logic1 din bitul IEi, rezultat ca urmare a detec iei unui front de c dere, se men ine pn la apelul de c tre microcontroler a subrutinei de ntrerupere corespunzatoare, cnd bitul IEi este pozi ionat la nivel 0 de c tre logica de control a microcontrolerului.Error!

34

IT0 TCON.0

INT0 IN 3.2
DETECTOR DE FRONT DE C DERE

0 1 K1

IE0 TCON.1

N/T0

TF0 TCON.5

IT1 TCON.2

INT1 PIN P3.3


DETECTOR DE FRONT DE C DERE

0 1 K2

IE1 TCON.3

N/T0

TF1 TCON.7

PORT SERIAL

Ti SCON.1 Ri SCON.0

Cererile de ntrerupere de la un circuit de num rare/temporizare N/Ti0, i=0, 1, sunt generate la dep irea valorii maxime corespunz toare capacit ii num r torului, cnd bitul indicator de dep ire TFi se pozi ioneaz la nivel logic 1. La apelul subrutinei de ntrerupere corespunz toare, bitul TFi este pozi ionat la nivel logic 0 de c tre logica de control a ntreruperilor microntrolerului. Cererile de ntrerupere de la portul serial sunt generate de la sfr itul transmisiei sau recep iei unui cuvnt, cnd bi ii indicatori de cereri de ntrerupere Ti respectiv Ri se pozi ioneaz la nivelul logic 1. La apelul subrutinei de ntrerupere corespunz toare, st rile bi ilor Ti i Ri nu sunt modificate de c tre logica de control a ntreruperilor microcontrolerului, astfel subrutina de ntrerupere se testeaz bi ii Ri i Ti pentru determinarea tipului de ntrerupere (recep ie respectiv transmisie) i apoi se programeaz nivelul logic n bi ii Ri i Ti. Sursele de cereri de ntreruperi pentru microcontrolerul 8051 sunt mascabile. Astfel validarea sau invalidarea accept rii de c tre microcontroler a cererilor de ntreruperi corespunz toare 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 bi ii 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 - ES (IE.4) pentru portul serial 35

Programarea nivelului logic 1 corespunz toare.

n bitul IE.i conduce la validarea sursei de cereri de ntrerupere

Sistemul de priorit i al ntreruperilor Sistemul de priorit i 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 corespunz toare a bi ilor registrului de control a priorit ii 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 corespunz toare la nivelul de prioritate ridicat . Execu ia unei subrutine de ntrerupere corespunz toare 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 serve te prima cerere de ntrerupere corespunz toare sursei de ntrerupere cu un nivel de prioritate ridicat. n cazul cererilor de ntrerupere simultane de la surse de acela i 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 sc derii priorit ii, dup cum urmeaz : INT0, NIT0, INT1, NIT1, i portul serial. Logica de control a ntreruperilor microcontrolerului 8051 e antioneaz starea bi ilor indicatori de cereri de ntrerupere n faza S5P2 a fiec rui ciclu ma in i analizeaz rezultatele fiec rei e antion ri n ciclul ma in urm tor. Aceast analiz const n identificarea sursei de prioritate maxim care solicit ntrerupere. Dup ciclul de analiz , microcontrolerul execut intern ciclurile corespunz toare unei instruc iuni: LCALL addr., unde addr este func ie de surs de cerere de ntrerupere servit dac sunt ndeplinite condi iile urm toare: - Ciclul de analiz este ultimul din execu ia unei instruc iuni. - Ciclul de analiz nu corespunde execu iei unei instruc iuni din subrutina de ntrerupere corespunz toare unei surse de acela i nivel de prioritate sau de nivel de prioritate mai ridicat - Ciclul de analiz nu corespunde execu iei unei instruc iuni RETI sau a unei instruc iuni de acces la registrele IE i IP. La execu ia unei instruc iuni LCALL addr., pentru apelul unei subrutine de ntrerupere se salveaz n memoria stiv con inutul num r torului de adrese PC i se ncarc n aceasta adresa de nceput a subrutinei de ntrerupere. Aceast adres este func ie 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 instruc iune RETI prin care se realizeaz nc rcarea PC din memoria stiva cu adresa de revenire n programul ntrerupt. Deasemenea, prin execu ia instruc iunii RETI se informeaz logica de control a ntreruperilor cu privire la terminarea subrutinei de ntrerupere.

36