Sunteți pe pagina 1din 37

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 lo!ic ca"lat) att n te#nica de la"orator ct i n instrumentaia industrial mai ales n controlul automat$

Clasificarea sistemelor cu microprocessor


%n funcie de comple&itatea sistemului din care face parte 'om a'ea( - aparate de msur cu microprocesor ) utili*ate ca instrumente de la"orator sau de teren+ - sisteme de msur cu microprocesor ) folosite n comple&e de msur i control n industrie$

1.1 Avantajele folosirii microprocesoarelor n sistemele de m!sur! "i control


,ncluderea unui microprocesor ntr-un sistem de msur i control d posi"ilitatea ca mane'rele de operator s fie preluate (parial sau total) de ctre microprocesor i n plus s se o"in cte'a a'anta-e importante( 1. .reluarea comen*ilor de operator cum ar fi re!la-e de *ero i de cap de scar selectarea !amelor asi!urnd un plus de preci*ie i si!uran n e&ploatare. #. Autocali"rarea i compensarea automat a influenei factorilor de clim$ /e asemenea se calculea* a"aterile i se corectea* re*ultatul final al msurrii$ $. %m"untirea preci*iei prin eliminarea erorilor sistematice (prin autocali"rare autocorecie)$ %. 0icorarea numrului de componente ale sistemului prin eliminarea componentelor destinate implementrii lo!icii ca"late$ &. 1reterea 'ersatilitii aparatului prin o"inerea unor posi"iliti suplimentare de msur pe "a*a pro!ramelor interne$ '. 1reterea 'ite*ei de lucru prin automati*area operaiilor de msurare$ (. .osi"ilitatea determinrii prin calcul a altor parametrii de semnal ('aloare de 'rf 'aloare medie 'aloare efecti' calculul distorsiunilor a spectrului de amplitudini determinarea fa*ei defa*a-ului)$ ). .osi"ilitatea autotestrii prin pro!rame speciale e&ecutate de microprocesorul ncorporat la comanda operatorului sau n ca*ul apariiei unei anomalii in funcionare$ %n acest ca* se poate declana o procedur de testare i semnali*are a e'entualelor defecte$ 2oate aceste a'anta-e arat clar c sistemele de msur i control moderne nu pot e&ista fr a fi controlate de ctre microprocesoare$

1.# Microprocesoare * o privire +eneral!


%n cele ce urmea* ne 'om referi la un microprocesor !eneric (presupus de 8 "ii) i 'om ncepe cu preci*area unor termeni i notaii utili*ate n lucrrile din domeniul microprocesoarelor$

,efini-ii "i terminolo+ie


3istemul de calcul este un ec#ipament care transform datele de intare n re*ultate de ieire pe "a*a unui al!oritm materiali*at ntr-un pro!ram$ Aceast definiie repre*int sensul clasic al noiunii de calculator $ 3istemele inteli!ente sunt acele sisteme care pot prelucra informaii incomplete definite sau aproape complet definite$ Astfel de sisteme sunt sistemele fu**4 sau reelele neuronale$ %n ca*ul n care informaiile de prelucrat sunt complet definite atunci a'em de-a face cu al!oritmi sec'eniali$ Acest tip de al!oritmi a stat la "a*a construciei mainilor sec'eniale (5on 6e7man)$ /ac operaiile elementare independente se pot e&ecuta paralel (pe mai multe uniti de calcul) a'em de-a face cu al!oritmi paraleli$ 1

%ncepnd cu anii 1970 au aprut tendine de automati*are a proceselor de producie "a*ate iniial pe automate numerice ca"late (lo!ic ca"lat) i apoi pe sisteme cu microprocesoare (lo!ic pro!ramat)$ /e dat recent sunt sistemele "a*ate pe ar#itecturi paralele (sisteme multiprocesor sisteme distri"uite)$ Ar#itectura mainii sec'eniale standard (5on 6e7man) este urmtoarea(

8nitate 1entral

0emorie

3u"sistem de intrare9ieire

=m9proces Unitatea central (1.8-1entral .rocessin! 8nit) transform datele n re*ultate pe "a*a e&ecuiei instruciunilor pro!ramului memorat$ Memoria este mediul principal de stocare9re!sire a datelor re*ultatelor i pro!ramelor$ Subsistemul de intrare-ieire este destinat reali*rii interfeei om-main sau proces-main$ .artea fi*ic a unui sistem de calcul (componentele electronice) este relati'e simpl poate fi produs n serie i este relati' ieftin$ 2ermenul #ard7are se refer tocmai la aceast parte 1eea ce transform acest ec#ipament ieftin ntr-o di'ersitate de instrumente controlere industriale calculatoare speciale sau de u* !eneral sunt pro!ramele (utilitare sau de aplicaii) i sistemele de pro!rame (operare e&ploatare) adic soft7are care 'or determina #ard7are-ul de u* !eneral s e&ecute ceea ce dorim$ 8n alt termen frec'ent utili*at este firm7are care desemnea* pro!rame speciale stocate n memorii ne'olatile al cror rol este de a asi!ura faciliti de confi!urare i testare a ec#ipamentului precum i minima sa funcionare$ :&emplu "iosul de la calculatoarele personale$ 0icroprocesoarele actuale se produc ntr-o !am lar! de 'ariante de la cele de u* !eneral sau cele destinate aplicaiilor industriale pn la procesoarele de semnal sau coprocesoarele cu funcii "ine preci*ate$ /e asemenea microprocesoarele pot fi( - microprocesoare monocip (unitatea central i circuitele de suport sunt dispuse n interiorul aceleiai capsule de circuit inte!rat)$ - microprocesoare multicip la care unitatea central i circuitele de suport sunt reali*ate su" form de circuite inte!rate distincte$ 0icroprocesoarele pentru aplicaii dedicate mai ales cele destinate mediului industrial sunt reali*ate monocip oferind un plus de comoditate n proiectare i o fia"ilitate sporit$ /e e&emplu microprocesorul 8018; al firmei ,ntel include apro&imati' toate componentele sistemelor cu 808; adic unitatea central !eneratorul de tact controlerul de ma!istral i cel de ntreruperi controlerul /0A contor9timer-ul lo!ica de decodificare etc$ /eseori microprocesoarele monocip includ att memorie de lucru ct i interfee de intrare9ieire adic structura minimal a unui microcalculator moti' pentru care ele se mai numesc i microcalculatoare ntr-un sin!ur cip (3in!le 1omponent 0icrocomputer)$ /eoarece aceast cate!orie de microprocesoare sunt destinate mai ales aplicaiilor de control n mediul industrial ele se ntlnesc i su" denumirea de microcontrolere$ <

0icroprocesoarele de u* !eneral multicip au fost reali*ate i n 'ariante monocip purtnd numele de microprocesoare n!lo"ate$ /e e&emplu familiile 8018; sau 80>8;:? sunt produse de ,ntel i n 'arianta monocip a'nd a'anta-ul utili*rii suportului de pro!rame i e&ploatare de*'oltat pentru sistemele de calcul e&istente curent pe pia (de e&emplu calculatoarele personale)$

Elemente te.nolo+ice
0icroprocesoarele i circuitele de suport se pot produce n urmtoarele te#nolo!ii( 1 . Tehnologia bipolar ) permite o"inerea unor 'ite*e de lucru mari dar cu un consum ridicat i cu pro"leme de climati*are deose"ite$ # . Tehnologia MOS ) a e'oluat mult oferind condiii de o"inere a unor performane de 'ite* deose"it n condiiile unui consum redus i al unui !rad de inte!rare foarte ridicat$ :&ist > familii 0=3 mai importante( PMOS ) se "a*ea* pe reali*area tran*istoarelor 0=3 cu canal p prin difu*ia impuritilor de tip p ("or) ntr-un su"strat de siliciu de tip n pentru a forma drena i sursa$ 3e remarc prin densitate mare de inte!rare ns microprocesorul este relati' lent$ NMOS ) se "a*ea* pe reli*area tran*istoarelor 0=3 cu canal n prin difu*ia impuritilor de tip n (fosfor sau arseniu) ntr-un su"strat de siliciu de tip p pentru a forma drena i sursa$ 3e o"ine o densitate de componente similar cu cea specific .0=3 dar asi!ur o 'ite* mai mare pentru circuitele reali*ate ns este mult mai scump dect te#nolo!ia .0=3$ CMOS ) com"in am"ele tipuri de tran*istoare ntr-o structur complementar re*ultatul fiind o 'ite* de lucru medie imunitate mare la *!omote i un consum e&treme de redus$ HMOS ) este o te#nolo!ie mai recent i a fost utili*at cu succes de firma ,62:@ la reali*area noilor sale !eneraii de microprocesoare i microcontrolere$ Aceast te#nolo!ie folosete tran*istoare cu canal n proiectate special pentru a lucra la tensiuni -oase i la 'ite*e mari$ CHMOS ) este rodul m"inrii performanelor de 'ite* deose"it ale te#nolo!iei A0=3 cu consumul sc*ut al celei 10=3$ Be*ultatul a fost remarca"il astfel nct ma-oritatea productorilor de microprocesoare i microcontrolere au trecut la aceast te#nolo!ie$

/i-i 0 octe-i 0 cuvinte


0area ma-oritate a ec#ipamentelor numerice folosesc pentru repre*entarea intern a numerelor sistemul "inar caracteri*at de utili*area a numai < cifre( 0 i 1$ Citul repre*int cea mai mic unitate de informaie ec#i'alent cu o afirmaie (/A 1) sau o infirmaie (68 0)$ .entru uniti mai mari cea mai important este octetul o"inut din !ruparea a <D E 8 "ii$ =ctetul repre*int unitatea cea mai folosit pentru caracteri*area dimensiunii "locurilor de memorie$ /ac aceast dimensiune este mare se pot folosi multiplii acestuia( Filooctet E <10 "ii 0e!aoctetE <<0 "iiE <10 FC Gi!aoctet E <>0 "ii E <10 0C E <<0 FC 8n cu'nt este un !rup de "ii ce desemnea* cantitatea ma&im de informaie ce poate fi transferat la un moment dat de un dispo*iti' numeric$ 1u'ntul este materiali*at prin ci paralele de comunicaie a informaiei numite ma!istrale$ 6umrul de "ii al unui cu'nt constituie lun!imea sa$ @un!imea unui cu'nt este una dintre caracteristicile cele mai importante ale unui microprocesor deoarece #otrte preci*ia datelor i 'ite*a de prelucrare a acestora$

Al+oritmi 0 pro+rame "i lim1aj ma"in!


Hiind dat o pro"lem pentru re*ol'area acesteia tre"uie !sit o metod adec'at ) al!oritmul$ 8n al!ritm este o sec'en de operaii !rupate ntr-o succesiune de etape (pai) ce permit re*ol'area pro"lemelor specificate$ .entru a fi neles de microprocesor al!oritmul tre"uie pre*entat ntr-un lim"a- adec'at lim"a- care >

const ntr-un set de sim"oluri i re!uli de sinta& foarte "ine preci*ate$ 0ateriali*area al!oritmului cu a-utorul unui lim"a- se face ntr-un pro!ram ce const ntr-o succesiune de operaii elementare ) instruciuni$ @a ni'elul cel mai de -os instruciunile pro!ramului se pre*int ca iruri de "ii ce pot fi transformate cu uurin n impulsuri electrice dar care sunt foarte !reu de mane'rat de ctre pro!ramator$ Acest lim"asin!urul neles de procesor este numit lim"a- main$ /in acest moti' au fost create pro!rame speciale care permit utili*area unor lim"a-e mai apropiate de cel uman (lim"a- de asam"lare)$ 8lterior au fost create o multitudine de lim"a-e (CA3,1 H=B2BA6 1 etc) numite de ni'el ridicat a cror scop a fost !sirea unei modaliti ct mai accesi"ile de a pro!rama un microprocesor$

2o+ic! ca1lat! "i lo+ic! pro+ramat!


@o!ica ca"lat presupune un automat de control n care sec'ena de semnale de sincroni*are9coordonare sunt ela"orate pe "a*a unei sc#eme fi&e (de o"icei cu pori i "ista"ile interconectate con'ena"il) imposi"il de modificat$ @o!ica pro!ramat se "a*ea* pe un automat de control fle&i"il capa"il s !enere*e semnale de sincroni*are9coordonare pe "a*a unui pro!ram e&ecutat de microprocesor$ 0a-oritatea aparaturii moderne utili*ea* lo!ic pro!ramat$ .rin simpla modificare a pro!ramului ntrea!a funcionare a aparatului se poate sc#im"a$

Puterea de calcul "i vite3a de lucru a microprocesorului


.rin putere de calcul se nele!e mai ales capa"ilitatea de prelucrare numeric a acestuia i este determinat de lun!imea cu'ntului de ar#itectura intern i 'ite*a de e&ecuie a instruciunilor$5ite*a microprocesorului este condiionat de < factori( -Frec en!a ceasului ) un tact mai rapid determin un procesor s e&ecute un pro!ram mult mai rapid+ -"rhitectura intern ) permite creterea 'ite*ei de lucru (meninnd frec'ena ceasului nesc#im"at) pe "a*a trecerii de la e&ecuia strict sec'enial a operaiilor la e&ecuia lor paralel ntr-un mod transparent pentru utili*ator folosind te#nici ca( utili*area memoriilor 1A1A: creterea numrului de ma!istrale interne ale unitilor de prelucrare succesiune pipeline (suprapunerea parial a operaiilor)$ -#ite$a de e%ecu!ie a instruc!iunilor ) este dificil de msurat direct$ 3e definete de o"icei ca durata de e&ecuie a unor instruciuni foarte des folosite sau ca numr mediu de instruciuni e&ecutate ntr-o secund$ -Setul de instruc!iuni - condiionea* indirect 'ite*a de calcul$ 1u ct modul de codificare a instruciunilor este mai simplu i sec'ena microoperaiilor este mai rapid cu att microprocesorul 'a a'ea o 'ite* de lucru mai mare$ 0icroprocesoarele cu set complet de instruciuni (1,31) consum un timp relati'e ridicat pe instruciune dar compensea* acest lucru printr-o !am di'ers de instruciuni$ 3pre deose"ire de ele microprocesoarele cu set redus de instruciuni (B,31) sunt optimi*ate astfel nct instruciunile s fie e&ecutate foarte rapid c#iar mai multe ntr-un sin!ur tact main $

Ar.itectura intern! a unui microprocessor


1a orice unitate central a unui sistem de calcul microprocesorul conine urmtoarele componente principale( - unitatea de control 1.8 + - unitatea lo!ico-aritmetic A@8+ - re!istre interne+ Acestea comunic ntre ele prin ci de transfer informaiei numite ma!istrale ce lea! ntre ele mai multe dispo*iti'e dar la un moment dat doar dou dispo*iti'e pot sc#im"a informaie( sursa i destinaia$ 1oordonarea transferurilor pe ma!istral se face de ctre un dispo*iti' master cele su"ordonate fiind sla'e$ 0icroprocesorul posed i o ma!istral intern le!at printr-o interfa la ma!istrala e&tern$ 3tructura intern a unui microprocesor !eneric este urmtoatea( I

A11 A@8 20. .3

B:G /1/ ? C B> B1 BI B< C,

A// C83

/A2A C83 ,B 1@F Gen


1uart*

.1 3. 1.8 10/ C83 ,62

,nst /1/

Beset

Unitatea de control
Asi!ur sincroni*area i coordonarea operaiilor din interiorul i e&teriorul microprocesorului$ 1a orice automat sec'enial sincron unitatea central este !u'ernat de un semnal de tact (1@F) produs de un circuit de ceas intern sau e&tern microprocesorului$ %n ma-oritatea ca*urilor oscilatorul care asi!ur tactul este pilotat cu cuar i asi!ur frec'ene ntre 1 i I0 0A* (microprocesoarele ce ec#ipea* calculatoarele moderne a-un! pn la frec'ene de ordinal GA*)$ %n principal unitatea de control solicit instruciunile stocate n memoria de pro!ram le decodific i pe "a*a acestora comand funcionarea celorlalte "locuri (A@8 re!istre etc ) interne microprocesorului n 'ederea e&ecutrii corecte a acestora$

Unitatea lo+ico 4 aritmetic!


A@8 e&ecut operaiile aritmetice i lo!ice impuse de instruciunile pro!ramului su" coordonarea direct a unitii de control$ =peraiile aritmetice pot fi( adunare i scdere (de "a* - o"li!atorii) respecti' nmulire mprire ridicare la putere (suplimentare)$ =peraiile lo!ice pot fi( 68 J, 3A8 (de "a* - o"li!atorii) respecti' 3A8 ) :?1@83,5 deplasri rotiri (suplimentare)$ .articipanii la o operaie aritmetic sau lo!ic se numesc operan*i iar semnul !rafic asociat acesteia se numete operator$ /ac operaia necesit un sin!ur operand (sc#im"area semnului sau ne!area) ea se numete operaie unar$ /ac operaia necesit < operan*i (adunare J, lo!ic) ea se numete "inar$

Re+istrele interne
Au rolul de a stoca temporar operan*ii i re*ultatele 'e#iculate prin A@8 pe parcursul uneia sau mai multor instruciuni$ Be!istrele folosite n mod u*ual la calcule se numesc re!istre !enerale iar cele folosite la operaii speciale (adresarea mane'rarea sti'elor) se numesc re!istre funcionale$ Re+istrele +enerale pot ndeplini mai multe roluri( - mane r ) pentru stocarearea temporar a unui operand sau a unui re*ultat+ 5

- acumulator &"CC' ) re!istru folosit n operaiile de adunare pentru cumularea unui ir de 'alori (unul din operan*i se !sete ntr-un re!istru de lucru iar cellalt l constituie c#iar coninutul acumularorului) iar la sfrit re*ultatul se depune tot n acumulator+ - contor ) cu autoincrementare sau cu autodecrementare ce permite reali*area simpl a "uclelor de pro!ram i parcur!erea irurilor de date+ -ba$ &(' i inde% &)' ) ce permite adresarea irurilor de 'alori ('ectori) plasate n locaii succesi'e de memorie+ -indicator de sti &SP' - permite adresarea unei *one de memorie (sti') special creat pentru a facilita mane'rarea datelor pe principiul ultimul sosit)primul ser'it (@,H=) prin operaii de tipul .83A .=. precum i e&ecuia su"rutinelor sau a tratrii ntreruperilor$ 8n microprocesor posed cel puin < re!istre !enerale (acumulator i mane'r)$ 0a-oritatea microprocesoarelor folosesc seturi de I ) 1; re!istre ce pot prelua unul din rolurile pre*entate mai sus$ Re+istrele func-ionale %ndeplinesc sarcini dedicate pentru controlul derulrii instruciunilor n microprocesor$ -*egistrul de stare program &PS ) ) conine o serie de informaii ce descriu starea e&ecuiei pro!armului (indicatorii de condiie care repre*int modul de terminare a unei operaii lo!ico-aritmetice utili*at la reali*area salturilor condiionate precum i a indicatorilor de semnalare a e'enimentelor speciale i a modurilor de lucru)+ -*egistrul de instruc!iuni &+*' ) destinat stocrii instruciunii pe parcursul e&ecuiei sale+ -Contorul de program &PC' ) indic n permanen instruciunea curent (de e&ecutat)+

E5ecu-ia instruc-iunilor "i indicatorii de condi-ie


5om considera citirea i e&ecuia unei instruciuni tipice de un cu'nt$ .entru aceasta( -de la adresa coninut n contorul de pro!ram (.1) interfaa de ma!istral citete un cu'nt printr-un ciclu de citire al instruciunii -coninutul locaiei citite este transferat prin ma!istrala intern n re!istrul de instruciuni (,B)+ -contorul de pro!ram este incrementat pentru a indica instruciunea imediat urmtoare+ -imediat ce codul instruciunii este disponi"il n re!istrul de instruciuni (,B) el este decodificat i transformat n semnale de acti'are a di'erselor microoperaii din care este compus e&ecuia propriu-*is a instruciunii+ -nc din fa*a final a e&ecuiei instruciunii se poate declana citirea instruciunii urmtoare+ %n ca*ul instruciunilor de mai multe cu'inte se fac referiri succesi'e la memorie$ 0ulte microoperaii presupun folosirea A@8 pentru calcule KascunseL (calcule de adres)$ =peraiile de calcul produc re*ultate ce tre"uie testate pentru a lua o deci*ie$ A@8 dispune de un set de "ista"ili care fac parte inte!rant din re!istrul de stare pro!ram (.3) i care memorea* modul de finali*are al operaiei e&ecutate$ Aceti "ista"ili se numesc indicatori de condiie i ei pot fi testai n instruciuni de salt condiionat$ ,ndicatorii cei mai utili*ai sunt pre*entai n continuare( -M (M:B=) ) se setea* dac re*ultatul este nul+ -3 (3,G6) ) se setea* dac re*ultatul este ne!ati'+ -1 (1ABBN) ) se setea* dac apare un transport+ -5 (=5:BH@=O) ) se setea* dac re*ultatul unei operaii ntre numere cu semn are un semn incorect (datorit transporturilor nedorite spre po*iia semnului)$

Seturi de instruc-iuni
,nstruciunea este o operaie elementar ce se e&ecut de microprocesor n cadrul unui pro!ram$ =rice instruciune este identificat pe "a*a unui cod de operaie ce face parte inte!rant din corpul acesteia$ 1odul de operaie este completat de informaii suplimentare numite u*ual ar!umente$ 1odul operaiei este sin!ura poriune a instruciunii care se decodific intern i declanea* sec'ena de microoperaii din unitatea de comand (e&ist instruciuni formate numai din cod)$ ;

@ista complet de instruciuni pe care o poate interpreta i e&ecuta un microprocesor se numete set de instruciuni$ ,nstruciunile sunt stocate n memorie su" form de cu'inte consecuti'e care materiali*ea* pro!ramul e&istnd dou cate!orii de instruciuni mprite pe "a*a formatului( 6 instruc-iuni cu format fi5 ) la care lun!imea acestora i structura di'erselor cmpuri componente este fi& indiferent de codul instruciunii+ 6 instruc-iuni cu format varia1il ) la care lun!imea i structura cmpurilor componente este dependent de codul instruciunii$ 7ormate u3uale de instruc-iuni a) ") c) d) 1= 1od operaie 1= 1od operaie 1= 1od operaie 1= 1od operaie A= Adres operand A= Adres operand A= Adres operand A= Adres operand A= Adres operand AB Adres re*ultant A, Adres instruciune

AB sau A, Adres re*ultant sau Adres instruciune

A= sau A, Adres operand sau Adres instruciune A= sau A, Adres operand sau Adres instruciune

a) - instruciune cu patru adrese( dou adrese de operan*i o adres pentru re*ultat i o adres pentru urmtoarea instruciune$ Hormatul este incomod datorit numrului mare de ar!umente care nu sunt folosite ntotdeauna$ ") - instruciune cu trei adrese( dou adrese de operan*i i o adres pentru re*ultat sau pentru urmtoarea instruciune$ %n acest ca* se presupune c instruciunile sunt plasate n locaii succesi'e astfel c adresa instruciunii urmtoare este su"neleas$ ,nstruciunile care nu respect aceast sec'en (salturi apeluri de su"rutine) de re!ul nu sunt instruciuni de calcul i ca urmare ultimul cmp poate fi folosit pentru adresa urmtoarei instruciuni de e&ecutat$ c) - instruciuni cu dou adrese( dou adrese de operand din care ultima poate fi pentru urmtoarea instruciune$ Be*ultatul unei operaii este depus ntr-un loc implicit cunoscut (de o"icei n acumulator)$ d) - instruciuni cu o sin!ur adres( o adres de operand sau pentru urmtoarea instruciune$ %n aceast situaie att unul din operan*i ct i re*ultatul operaiei au un loc presta"ilit$ Acest format este cel mai economic$ 0icroprocesoarele actuale folosesc de o"icei instruciuni cu format 'aria"il cu una sau cu dou adrese deoarece permit o utili*are optim a memoriei de pro!ram i o scurtare semnificati' a timpului de e&tra!ere ) decodificare $

Instruc-iuni de transfer de date


2ransfer informaia dintr-un re!istru (sau locaie de memorie) n alt re!istru$ =peraiile curente sunt de transfer (ncrcare memorare) i intersc#im"are$ Instruc-iuni aritmetice "i lo+ice %n aceast cate!orie intr( adunare (A//) scdere (38C) nmulire (08@) mprire (/,5) complementare (1.@) test i comparare J, lo!ic (A6/) 3A8 lo!ic (=B) 3A8 e&clusi' (?=B) ne!are (6:G) incrementare (,61) decrementare (/:1) deplasri stn!a sau dreapta rotiri stn!a (B@) sau dreapta (BB) ter!erea (1@B) unui re!istru sau nscrierea unui "it cu o 'aloare dorit (3:2C9B:3C)$

Instruc-iuni de control al pro+ramului ,nstruciunile din acest cate!orie au drept caracteristic faptul c oricare din ele modific derularea sec'enial a pro!ramului pro'ocnd ncrcarea contorului de pro!ram cu o 'aloare dintr-un cmp de adres al instruciunii curente sau cu o adres calculat ntr-un pas precedent al pro!ramului$ = instruciune de ramificare numit i salt determin prsirea sec'enei normale a pro!ramului fr un mecanism de reinere a locului unde s-a ntmplat acest lucru$ = posi"il re'enire este lsat complet n seama pro!ramatorului$ :&ist dou tipuri de salt( -salt necondiionat (P0.)+ -salt condiionat (PM P1) ce are loc doar dac este ndeplinit o condiie specificat prin starea indicatorilor de condiie po*iionai anterior$ 8nele microprocesoare au o instruciune considerat tot de salt care determin 1.8 s i!nore una sau mai multe instruciuni dintr-o sec'en (3F,.)$ ,nstruciunile de apel (1A@@) i re'enire (B:2) din su"routine reali*ea* i sal'area adresei de ntoarcere (a locului de unde tre"uie reluat pro!ramul dup e&ecuia su"rutinei)$ Instruc-iuni de control al microprocesorului %n acest !rup pot fi nscrise unele instruciuni speciale de control( -oprire (AA@2) ) ce suspend e&ecuia pro!ramului curent pn la apariia unei cereri de ntrerupere e&tern + -nici o operaie (6=.)+ -acti'area (:,) sau de*acti'area (/,) sistemului de ntreruperi$ Instruc-iuni de intrare 8 ie"ire Acest !rup include dou instruciuni de transfer cu porturi de intrare9ieire adic citire port (,6) sau scriere port (=82)$

Te.nici de adresare a memoriei


/in anali*a formatelor de instruciuni am o"ser'at c pentru a defini complet operaia de e&ecutat este ne'oie s cunoatem locul unde sunt amplasai operan*ii adic adresele lor$ %n !eneral un operand se poate afla n re!istre sau n memoria de lucru$ Adresa unui re!istru se poate codifica pe un numr redus de "ii (u*ual > sau I "ii) ce poate face parte c#iar din cmpul destinat codului operaie$ %n al doilea ca* adresa locaiei de memorie unde se afl operandul este preci*at ntr-un cmp separat ce face parte din corpul instruciunii$ Be!sirea unei informaii presupune determinarea adresei utili*nd un set de con'enii i metode de calcul cunoscute su" numele de te#nici de adresare$ .rincipalele te#nici de adresare ntlnite la ma-oritatea microprocesoarelor sunt( "dresarea implicit .leac de la ideea c adresa (locul) unui operand este implicit cunoscut i definit c#iar de operaia e&ecutat n timp ce al doilea operand se afl ntr-un re!istru de lucru$ 0ulte instruciuni cu adresare implicit sunt repre*entate pe un sin!ur cu'nt necesitnd pentru e&tra!ere o sin!ur referire la memorie$ :&( A// r A11 Q A11 R r unde r este un re!istru de lucru+ "dresarea direct :ste le!at de pre*ena unui operand n memorie n care adresa lui nu mai poate fi implicit cunoscut$ 1orpul instruciunii are un cmp e&plicit pentru adres$ %n timpul e&ecuiei instruciunii se mai face o referire suplimentar la memorie pentru e&tra!erea operandului$ 8

:& ( A// r adr

r Q r R ( adr )

unde (adr) este coninutul locaiei de memorie cu adresa adr$ %n ca*ul instruciunii de forma( A// adr A11 Q A11 R ( adr ) a'em un ca* tipic de com"inaie a adresrii implicite i a celei directe$ "dresare imediat .resupune aducerea operandului c#iar n corpul instruciunii (nlocuind corpul de adres cu operandul)$ A'anta-ul const n economia unor referiri suplimentare la memorie n timpul e&ecuiei unei instruciuni util mai ales la operaii cu constante$ A// r I rQrRI unde I este o constant plasat n corpul instruciunii$ "dresarea inde%at :ste principalul mi-loc de adresare a irurilor de date dispuse la adrese consecuti'e pornind de la o adres de "a*$ Adresarea inde&at utili*ea* un re!istru special numit re!istru de inde& n care se plasea* numrul de ordine al elementului din ir care tre"uie prelucrat$ %n corpul instruciunii sunt specificate adresa de "a* i adresa re!istrului de inde&$ :& ( A// r adr S & T "dresarea ba$at :ste folosit ca mi-loc alternati' (la adresarea inde&at) de acces la irurile de date$ Adresa irului este plasat n re!istru special numit re!istru de "a* iar inde&ul face parte din corpul instruciunii$ Adresarea "a*at com"inat cu adresarea inde&at dau un mi-loc foarte eficient de acces la "locurile mari de date$ :& ( A// r CS10T r Q r R (CR10) unde r este re!istrul de lucru C este re!istrul de "a* iar prin (CR10) se nele!e coninutul locaiei de memorie cu adresa dat de re!istrul de "a* la care s-a adu!at 10$ %nlocuind constanta 10 cu & adic CS&T se o"ine o adresare "a*at i inde&at$ "dresarea indirect :ste o modalitate de re!sire a informaiei pe "a*a interpretrii operandului nu ca o 'aloare de calcul ci ca o nou adres de unde se poate e&tra!e 'aloarea sa ade'rat$ Adresarea indirect permite parta-area unei date ntre mai multe uniti de pro!ram dar i accesul la irurile de date$ :? ( A// r (adr) r Q rR(adr) .rin (adr) se nele!e coninutul locaiei de memorie cu adresa adr la care se afl o nou adres$ Alte tipuri de adresri( 6adresare relativ! ) la care calculul adresei se face n raport cu coninutul contorului de pro!ram+ -adresare cu autoincrementare "i autodecrementare (punere i e&tra!ere din sti')+ -adresare pa+inat!9 /e o"icei microprocesoarele nu admit com"inarea oricrei insruciuni cu orice mod de adresare$ ,nstruciunile de transfer implementea* cele mai multe moduri de adresare$ r Q r R ( adr R& )

Microprocesorul "i circuitele e5terne


8n sistem cu microprocesor n afar de unitatea central cuprinde memoria i su"sistemul de intrare9ieire ce sunt conectate printr)o ma!istral e&tern$ Ma+istral! e5tern! a unui microprocesor Beali*area unui sistem cu microprocesor se face n -urul unei ma!istrale ce ser'ete drept cale de transfer a informaiei$ Ji n interiorul microprocesorului principalele sale componente sunt dispuse tot n -urul unei ma!istrale numit ma!istral intern$ %n afara microprocesorului aceasta are drept corespondent ma!istrala e&tern$ @e!tura ntre cele dou ma!istrale se face printr-o interfa special al crui rol este de a asi!ura att o separare electric un numr relati' redus de terminale e&terne dar i adaptarea la acelai protocol de comunicaie ntre dispo*iti'e$ @iniile unei ma!istrale se !rupea* n date (/A2A C83) adrese (A/ C83) comen*i9control (10/ C83) i alimentri$ Magistrala de date &,"T" (US' permite transferal informaiei "idirecional fiind compus dintr-un numr de linii e!al cu lun!imea cu'ntului microprocesorului$ /isciplina de ma!istral impune ca la un moment dat ntr-un sistem s se afle n dialo! doar dou dispo*iti'e unul surs i unul destinaie sensul de transfer fiind unic i dictat de cele dou tipuri de operaii de "a* admise( citire i scriere$ Be*ult c dispo*iti'ele ce se conectea* mpreun pe aceeai ma!istral de date tre"uie s dispun de "uffere cu trei stri (>-3tate) astfel nct s nu apar conflicte electrice n timpul transferurilor$ Magistrala de adrese &", (US' este unidirecional (de la microprocesor spre e&terior) i ser'ete la 'e#icularea adreselor ce permit locali*area n memorie sau ntr-un re!istru de interfa a informaiei utile$ Magistrala de comen$i &CM, (US' conine semnale unidirecionale menite s asi!ure coordonarea i sincroni*area transferurilor cu dispo*iti'ele e&terne precum memorie i interfee ,9=$ Aceste semnale permit identificarea tipului de operaie de transfer ( RD -citire WR -scriere) natura dispo*iti'ului ( MRQ -memorie IORQ -interfee ,9=) precum i natura informaiei 'e#iculate (date MI -instruciuni)$ 0icroprocesorul dispune i de linii speciale pentru !eneratorul de tact (?1 i ?< pentru conectarea cuarului sau 1@F pentru semnalul de tact e&tern) precum i pentru sincroni*area cu dispo*iti'ele e&terne (B/N) iniiali*area (B:3:2) cereri de ntrerupere (,62) i de ma!istral (CBU i CA1F)$ 8nele microprocesoare folosesc aceleai linii pentru adrese i date acestea fiind multiple&ate$ @a nceputul fiecrui transfer procesorul depune nti adresele (ce pot fi Vn!#eateV ntr-un re!istru @A21A) i apoi folosete aceleai linii pentru citirea sau scrierea datelor$ Memoria 3istemele cu microprocesoare utili*ea* dou tipuri de memorii pentru stocarea datelor si pro!ramelor$ -0emorie numai cu posi"ilitate de citire care este ne'olatil i care este scris de utili*ator (:.B=0 i ::.B=0) aceasta fiind memoria de pro!ram$ -0emorie cu posi"iliti de citire9scriere (BA0) care este 'olatil i ser'ete la stocarea temporar a informaiilor (date re*ultate i c#iar pro!rame) aceasta fiind memoria de lucru$ 0icroprocesoarele de u* !eneral de re!ul multicip nu dispun de resurse proprii de memorie (cu e&cepia re!istrelor de lucru ce pot fi considerate memorii BA0 foarte rapide dar de capacitate mic)$ 0ulte microprocesoare actuale sunt dotate cu memorie BA0 proprie foarte rapid de capacitate relati' modest (I W 1; FC) al crui rol este de a funciona ca tampon ntre 1.8 i memoria e&tern mai lent dar de mare capacitate$ Aceast memorie numit memorie 1A1A: reali*ea* funcia de accelerator mpreun cu un dispo*iti' intern de !estionare funcie ce este complet transparent pentru utili*ator$ Su1sistemul de intrare8ie"ire Hace le!tura ntre microprocesor i periferice prin interfee speciali*ate numite !eneric porturi$ %n principiu transferal datelor de la sau ctre porturi se face cu instruciuni speciale numite instruciuni de intrare9ieire$ 1itirea unui port se face cu o instruciune de intrare (,6) iar scrierea ctre un port se face cu o 10

instruciune de ieire (=82)$ 8tili*atorul are acces la funciile interfeei prin intermediul re!istrelor acesteia$ Be!istrele de interfa se !rupea* n trei cate!orii( -registre de control destinate mane'rrii interfeei i perifericului asociat+ -registre de stare cu a-utorul crora se 'erific condiiile i modul de e&ecuie al operaiilor precum i erorile aprute+ -registre de date prin care se face transferul propriu ) *is$ 3tructura simplificat a unei interfee este pre*entat n fi!ura urmtoare(
10/ C83

A/ C83

/ecodor i control interfa

Be!istru de control

Be!istru de stare /,3.=M,2,5 .:B,H:B,1

Be!istru de date

/A2A C83

2ampon

Be!istru de date

Tipuri de Interfe-e
-inter-a!a paralel ) permite interconectarea perifericelor cu 'ite* de lucru ridicat+ -inter-a!a serial ) permite interconectarea perifericelor cu 'ite* redus dar folosind un numr mic de linii (de re!ul dou sau trei) conform unui standard (B3 <>< B3 I<< B3 I85 etc)+ -contor.tempori$ator( este o interfa special folosit ca i contor sau !enerator de impulsuri pro!rama"il+ -inter-a!a ideo( permite o"inerea ima!inilor !rafice ale caracterelor sau cur"elor pe un ecran monitor 25 sau cu cristale lic#ide$

Transferuri 0 cicluri 0 st!ri


.rincipala utilitate a unei ma!istrale este transferul informaiei$ .entru aceasta un microprocesor tre"uie s preci*e*e( -natura operaiei dorite( poate fi citire sau scriere i este identificat cu a-utorul unor semnale speciale de pe ma!istrala de comen*i ( RD sau WR )+ -natura dispo*iti'ului implicat n transfer ce poate fi memorie au interfa de intrare9ieire ( MRQ memorie IORQ - interfaa ,9=)+ -adresa locaiei sau re!istrului dorit (A/ C83)+ 2ransferul are loc pe durata unui ciclu de ma!istral$ 1um microprocesorul este !u'ernat de un semnal de tact precis re*ult c i ciclul de ma!istral este corelat cu acest tact$ .erioada tactului se numete stare iar fiecare ciclu are un numr determinat de stri$ 11

1iclurile de citire9scriere ale microprocesorului sunt date n dia!ramele urmtoare( 1iclu de citire 21 1@F A/ C83 0BU ,BU B/ /A2A C83 /at sta"il Adres sta"il dres sta"il 2< 2>

1iclu de scriere 21 1@F A/ C83 0BU ,BU OB /A2A C83 /at sta"il Adres sta"il 2< 2>

%nti microprocesorul pune o adres 'alid pe liniile A/ C83 (locaie de memories sau re!istru ,9=) apoi acti'ea* pe rnd semnalele care specific natura dispo*iti'ului ( MRQ sau IORQ ) i apoi operaia dorit ( RD sau WR )$ %n timpul ciclului de citire microprocesorul ateapt dispo*iti'ul adresat s pun pe ma!istrala de date un cu'nt 'alid pe care-l preia spre sfritul ciclului$/ac dispo*iti'ul nu poate rspunde n timp util el poate folosi de*acti'area liniei B:A/N fornd microprocesorul s atepte$ Holosirea liniei B:A/N pentru sincroni*area cu dispo*iti'e lente determin microprocesorul s insere*e automat o succesiune de stri de ateptare acestea sunt introduse n interiorul ciclului lun!indu-i con'ena"il durata$ /ac dispo*iti'ul adresat nu acti'ea* linia B:A/N sistemul se poate "loca$

:ntreruperi "i accesul direct la memorie


1<

= pro"lem important n orice sistem de calcul este sincroni*area acti'itii microprocesorului cu e'enimentele e&terne$ 2oate aceste e'enimente au un punct comun( sunt asincrone n raport cu e&ecuia pro!ramului de ctre procesor$ .ro!ramul tre"uie informat printr-un mi-loc oarecare c un astfel de e'eniment s-a produs i c tre"uie tratat corespun*tor (printr-o sec'en specific numit rutin de tratare)$ :&ist trei tipuri de mecanisme utili*ate pentru tratarea e'enimentelor e&terne( - ateptarea ("ucla) pro!ramat+ - ntreruperi+ - accesul direct la memorie$ "teptarea programat %n forma sa cea mai simpl const ntr-o sec'en de pro!ram care citete n permanen o informaie de stare i testea* un indicator pentru a afla dac e'enimentele au a'ut loc$ .rocesorul nu e&ecut nici o alt acti'itate pn ce e'enimentul nu s-a produs re*ultnd timpi inutili*a"ili pentru sistem$ /ntreruperi 3unt faciliti #ard7are oferite de microprocesoare prin care un dispo*iti' periferic Vatra!e ateniaV asupra producerii unor e'enimente e&terne ce reclam o inter'enie prompt$ %nainte ca o ntrerupere s poat a'ea loc este necesar s se ndeplineasc condiiile( -perifericul n cau* tre"uie s fie capa"il s !enere*e o ntrerupere+ -sistemul tre"uie s posede toate mecanismele #ard7are de transmitere a semnalului de ntrerupere de la periferic la 1.8+ -pro!ramul ce se e&ecut de microprocesor tre"uie s conin sec'ene de cod special destinate lucrului cu ntreruperi (rutine de tratare a ntreruperilor)+ -perifericul tre"uie s !enere*e semnalul de ntrerupere$ Apariia unei ntreruperi n acti'itatea curent a microproesorului determin urmtoarea sec'en de e'enimente( -instruciunea n curs de e&ecuie se nc#eie normal+ -starea intern a procesorului (re!istrul de stare i contorul de pro!ram) este sal'at pentru a permite mai tr*iu reluarea acti'itii din locul unde a fost ntrerupt+ -microprocesorul ncarc noi informaii de stare i e&ecut un salt de la o rutin de tratare specific ce reali*ea* toate aciunile ur!ente implicate de apariia e'enimentului+ -la sfritul rutinei de tratare (marcat cu o instruciune de re'enire din ntrerupere ,B:2) se restaurea* starea procesorului sal'at anterior+ -restaurarea este nc#eiat cu rencrcarea contorului de pro!ram cu 'aloarea sal'at i prin aceasta reluarea pro!ramului ntrerupt$ O1serva-ii -tratarea ntreruperii tre"uie s nlture cau*a apariiei acesteia astfel sec'ena de mai sus se poate repeta+ -dac sosesc noi ntreruperi de aceeai natur n timpul e&ecuiei rutinei de tratare se poate a-un!e la situaia ca aceasta s fie restartat recursi'e pn la apariia unor erori sau pierderea controlului asupra pro!ramului+ -procesoarele actuale suport instruciuni ce permit acti'area respecti' de*acti'area tratrii ntreruperilor$ .e "a*a acestora se pot elimina ntreruperile nepre'*ute$ 0icroprocesoarele mai simple sunt dotate cu o sin!ur intare pentru semnale de ntrerupere (,62) dar cele mai multe posed o intrare suplimentar (60,) care permite tratarea unor e'enimente imperati'e moti' pentru care nu e&ist nici un mecanism intern de in#i"are a acestora (ntreruperi nemasca"ile)$ = pro"lem important apare la conectarea ntreruperilor de la mai multe periferice$ 1um pot fi luate acestea n considerare dac microprocesorul dispune doar de o sin!ur intrare ,62$ Bspunsul este dat de introducerea unui mecanism de multiple&are9ar"itrare a cererilor de ntrerupere "a*at pe o lo!ic cu prioriti$ 1>

= soluie este folosirea unui controler de ntreruperi$ Acesta dispune de un codor de prioriti care determin solicitantul cu cel mai mare ni'el de prioritate i !enerea* semnalul de ntrerupere ctre procesor$ %n momentul acceptrii ntreruperii controlerul pune pe ma!istral un cu'nt de identificare al perifericului solicitant astfel nct microprocesorul s fie capa"il s acti'e*e rutina de tratare specificat$ = alt soluie este cea n care lo!ica de ar"itrare i multiple&are a fost distri"uit c#iar n circuitele de interfa$ Hiecare circuit are o intrare de autori*are a ntreruperilor (,:,) i o ieire de semnali*are a acti'itii ctre perifericul urmtor (,:=)$ /ac ,:,E1 atunci perifericul n cau* poate !enera o ntrerupere$ /ac acelai periferic se afl n curs de tratare el 'a pune ,:=E0$ 8n dispo*iti' cu ,:,E0 este o"li!at s transmit ,:=E0$ .rioritatea este sta"ilit pe "a*a po*iiei fi*ice a perifericului ntr-un lan de prioriti$ =dat !enerat ntreruperea i acceptat de procesor perifericul i 'a pune cu'ntul de identificare pe ma!istral pentru a permite acti'area rutinei de tratare corect$

.eriferic 1

.eriferic <

1ontroler de 1 ntreruperi

,62

0,1B=.B=1:3=B

.eriferic n

X1Y ,:,

60,

.eriferic 1 ,:= %ntrerupere nemasca"il ,:, .eriferic < ,:= 60, ,:, .eriferic n ,:= 1I %ntrerupere nemasca"il ,62 0,1B=.B=1:3=B

Accesul direct la memorie


.ermite ca dou procesoare s parta-e*e aceeai ma!istral n scopul reali*rii accesului la aceleai resurse$ 8nul dintre ele este c#iar unitatea central a sistemului iar cellalt este dedicat numai interceptrii i ar"itrrii cererilor pro'enite de la periferice precum i coordonrii transferurilor solicitate fr a mai apela la unitatea central$ Acest procesor dedicat ) controler pentru acces direct la memorie (/0A) funcionea* n dou moduri( -modul sla'e funionnd ca un circuit de interfa o"inuit ce poate fi pro!ramat prin instruciuni ,9= pro!ramarea are ca scop preci*area locaiei de memorie de unde ncepe transferul i sensul transferului+ -modul master ) controlerul preia controlul ma!istralei (dup ce a primit acceptul 1.8) i diri-ea* traficul de informaie !enernd toate semnalele de control necesare$ 1iclurile /0A se pot ntreptrunde cu cele 1.8 mai ales dac rata de transfer a perifericului nu este prea mare ca* n care e&ecuia pro!ramului principal este ncetinit foarte puin$ 0ulte controlere /0A sunt capa"ile s !estione*e mai multe periferice$ Astfel cererile /0A notate /BU emise de periferice a-un! la controler care le ar"itrea* i care solicit apoi eli"erarea temporar a ma!istralei de ctre procesor prin acti'area semnalului CB:U$ .rocesorul termin ciclul de memorie sau ,9= n curs dup care se deconectea* de la ma!istral i semnali*ea* acest lucru acti'nd linia /BU0 CA1F$ /BU 1ontrolerul /0A preia acum controlul ma!istralei i semnali*ea* acest lucru perifericului prin smnal de acceptare /A1F$ @a /A1F terminarea unui transfer /A1F0/0A perifericul de*acti'ea* linia /BU controlerul eli"ere* ma!istrala semnali*nd acest lucru i procesorului prin linia CBU acesta CB:U preia din nou controlul ma!istralei i CB:U totul reintr n normal$ CA1F CA1F /BU /A1F .eriferice /BU1 /A1F1 15 1ontroler /0A

0icroprocesor

A'anta-ul imediat al te#nicii de transfer prin acces direct la memorie este c acesta permite eli"erarea procesorului de sarcina !estionrii directe a intrrilor i ieirilor de date din sistem( este suficient s pro!ramm controlerul /0A pentru citirea unui "loc de date de la un periferic (de e&emplu$ 1A6) dup care procesorul este li"er s reali*e*e o alt acti'itate ce nu are ne'oie de datele solicitate$ 8nitatea de transfer a datelor prin /0A este "locul de aceea la sfritul transferului este considerat a fi epui*area "locului de date$

Microcontrolerul );&1<I=TE2>
Hamilia de microcontrolere de 8 "ii 01351 lansat i produs de ,ntel a de'enit practic un standard industrial$ :a a stat la "a*a de*'oltrii de microcontrolere compati"ile reali*ate de firme ca( .#ilips 3iemens /allas etc$ Ar#itectura 01351 este optimi*at pentru aplicaii de control$ ,ntel ofer o !am lar! de microcontrolere compati"ile cu 8051 ce difer ntre ele doar prin opiuni i te#nolo!ie$ .rincipalele caracteristici ale familiei 01351 sunt pre*entate n ta"elul urmtor( 1A,. 80>1 8051 80151 80>< 805< 8015< 8915< B=0 intern IZ IZ 8Z 8Z 8Z Hlas# BA0 intern 1<8 1<8 1<8 <5; <5; <5; <5; 2imere 1; "iti < < < > > > > 3urse int$ 5 5 5 ; ; ; ;

0icrocontrolerul 8051 are n structura sa( unitate aritmetica i lo!ic de 8 "ii ce poate e&ecuta operaii de adunare scdere nmulire mprire incrementare J, 3A8 3A8 :&clusi' complementare i rotire memorie de pro!ram de tip B=0 IZ octei memorie de date BA0 1<8 octei I porturi paralele de intrare9ieire P0 P> de 8 "ii un port serial duple& dou circuite numrtoare9tempori*atoare 6920 6921 de cte 1; "ii 1;

5 surse de ntrerupere cu dou ni'ele de prioriti !enerator de tact 1 < 1< MH z /easemenea microcontrolerul are posi"ilitatea de adresare a unei memorii e&terne de pro!ram i a unei memorii e&terne de date cu capacitate ma&im de ;IZ octei$ 2oate microcontrolerele din familia 01351 au spaiu separat pentru memoria de date i de pro!ram$ Acest lucru permite o cretere de 'ite* datorat att suprapunerii pariale a unor microoperatii ct i crearea posi"ilitatii de adresare scurt (cu un sin!ur octet de adres)$ 0emoria de pro!ram poate fi doar citit$ @a 8051 primii IZ octei de pro!ram sunt n c#ip$ Bestul se afl n e&terior iar pentru a citi aceast memorie de pro!ram e&tern se folosete semnalul .3:6 (.ro!ram 3tore :na"le)$ 0emoria de date ocup un spaiu separat fa de memoria pro!ram$ @a 8051 e&ist 1<8 octei BA0 n c#ip$ 0emoria de date e&tern poate fi accesat prin !enerarea de ctre unitatea central a semnalelor de citire B/ sau scriere OB$ 0emoria de pro!ram i cea de date (e&tern) pot fi com"inate dac dorim prin folosirea semnalelor B/ si .3:6 pentru a !enera smnal de citire pentru o memorie comun n care s a'em att memorie pro!ram ct i memorie de date$

0emoria de pro!ram
/up reset 1.8 i ncepe e&ecuia de la adresa 0000A unde tre"uie s e&iste o instruciune de salt peste *ona 'ectorilor de ntrerupere$ Aceast *on ncepe de la adresa 000>A unde este plasat rutina de tratare a ntreruperii e&terne ,62B0$ Aarta memoriei pro!ram arat astfel(
HHHH# HHHH#

B=0 e&tern 2000h 1FFFh B=0 intern


0000#

sau

B=0 e&tern

0000#

Adresele 'ectorilor de tratare a ntreruperilor sunt( 000># ,62B= 0 000C# 2imer 0 001># ,62B 1 001C# 2imer 1 00<># 3eriala 00<C# 2imer < (doar pentru 8&5<) /ac rutina de tratare a ntreruperii este foarte scurt ea poate fi plasat n cei 8 octei re*er'ai$ Butinele mai lun!i pot folosi o instruciune de salt peste locaiile re*er'ate ntreruperilor urmtoare dac acestea se folosesc$ 1ei IZ octei (8Z octei la 8&5<) de memorie pro!ram pot fi n capsul sau e&tern$ Aceast selecie este posi"il folosind linia :A (:&ternal Acces)$ /aca :A[0 se accesea* ;IZ octei memorie e&tern$ /ac :A[1 atunci se e&ecut pro!ram din( - memoria intern IZ octei (0000#-0HHH#)+ - memoria e&terna de pn la ;IZ octei ntre adresele 1000# i HHHH#$

17

%n timpul e&ecuiei pro!ramului din memoria intern nu se !enerea* semnalul .3:6$ .orturile .0 i .< sunt dedicate pentru a se folosi ca ma!istral de adres$ /easemenea .0 este folosit i ca ma!istral de date prin multiple&area adreselor A0-A7 i datelor /0-/7$ 0odul de conectare al memoriei pro!ram este pre*entat n continuare(
.0 /=-/7

80151
A@: .< .3:6

@A21A

A=-A7

32C

MEM
PRO?
A8-A15 =:

.entru citirea memoriei pro!ram se emite octetul inferior al .1 (.ro!ram 1ounter) ca o adres la portul .0$ 1u a-utorul semnalului A@: (Adress 1atc# :na"le) se nscrie aceast adres ntr-un latc#$ %ntre timp la portul .< se emite octetul superior al .1$ =dat ce adresa este sta"il se acti'ea* semnalul PSEN pentru citirea datelor din memoria de pro!ram date care sunt citite de portul .0$
Adresarea memoriei pro!ram se face ntotdeauna pe 1; "ii$ :&ecuia pro!ramelor din memoria pro!ram e&tern sacrific astfel dou porturi .0 i .<$

0emoria de date intern


0icrocontrolerul 8051 are o memorie intern de date BA0 de 1<8 octei adresa"il direct i indirect n spaiul de adresare 00h 7 Fh $ Aceast *on este mprit astfel(
7H# Mona de u* !eneral >0# <8# <0# 18# 10# 08# 00# 00# 1H# 17# 0H# Mona re!istrelor B0-B7 7H# <H# Mona adresa"ila la ni'el de "it

B0

B1

B<

B>

BI

B5

B;

B7 07#

3paiul 00#-07# repre*int dup reset !rupul de re!istre B0-B7 utili*ate pentru surse sau destinaii n multe instruciuni ca( A// A Bn 0=5 Bn \data 18

%ntr-o astfel de instruciune re!istrele B0-B7 sunt adresate direct cu un cmp de > "ii (n = 0 7) cuprins mpreun cu codul operaiei n primul octet corespun*tor codului main al instruciunii$ :&( A// A Bn A// A B0 A// A B1 $$$$$$$$$$$$$$$$$$$$ A// A B7 cod instr$( 0010$1rrr <8# <9# <H#

Be!istrele B0 i B1 sunt utili*ate i pentru adresarea indirect a memoriei de date interne ca de e&emplu n instruciunile( 0=5 A ]Bi A// A ]Bi ,61 ]Bi %n aceste instruciuni indicele i cu 'alorile 0 sau 1 este preci*at n primul cu'nt din codul main printr-un "it$ /easemenea re!istrele B0 i B1 sunt utili*ate pentru adresarea indirect a memoriei de date e&terne n instruciunile( 0=5? A ]Bi 0=5? ]Bi A %n aceste instruciuni coninutul re!istrului B0 sau B1 repre*int octetul mai puin semnificati' al adresei$ =ctetul mai semnificati' al adresei este dat de portul .<$ :&ist posi"ilitatea ca prin pro!ramarea "iilor B31 i B30 ai re!istrului de stare a pro!ramului (.3O) !rupul de re!istre B0-B7 s fie ales conform ta"elului( .3O$I B31 0 0 1 1 .3O$> B30 0 1 0 1 Adresa !rupului B0-B7 00#-07# 08#-0H# 10#-17# 18#-1H#

@ocaiile memoriei din spaiul <0#-<H# repre*int o *on de memorie adresa"il i la ni'el de "it n instruciuni de tipul( 1.@ "it PC "it rel Adresarea "iilor se reali*ea* direct cu un octet coninut n codul main al instruciunii corespun*atoare$ :&( 1.@ 1.@ 1 "it are codul are codul 10110011 10110010 adr$"it

Mona de memorie 80#-HH# este o *on de memorie cu acces direct i pe "it folosit pentru re!istrele cu funciuni speciale$ @a microcontrolerul 8&5< aceast *on este du"lat cu o *on de memorie BA0 dar la care accesul se face numai indirect$ Astfel memoria intern de date arat astfel(

19

HH#

Adresa"ila numai indirect (8&5<)

Adresa"ila numai direct


(3HB)

80# 7H#

Adresa"ila direct si indirect

00# 0emoria intern de date este utili*at deasemenea pentru sti'$ Be!istrul indicator de sti' 3. este ncrcat dup reset cu 'aloarea 07#$ :&ist posi"ilitatea de modificare a *onei din memoria intern de date utili*at pentru sti' prin ncrcarea altei 'alori n re!istrul 3.$ /e e&emplu prin ncarcarea 'alorii <H# n re!istrul 3. sti'a ncepe de la 'aloarea >0#$

Re+istrele interne ale );&1


Be!istrele interne se numesc re!istre cu funcii speciale i sunt adresa"ile doar direct n spatiul de adresare 80#-HH#$ /easemenea se pot adresa direct "iii unora din re!istrele cu funcii speciale$ *egistrele interne i -unc!iile speciale ale acestora0 " 1 registru acumulator ! "i#i$ 3e foloseste ca surs i destinaie prin adresare implicit n multe operaii aritmetice i lo!ice$ /e e&emplu n instructiunea A// A ]data acumulatorul d un operand surs i este i destinaia re*ultatului prin adresarea implicit$ ( 1 registru de ! "i#i :ste un re!istru ce se utili*ea* ca surs i destinaie prin adresare implicit n instruciunile de nmulire 08@ AC i mprire /,5 AC precum i pentru u* !eneral prin adresare direct$ ,PT* ) registru %ointer %entru date &' "i#i) compus din /.A (8 "ii) i /.@ (8 "ii)$ Be!istrul /.2B se utili*ea* pentru adresarea indirect a memoriei de date e&tern n instruciunile 0=5? A ]/.2B i 0=5? ]/.2B A precum i pentru adresarea indirect a memoriei de pro!ram n instruciunea 0=51 A ]AR/.2B$ SP ( registru indicator de sti)* ! "i#i$+ 3ti'a necesar funcionrii microcontrolerului este or!ani*at n memoria intern de date$ /up reset 3. are 'aloarea 07#$ @a scriarea unui octet n memoria sti' coninutului re!istrului 3. se incrementea* cu o unitate$ PS2 ) registru de stare a %rogramului (re!istru cu indicatorii de condiii) ,ndicatorul de transport 1 (.3O$7) se po*iionea* la ni'el K1L lo!ic n urma e&ecuiei unei instruciuni de adresare care a produs un transport i n urma e&ecuiei unei instruciuni de scdere care a necesitat un mprumut$ /ac e&ecuia unei instruciuni de scdere9adunare nu produce mprumut9transport indicatorul 1 se po*iionea* la ni'el lo!ic K0L$ Astfel indicatorul 1 se utili*ea* pentru aplicaii n operaii aritmetice cu operan*i fr semn$ /easemenea indicatorul 1 este folosit i n operaii lo!ice i de transfer al controlului( A// A direct A6@ 1 "it B@1 A P1 Bel ,ndicatorul de transport au&iliar A1 (.3O$;) se po*iionea* la ni'el lo!ic K1L n urma unei operaii de adunare9scdere care produce transport9mprumut din9n po*iia "itului >$ <0

,ndicatorul de depire =5 (.3O$<) se po*iionea* la ni'el lo!ic K1L n urma e&ecuiei unei instruciuni de adunare dac s-a produs un transport din po*iia "itului ; i nu s-a produs un transport din po*iia "itului 7 indicnd astfel depirea domeniului de 'alori (1<8 1<7) $ ,ndicatorul de paritate . (.3O$0) conine suma modulo < a "iilor re!istrului acumulator$ @a ni'el lo!ic K1L indic un numr impar de "ii cu ni'el lo!ic K1L n acumulator$ Citul . nu este modificat de nici o instruciune de scriere n re!istrul .3O$ 1eilali "ii ai .3O sunt( H (.3O$5) disponi"il pentru u* !eneral .3O$1 re*er'at pentru de*'oltri ulterioare (nefolosit) B31 i B30 (.3O$I i .3O$>) pentru selecia !rupului de re!istre B0-B7$ S(UF ( registru serial fiind compus de fapt din dou re!istre separate de 8 "ii a'nd aceeai adres direct unul pentru transmisie i unul pentru recepie folosite pentru interfaa serial$ 1nd un octet de date este scris n 3C8H acesta este plasat n "ufferul de transmisie i declansea* nceputul transmisiei seriale a acestuia$ 1nd se reali*ea* o recepie se citete coninutul "ufferului de recepie$ Adresa direct a re!istrului 3C8H este 99A$ *egistrele de control ) e&ist mai multe astfel de re!istre care conin "ii de control i de stare pentru ntreruperi tempori*atoare9numrtoare i portul serial$ :le 'or fi descrise la funciile corespun*atoare$ *egistrele de tempori$are ) e&ist dou perec#i de re!istre de cte 8 "ii 20 (2A0 2@0) 21 (2A1 2@1) folosite ca numrtoare9tempori*atoare de 1; "ii pro!rama"ile n I moduri diferite$ 1elelalte re!istre interne i funciile acestora 'or fi discutate ulterior$

0oduri de adresare
0odurile de adresare folosite de microcontrolerul 8051 sunt( "dresare direct %n adresarea direct operandul este specificat de un cmp de 8 "ii de adres din instruciune$ /oar BA0-ul intern de date i 3BH pot fi adresate direct$ :&( 0=5 A >0# 0=5 A /.@ "dresarea indirect %n adresarea indirect instruciunea specific un re!istru ce conine adresa operandului$ /oar BA0-ul intern i cel e&tern poate fi adresat indirect$ Adresa pe 8 "ii a operandului se afl n unul din re!istrele B0 sau B1$ Be!istrul Bi i[0 sau 1 este preci*at printr-un "it din codul main al instruciunii$ :&( 0=5 A ]Bi 1110 011, 0=5 ]Bi A 1111 011, 0=5 ]Bi direct 1010 011, A/B$/,B:12 0=5 direct ]Bi 1000 011, A/B$/,B:12 Adresa pe 1; "ii a operandului se afl n /.2B fiind folosit pentru transfer de date din memoria BA0 e&tern n instruciuni de tipul( 0=5? A ]/.2B 0=5? ]/.2B A +nstruc!iuni cu regitrii ,nstruciunile cu re!itrii de lucru interni (B0-B7) au a'anta-ul eliminrii unui octet de adres din instruciune deoarece adresa operandului se poate coda pe > "ii din codul instruciune$ :&( 0=5 A Bn 1110 1rrr 0=5 Bn direct 1010 1rrr adr direct :&ist i instruciuni specifice orientate pe mane'rarea re!itrilor$ 8nele instruciuni operea* doar n acumulator sau /.2B nefiind necesar nici un octet suplimentar de adres n codul instruciunii$ :&( 1@B A 1110 0100 /:1 A 0001 0100 /,5 AC 1000 0100 <1

P0. 0=5?

]AR/.2B A ]/.2B

0111 1110

0011 0000

Constante imediate 5aloarea constantei urmea* codului n memoria pro!ram$ /e e&emplu 0=5 A \data ncarc 'aloarea dat n acumulator$ :&( 0=5 A \100100 A 0=5 A \;IA "dresarea inde%at 3e folosete pentru a accesa memoria de pro!ram ce poate fi doar citit$ Acest mod se folosete pentru a citi ta"ele din memoria de pro!ram$ Be!istrul de "a* de 1; "ii (unul din re!istre /.2B sau .1) indic "a*a ta"elului iar acumulatorul este incrcat cu po*iia din ta"el dorit$ Adresa de citire din ta"el re*ult ca sum dintre coninutul acumulatorului i pointerul de "a*$

Tipuri de instruc-iuni
+nstruc!iuni aritmetice Aceste instructiuni sunt( Adunare A// A ^CN2:_ Adunare cu 1 A//1 A ^CN2:_ 3cdere 38CC A ^CN2:_ ,ncrementare ,61 ^CN2:_ /ecrementare /:1 ^CN2:_ %nmulire 08@ AC %mprire /,5 AC A-ustare *ecimal /A +nstruc!iuni logice ,nstruciunile lo!ice disponi"ile sunt( A6@ A ^CN2:_ A6@ ^CN2:_ A A6@ ^CN2:_ \data =B@ ^CN2:_ A =B@ A ^CN2:_ =B@ ^CN2:_ \data ?B@ A ^CN2:_ ?B@ ^CN2:_ A ?B@ ^CN2:_ \data 1@B A 1.@ A B@ A B@1 A BB A BB1 A 3OA. A = operaie de tipul A6@ A ^"4te_ poate lua una din formele urmtoare( Adresare direct A6@ A >0A Adresare indirect A6@ A ]B1 Adresare re!istru A6@ A B; Adresare imediat A6@ A \100 <<

2oate operaiile asupra memoriei de date pot fi e&ecutate fr a folosi acumulatorul$ /e e&$ ?B@ ^"4te_ \data e&ecut un sau e&clusi' ntre octetul de memorie i data imediat fr folosirea acumulatorului$ ,nstruciunea 3OA. A sc#im" ntre ele partea superioar i cea inferioar din acumulator$ ,nstruciuni pentru transferul datelor cu memoria intern Hormatul !eneral al instruciunii este( 0=5 ^dest_ ^sursa_ i permite transferul ntre dou locaii interne BA0 sau 3BH fr a folosi acumulatorul sau ntre un re!istru i o locaie de memorie$ 2re"uie inut cont de faptul c pentru 805< spaiul de memorie superior celor 1<8 octei BA0 poate fi adresat doar indirect iar spaiul re!istrelor cu funcii speciale poate fi adresat doar direct$ 3ti'a se afl n memoria BA0 intern i crete spre adresele superioare$ ,nstruciunea .83A mai nti incrementea* 3. (3tac# .ointer) i apoi depune octetul pe sti'$ ,nstruciunile .83A i .=. se folosesc doar n modul de adresare direct pentru a indica octetul ce 'a fi sal'at sau restaurat$ /ac sti'a depete cei 1<8 de octei din BA0-ul intern octeii depui n continuare se pierd iar cei restaurai au 'alori nedeterminate$ ,nstruciunile de transfer includ i instruciuni pe 1; "ii care pot fi folosite pentru a iniiali*a pointerul de date /.2B pentru citiri de ta"ele din memoria pro!ram sau pentru accesul la memoria e&tern de date$ .rincipalele instruciuni care adresea* spaiul intern al memoriei de date sunt( 0=5 A ^src_ 0=5 ^dest_ A 0=5 ^dest_ ^src_ 0=5 /.2B \data 1; .83A ^src_ .=. ^dest_ ?1A A ^"4te_ ?1A/ A ]Bi ,nstruciunea ?1A A ^"4te_ face ca acumulatorul i octetul s-i sc#im"e 'alorile ntre ele$ ,nstruciunea ?1A/ A ]Bi este asemntoare dar doar cei mai puin semnificati'i I "ii sunt sc#im"ai$ ,nstruciuni pentru transferul datelor cu memoria e&tern %n acest ca* poate fi folosit doar adresarea indirect$ Ale!erea tipului de transfer se face dup numrul de octei de adres$ /ac se dorete adresarea cu un sin!ur octet de adres se 'or folosi re!itrii B0 sau B1$ .entru adresarea cu doi octei de adres se 'a folosi re!istrul /.2B$ /e*a'anta-ul folosirii adresei pe 1; "ii este acela al folosirii portului .< care astfel nu poate fi folosit pentru aplicaie$ 3electarea memoriei e&terne se face cu operaii de tipul 0=5? ce pot fi( MO,- ./0Ri 0=5? ]Bi A 0=5? A ]/.2B 0=5? ]/.2B A 3etul de instruciuni al microcontrolerului 8051 conine i dou instruciuni pentru citirea ta"elelor din memoria pro!ram$ Aceste instruciuni sunt( 0=51 0=51 A ]AR/.2B A ]AR.1

,nstruciunea 0=51 A ]AR/.2B transfer intrarea din ta"el n acumulator$ /.2B este setat s indice nceputul ta"elei iar acumulatorul intrarea din ta"el$ ,nstruciunea MO,1 ./0.2P1 se compune din urmtoarele microoperaii(
( P1 ) ( P1 ) +1 ( .) (( .) + P1 )

Holosirea acestui tip de citire a datelor este ilustrat de pro!ramul urmtor( 0=5 A ,62B`2AC@: 1A@@ 2AC@: <>

-----------------3u"rutina 2AC@: 'a arta astfel( 2AC@:( 0=51 A ]AR.1 B:2 data1 ------data6 ,mediat dup instruciunea B:2 se plasea* ta"ela cu intrri de la 1 la <55$ ,ntrarea 0 nu se foloseste deoarece n timpul e&ecuiei instruciunii 0=51 .1-ul conine adresa instruciunii de ntoarcere B:2$

Offset relativ
/estinaia adresei unde se face un salt condiionat este specificat n asam"lor de un ta"el sau de o adres n memoria pro!ram$ /estinaia se d ca un offset relati' la po*iia curent a .1$ Aceasta nseamn n cod complement lui doi c octetul offset se adun la .1 dac saltul are loc$ /omeniul de salt este cuprins ntre -1<8 i R1<7 octei n memoria pro!ram relati' la primul octet ce urmea* dup instruciune$ +nstruc!tiuni de salt Aceste instruciuni sunt( P0. addr P0. ]AR/.2B ,nstruciunea P0. addr ascunde de fapt trei instruciuni( 3P0. AP0. @P0. 1$ S@MP ) formea* adresa destinaie ca offset relati' a'nd doi octei coninnd codul operaiei i offsetul relati'$ /istana ma&im de salt este limitat la -1<8 R1<7 octei relati' la instruciunea ce urmea* dup 3P0.$ <$ 2@MP ) formea* adresa de salt ca o constant pe 1; "ii$ ,nstruciunea are > octei constnd n codul operaiei i doi octei de adres destinaia fiind oriunde n spaiul de ;I Z$ >$ A@MP 4 formea* adresa destinaie ca o constant pe 11 "ii$ ,nstruciunea are < octei lun!ime unul conine codul operaiei din 5 "ii i pe > "ii adresele cele mai semnificati'e$ Al doilea octet conine restul adresei$ Adresa de salt poate fi oriunde n spaiul de <Z octei relati' la instruciunea ce urmea* dup AP0.$ @MP AAB,PTR ofer posi"iliti de salt pentru lucru cu ta"ele$ Adresa destinaie este o"inut ca sum dintre re!istrul /.2B i coninutul acumulatorului$ Adresa de salt este pe 1; "ii$ %n mod u*ual /.2B este setat cu adresa ta"elului i funcie de adresa acumulatorului a'em o anumit specificaie$ 2AC@:(AP0. 1A3:0 AP0. 1A3:1 aaaaaaaa AP0. 1A3:6 aaaaaaaa aaaaaaaa 0=5 /.2B \2AC@: 0=5 A ,6/:? B@ A +nmulire cu doi P0. ]AR/.2B 3ucrul cu subrutine Apelul unei su"rutine se face cu instruciuni de tipul 1A@@ adr$ /e fapt sunt dou instruciuni @1A@@ i A1A@@ cu adresare pe 1; "ii respecti' pe 11 "ii$ 3u"rutinele tre"uie s se termine cu B:2 pentru a re'eni la instruciunea de dup 1A@@$ %ntreruperile se 'or termina cu B:2,$ Salturi condi!ionate <I

Acestea specific destinaia adresei ca un offset relati' la instructiunea ce urmea* dup instruciunea de salt$ /istana de salt este limitat la -1<8 la R1<7 octeti fa de primul octet al instruciunii urmtoare$ 6u e&ist fla! * n .3O$ ,nstruciunile PM i P6M testea* direct coninutul acumulatorului dac este *ero i n funcie de coninut face saltul sau continu pro!ramul$ /P6M este o instruciune de control pentru "ucle la fel ca i 1P6:$ Hormatul lor este( /P6M ^"4te_ rel 1P6: A ^"4te_ rel 1P6: ^"4te_ \data rel Porturile paralele ale );&1 0icrocontrolerul 8051 conine patru porturi paralele "idirecionale de cte 8 "ii$ Hiecare port are un re!istru intern de 8 "ii .0aa.> i un amplificator de ma!istral "idirecional$ .rin structura microcontrolerului porturile paralele pot reali*a funcii alternati'e care determin utili*ri specifice ale porturilor$ Astfel amplificatoarele de ma!istral ale porturilor .0 i .< se utili*ea* pentru accesul memoriilor e&terne$ .ortul .1 este un port clasic de intrare9ieire$ @iniile portului .> pot a'ea utili*ri alternati'e$ Portul P& 8n operand surs pentru o instruciune de adresare direct a unui port poate fi dat de coninutul re!istrului portului sau de ni'elele lo!ice ale liniilor (pinilor) portului$ 1itire "ista"il .1$& A1 @inia & 0a!istral intern comand scriere n "ista"il .1$&

/ 2 A<

U U 2

Bs .,6 .1$&

citire .1$&

%n instruciunea A6@ .1 A un operand surs este coninutul re!istrului portului .1$ %n instruciunea A6@ A .1 un operand sursa este dat de ni'elele lo!ice corespun*toare ale pinilor portului .1$ Aceast lo!ic de funcionare se reali*ea* prin comen*i corespun*toare de citire a "ista"ilelor .1$? respecti' a pinilor .1$?$ 6i'elul lo!ic dintr-un "ista"il al unui port poate fi diferit de ni'elul lo!ic al pinului corespun*tor$ /e e&$ /ac ieirea U a "ista"ilului .1$? este la ni'el lo!icL1L tran*istorul 2 este "locat i ni'elul lo!ic al pinului .1$? poate fi comandat din e&terior$ Be*istena Bs este o re*isten de sarcin acti' cu rolul de a mri 'ite*a de comutare de la ni'el lo!ic K0L la ni'el lo!ic K1L$ Aceast mrire de 'ite* se o"ine prin !enerarea de ctre sarcina acti' a unui curent de >0 mA pe durata a dou perioade ale !eneratorului de tact ncepnd cu frontul de comutare 0 1 lo!ic de la ieirea U a "ista"ilului .1$?$ 3tructura unei astfel de re*istene acti'e este (

<5

5cc
0 <5mA linie ntr*iere

<20

21

2< .,6 .1$&

Q
"ista"il .1$&

2ran*istorul 2< cu canal iniial !enerea* n permanen un curent de 0 <5 mA$ %n re!im staionar a'nd U la ni'elul lo!ic K0L sau K1L tran*istorul 21 de tipul cu canal indus este "locat deoarece ni'elele lo!ice de la ntr*ierile circuitului 3A8`68 sunt complementare$ /up frontul de comutare a semnalului de la ni'elul K1L la K0L lo!ic n inter'alul a dou perioade 20 ale !eneratorului de tact ntr*ierile circuitului 3A8`68 sunt la ni'elul lo!ic K0L i tran*istorul 21 !enerea* un curent de >0 mA$ Acest curent mrete 'ite*a de comutare de la ni'elul lo!ic K0L la ni'elul lo!ic K1L a semnalului de ieire de la pinul .1$?$ Portul P4 .ortul .> poate reali*a aceleai funciuni ca i portul .1 i n plus poate fi utili*at pentru funcii alternati'e de intrare sau de la ieire$ .entru reali*area funciei alternati'e de intrare corespun*toare unui pin .>$? circuitul conine amplificatorul repetor A> a crui ieire este conectat n structura microcontrolerului n concordan cu funcia alternati' reali*at$ comand citire "ista"il .>$& A1 5cc @inie & 0a!istrala interna comanda scriere "ista"il .>$? / U
Cista"il .>$&

Huncie alternati'

Bs .,6 .>$&

U A< A> Huncie alternati'

comand citire pin .>$&

/easemenea pentru reali*area funciei alternati'e de intrare este necesar "locarea tran*istorului 2 care se o"ine prin aplicarea de ni'ele lo!ice 1 la intrrile circuitului J,-68$ Astfel se impune pro!ramarea la ni'el lo!ic K1K a "ista"ilului .>$?$ cealalt intrare a circuitului J,-68 este conectat intern la ni'el lo!ic K1K n circuitul corespun*ator unui pin .>$? cu funcie alternati'e de intrare$ Huncia alternati' de ieire corespun*toare unui pin .>$? se reali*ea* prin comanda unei intrri n circuitul J,-68 cealalt intrare fiind sta"ilit la ni'el lo!ic K1K prin pro!ramarea "ista"ilului .>$?$ %n ca*ul reali*rii funciei 3-D (pin .>$1) linia de intrare n circuitul J,-68 pentru funcia alternati' este la ni'el lo!ic K1K cu e&cepia inter'alului corespun*tor transmisiei unui caracter declanat de scrierea unui octet n re!istrul <;

intern 3C8H$ %n ca*ul reali*rii funciilor OB i B/ liniile de intrare n circuitele J,-68 pentru funciile alternati'e sunt la ni'el lo!icK1K cu e&cepia inter'alelor corespun*toare ciclurilor de scriere respecti' citire n9din memoria de date e&tern$ Portul P5 .ortul .< are funcia alternati' de transfer al octetului mai semnificati' al adresei n cicluri de e&tra!ere coduri instructiuni din memoria de pro!ram e&tern n cicluri de citire din memoria de pro!ram e&tern cu instruciuni 0=51 i n cicluri de acces la memoria de date e&tern cu instruciuni 0=5? n care adresarea se reali*ea* cu re!istru /.2B$ %n aceste cicluri linia de comand adresare este la ni'el lo!ic K1K i impune po*iia 1 pentru comutatorul Z( 1omand Cit de adres comand citire adres "ista"il .<$& A1 5cc @inie & 0a!istrala interna comanda scriere "ista"il .<$? / U
1 0 F

Bs .,6 .<$&

Cista"il .<$&

U A<

comand citire pin .<$& Astfel "itul de adres corespun*tor comand ieirea .<$? a portului$ /easemenea ni'elul lo!ic K1K la ieirea circuitului J, comand sarcina acti' B3 astfel nct s !enere*e un curent mai mare de 0 <5 mA dac "itul de adres are ni'el lo!ic K1K$ 3e asi!ur astfel comanda corespun*toare a circuitelor de memorie e&tern$ %n afara inter'alelor corespun*toare ciclurilor indicate mai sus portul .< poate fi utili*at pentru intrri9ieiri de u* !eneral$ Portul P6 Are funcia alternati' de transfer al octetului mai puin semnificati' al adresei precum i al octetului cod instruciune sau dat n orice ciclu de acces la memoriile e&terne$ Cit de adres9date 1omand adres9date

comand citire "ista"il .0$&

A1 5cc @inie & 0a!istrala interna comanda scriere "ista"il .0$? comand citire pin .0$& <7 / U
1 F 0

2s .,6 .0$&

Cista"il .0$&

U A<

%n inter'alele corespun*toare acestor cicluri linia de comand adresare9transfer date este la ni'el lo!ic K1K i impune po*iia 1 pentru comutatorul Z$ Astfel prin liniile portului .0 se poate reali*a transferul adresei i datei de intrare sau ieire prin multiple&area n timp$ @a ieirea circuitului J, se o"ine ni'el lo!ic K1K care desc#ide tran*istorul 23 n inter'alele de transfer "ii de adres cu ni'el lo!ic K1K sau de ieire "ii de date cu ni'el lo!ic K1K$ %n afara acestor inter'ale tran*istorul 2s este "locat$ %n ciclurile de acces la memoriile e&terne "ista"ilele ("iii) re!istrului .0 se ncarc cu ni'ele lo!ice K1K$ %n afara ciclurilor de acces la memoriile e&terne portul .0 poate fi utili*at pentru intrri9ieiri de u* !eneral$ ,eirile .0$? sunt de tipul dren n !ol (2s-"locat) iar intrrile .0$? sunt de impedan ridicat (2 i 2 3 [ "locate U [ 1 prin pro!ramare)$ Func#ionarea sincronizat* a microcontrolerului !45& .entru funcionarea sincroni*at microcontrolerul conine un !enerator de tact$ 3emnalul de comand al !eneratorului de tact este dat de un oscilator cu frec'ena ma&im 6 0 = 1< 0A* $ .entru reali*area oscilatorului microcontrolerul conine un circuit in'ersor cu intrarea i ieirea conectate la pinii ?2A@1 i ?2A@<$ 1onfi!uraia de oscilator se o"ine prin conectarea ntre pinii ?2A@1 i ?2A@< a unui cristal de cuar i a doi condensatori conectai de la cei doi pini la mas$ Huncionarea sincroni*at a microcontrolerului se desfoar n fa*e stri i cicluri main$ = fa* a microcontrolerului corespunde duratei 30 = 1 9 R0 a perioadei de tact$ /ou fa*e succesi'e notate .1 .< definesc o stare a microcontrolerului$ 8n ciclu main se desfoar pe durata a 1< perioade 20 adic ; stri$ 1ele 1< perioade ale unui ciclu main sunt notate 31.1 31.< 3<.1 3<.< aa$ 3;.1 3;.<$ 0icrocontrolerul 8051 e&ecut o instruciune n unul sau dou cicluri main cu e&cepia instruciunilor de multiplicare i di'i*are ce se reali*ea* n I cicli main$ C2C .1 31 .< .1 3< .< .1 3> .<

t
HAMA 32AB:

:&ecuia unei instruciuni ncepe n fa*a 31.1 a unui ciclu main prin e&tra!erea din memoria pro!ram a primului octet al instruciunii i transferul acestuia n re!istrul de instruciuni al microcontrolerului n fa*a 31.<$ %n ca*ul unei instruciuni cu codul main de doi oceti al doilea octet se e&tra!e din memoria pro!ram n starea 3I a aceluiai ciclu main$ Be*ult c intr-un ciclu main se pot efectua dou e&tra!eri de coduri instruciune$ /ac este ne'oie i de cel de-al treilea octet acesta se 'a e&tra!e n fa*a 31.< a celui de-al doilea ciclu main$ %n strile n care se face e&tra!ere de cod instruciunea are loc i incrementarea contorului de pro!ram .1$ :&ecuia unei instruciuni se termin n fa*a 3;.< a ciclului main corespun*tor$ .entru accesul memoriilor e&terne adresa se formea* din 'aloarea portului .< (octetul superior) i 'aloarea portului .0 (octetul inferior)$ 2ransferul unui octet de date se face prin liniile portului .0$ re*ult c portul .0 este folosit att pentru adrese ct i pentru date prin te#nici de multiple&are$ 3e impune astfel memorarea temporar ntr-un re!istru e&tern a octetului mai puin semnificati' al adresei$ 0emorarea adresei inferioare n re!istru se reali*ea* pe "a*a semnalului de 'alidare re!istru de adresare A@:$ .entru selecia diferit a celor dou tipuri de memorie (de pro!ram i BA0) microcontrolerul !enerea* semnalul PSEN pentru 'alidarea memoriei de <8

pro!ram e&tern i semanlele RD i OB pentru memoria de date e&tern$ /ia!ramele de timp corespun*atoare e&tra!erii de coduri instruciuni din memorii pro!ram sunt(
1@F 3< 3> 3I 35 3;

31

A@:

PSEN

.0-.7

PC 2

1=/ ,632B812,86:

PC 2

1=/ ,632B812,86:

A0-A7

PC2
A15-A8 .<$7-.<$0

PC2

P C D

PCD

PCD

1ircuitele de numrare9tempori*are ale microcontrolerului 8051 0icrocontrolerul 8051 conine dou circuite de numrare9tempori*are notate cu 6920 i 6921$ Hiecare circuit conine dou re!istre numrtoare de cte 8 "ii 2A0 2@0 2A1 2@1 din !rupul re!istrelor cu funcii speciale$ 3tructura unui circuit numrtor9tempori*ator este pre*entat n fi!ura de mai -os$ Huncia de tempori*are se reali*ea* prin numarare de impulsuri cu o frec'ena e!al cu frec'ena oscilatorului di'i*at cu 1<$ Be*ult c frec'ena pentru tempori*are a'nd f0[1< 0A* este f[1 0A*$ Huncia de numrare se reali*ea* prin numrarea fronturilor de cdere ale semnalului aplicat la pinul 2i al microcontrolerului$ Aceste fronturi se detectea* prin testarea de ctre microcontroler a strii liniei 2i n fa*ele 35.< ale ciclurilor main$ 3e consider detectat un front de cdere dac n fa*ele 35.< din dou cicluri main consecuti'e re*ultatul testrii 'a fi un ni'el lo!ic K1K urmat de un ni'el K0K lo!ic$ /etecia unui front de cdere determin incrementarea cu o unitate a coninutului re!istrului numrator n fa*a 3>.1 a ciclului main <9

urmtor detectrii frontului de cdere$ Be*ult c funcia de numrare a fronturilor de cdere ale semnalului e&tern aplicat pinului 2i se efectuea* corect dac fiecare ni'el corespun*tor acestui semnal este meninut pe o durat mai mare dect durata unui ciclu main$ Astfel frec'ena ma&im a semnalului de la linia de intrare 2i este f09<I adic 500FA* pentru f0[1<0A*$

Generator de tact

f0

/i'i*or frec'en ()

f091<

192i (20=/)
;

F1

F<
1

2i
.,6 .>$iRI
1

Be!istru numrtor 2Ai 2@i

GA2: i (20=/)

2B i (21=6)

2H i (21=6)

9 ,62i
.,6 .>$iR<

1erere ntrerupere

.entru controlul funcionrii circuitelor numrtoare9tempori*atoare se utili*ea* re!istrele interne 20=/ i 21=6 din !rupul re!istrelor cu funcii speciale$ Huncia de numrare sau tempori*are se reali*ea* prin comanda corespun*toare a comutatorului F1$ Acest comutator este comandat de "itul 192i din re!istrul 20=/ (1920[20=/$< 1921[20=/$;)$ /up cum re*ult i din fi!ura anterioar 'om a'ea( 173i 8 4 ( tem%orizator 192i [ 1 ) numrtor /eclanarea i "locarea proceselor de numrare9tempori*are corespun*toare po*iiilor cuplat respecti' decuplat ale comutatorului F< se pot sta"ili prin pro!ramarea "iilor 2Bi din re!istrul 21=6 i GA2:i din re!istrul 20=/ i prin semnal e&tern conectat la pinul IN3i al microcontrolerului$ 1omanda proceselor de numrare9tempori*are se poate reali*a prin pro!ram prin sta"ilirea "itului GA2:i la ni'elul lo!ic K0K$ %n acest ca* declanarea i "locarea se comand prin pro!ramarea "itului 2Bi$ /ac "iii GA2:i i 2Bi se pro!ramea* la ni'el lo!ic 1 comanda se reali*ea* cu semnalul conectat la intrarea ,62i a microcontrolerului$ .rocesele de numrare9tempori*are e'oluea* n sensul creterii coninutului re!istrului numrtor$ @a depirea 'alorii ma&ime corespun*toare capacitii numrtorului "itul indicator de depire 2Hi din re!istrul 21=6 este po*iionat la ni'el lo!ic K1K semnali*nd o cerere de ntrerupere$ 1oninutul numrtorului de'ine *ero sau se ncarc cu o 'aloare pro!ramat n funcie de modul de lucru al circuitului numrtor9tempori*ator$ Citul indicator de depire se po*iionea* la ni'elul lo!ic K0K dup acceptarea cererii de ntrerupere de ctre lo!ica de control$ :&ist I moduri de lucru n funcie de modul de utili*are al re!istrelor 2@i i 2Ai$ 3elecia modului de lucru se reali*ea* prin pro!ramarea "iilor 01 i 00 (20=/$1 20=/$0) pentru 6920 si 01 si 00 (20=/$5 20=/$I) pentru 6921$b %n modul 0 re!istrul numrtor este de 1> "ii format din re!istrul 2A i cei mai puin semnificati'i 5 "ii ai re!istrului 2@$ Be!$ 2@ 2@$I 2@$0 Be!$ 2@ 2A$7 2A$0 >0

1oninutul re!istrului astfel o"inut este incrementat pn la 'aloarea ma&im$ 8rmtoarea incrementare duce la anularea coninutului numrtorului$ %n modul 1 re!istrul numrtor este de 8 "ii format din re!istrul 2@ ca n fi!$ urmtoare( Be!$ 2@ 2@$7 2@$0
2H

Be!$ 2@ 2A$7 2A$0 @a depirea capacitii de numrare re!istrul 2@ se ncarc cu coninutul re!istrului 2A$ Accest mod de lucru este util pentru tempori*ri cu 'alori pro!rama"ile$ /urata tempori*rii este dat de perioada cu care apar depiri ale capacitii de numrare$ Be*ult c durata tempori*rii este dat de(
3 = 1< S<5; (3H )T 60

%n modul de lucru > cele dou circuite de numrare9tempori*are operea* n mod diferit$ 1ircuitul 6920 conine ca numrtor re!istrul 2@0$ %n plus re!istrul 2A0 este inclus ntr-o structur de tempori*ator care utili*ea* "iii 2B1 i 2H1 corespun*tori circuitului 6921 n celelalte moduri de lucru$ f091< F B:G 2A0

2H1 21=6$7

1erere ntrerupere

2B1 20=/$;

.rin pro!ramarea circuitului 6920 n modul > i a circutului 6921 n modurile 0 1 sau < comutatorul F< este cuplat indiferent de circuitul de comand$ Clocarea procesului de numrare se poate face prin pro!ramarea modului > pentru circuitul 6921$ 1ircuitul 6921 n modul > nu poate efectua cereri de ntreruperi iar declanarea numrtorului 1 se face doar prin pro!ramarea in alt mod de lucru$ Portul serial al microcontrolerului );&1

>1

:ste utili*at pentru transferul de informaie ntre microcontroler i componentele e&terne sistemului cu comunicaie serial$ 2ransferul serial al unui cu'nt de la emitor la receptor se reali*ea* prin con'ersia paralel-serie a cu'ntului i apoi con'ersia serie-paralel$ 1omunicaia serial ntre dou ec#ipamente poate reali*a transferul de informaie n am"ele sensuri alternati' printr-o sin!ur linie (comunicaie semiduple&) sau simultan prin dou linii (comunicaie duple&)$ %n ca*ul comunicaiei asincrone transferul cu'intelor dintr-un mesa- se poate reali*a la inter'ale de timp 'aria"ile$ 8n cu'nt conine o sec'en de 8 sau 9 "ii de date$ 2ransmisia presupune ncrcarea succesi' a liniei de comunicaie cu "iii corespun*tori cu'ntului de transmis cu frec'ena de comunicaie fc e&primat n "ii9s$ Becepia const n testarea periodic a strii liniei de comunicaie n scopul citirii sec'enei de "ii de date$ .entru transferul corect al unui cu'nt este necesar ca receptorul s citeasc starea liniei de comunicaie cu aceeai frec'en i fa* cu care se ncarc "iii cu'ntului la emisie$ 3incroni*area de fa* a circuitului de recepie cu cel de emisie se reali*ea* pe "a*a frontului de cdere corespun*tor "itului de start$ /up "itul de start cu ni'el lo!ic K0K urmea* emisia "iilor de date (8 sau 9) ncepnd cu "itul de semnificaie minim (@3C)$ 8ltimul "it de date emis poate fi "it de paritate utili*at pentru 'erificarea corectitudinii cu'ntului recepionat$ /up ultimul "it de date urmea* un "it de stop cu ni'el lo!ic K1K$
/IT START

/IT ,ata.;

/IT ,ata.(

/IT Paritate <op-ional> /it stop

2S / 18fc

MS /

.ortul serial al microcontrolerului 8051 poate fi utili*at pentru comunicaie serial asincron de tip duple& prin liniile de transmisie 2?/ (.>$1) respecti' recepie B?/ (.>$0)$ 0icrocontrolerul 8051 are < re!istre interne notate 3C8H unul pentru transmisie i unul pentru recepie$ 1ele dou re!istre au aceeai adres 99A$ Adresarea direct ca i operand surs a adresei 99A se refer la re!istrul 3C8H de recepie$ Adresarea direct ca i operand destinaie a adresei 99A se refer la re!istrul 3C8H de transmisie$ .entru recepie portul serial utili*ea* un re!istru de deplasare care reali*ea* con'ersia serie paralel a datelor de pe linia de recepie$ 1oninutul re!istrului de deplasare este transferat n re!istrul 3C8H doar dup asam"larea complet a unui octet$ /up transferul octetului din re!istrul de deplasare n re!istrul de recepie 3C8H se poate trece la o"inerea unui nou octet n re!istrul de deplasare nainte de citirea octetului precedent din re!istrul de recepie 3C8H$ /ac citirea octetului precedent nu se reali*ea* nainte de terminarea asam"lrii noului octet re*ult pierderea octetului precedent$ .ortul serial al microcontrolerului 8051 poate funciona n I moduri de lucru sta"ilite prin pro!ramarea "iilor 300 i 301 din re!istrul de control al portului serial 31=6$ Modul ; 3e folosete pentru reali*area unei comunicaii semiduple&$ Astfel linia B?/ se utili*ea* alternati' pentru recepia sau transmisia unor sec'ene de 8 "ii de date cu frec'ena de comunicaie 6 0 9 1< "ii9s (f0) frec'ena oscilatorului de tact)$ 3emnalul cu frec'ena de comunicaie 6 0 9 1< este disponi"il la linia 2?/$ /eclanarea transmisiei se reali*ea* prin ncrcarea unui octet n re!istrul 3C8H$ @a sfritul transmisiei celor 8 "ii de date portul serial po*iionea* la ni'el K1L "itul indicator de ntrerupere la transmisie 2i preci*nd posi"ilitatea de ncrcare a unui octet n re!istrul de transmisie$ /eclanarea recepiei se reali*ea* dac "itul de 'alidare a recepiei B:6 este pro!ramat la ni'el K1L$ @a sfritul recepiei celor 8 "ii de date portul serial po*iionea* la ni'el K1L "itul indicator de ntrerupere la recepie Bi$

><

Modurile de lucru 78 58 4 ale portului serial se utili*ea* pentru comunicaie asincron de tip duple&$ Astfel se reali*ea* transmisia prin linia 2?/ i recepia prin linia B?/ a unor cu'inte ce conin un "it de start cu ni'el K0L 8 "ii de date i un "it de stop cu ni'el K1L$ %n modurile < i > cu'intele conin i un "it cu ni'el lo!ic pro!rama"il ce urmea* celor 8 "ii de date$ %n modurile 1 < > declanarea transmisiei se reali*ea* prin scrierea octetului de transmis n re!istrul 3C8H$ @a nceputul transmisiei "itului de stop portul serial po*iionea* la ni'el K1L "itul indicator de ntrerupere 2i$ 5alidarea recepiei se face prin pro!ramarea la ni'el K1L a "itului de 'alidare recepie B:6$ /eclanarea recepiei unui cu'nt se reali*ea* de frontul de cdere al "itului de start$ /ac "itul 30< (31=6$5) este pro!ramat la ni'el K0L portul serial po*iionea* la ni'el K1L "itul indicator de ntrerupere la recepie Bi la mi-locul inter'alului de recepie a "itului de stop corespun*tor cu'ntului recepionat$ /ac "itul 30< (31=6$5) este pro!ramat la ni'el K1L portul serial po*iionea* la ni'el K1L "itul indicator de ntrerupere la recepie Bi numai dac "itul urmtor celor 8 "ii de date (BC8) are ni'el K1L$ /eoarece n modurile < i > ni'elul lo!ic al "itului urmtor celor 8 "ii de date poate fi pro!ramat la transmisie n 2C8 re*ult posi"ilitatea de recepie selecti' in funcie de 30< a cu'intelor ncrcate pe o linie de comunicaie$ Acest lucru poate fi folosit pentru comunicaii multiprocesor$ 8n cu'nt de comand conine 8 "ii de date cu adresa unui microprocesor din sistem i un "it urmtor cu ni'el K1L$ 8n cu'nt de date conine dup cei 8 "ii de date un "it cu ni'el K1L$ .orturile seriale ale microcontrolerelor 8051 din sistem sunt pro!ramate n modurile < sau > i cu 30< la ni'el K1L$ Astfel recepia unui cu'nt de comand po*iionea* la ni'el K1L "itul Bi din fiecare microcontroler$ 3u"rutina de ntrerupere anali*ea* cei 8 "ii ce pot fi de adres$ 0icrocontrolerul ce recunoate propria 1 din sistem adres po*iionea* 30< la K0L pentru a recepiona cu'intele de date ce urmea*$ 1elelalte menin 30<[1 i nu !enerea* ntrerupere de recepie$ %n modurile 1 i > 'aloarea frec'enei de comunicaie poate fi sta"ilit prin pro!ramare$ .entru aceasta se folosete 2imerul 1 ca !enerator de frec'en de comunicaie pro!ramat n modul <$
6c = < ( SMOD ) 60 >< 1< S<5; (3H 1)T

unde 30=/ este un "it din .1=6$ /e cele mai multe ori utili*atorul tie frec'ena de comunicaie i dorete s tie 'aloarea ce tre"uie nscris n 2A1$ 3H 1 = <5; < ( SMOD ) 6 0 >< 1< 6 c

2Ai tre"uie s fie o 'aloare ntrea!$ Botun-ind pe 2A1 la ntre!ul cel mai apropiat se produce o modificare a frec'enei de comunicaie iar utili*atorul tre"uie s sc#im"e 'aloarea cuarului$ :&(

6 c = I800 "iti9sec$ f 0 = 1< 0A* 3H = 1 6 c real = I807 7 "iti9sec$ (30=/) = 1 }


/ac am dori(

6 c = 9;00 "iti9sec$ f 0 = 1< 0A* 3H 1 = <I9 5 (30=/) = 0 6 3H 1 = <I9 = 89<8 "iti9sec$ se impune sc#im"area cuartului f 2A, = 10I1; "iti9sec$
>>

%n modul < de lucru al portului serial 'aloarea frec'enei de comunicaie este(

< (30=/) fc = f0 ;I 30 < = 0 Bi = 1 pt$ cu'nt Bi = 1 dac "itul 9 = 1 30 < = 1 Bi = 0 dac "itul 9 = 0

1omand /ate

8 "ii date R1Rstop 8 "ii date R0Rstop

(30<[1) rec$adr$ (30<[0) rec$date cel cu adr$011 (30<[1) pt$ adr$ CA/

Sistemul de ntreruperi al C);&1 3ursele de cereri de ntreruperi pentru 1 8051 sunt e&terne i interne$ 3ursele e&terne transmit cererile de ntrerupere prin pinii ,620(.>$<) i ,621( .>$>) ai microcontrolerului$ 3ursele interne de ntrerupere sunt circuite de numrare9tempori*are N 9 30 N 9 31 i portul serial$ 1ererile de ntrerupere !enerate de sursele de ntrerupere po*iionea* la ni'el K1L "iii corespun*tori din re!istrele interne 21=6 i 31=6 dup cum urmea*( - ,:0 (21=6$1) si ,:1 (21=6$>) pentru ntreruperi e&terne - 2H0 (21=6$5) i 2H1 (21=6$7) pentru ntreruperi de la circuitele de numrare9tempori*are$ - Bi (31=6$0) i 2i (31=6$1) pentru ntreruperi de la portul serial$ 3trile acestor "ii indicatori de cereri de ntrerupere sunt testate de lo!ica de control a ntreruperilor microcontrolerului n fa*a 35.< a fiecrui ciclu main$ Astfel lo!ica de control a ntreruperilor identific sursele care solicit ntrerupere i asi!ur apelul su"rutinei de ntrerupere corespun*toare unei surse n concordan cu condiiile de 'alidare i prioritile sta"ilite pentru surse prin pro!ramare$ 3trile "iilor indicatori de cereri de ntrerupere pot fi sta"ilite prin pro!ramare$ = surs e&tern poate solicita o cerere de ntrerupere prin comanda pinului IN3 0 sau ,621c cu ni'el lo!ic K0L sau cu un front de cdere n funcie de ni'elul lo!ic pro!ramat n "itul ,20 sau ,21$ %n ca*ul 'ariantei de cerere de ntrerupere e&tern prin ni'el "itul ,:i urmrete n permanen ni'elul lo!ic de comand a intrrii IN3 i $ Astfel o cerere de ntrerupere indicat prin ni'el lo!ic K1L al "itului ,:i corespunde ni'elului lo!ic K0L de comand a pinului IN3 i a'nd n 'edere pre*ena circuitului in'ersor$ 6i'elul lo!ic K0L corespun*tor unei cereri de ntrerupere e&tern prin ni'el tre"uie meninut pn la apelul de ctre microcontroler a su"rutinei de ntrerupere corespun*toare$ 1omanda liniei IN3 i la ni'el K1L tre"uie s se efectue*e nainte de sfritul e&ecuiei su"rutinei de ntrerupere corespun*toare pentru a se e'ita apelul repetat al acesteia$ %n ca*ul 'ariantei de cerere de ntrerupere prin front de cdere "itul ,:i este po*iionat la ni'el K1L de un front de cdere pre*ent la intrarea IN3 i $ /etecia fronturilor de cdere se reali*ea* prin eantionarea strii intrrii IN3 i cu frec'ena ciclurilor main$ Be*ult c pentru detecia corect a unui front de cdere este necesar comanda intrrii IN3 i cu ni'el K1L apoi cu ni'el K0L fiecare ni'el lo!ic tre"uind s fie meninut pe o durat cel putin e!al cu durata unui ciclu main$ 6i'elul lo!icL1L din "itul ,:i re*ultat ca urmare a deteciei unui front de cdere se menine pn la apelul de ctre microcontroler a su"rutinei de ntrerupere corespun*atoare cnd "itul ,:i este po*iionat la ni'el K0L de ctre lo!ica de control a microcontrolerului$

>I

,20 21=6$0

,620 .,6 .>$<


6920 /:2:12=B /: HB=62 /: 1d/:B:

0 1 F1

,:0 21=6$1

2H0 21=6$5

,21 21=6$<

,621 .,6 .>$>


/:2:12=B /: HB=62 /: 1d/:B:

0 1 F<

,:1 21=6$>

6920

2H1 21=6$7

2i 31=6$1 .=B2 3:B,A@ Bi 31=6$0

>5

1ererile de ntrerupere de la un circuit de numrare9tempori*are 692i0 i[0 1 sunt !enerate la depirea 'alorii ma&ime corespun*toare capacitii numrtorului cnd "itul indicator de depire 2Hi se po*iionea* la ni'el lo!ic K1L$ @a apelul su"rutinei de ntrerupere corespun*toare "itul 2Hi este po*iionat la ni'el lo!ic K0L de ctre lo!ica de control a ntreruperilor microntrolerului$ 1ererile de ntrerupere de la portul serial sunt !enerate de la sfritul transmisiei sau recepiei unui cu'nt cnd "iii indicatori de cereri de ntrerupere 2i respecti' Bi se po*iionea* la ni'elul lo!ic K1L$ @a apelul su"rutinei de ntrerupere corespun*toare strile "iilor 2i i Bi nu sunt modificate de ctre lo!ica de control a ntreruperilor microcontrolerului astfel su"rutina de ntrerupere se testea* "iii Bi i 2i pentru determinarea tipului de ntrerupere (recepie respecti' transmisie) i apoi se pro!ramea* ni'elul lo!ic n "iii Bi i 2i$ 3ursele de cereri de ntreruperi pentru microcontrolerul 8051 sunt masca"ile$ Astfel 'alidarea sau in'alidarea acceptrii de ctre microcontroler a cererilor de ntreruperi corespun*toare diferitelor surse se pot sta"ili prin pro!ramarea re!istrului de 'alidare ntrerupere ,:$ ,n'alidarea tuturor surselor de cereri de ntrerupere se reali*ea* prin pro!ramarea "itului :A (,:$7)$ @a ni'el lo!ic K0L$ /ac "itul :A este pro!ramat la ni'el K1L 'alidarea sau in'alidarea surselor de cereri de ntrerupere se pro!ramea* independent pentru fiecare surs utili*nd "iii de 'alidare a ntreruperilor din re!istrul ,: dup cum urmea*( :?0 (,:$0) pentru ,620 :20 (,:$1) pentru 6920 :?1 (,:$<) pentru ,621 :21 (,:$>) pentru 6921 :3 (,:$I) pentru portul serial .ro!ramarea ni'elului lo!ic 1K n "itul ,:$i conduce la 'alidarea sursei de cereri de ntrerupere corespun*toare$ 3istemul de prioriti al ntreruperilor 3istemul de prioriti pentru deser'irea cererilor de ntrerupere cuprinde dou ni'ele de prioritate$ Hiecare surs de cerere de ntrerupere poate fi plasat n unul din cele dou ni'eluri de prioritate prin pro!ramarea corespun*toare a "iilor re!istrului de control a prioritii ntreruperilor ,. dup cum urmea*( .?0 (,.$0) pentru ,620 .20 (,.$1) pentru 6920 .?1 (,.$<) pentru ,621 .21 (,.$>) pentru 6921 .3 (,.$I) pentru portul serial$ .ro!ramarea ni'elului K1K in "itul ,.i conduce la starea sursei de cereri de ntreruperi corespun*toare la ni'elul de prioritate ridicat$ :&ecuia unei su"rutine de ntrerupere corespun*toare unei surse de ntrerupere pro!ramat la ni'el ridicat de prioritate nu poate fi ntrerupt$ %n ca*ul a dou cereri de ntrerupere de la dou surse din ni'eluri de prioritate diferite ce apar simultan microcontrolerul ser'ete prima cerere de ntrerupere corespun*toare sursei de ntrerupere cu un ni'el de prioritate ridicat$ %n ca*ul cererilor de ntrerupere simultane de la surse de acelai ni'el de prioritate se utili*ea* un al doilea criteriu de prioritate sta"ilit prin structura microcontrolerului $ Acest al doilea criteriu este sta"ilit pentru am"ele ni'eluri de prioritate i plasea* sursele de cereri de ntreruperi n ordinea scderii prioritii dup cum urmea*( ,620 6,20 ,621 6,21 i portul serial$ @o!ica de control a ntreruperilor microcontrolerului 8051 eantionea* starea "iilor indicatori de cereri de ntrerupere n fa*a 35.< a fiecrui ciclu main i anali*ea* >;

re*ultatele fiecrei eantionri n ciclul main urmtor$ Aceast anali* const n identificarea sursei de prioritate ma&im care solicit ntrerupere$ /up ciclul de anali* microcontrolerul e&ecut intern ciclurile corespun*toare unei instruciuni( @1A@@ addr$ unde addr este funcie de surs de cerere de ntrerupere ser'it dac sunt ndeplinite condiiile urmtoare( 1iclul de anali* este ultimul din e&ecuia unei instruciuni$ 1iclul de anali* nu corespunde e&ecuiei unei instruciuni din su"rutina de ntrerupere corespun*toare unei surse de acelai ni'el de prioritate sau de ni'el de prioritate mai ridicat 1iclul de anali* nu corespunde e&ecuiei unei instruciuni B:2, sau a unei instruciuni de acces la re!istrele ,: i ,.$ @a e&ecuia unei instruciuni @1A@@ addr$ pentru apelul unei su"rutine de ntrerupere se sal'ea* n memoria sti' coninutul numrtorului de adrese .1 i se ncarc n aceasta adresa de nceput a su"rutinei de ntrerupere$ Aceast adres este funcie de sursa de cerere de ntrerupere ser'it i este sta"ilit prin structura microcontrolerului dup cum urmea*( ,620 0># 6,20 0C# ,621 1># 6921 1C# .ort serial <># 3u"rutina de ntrerupere se termin cu o instruciune B:2, prin care se reali*ea* ncrcarea .1 din memoria sti'a cu adresa de re'enire n pro!ramul ntrerupt$ /easemenea prin e&ecuia instruciunii B:2, se informea* lo!ica de control a ntreruperilor cu pri'ire la terminarea su"rutinei de ntrerupere$

>7

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