Documente Academic
Documente Profesional
Documente Cultură
Capitolul 1. Introducere 1.1. Date =i informa\ii 1.2. Calculatoare =i microprocesoare 1.3. Microcontrollere =i sisteme dedicate Capitolul 2. Arhitectura microcontrollerelor 2.1. Procesorul 2.2. Arhitectura Harvard 2.3. Arhitectura von Neumann 2.4. Memoria 2.5. CISC versus RISC 2.6. Subprograme 2.7. Circuite suport 2.7.1. Oscilatorul 2.7.2. Circuitul de ini\ializare 2.7.3. Circuitul de supraveghere 2.7.4. Sistemul de ]ntreruperi 2.8. Dispozitive periferice incorporate 2.8.1. PORT-urile de intrare-ie=ire 2.8.2. Num[r[toare 2.8.3. Interfe\e seriale Interfa\a UART Interfa\a I2C Interfa\a SPI Capitolul 3. Arhitectura familiei 8051 3.1. Organizarea memoriei 3.1.1. Memoria program 3.1.2. Memoria de date 3.2. Setul de instruc\iuni 3.2.1. Moduri de adresare 3.2.2. Opera\ii aritmetice 3.2.3. Opera\ii logice 3.2.4. Opera\ii de transfer 3.2.5. Opera\ii la nivel de bit 3.2.6. Instruc\iuni de salt
Capitolul 4. Proiectarea sistemelor cu microcontroller 4.1. Sisteme de dezvoltare a aplica\iilor 4.1.1. Placa de dezvoltare 4.1.2. Mediul integrat de dezvoltare a programelor
Capitolul 1. Introducere
Clasificarea calculatoarelor este o problem[ controversat[ ]n literatura de specialitate. Una din clasific[rile general acceptate, f[cut[ dup[ criteriul puterii de calcul, cuprinde: microcalculatoare; minicalculatore; calculatoare mari (mainframe); supercalculatoare. O alt[ clasificare, care are ]n vedere num[rul problemelor ce pot fi rezolvate, cuprinde: calculatoare de uz general; calculatoare specializate sau dedicate (embbeded computers). }n sf`r=it, o clasificare dup[ criteriul cronologic ]mparte calculatoarele ]n patru genera\ii: genera\ia I calculatoare realizate cu tuburi electronice; genera\ia II calculatoare cu tranzistoare; genera\ia III calculatoare realizate cu circuite integrate pe scar[ redus[ sau cu microprocesoare pe 8 bi\i; genera\ia IV calculatoare cu microprocesoare pe 16 (sau mai mul\i) bi\i.
Perturba\ie
Figura 1.1. Schema general[ a unui sistem de transmitere a informa\iei. Numai con\inutul mesajului, nu =i energia lui determin[ cantitatea de informa\ie pe care o poart[. Atunci c`nd un emi\[tor transmite informa\ii unui receptor, emi\[torul nu pierde aceste informa\ii. }n concluzie, informa\ia nu este nici materie nici energie; ea este un tip special de raport ]ntre procesele materiale. }ntre informa\ie =i nedeterminare exist[ o str`ns[ leg[tur[. O informa\ie este o informa\ie ]n adev[ratul sens al cuv`ntului dac[ =i numai dac[ ]nl[tur[ o anumit[ nedeterminare. }n plus, no\iunea de informa\ie este str`ns legat[ =i de transmiterea ei. }ntr-un sistem de transmitere a informa\iei, emi\[torul codifica semnalele care con\in informa\ia surs[. Receptorul urmeaz[ s[ decodifice semnalele recep\ionate pe canalul de comunica\ie pentru a extrage informa\ia. Codificarea ]nseamn[ ]nlocuirea fiec[rui semnal, dintr-o anumit[ mul\ime (mul\imea semnalelor ini\iale), printr-o succesiune de semnale dintr-o alt[ mul\ime (semnale simple). Codificarea este necesar[ din dou[ motive importante.
1.1
Capitolul 1. Introducere Un prim motiv este cel legat de structura sistemului concret de transmitere a informa\iei care se utilizeaz[. De exemplu, indiferent de tehnologia de realizare, toate reprezent[rile folosite ]ntr-un calculator numeric sunt codific[ri binare. Al doilea motiv \ine de prezen\a perturba\iilor pe canalul de comunica\ie. Codificarea adecvat[ a semnalelor permite mic=orarea efectului perturba\iilor asupra transmiterii de informa\ii. }n concluzie, simplific`nd pu\in lucrurile, se poate spune c[ informa\ia este semnifica\ia pe care omul o d[ datelor. Nu trebuie uitat ]ns[ c[ schimbul de informa\ii este foarte r[sp`ndit ]n natur[ =i societate, ]ntre om =i om, om =i ma=in[, ]ntre ma=in[ =i ma=in[ etc. }ntr-un schimb de informa\ii nu este obligatorie interven\ia omului sau a unei fiin\e ]nsufle\ite [A.1].
Date de intrare
Date de ie=ire
Figura 1.2. Modelul software Structura general[ a unui microcalculator de uz general este prezentat[ ]n figura 1.3.
CPU
A D C
AB DB CB
A D C MEM
A D C PIO
DI
DO
Figura 1.3. Structura general[ a unui microcalculator: CPU unitatea central[ de prelucrare; MEM memoria principal[; PIO periferice de intrare-ie=ire; DI date de intrare; DO date de ie=ire AB magistral[ de adrese; DB magistral[ de date; CB magistral[ de comenzi; A- adrese, D date, C comenzi; Unitatea central[ de prelucrare (CPU Central Processing Unit) este subsistemul prin care se realizeaz[, ]n principal, prelucrarea datelor. De asemenea, majoritatea transferurilor de date ]ntre subsisteme se face sub supravegherea CPU. Excep\ie face tehnica DMA (Direct Memory Access acces 1.2
Capitolul 1. Introducere direct la memorie) prin care se realizeaz[ un transfer direct de date ]ntre un dispozitiv de intrare-ie=ire =i memorie, f[r[ interven\ia CPU. Memoria principal[ (MEM) este subsistemul prin care se realizeaz[ func\ia de memorare a datelor. La microcalculatoarele de uz general, memoria principal[ este de tip RAM (Random Access Memory memorie cu acces aleator) cu o mic[ parte de tip ROM (Read Only Memory memorie ce poate fi numai citit[). Datele =i programele sunt memorate pe un suport extern (de obicei de tip magnetic unit[\ile de disc dur sau flexibil) care formeaz[ memoria auxiliar[. Accesul la datele =i programele din memoria auxiliar[ se face prin intermediul unui periferic specializat (controller de disc). Componenta ROM a memoriei principale con\ine: rutine de test =i ini\ializare a sistemului (POST Power On Self Test); programe de ini\ializare =i acces la dispozitivele periferice de baz[ (BIOS Basic Input Output System). La ini\ializarea sistemului, dup[ execu\ia rutinelor POST, componenta BIOS permite ]nc[rc[rea sistemului de operare, din memoria auxiliar[ ]n memoria principal[. Sistemul de operare cuprinde programe de configurare a sistemului, de gestiune a memoriei auxiliare, etc. Aceast[ arhitectur[ permite realizarea unor sisteme deosebit de flexibile din punct de vedere software, capabile s[ execute unui num[r teoretic nelimitat de programe. Perifericele de intrare-ie=ire (PIE) sunt subsistemele prin care microcalculatorul comunic[ cu lumea exterioar[. Ele se clasific[ ]n periferice de baz[ (tastatura, monitorul =i unit[\ile de disc) =i periferice auxiliare (imprimanta, mouse-ul, unitatea de CD-ROM, MODEM-ul, etc.). Conectarea perifericelor la magistrala microcalculatorului se face prin intermediul unei interfe\e (figura 1.4.). Unele periferice utilizeaz[ interfe\e specializate (monitorul, tastatura sau unit[\ile de disc), altele, interfe\e de uz general (interfe\e standard, seriale sau paralele).
Dispozitiv periferic
Figura 1.4. Periferic de intrare-ie=ire =i interfa\[. Interfe\ele de uz general permit conectarea la sistem a oric[rui periferic ce respect[ un anumit standard ca de exemplu RS232C, Centronix sau USB (Universal Serial Bus). Apari\ia circuitelor integrate pe scar[ larg[ sau foarte larg[ a permis integrarea unei mari p[r\i din unitatea central[ de prelucrare, dispozitivul numindu-se microprocesor (MPU Micro Processor Unit). }n realizarea func\iei de CPU, microprocesorul este ajutat de un num[r de circuite suport: oscilatorul (ceasul sistem), controllerul DMA, controllerul de ]ntreruperi, etc. 1.3
Capitolul 1. Introducere
1.4
DI
RALU
F A CK C
FL DO
Figura 2.1. RALU Registre =i unitatea aritmetic[ logic[: DI date intrare, DO date ie=ire; FL indicatori (flag-uri), F comanda func\iei; A adrese pentru selec\ia operanzilor interni =i a destina\iei rezultatului CK semnal de tact, C comenzi.. Comenzile necesare ac\ion[rii RALU sunt furnizate de unitatea de comad[ (UC). Func\iile UC pot fi realizate ]n hardware sau pot fi realizate cu un subsistem microprogramat (procesor ]n procesor).
DO A
AD AP AA
RALU
C F
UC
I SO SI
Procesor
DI
Figura 2.2. Procesorul: DI date intrare, DO date ie=ire; A adrese registre, C comenzi; F indicatori (flag-uri); AD adrese date, AP adrese program (instruc\iuni); AA automat de adresare. I instruc\iuni; SI, SO sincronizare (comenzi). At`t operanzii c`t =i rezultatul unei opera\iei (DO) pot fi interni RALU (]n registre) sau externi (]n memoria de date - MD). Sincronizarea procesorului cu lumea exterioar[ se realizeaz[ prin intr[rile de sincronizare SI =i ie=irile de sincronizare SO.
2.1
Capitolul 2. Arhitectura microcontrollerelor Instruc\iunile sunt ]ntodeauna memorate extern (]n memoria program - MP). Este sarcina UC de a genera adresele (prin automatul de adresare - AA) =i semnalele de comand[, at`t pentru memoria de date, c`t =i pentru memoria program. Durata execu\iei unei instruc\iuni de c[tre procesorul din figura 2.2 se nume=te ciclu-instruc\iune. Ea cuprinde minimum 3 faze: Faza 1: UC cite=te instruc\iunea curent[ I, printr-un ciclu de acces (fetch) la memoria program (MP); Faza 2: UC decodific[ instruc\iunea =i genereaz[ secven\a de comenzi, asociate lui I, c[tre RALU; Faza 3: RALU execut[ comenzile iar UC, ]n paralel, ]=i modific[ (eventual) secven\a de comenzi generate, ]n func\ie de starea indicatorilor FL furniza\i de RALU; ]n cazul ]n care instruc\iunea implic[ transferuri de date cu exteriorul, se comand[, la momentele necesare, citirea datelor pe DI sau de scrierea datelor de pe DO. Modul de implementare a structurii generale din figura 2.2 depinde de mai mul\i factori, cei mai importan\i fiind: gradul de specializare dorit pentru anumite aplica\ii; flexibilitatea propus[; constr`ngeri tehnologice diverse.
MD
AD D C
Procesor
AP I C
MP
Figura 2.3. Arhitectura Harvard: D date, C comenzi, I instruc\iuni; AD adrese memorie de date, AP adrese memorie program. Arhitectura Harvard a fost practic ignorat[ p`n[ la sf`r=itul anilor 70, ]n principal din cauza constr`ngerilor tehnologice. Principalul avantaj al arhitecturii Harvard este acela c[ permite un grad mare de paralelism ]n execu\ia instruc\iunilor, prin suprapunerea fazei de execu\ie a instruc\iunii curente cu faza de aducere a instruc\iunii urm[toare (figura 2.4). Acest fapt conduce la realizarea unor procesoare teoretic mai rapide.
Tn
Fetch I n
Decode In
Figura 2.4. Execu\ia paralel[ a instruc\iunilor: In, In+1 instruc\iuni, Tn, Tn+1 cicluri-instruc\iune. 2.2
Capitolul 2. Arhitectura microcontrollerelor Un alt avantaj al arhitecturii Harvard, derivat din paralelismul ]n execu\ia instruc\iunilor este acela c[ durata de execu\ie a majorit[\ii instruc\iunilor este aceea=i. Aceast[ caracteristic[ prezint[ interes ]n special ]n realizarea sistemelor ]n timp real.
Procesor
A D,I C
MEM
Figura 2.5. Arhitectura von Neumann (Princeton): A adrese, C comenzi; D,I date =i instruc\iuni Simplitatea acestei arhitecturi (o singur[ magistral[ de adrese, o singur[ magistral[ pentru date =i instruc\iuni, o singur[ memorie) a determinat utilizarea ei ]n majoritatea microprocesoarelor de uz general. Principalul avantaj al arhitecturii von Neumann const[ ]n posibilitatea utiliz[rii rezultatelor RALU ca instruc\iuni (reac\ie prin structura informa\ional[). Din acest motiv, sistemele cu arhitectur[ Princeton sunt considerate mai flexibile dec`t cele cu arhitectur[ Harvard.
2.4. Memoria
Memoria de date a microcontrollerelor este, ]n general, de tip RAM. Exist[ ]ns[ =i microcontrollere, ]n special cele moderne, care posed[ memorie de date suplimentar[, de tip EEPROM. Celulele memoriei de date de tip RAM sunt numite registre. Lungimea lor (num[rul de bi\i) corespunde, ]n general, lungimii magistralei de date (DI/DO din RALU) =i constituie un criteriu major de clasificare a microcontrollerelor. Anumite registre controleaz[ periferice incorporate sau circuite suport, caz ]n care sunt denumite registre cu func\ii speciale (Special Function Registers SFR). Unele clase de microcontrollere ofer[ posibilitatea extinderii memoriei de date prin expunerea magistralei interne de date. Memoria program sau memoria de instruc\iuni poate fi de tip ROM, PROM, EPROM sau EEPROM (FLASH). Exist[ microcontrollere cu memoria program incorporat[ pe chip (intern[), cu sau f[r[ posibilitatea extinderii ei, a=a cum exist[ =i microcontrollere f[r[ memorie program intern[. Acestea din urm[ sunt considerate microcontrollere care lucreaz[ ]n regim de microprocesor. Adresa curent[ din memoria program este p[strat[ ]ntr-un registru special numit contor de program (Program Counter PC). Lungimea unei instruc\iuni (num[rul de bi\i) este un element cu implica\ii majore ]n arhitectura intern[, contituind un alt criteriu ]n clasificarea microcontrollerelor.
Capitolul 2. Arhitectura microcontrollerelor Aceast[ clasificare poate fi uneori confuz[, exist`nd procesoare de tip RISC care, ]n fapt, sunt CISC iar ]n unele aplica\ii, procesoarele de tip CISC execut[ programul mai rapid dec`t cele RISC. Procesoarele CISC posed[ un num[r relativ mare de instruc\iuni, multe dintre ele reprezent`nd permut[ri ale aceleia=i opera\ii cu diverse moduri de acces la date (mod de adresare direct, indirect, indexat, etc.). Setul de instruc\iuni reprezint[, de cele mai multe ori, viziunea proiectantului procesorului asupra conceptului de instruc\iune util[. }n cazul procesoarelor RISC, num[rul de instruc\iuni este redus la minim, utilizatorul av`nd posibilitatea de a-=i construi propriile opera\ii. Simpla reducere a num[rului de instruc\iuni nu garanteaz[ succesul unei solu\ii RISC. Ea este ]nso\it[ de o arhitectur[ specific[ a procesorului care urm[re=te cre=terea flexibilit[\ii astfel ]nc`t, cu un num[r extrem de redus de instruc\iuni care se execut[ ]ntr-un num[r foarte redus de cicluri, s[ se poat[ realiza func\ii complexe ]ntr-o manier[ eficient[. Posibilitatea scrierii ]n oricare din registrele procesorului, numit[ ortogonalitate sau simetrie a setului de instruc\iuni, faciliteaz[ realizarea unor opera\ii deosebit de flexibile =i puternice. De exemplu, ]ntr-un sistem CISC, saltul condi\ionat se realizeaz[ uzual numai pe baza indicatorilor RALU, grupa\i ]ntr-un registru special, numit registru de stare (Program Status Word PSW). }n cazul sistemelor RISC, saltul condi\ionat poate fi bazat pe starea unui bit situat oriunde ]n memoria de date.
2.6. Subprograme
O tehnic[ de programare foarte folosit[ este cea a subprogramelor sau subrutinelor. Subprogramul este o secven\[ de instruc\iuni care poate fi tratat[ ca un program de sine st[t[tor (are propriile date de intrare =i de ie=ire). Implementarea acestui mecanism de programare se bazeaz[ pe: existen\a unui suport hardware adecvat (stiva); existen\a a dou[ instruc\iuni speciale: instruc\iunea de apel a subprogramului =i instruc\iunea de revenire din subprogram. Stiva este un tip special de memorie care stocheaz[ adresele de revenire din subprograme. Adresa loca\iei curente din stiv[ este memorat[ ]ntr-un registru special numit indicator de stiv[ (Stack Pointer SP). Programul care utilizeaz[ subprograme, numit program principal (sau program apelant), activeaz[ subprogramul prin intermediul instruc\iunii de apel (CALL). La execu\ia acestei instruc\iuni, se declan=eaz[ urm[toarea secven\[ de evenimente: adresa instruc\iunii urm[toare instruc\iunii de apel (adresa de revenire) este memorat[ ]n stiv[ iar indicatorul de stiva este modificat corespunz[tor (PUSH); contorul de program este ]nc[rcat cu adresa de start a subprogramului. }n acest fel, urm[toarea instruc\iune citit[ va fi prima instruc\iune din subprogram (controlul fluxului de instruc\iuni apar\ine subprogramului).
2.4
PC
PP apel SR PC k k+1
n-1 n n+1
Figura 2.6. Apelarea unui subprogram: PP programul principal, SR subprogram (subrutin[); PC contor program; n adres[ instruc\iune apel; k adresa de start subprogram. La sf`r=itul seven\ei de instruc\iuni din cadrul suprogramului se g[se=te instruc\iune de revenire din subprogram (RETURN). Execu\ia acesteia genereaz[ urm[toarea secven\[: adresa de revenire din subprogram este extras[ din stiv[ =i indicatorul de stiv[ este modificat corespunz[tor (POP); contorul de program este ]nc[rcat cu adresa de revenire. Astfel, controlul fluxului de instruc\iuni revine programului principal, cu prima instruc\iune de dup[ instruc\iunea de apel a subprogramului. Anumite microcontrollere ofer[ posibilitatea modific[rii con\inutului stivei prin instruc\iuni de tip PUSH =i POP. }n acest fel se ob\ine o flexibilitate sporit[, stiva put`nd fi utilizat[, de exemplu, pentru transmiterea parametrilor c[tre subprogram (date de intrare pentru subprogram) sau pentru extragerea rezultatelor (date de ie=ire din subprogram). Aceast[ tehnic[ este utilizat[, ]n special, ]n cazul limbajelor de nivel ]nalt. Execu\ia unui subprogram poate fi declan=at[ nu numai prin execu\ia instruc\iunilor de apel ci =i ca urmare a producerii unui eveniment special, numit ]ntrerupere. Mecanismul ]ntreruperilor va fi prezentat ]n paragraful urm[tor (vezi Sistemul de ]ntreruperi).
C1
Clock In
Q C2 RS
RF
Clock Out
Microcontroller
Figura 2.7. Oscilator cu cuar\ sau rezonator piezoceramic.
Vcc R
Clock In
Microcontroller
Figura 2.8. Oscilator RC. Oscilatorul RC (figura 2.8) reprezint[ cea mai ieftin[ dar =i cea mai pu\in stabil[ solu\ie (1020%). Valorile componentelor din figurile 2.7 =i 2.8 depind de tipul microcontrollerului =i de tipul de cuar\ sau rezonator. Anumite microcontrollere incorporeaz[ oscilatoare de tip RC (care nu necesit[ componente externe). Solu\ia cu ceas extern se utilizeaz[ ]n situa\iile ]n care semnalul este disponibil din alte surse ale sistemului cu microcontroller. Trebuie f[cut[ distinc\ie ]ntre ciclul instruc\iune (TCY) =i ciclul de ceas sistem (TCLK). Durata unui ciclu instruc\iune cuprinde mai multe cicluri ale ceasului sistem (412 TCLK) =i este ]mp[r\it[ ]n mai multe segmente (numite faze sau st[ri) care eviden\iaz[ diverse etape ale execu\iei instruc\iunii. }n figura 2.9 se prezint[, spre exemplificare, structura unui ciclu instruc\iune ]n cazul microcontrollerelor din familia Intel 8051.
TCLK
P1 S1
P2
P1 S2
P2
P1 S3
P2
P1 S4
P2
P1 S5
P2
P1 S6
P2
P1 S1
P2
TCY
2.6
Capitolul 2. Arhitectura microcontrollerelor 2.7.2. Circuitul de ini\ializare Circuitul de ini\ializare (circuitul de RESET) permite aducerea microcontrollerului ]ntr-o stare bine definit[ (stare ini\ial[). Principalele evenimente produse ]n secven\a de ini\ializare sunt: ]nc[rcarea anumitor SFR-uri cu valori predeterminate; ]nc[rcarea contorului program cu o adres[ predefinit[ (uzual adresa 0). Secven\a de ini\ializare poate fi declan=at[ de unul din urm[toarele evenimente: alimentarea microcontrollerului (Power On Reset POR); sc[derea tensiunii de alimentare sub o anumit[ valoare (Brown-Out Reset BOR); modificarea st[rii unui pin dedicat al microcontrollerului - pinul de RESET (RESET extern); dep[=irea unui anumit interval de timp (Watch-Dog Reset). Comanda de RESET la alimentare trebuie men\inut[ suficient timp pentru a permite stabilizarea oscilatorului sistem. }n acest scop, se utilizeaz[ un circuit RC, ata=at pinului de RESET extern.
Vcc Buton RESET Vcc R RESET R Microcontroller Buton RESET C Microcontroller RESET
Figura 2.10. Circuite de RESET. 2.7.3. Circuitul de supraveghere Circuitul de supraveghere (watch-dog) utilizeaz[ un num[r[tor dedicat (Watch-Dog Timer WDT) care, la dep[=ire, genereaz[ semnalul de RESET. Programul utilizator trebuie s[ ini\ializeze periodic num[r[torul, pentru a preveni ini\ializarea microcontrollerului. }n acest mod, se realizeaz[ o cale de recuperare din st[rile de blocaj, cu pre\ul ini\ializ[rii sistemului. La anumite microcontrollere, sursa de ceas a circuitului de supraveghere este diferit[ de oscilatorul sistem, fapt care m[re=te eficien\a circuitului. 2.7.4. Sistemul de ]ntreruperi Un instrument deosebit de puternic de programare a microcontrollerelor este sistemul de ]ntreruperi furnizeaz[, esen\ial ]n realizarea sistemelor ]n timp real sau multitasking. }n principiu, ]ntreruperile permit sincronizarea microcontrollerului cu cu diverse periferice incorporate sau externe. Circuitul suport care implementeaz[ sistemul de ]ntreruperi se nume=te controller de ]ntreruperi. Sistemul func\ioneaz[ ]n felul urm[tor: la producerea unui eveniment legat de periferic, se seteaz[ un semafor numit semafor de ]ntrerupere (Interrupt Flag IF). Ca urmare, controllerul de ]ntreruperi genereaz[ o comand[ special[ c[tre procesor numit[ cerere de ]ntrerupere (Interrupt Request). Ca r[spuns la cerea de ]ntrerupere, procesorul apeleaz[ un subprogram numit subprogram de servire a ]ntreruperii (Interrupt Service Routine ISR). }n acest fel, execu\ia programului este ]ntrerupt[ =i va fi reluat[ la revenirea din rutina se servire a ]ntreruperii. Adresa la care se afl[ rutina de tratare a ]ntreruperii se nume=te vector de ]ntrerupere. Unele microcontrollere au un singur vector pentru mai multe surse de ]ntrerupere. }n aceste cazuri, sursa ]ntreruperii se determin[ prin examinarea semafoarelor de ]ntrerupere.
2.7
Capitolul 2. Arhitectura microcontrollerelor Pentru ca programul s[ se reia exact ]n condi\iile ]n care a fost ]ntrerupt, registrele modificate ]n rutina de servire a ]ntreruperii trebuie s[ fie salvate la apel =i restaurate la revenirea din rutin[. La unele tipuri de microcontrollere, salvarea =i restaurarea registrelor mai importante (registrul de stare, registrul acumulator sau registrul de lucru, etc.), se face automat, utiliz`nd fie stiva, fie registre special destinate acestui scop. De remarcat c[ servirea unei ]ntreruperi poate fi am`nat[, cel pu\in p`n[ la sf`r=itul instruc\iunii curente (]n execu\ie). Perioada de timp dintre momentul gener[rii unei cereri de ]ntrerupere =i servirea ei poart[ numele de laten\[ a ]ntreruperii. Evenimentele care se utilizeaz[ frecvent pentru generarea de ]ntreruperi, numite surse de ]ntreruperi, sunt: dep[=irea capacit[\ii unui num[r[tor, modificarea st[rii unui pin, recep\ia unei date de c[tre un dispozitiv de intrare, sf`r=itul transmiterii unei date de c[tre un dispozitiv de ie=ire, etc. Semafoarele de ]ntrerupere pot fi ]nso\ite de semafoare de validare (Interrupt Enable IE flags). Valoarea 0 a semaforului de validare inhib[ cererea de ]ntrerupere corespunz[toare. }ntreruperile dotate cu semafoare de validare se numesc mascabile. }n cazul sistemelor cu mai multe surse de ]ntrerupere, exist[ posibilitatea gener[rii simultane a dou[ sau mai multe cereri de ]ntrerupere. Ordinea ]n care vor fi servite ]ntreruperile ]n acest caz este stabilit[ pe baza unor semafoare de prioritate (Interrupt Priority IP flags).
Citire Latch
Buffer ie=ire
Pin de intrare-ie=ire
2.8
Capitolul 2. Arhitectura microcontrollerelor Din considerente tehnologice (reducerea num[rului de pini), dar =i din motive de flexibilitate (posibilitatea modific[rii func\iei PORT-ului), pinii asocia\i unui PORT sunt bidirec\ionali, ei put`nd fi configura\i individual, fie ca pini de intrare, fie ca pini de ie=ire. }n afara func\iei de baz[ de intrare-ie=ire (General Purpose Input-Output GPIO), anumi\i pini pot avea func\ii alternative, corespunz[toare altor periferice incorporate (interfa\a serial[, convertorul analog-numeric, etc.). }n acest caz, controlul bufferelor de intrare =i de ie=ire este realizat de periferic. }n figura 2.11 este prezentat[ schema de principiu a unui PORT de intrare-ie=ire (un bit). Bistabilii de date (Data Latch) sunt grupa\i ]n SFR-ul de date asociat PORT-ului =i memoreaz[ datele de ie=ire. Opera\ia de scriere ]n PORT ]nseamn[ de fapt scrierea ]n data latch. Amplificatorul-tampon de ie=ire (buffer ie=ire) controleaz[ efectiv starea pinului de ie=ire. Principial, exist[ dou[ moduri de implementare a amplificatorului de ie=ire: ie=ire CMOS standard (push-pull) (fig. 2.12a); ie=ire cu drena ]n gol (open drain), cu sau f[r[ rezistor de sarcin[ (pull-up resistor) (fig. 2.12b).
Vcc Vcc Vcc
Intrare
P
Ie=ire
N
Control ie=ire a) b) c)
Figura 2.12. Amplificatorul (inversor) de ie=ire. Amplificatorul de ie=ire poate fi trecut, cu ajutorul semnalelor control ie=ire, ]n starea de mare impedan\[ (HiZ). Acest lucru permite utilizarea pinului fie ca intrare, fie ca ie=ire (pin bidirec\ional). Varianta de amplificator de ie=ire din figura 2.12b prezint[, ]n afara simplit[\ii, un alt avantaj: nu mai este necesar blocul de trecere ]n starea de ]nalt[ impedan\[ pentru utilizarea pinului ca pin de intrare. Este suficient s[ se ]nscrie 1 ]n data latch (amplificatorul fiind inversor, tranzistorul MOS-N va fi blocat) pentru a izola ie=irea amplificatorului de pin. O alt[ variant[ de amplificator de ie=ire este prezentat[ ]n figura 1.12b. Tranzistorul MOS de tip P este modificat astfel ]nc`t curentul debitat (source current) s[ fie mult mai mic dec`t cel absorbit (sink current). Pinul cu o astfel de configura\ie se nume=te semi-bidirec\ional. Amplificatorul-tampon de intrare (buffer intrare) realizeaz[ conversia de nivel a semnalului de intrare, TTL sau CMOS. Caracteristica de transfer poate fi normal[ (f[r[ histerezis) sau de tip trigger Schmitt. }n func\ie de microcontroller, anumite instruc\iuni citesc starea pinului, altele citesc valoarea din data latch. Principalele aplica\ii ale PORT-urilor de intrare-ie=ire sunt: comanda LED-urilor; comanda releelor; comanda motoarelor de curent continuu; citirea contactelor unei tastaturi. Comanda LED-urilor poate fi f[cut[ ]n mai multe moduri, ]n func\ie de tipul pinului de ie=ire utilizat pentru comand[ (figura 2.13).
2.9
R LED b)
}n figura 2.14a este prezentat modul de comand[ al unui releu, iar ]n figura 2.14b, a unui micromotor de curent continuu.
Vcc Vcc
Mot
Pin ie=ire RB b)
}n figura 2.15 este prezentat[ schema de principiu a unei tastaturi simple, utilizabil[ ]n cazul unui num[r redus de taste. Pinii de intrare corespunz[tori tastelor neap[sate vor fi ]n 1 iar cel corespunz[tor tastei ap[sate va fi ]n 0.
Vcc Vcc Vcc Vcc
Pini de intrare
Figura 2.15. Tastatur[ simpl[. }n cazul unui num[r mai mare de taste, se poate utiliza schema de tastatur[ matriceal[, prezentat[ ]n figura 2.16. Pe pinii de ie=ire se transmit succesiv combina\ii de bi\i ]n care doar un bit este 1, restul fiind 0. Pe pinii de intrare vor putea fi citite st[rile tastelor situate pe coloana selectat[, o tast[ ap[sat[ gener`nd un 1 pe pinul de intrare corespunz[tor.
2.10
Pini de ie=ire
Pini de intrare
Figura 2.16. Tastatur[ matriceal[. 2.8.2. Num[r[toare Num[r[torul este un alt dispozitiv incorporat, prezent ]n toate variantele de microcontroller. Configura\ia de baz[ din figura 2.17 permite at`t num[rarea impulsurilor (modul num[r[tor counter), c`t =i m[surarea intervalelor de timp (modul cronometru timer).
TCY
Mux
Ext Sel
Divizor
Poart[
Num[r[tor
Dep[=ire
Figura 2.17. Schema de principiu a unui num[r[tor. }n figura 2.18 este prezentat[ schema unui num[r[tor cu auto-]nc[rcare (auto reload). La dep[=irea capacit[\ii num[r[torului, con\inutul registrului PR este ]nc[rcat ]n num[r[tor (reload). Semanlul de dep[=ire poate fi conectat la un pin de ie=ire sau poate genera o ]ntrerupere. Se ob\ine ]n acest fel un divizor al semnalului de ceas controlat prin intermediul registrului PR.
Ceas
Num[r[tor
Dep[=ire
Pin ie=ire
}ntrerupere PR
Figura 2.18. Num[r[tor cu auto-]nc[rcare. Prezen\a unor registre suplimentare permite realizarea unor func\ii complexe, cum ar fi: captur[, comparator sau generator de impulsuri modulate ]n durat[ (Puls Wide Modulation PWM). Schema de principiu a unui circuit de captur[, care permite m[surarea duratei unui semnal de intrare, este prezentat[ ]n figura 2.19. La detec\ia unui front al semnalului de intrare, con\inutul num[r[torului este memorat (capturat) ]n registrul de captur[ REGCAP =i se genereaz[ un semnal de ]ntrerupere.
2.11
Capitolul 2. Arhitectura microcontrollerelor Semnalul selec\ie front permite alegerea tipului de tranzi\ie (10 sau 01) care va declan=a captura.
Ceas
Pin intrare
Divizor
Num[r[tor
Captur[
REGCAP
Figura 2.19. Circuit de captur[. }n figura 2.20 este prezentat[ schema unui circuit comparator. Atunci c`nd con\inutul num[r[torului coincide cu cel al registrului comparator REGCOMP, se modific[ starea pinului de ie=ire =i se genereaz[ un semnal de ]ntrerupere. Semnalul control ie=ire permite selec\ia modului de modificare a st[rii pinului de ie=ire la apari\ia semnalului de egalitate (1 - set,0 - reset sau basculare toggle).
Ceas
Num[r[tor
Egalitate
Comparator
REGCOMP
Figura 2.20. Circuit comparator. Schema unui generator de impuls modulat ]n durat[ (PWM) este prezentat[ ]n figura 2.21.
Reg. durat[ Comparator 1 Pin ie=ire Ceas Num[r[tor Reset Comparator 2 Reg. perioad[
Figura 2.21. Generator de impuls modulat ]n durat[ (PWM). Registrul perioad[ controleaz[ perioada impulsului de ie=ire iar registrul durat[ controleaz[ durata impulsului de ie=ire (duty cycle). Atunci c`nd con\inutul num[r[torului coincide cu con\inutul registrului perioad[ (ie=ire comparator 2), bistabilul de ie=ire este pus ]n starea 1 =i num[r[torul este resetat. C`nd con\inutul num[r[torului coincide cu con\inutul registrului durat[, bistabilul de ie=ire este pus ]n starea 0. }n acest fel, durata activ[ a impulsului de ie=ire este propor\ional[ cu valoarea ]nscris[ ]n registrul durat[ (figura 2.22). 2.12
R S
Perioad[ t
Figura 2.22. Forma semnalului de ie=ire PWM. O alt[ aplica\ie interesant[ este convertorul numeric-analogic. }n figura 2.23 este prezentat[ schema unui convertor PWM tensiune. Circuitul RC integreaz[ semnalul PWM, tensiunea de ie=ire fiind propor\ional[ cu factorul de umplere al semnalului PWM.
Intrare PWM
Ie=ire tensiune C
Figura 2.23. Convertor PWM tensiune. 2.8.3. Interfe\e seriale Interfa\a UART Circuitul UART (Universal Asynchronous Receiver/Transmitter) este un periferic ce implementeaz[ o interfa\[ serial[ asincron[ (asem[n[toare conexiunii standard RS-232C din PC-uri). Ea poate fi folosit[ pentru comunica\ia cu un PC, cu un terminal sau cu un alt sistem cu microcontroller. Transmisia utilizeaz[ dou[ linii de semnal (TXD transmisie date =i RXD recep\ie date) =i poate fi de tip simplex (numai ]ntr-un sens), semi-duplex (fie ]ntr-un sens, fie ]n altul) sau full-duplex (simultan ]n ambele sensuri). Pentru codificarea datelor se utilizeaz[ standardul NRZ (Non Return to Zero). Bi\ii de date sunt ]ncadra\i ]ntre un bit de start, cu valoarea 0 =i unul sau doi bi\i de stop, cu valoarea 1. Majoritatea circuitelor UART permit transmisia a 5 p`n[ la 8 bi\i de date, cu sau f[r[ bit de paritate.
Celul[-bit 1 0 1
Start
Bi\i de date
Figura 2.24. Codificarea NRZ.
Stop
Transmisia fiind asincron[ (nu con\ine informa\ie de sincronizare), este necesar[ relizarea unei durate a celulei-bit suficient de precis[ pentru a ob\ine o transmisie corect[. Viteza de transmisie a bi\ilor (inversul duratei unei celule-bit), se nume=te rat[ Baud =i se m[soar[ ]n bi\i pe secund[ (bits per second - bps). Cele mai utilizate viteze de transmisie sunt: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 =i 115000 bps.
2.13
Capitolul 2. Arhitectura microcontrollerelor }n figura 2.25 este prezentat[ schema de principiu a unui circuit UART capabil de transmisie fullduplex. Generatorul ratei de transmisie/recep\ie (rata Baud) este realizat fie cu un timer de uz general, fie cu un timer special destinat acestui scop.
Buffer transmisie Registru deplasare Registru deplasare Buffer recep\ie TXD RXD
Figura 2.25. Schema de principiu a unui circuit UART. Circuitul UART poate fi folosit direct ]n cazul transmisiei ]ntre subsisteme situate la distan\e mici (pe aceea=i plac[).
UART
TXD RXD
RXD TXD
UART
Figura 2.26. Comunica\ie serial[ utiliz`nd UART. Pentru distan\e mai mari (care nu dep[=esc ]ns[ 17 m.), se poate utiliza standardul RS-232C. Standardul a fost introdus, la ]nceputul anilor 1960, de EIA (Electronic Industries Association) =i define=te o interfa\[ standard ]ntre un echipament terminal, numit DTE (Data Terminal Equipment) =i un echipament de comunica\ie a datelor, numit DCE (Data Circuit-terminating Equipment).
UART DTE
UART
Figura 2.27. Comunica\ie RS-232C ]ntre DTE =i DCE. Principalele specifica\ii mecanice ale standardului sunt: conector tip D cu 25 sau 9 pini, tat[ la DTE =i mam[ la DCE; lungimea maxim[ a cablului este de aproximativ 17m. Cablul de leg[tur[ DTE-DCE (cablul serial) este de tip pin la pin (pinul 1 DTE este conectat cu pinul 1 DCE, etc). Standardul RS-232C utilizeaz[, ]n afar[ de semnalele pentru transmisia/recep\ia datelor (TX =i RX), un num[r de alte semnale, destinate controlului fluxului de date dintre DTE =i DCE. Multe dintre aceste 2.14
Capitolul 2. Arhitectura microcontrollerelor semnale de control sunt specifice cazului ]n care echipamentul DCE este un MODEM (MODulatorDEModulator). MODEM-ul este un echipament de comunica\ie care utilizeaz[ o linie telefonic[ obi=nuit[ pentru transmisia datelor la distan\[. Semnalul analogic din linie este modulat de c[tre MODEM-ul emi\[tor =i demodulat de cel receptor. }n tabelul 2.1 sunt prezentate principalele semnale utilizate de protocolul RS-232C. Pin D-25 2 3 4 5 6 7 8 20 22 Pin D-9 3 2 7 8 6 5 1 4 9 Semnal TX RX RTS CTS DSR SG CD DTR RI Direc\ie DTEDCE DCEDTE DTEDCE DCEDTE DCEDTE DCEDTE DTEDCE DCEDTE
Tabelul 2.1. Principalele semnale ale protocolului de comunica\ie RS-232C. Semnifica\ia acestor semnale este: TX (Transmitted Data) semnal activ atunci c`nd datele sunt transmise de la DTE c[tre DCE. RX (Received Data) - semnal activ atunci c`nd datele sunt transmise de la DCE c[tre DTE. RTS (Request To Send) semnal generat de DTE care cere echipamentului DCE s[ se preg[teasc[ pentru tramsmisia datelor. C`nd DCE este preg[tit, el va activa semnalul CTS. CTS (Clear To Send) semnal generat de DCE care indic[ faptul c[ acesta este preg[tit pentru transmisia datelor. DSR (DCE Ready sau Data Set Ready) semnal generat de DCE. }n cazul ]n care echipamentul DCE este un MODEM, semnalul DSR arat[ c[ MODEM-ul este conectat. DTR (DTE Ready) semnal generat de DTE atunci c`nd dore=te s[ stabileasc[ un canal de comunica\ie. }n cazul ]n care dispozitivul DCE este un MODEM, semnalul DTR prepar[ MODEM-ul pentru conectare la linia telefonic[. Dezactivarea semnalului DTR determin[ ca MODEM-ul s[ ]nchid[ conexiunea. CD (Received Line Signal Detector sau Carrier Detect) semnal generat de MODEM care indic[ prezen\a purt[toarei ]n linia telefonic[. RI (Ring Indicator) semnal generat de modem la recep\ia unui apel pe linia telefonic[. SG (Signal Ground) mas[ semnal. Principalele specifica\ii electrice sunt: semnalele sunt active pe 0; codificarea datelor utilizeaz[ logica negativ[ =i se face astfel: nivelul logic 0 corespunde unei tensiuni cuprinse ]ntre +3 =i +25 V (starea Space) iar nivelul logic 1 corespunde unei tensiuni cuprinse ]ntre 3 =i 25 V(starea Mark) (figura 2.28); zona cuprins[ ]ntre 3 V =i +3 V este considerat[ regiune de tranzi\ie. Conversia semnalelor de la nivelele TTL/CMOS la nivelele RS-232C este realizat[ de circuite specializate cum ar fi MAX232.
2.15
U[V] 0
+25
Regiune de tranzi\ie 0
-3
+3
Figura 2.28. Codificarea datelor ]n standardul RS-232C. Cu ajutorul MODEM-ului se pot realiza transmisii de date la distan\[ foarte mare, utiliz`nd linii telefonice at`t analogice c`t =i digitale. }n figura 2.29 este prezentat[ schema unei conexiuni la distan\[ ]ntre dou[ calculatoare.
PC (DTE)
RS-232C
MODEM (DCE)
Figura 2.29. Conexiune la distan\[ prin MODEM. }n figura 2.30 este prezentat[ schema unei conexiuni null MODEM ]ntre dou[ echipamente DTE.
Figura 2.30. Conexiune null MODEM. Conexiunea null MODEM este utilizat[ frecvent =i pentru conectarea unui sistem cu microcontroller cu un PC. 2.16
Capitolul 2. Arhitectura microcontrollerelor Interfa\a I2C Standardul I2C (Inter IC IIC sau I2C), dezvoltat de firma Philips, define=te o magistral[ simpl[, bidirec\ional[, care utilizeaz[ doar dou[ linii de comunica\ie. Exist[ o mare varietate de circuite dotate cu o astfel de interfa\[, cum ar fi: microcontrollere; circuite de uz general cum ar fi: drivere LCD, expandoare I/O, memorii RAM sau EEPROM, circuite de conversie a datelor, etc.; circuite specializate, cum ar fi: circuite de acord digital =i procesoare de semnal pentru sistemele audio-video, generatoare DTMF pentru telefonie, etc. Principalele caracteristici ale magistralei I2C sunt: necesit[ doar dou[ linii: o linie serial[ de date (Serial Data Line - SDA) =i o linie serial[ de ceas (Serial Clock Line - SCL); fiecare dispozitiv conectat la magistral[ este unic identificat printr-o adres[ de 7 bi\i; ]ntre dispozitive exist[ permanent o rela\ie simpl[ de tip master-slave; dispozitivele de tip master opereaz[ fie ca emi\[toare (master transmitters), fie ca receptoare (master receivers); magistrala poate lucra ]n regim multi-master prin includerea unor mecanisme de detec\ie a coliziunilor =i de arbitraj al magistralei pentru a preveni deformarea datelor ]n cazul ]n care mai multe circuite master ]ncep simultan transmisia; transferul de date este serial, orientat pe octet =i se poate realiza cu viteze de p`n[ la 100 Kbps ]n modul standard sau p`n[ la 400 Kbps ]n modul rapid. Liniile SDA =i SCL sunt bidirec\ionale =i sunt conectate la plusul tensiunii de alimentare prin rezistoare pull-up (figura 2.31). Etajele de ie=ire ale dispozitivelor conectate la magistral[ trebuie s[ fie de tip colector ]n gol sau dren[ ]n gol pentru a permite realizarea func\iei +I cablat (wired-AND).
Vdd
SDA SCL
RP
RP
Figura 2.31. Topologia magistralei I2C. C`nd magistrala este liber[ (nu se efectueaz[ nici o transmisie), liniile SDA =i SCL sunt ]n starea 1. Semnalul de pe linia de date SDA trebuie s[ fie stabil pe perioada c`t semnalul de ceas SCL este ]n 1. Datele se pot modifica numai ]n perioada ]n care SCL este ]n 0 (figura 2.32).
Figura 2.32. Transmisia unui bit pe magistrala I2C. Transmisia pe magistrala I2C este ]ncadrat[ ]ntre dou[ st[ri unice: condi\ia de START =i condi\ia de STOP. O tranzi\ie 10 pe linia SDA c`t timp linia SCL este ]n 1 define=te condi\ia de START S, iar o tranzi\ie 01 pe SDA c`nd SCL este ]n 1, define=te condi\ia de STOP P (figura 2.33). 2.17
P STOP
NAK ACK 9
Figura 2.34. Secven\a de confirmare (acknowledgement). }n figura 2.35 este prezentat un transfer complet de date pe magistrala I2C. Dispozitivul I2C-master controleaz[ linia SCL, gener`nd impulsurile de ceas pentru bi\ii de date =i pentru secven\ele de confirmare.
NAK SDA MSB ACK receptor ACK receptor
SCL S
9 ACK
9 ACK P
Figura 3.35. Transferul datelor pe magistrala I2C. Transmisia poate fi divizat[ ]n dou[ secven\e: cea de adresare =i cea de transfer date. Secven\a de adresare const[ ]n transmisia de c[tre master, dup[ secven\a de start, a unui octet care con\ine adresa pe 7 bi\i a dispozitivului slave (bi\ii 71) =i bitul de direc\ie RW (bitul 0). Dac[ RW=1, transmisia de date se va face de la slave c[tre master (citire Read), iar dac[ RW=0, transmisia se face de master c[tre slave (scriere Write). Aceast[ schem[ de adresare permite conectarea la magistrala I2C a cel mult 127 de dispzitive. }n practic[, num[rul de dispozitive este mai redus deoarece anumite adrese sunt rezervate. Anumite dispozitive utilizeaz[ un sistem de adresare pe 10 bi\i care permite conectarea la magistrala I2C a unui num[r de 1024 de dispozitive. }n acest caz, secven\a de adresare presupune transmisia de c[tre master a doi octe\i: un octet care reprezint[ o adres[ rezervat[ (general call address) ce include 3 bi\i ai adresei slave =i un octet care cuprinde restul de 7 bi\i ai adresei slave. Pe durata secven\ei de confirmare, circuitul selectat (cel a c[rui adres[ coincide cu adresa transmis[ de master) va r[spunde cu ACK=0. 2.18
Capitolul 2. Arhitectura microcontrollerelor Dup[ adresare, urmeaz[ secven\a de transfer de date, sensul transferului fiind precizat de valoarea bitului RW. }n figurile 3.36 =i 3.37 sunt prezentate transferurile de date de la master la slave (scriere), respectiv de la slave la master (citire), utiliz`nd schema de adresare pe 7 bi\i.
Linia SDA este controlat[ de MASTER Linia SDA este controlat[ de SLAVE
Figura 3.36. Transfer de date de la master la slave.
Linia SDA este controlat[ de MASTER Linia SDA este controlat[ de SLAVE
Figura 3.37. Transfer de date de la slave la master. }n cazul transferului de la master la slave (figura 3.36), dispozitivul slave receptor poate ini\ia oprirea transferului ]n orice moment, prin generarea unei secven\e NAK dup[ ultimul octet pe care ]l mai poate recep\iona. Dispozitivul master va genera secven\a de stop, termin`nd transmisia. Interfa\a SPI Standardul SPI define=te o interfa\[ sincron[ de comunica\ie ]ntre un circuit master (microcontroller ]n majoritatea cazurilor) =i un dispozitiv slave. Interfa\a cuprinde urm[toarele linii de semnal: linia de selec\ie dispozitiv slave (Chip Select CS); este controlat[ de master (ie=ire master, intrare slave) =i selecteaz[ dispozitivul slave cu care se va face transferul de date; linia de ceas (Serial ClocK SCK); este controlat[ de master (ie=ire master, intrare slave) =i con\ine semnalul de sincronizare a transferului; linia de date intrare (Serial Data In - SDI); este controlat[ de master (ie=ire master, intrare slave) =i permite transferul datelor de la master c[tre slave; linia de date ie=ire (Serial Data Out - SDO); este controlat[ de slave (ie=ire slave, intrare master) =i permite transferul datelor de la master c[tre slave. }n figura 3.38 este prezentat[ schema unei interfe\e SPI cu un singur dispozitiv slave. Schema poate fi extins[ la mai multe dispozitive SPI-slave prin utilizarea unor linii CS suplimentare.
2.19
Master SPI Slave SPI SS - Slave Select MISO - Master In, Slave Out MOSI - Master Out, Slave In
Figura 2.38. Interfa\a SPI. }n figura 3.39 sunt prezentate formele de und[ pe liniile de interfa\[ SPI.
2.20
Capitolul 3. Arhitectura familiei 8051 Interfa\a SPI poate fi utilizat[ pentru programarea serial[ ]n circuit (In Circuit Serial Programming ICSP sau In System Programming - ISP) a memoriei FLASH. Programarea ]n circuit sau ]n sistem permite ]nc[rcarea codului aplica\iei ]n memoria FLASH f[r[ scoaterea microcontrollerului din circuitulaplica\ie, fapt care faciliteaz[ realizarea sistemelor de dezvoltare a aplica\iilor cu 8051. Firma Philips produce o gam[ larg[ de microcontrollere, cu diverse facilit[\i suplimentare fa\[ de nucleul standard 8051. }n multe situa\ii, perifericele incorporate ]ntr-un anumit microcontroller permit realizarea unei aplica\ii f[r[ alte componente externe. Cele mai cunoscute microcontrollere Philips sunt 80C552 =i 89C668. Microcontrollerul 80C552 se distinge prin num[rul mare de periferice incorporate (convertor analog numeric cu rezolu\ia de 10 bi\i cu 8 canale, convertor numeric analogic, ie=ire PWM, interfa\[ serial[ I2C, etc). Microcontrollerul 89C668 se remarc[ at`t prin dimensiunea memoriei program (64KB FLASH) c`t =i prin facilitatea de programare ]n aplica\ie (In-Application Programming - IAP), utiliz`nd interfa\a serial[ UART. Programarea ]n aplica\ie ]nseamn[ c[ memoria FLASH poate fi modificat[ prin execu\ia unor rutine situate ]ntr-o memorie ROM intern[ (boot ROM). Microcontrollerul 8051 este realizat ]ntr-o arhitectur[ Harvard, cu spa\ii de adresare separate pentru memoria program =i cea de date (figura 3.1). Separarea logic[ a memoriei program fa\[ de cea de date permite ca memoria de date s[ poat[ fi accesat[ utiliz`nd o adres[ pe 8 bi\i, put`nd fi astfel manipulat[ rapid de c[tre CPU. Cu ajutorul registrului index de date (Data PoinTeR DPTR) se pot genera ]ns[ =i adrese pe 16 bi\i, utilizate ]n accesul memoriei de date externe.
}ntreruperi externe Timer 1 Control ]ntreruperi }ntreruperi periferice Magistral[ intern[ Memorie program Memorie date (RAM) Timer 0
CPU
Oscilator
PORT-uri intrare-ie=ire
P0 P2 P1 P3 Adrese/date
Intern[
1000h
FFh
Extern[
0FFFh
EA=0 Extern[
0000h
EA=1 Intern[
7Fh
00h
0000h
PSEN
Figura 3.2. Organizarea memoriei microcontrollerului 8051.
RD WR
Memoria de date este de tip cite=te-scrie (RAM) =i ocup[ un spa\iu separat de adresare. Primii 128 de octe\i sunt ]ntotdeauna inclu=i ]n chip, restul de p`n[ la 64KB put`nd fi adresa\i ]n spa\iul de memorie de date extern[. CPU genereaz[ semnalele RD =i WR necesare accesului memoriei de date externe. 3.1.1. Memoria program }n figura 3.3 este prezentat[ partea inferioar[ a memoriei program. Dup[ RESET, CPU ]ncepe execu\ia de la adresa 0000h (adresa de RESET). Fiec[rei ]ntreruperi ]i este asociat[ o adres[ fix[ ]n memoria program (vector de ]ntrerupere), la care se g[se=te rutina de tratare a ]ntreruperii respective.
0023h
001Bh
}ntreruperi
0013h
000Bh
0003h
RESET
0000h
3.3
Capitolul 3. Arhitectura familiei 8051 Dac[ EA=1, opera\iile de aducere (fetch) cu adresele 00FFFh sunt direc\ionate c[tre memoria intern[, iar cele cu adresele 1000hFFFFh sunt direc\ionate c[tre memoria program extern[. Dac[ EA=0, memoria program intern[ este ignorat[, toate opera\iile de aducere fiind direc\ionate c[tre memoria program extern[. La microcontrollerele f[r[ memorie program intern[, pinul EA trebuie conectat la mas[ (EA=0). Pentru citirea memoriei program externe, CPU genereaz[ semnalul PSEN. Pe durata aducerii din memoria intern[, semnalul PSEN nu este activat. }n cazul sistemelor cu memorie program extern[ (figura 3.4), PORT-urile de intrare-ie=ire P0 =i P2 sunt dedicate reliz[rii func\iilor de magistral[ ]n ciclurile de acces din memoria extern[.
EPROM Date
Adrese OE
Figura 3.4. Sistem cu memorie program extern[. PORT-ul P0 este utilizat ca magistral[ multiplexat[ pentru adrese =i date. El genereaz[ mai ]nt`i octetul inferior al contorului program (PCL), dup[ care devine PORT de intrare, permi\`nd citirea instruc\iunii din memoria program. Pe durata ]n care octetul inferior al adresei este generat de P0, este activat semnalul ALE (Address Latch Enable) care permite memorarea PCL ]n latch. }n tot acest timp, PORT-ul P2 con\ine octetul superior al adresei (PCH). }n final, CPU genereaz[ semnalul PSEN, utilizat ca strob de citire (read) pentru memoria program extern[. 3.1.2. Memoria de date Harta memoriei interne de date este prezentat[ ]n figura 3.5. Memoria este ]mp[r\it[ ]n trei blocuri, fiecare cu dimensiunea de 128 de octe\i: blocul inferior, blocul superior =i blocul registrelor cu func\ii speciale (Special Function Registers SFR). Printr-un artificiu, cei 384 de octe\i ai memoriei de date pot fi adresa\i cu numai 8 bi\i. Astfel, o adres[ direct[ mai mare dec`t 7Fh acceseaz[ spa\iul SFR, ]n timp ce o adres[ indirect[ ]n acela=i interval acceseaz[ un spa\iu de memorie diferit - blocul superior RAM.
3.4
Figura 3.5. Memoria de date intern[ (RAM). Blocul inferior al memoriei RAM este prezentat ]n figura 3.6. La adresele 00h1Fh se g[sesc cele 4 seturi de registre (register banks) R0R7. Selec\ia setului curent de registre se face prin bi\ii RS0 =i RS1 din PSW.
7Fh
30h 2Fh
RS1:RS0
20h 11 10 01 00 1Fh 18h 17h 10h 0Fh 08h 07h 00h
Figura 3.6. Blocul inferior RAM. Adresele din intervalul 20h2Fh formeaz[ spa\iul de adresare la nivel de bit. Fiecare bit din acest spa\iu de memorie poate fi accesat individual, utiliz`nd o adres[ ]n intervalul 00h7Fh. Astfel, bitul cel mai pu\in semnificativ (bitul 0) din celula de memorie 20h are adresa 00h iar bitul cel mai semnificativ din celula 2Fh are adresa 7Fh. Registrele cu func\ii speciale (SFR) sunt celule de memorie de date (RAM) care controleaz[ perifericele =i circuitele suport incorporate sau care memoreaz[ starea unit[\ii centrale de prelucrare (CPU). }n figura 3.7 este prezentat[ harta memoriei SFR. Registrele cu func\ii speciale sunt adresabile numai direct, ]n intervalul 80hFFh. Registrele cu adresa multiplu de 8 sunt adresabile =i la nivel de bit, adresele bi\ilor din aceste registre fiind ]n intervalul 80hFFh. Registrul acumulator ACC are adresa D0h =i este adresabil la nivel de bit. }n mnemonicele pentru instruc\iunile specifice acumulatorului se utilizeaz[ simbolul A (vezi Setul de instruc\iuni). Registrul B (adresa F0h, adresabil la nivel de bit) este utilizat numai ]n opre\iile de ]nmul\ire =i ]mp[r\ire, ]n celelalte cazuri put`nd fi utilizat ca registru general de memorie. 3.5
TL0 DPL
TL1 DPH
TH0
TH1 PCON
Figura 3.7. Registrele cu func\ii speciale (SFR). Cuv`ntul de stare (Program Status Word PSW) are adresa D0h =i este adresabil la nivel de bit.
7 6 5 4 3 2 1 0 CY AC F0 RS1 RS0 OV - P D7 D6 D5 D4 D3 D2 D1 D0
Figura 3.8. Cuv`ntul de stare (PSW). Bit PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 Simbol CY AC F0 RS1 RS0 OV P Semafor transport (carry)
bit
adres[ bit
Func\ie Semafor transport auxiliar (auxiliary carry) pentru opera\ii BCD Semafor de uz general Bitul 1 pentru selec\ia setului de registre Bitul 0 pentru selec\ia setului de registre Semafor dep[=ire (overflow) Semafor de uz general Semafor paritate
Bi\ii RS1:RS0 permit selec\ia setului de registre R0R7. Astfel. dac[ RS1:RS0=00, registrele R0R7 au adresele 00h07h, iar dac[ RS1:RS0=11, registrele R0R7 au adresele 18h1Fh. Semaforul de paritate P precizeaz[ num[rul de bi\i cu valoarea 1 din acumulator: P=1 dac[ num[rul de bi\i cu valoarea 1 este impar =i P=0 ]n caz contrar. Indicatorul stivei (Stack Pointer SP) este un registru de 8 bi\i, cu adresa 81h. El este incrementat ]nainte ca datele s[ fie depuse ]n stiv[ la execu\ia instruc\iunilor PUSH =i CALL. Stiva poare fi a=ezat[ oriunde ]n memoria RAM intern[. Dup[ RESET, indicatorul stivei este ini\ializat cu valoarea 07h, astfel ]nc`t stiva ]ncepe de la adresa 08h. Registrul indicator pentru date (Data PoinTeR DPTR) este alc[tuit din doi octe\i: cel inferior (DPL), cu adresa 82h =i cel superior (DPH), cu adresa 83h. El memoreaz[ o adres[ pe 16 bi\i =i poate fi utilizat at`t ca un registru pe 16 bi\i c`t =i ca dou[ registre de 8 bi\i. 3.6
Capitolul 3. Arhitectura familiei 8051 PORT-urile P0P3 au adresele 80h, 90h, A0h =i respectiv B0h. Ele reprezint[ registrele tampon de date (data latches) asociate PORT-urilor respective. Registrul de date seriale (Serial data BUFfer SBUF) are adresa 99h. El este alc[tuit de fapt din dou[ registre: un registru tampon pentru transmisie =i un registru tampon pentru recep\ie. Scrierea ]n SBUF determin[ ]nc[rcarea registrului tampon de transmisie iar citirea din SBUF acceseaz[ con\inutul registrului tampon de recep\ie. Registrele num[r[toare TH0, TL0, TH1 =i TL1 au adresele 8Ch, 8Ah, 8Dh =i respectiv 8Bh. Ele formeaz[ dou[ registre num[r[toare de 16 bi\i, asociate celor dou[ timere T0 =i T1. Registrele de control IP, IE, TMOD, TCON, SCON =i PCON au adresele B8h, A8h, 89h, 88h, 98h =i respectiv 87h. Ele con\in bi\i de control =i stare pentru sistemul de ]ntreruperi, timere =i PORT-ul serial. Descrierea ]n detaliu a acestor registre se va face ]n paragrafele urm[toare. Microcontrollerul 8051 poate accesa p`n[ la 64KB memorie de date extern[. }n figura 3.9 este prezentat modul de conectare a memoriei de date externe. Ca =i ]n cazul memoriei program externe, PORT-urile P0 =i P2 sunt utilizate pentru realizarea func\iilor de magistral[ ]n ciclurile de acces a memoriei de date externe.
8051
P1
P3
ALE
SRAM
P0
Latch
Date
Adrese OE WE
P2 RD WR
3.7
Capitolul 3. Arhitectura familiei 8051 Adresarea prin registre Anumite instruc\iuni utilizeaz[, ]n calitate de operanzi, registrele de lucru R0R7. Selec\ia registrului se face printr-un c`mp de 3 bi\i din codul instruc\iunii. Aceste instruc\iuni permit ob\inerea unui cod mai compact, nefiind necesar un octet suplimentar pentru adresa operandului, ca ]n cazul instruc\iunilor cu adresare direct[. Selec\ia setului curent de registre de lucu se face prin bi\ii RS1:RS0 din PSW. Adresarea implicit[ Unele instruc\iuni sunt specifice unui anumit registru. De exemplu, anumite instruc\iuni opereaz[ numai cu acumulatorul sau numai cu registrul index de date DPTR, nefiind necesar[ o adres[ pentru indicarea operandului. Adresarea imediat[ Aceast[ modalitate de ob\inere a valorii unui opreand nu este un mod de adresare propriu-zis. Valoarea operandului este o constant[ care este memorat[ dup[ codul opera\iei, ]n memoria program. De exemplu, instruc\iunea: MOV A,#55h ]ncarc[ acumulatorul cu constanta 55h. Instruc\iunea ocup[, ]n memoria program, 2 octe\i: primul octet (74h) reprezint[ codul opera\iei, iar al doilea (55h), valoarea constantei. Adresarea indexat[ Acest mod de adresare poate fi utilizat numai pentru memoria program. Adresa operandului se ob\ine ]nsum`nd acumulatorul cu un registru index de 16 bi\i (registrul index de date DPTR sau contorul program PC). Anumite instruc\iuni modific[ semafoarele cuv`ntului de stare (PSW). }n tabelul urm[tor sunt trecute instruc\iunile =i semafoarele din cuv`ntul de stare afectate. Instruc\iune ADD ADDC SUBB MUL DIV DA RRC RLC SETB C Semafoare CY OV AC x x x 0 0 x x x 1 x x x x x x x x Instruc\iune CLR C CPL C ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit CJNE Semafoare CY OV AC 0 x x x x x x x
Tabelul 3.1. Instruc\iuni care afecteaz[ semafoarele. }n paragrafele urm[toare sunt prezentate instruc\iunile microcontrollerului 8051, grupate pe func\ii. }n mnemonicele instruc\iunilor au fost utilizate urm[toarele nota\ii: Rn unul din registrele R0R7 din setul curent (n=07); direct adresa pe 8 bi\i a unei loca\ii din memoria RAM intern[; poate fi adresa unei celule RAM (0127) sau adresa unui SFR (128255); @Ri adres[ indirect[ pe 8 bi\i din memoria RAM intern[ ]n intervalul 0255, con\inut[ ]n registrele R0 sau R1 (i=0,1); #data constant[ pe 8 bi\i inclus[ ]n codul instruc\iunii; 3.8
Capitolul 3. Arhitectura familiei 8051 #data16 addr16 addr11 rel constant[ pe 16 bi\i inclus[ ]n codul instruc\iunii; adres[ pe 16 bi\i din memoria program; adres[ pe 11 bi\i din memoria program; adres[ relativ[ la primul octet din instruc\iunea urm[toare din memoria program; este un octet cu semn (-128127), exprimat ]n cod complement fa\[ de 2; adresa direct[ a unui bit dintr-o celul[ RAM (0127) sau SFR (128255).
bit
3.2.2. Opera\ii aritmetice Lista opera\iilor aritmetice este prezentat[ ]n tabelul 3.2. Mnemonic ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data INC A INC Rn INC direct INC @Ri DEC A DEC Rn DEC direct DEC @Ri INC DPTR MUL AB DIV AB DA A Descriere Adun[ registrul la acumulator Adun[ octetul adresat direct la acumulator Adun[ octetul adresat indirect la acumulator Adun[ valoarea imediat[ la acumulator Adun[ registrul =i transportul la acumulator Adun[ octetul adresat indirect =i transportul la acumulator Adun[ valoarea imediat[ =i transportul la acumulator Scade registrul =i transportul din acumulator Scade valoarea imediat[ =i transportul din acumulator Scade octetul adresat indirect =i transportul din acumulator Scade valoarea imediat[ =i transportul din acumulator Incrementeaz[ acumulatorul Incrementeaz[ registrul Incrementeaz[ octetul adresat direct Incrementeaz[ octetul adresat indirect Decrementeaz[ acumulatorul Decrementeaz[ registrul Decrementeaz[ octetul adresat direct Decrementeaz[ octetul adresat indirect Incrementeaz[ registrul index de date }nmul\e=te A cu B }mparte A la B Ajustare zecimal[ a acumulatorului Tabelul 3.2. Opera\iile aritmetice. 3.2.3. Opera\ii logice }n tabelul 3.3 sunt prezentate opera\iile logice. Octe\i Cicluri 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 24 48 48 12
3.9
Capitolul 3. Arhitectura familiei 8051 Mnemonic ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data ORL direct,A XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A CLR A CPL A RL A RLC A RR A RRC A SWAP A Descriere +I ]ntre registru =i acumulator +I ]ntre octetul adresat direct =i acumulator +I ]ntre octetul adresat indirect =i acumulator +I ]ntre valoarea imediat[ =i acumulator +I ]ntre acumulator =i octetul adresat direct SAU ]ntre registru =i acumulator SAU ]ntre octetul adresat direct =i acumulator SAU ]ntre octetul adresat indirect =i acumulator SAU ]ntre valoarea imediat[ =i acumulator SAU ]ntre acumulator =i octetul adresat direct SAU exclusiv ]ntre registru =i acumulator SAU exclusiv]ntre octetul adresat direct =i acumulator SAU exclusiv]ntre octetul adresat indirect =i acumulator SAU exclusiv]ntre valoarea imediat[ =i acumulator SAU exclusiv]ntre acumulator =i octetul adresat direct +terge acumulatorul (A=00h) Complementeaz[ acumulatorul Rote=te circular acumulatorul spre st`nga Rote=te circular acumulatorul spre st`nga prin CY Rote=te circular acumulatorul spre dreapta Rote=te circular acumulatorul spre dreapta prin CY Inverseaz[ bi\ii 03 =i 47 din acumulator Tabelul 3.3. Opera\iile logice 3.2.4. Opera\ii de transfer }n tabelul 3.4 sunt trecute instruc\iunile de transfer de date. Mnemonic MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct 3.10 Descriere Mut[ registrul ]n acumulator Mut[ octetul adresat direct ]n acumulator Mut[ octetul adresat indirect ]n acumulator Mut[ valoarea imediat[ ]n acumulator Mut[ acumulatorul ]n registru Mut[ octetul adresat direct ]n registru Octe\i Cicluri 1 2 1 2 1 2 12 12 12 12 12 24 Octe\i Cicluri 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 12
Capitolul 3. Arhitectura familiei 8051 Mnemonic MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,@Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,#data MOV DPTR,#data16 MOVC A,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri Descriere Mut[ valoarea imediat[ ]n registru Mut[ acumulatorul ]n octetul adresat direct Mut[ registrul ]n octetul adresat direct Mut[ octetul adresat direct ]n octetul adresat direct Mut[ octetul adresat indirect ]n octetul adresat direct Mut[ valoarea imediat[ ]n octetul adresat direct Mut[ acumulatorul ]n octetul adresat indirect Mut[ octetul adresat direct ]n octetul adresat indirect Mut[ valoarea imediat[ ]n octetul adresat indirect }ncarc[ DPTR cu valoarea imediat[ pe 16 bi\i Mut[ octet memorie program ]n acumulator Mut[ octet memorie extern[ (adr. 8 bi\i) ]n acumulator Mut[ octet memorie extern[ (adr. 16 bi\i) ]n acumulator Mut[ acumulatorul ]n memoria extern[ (adr. 8 bi\i) Mut[ acumulatorul ]n memoria extern[ (adr. 16 bi\i) Salveaz[ ]n stiv[ octet adresat direct Extrage din stiv[ octet adresat direct Schimb[ registrul cu acumulatorul Schimb[ octetul adresat direct cu acumulatorul Schimb[ octetul adresat indirect cu acumulatorul Schimb[ bi\ii 03 din octetul adresat indirect =i acumulator Tabelul 3.4. Opera\ii de transfer de date. 3.2.5. Opera\ii la nivel de bit }n tabelul 3.5 sunt trecute opera\iile la nivel de bit. Mnemonic CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ORL C,bit +terge transportul +terge bit adresat direct Seteaz[ transportul Seteaz[ bit adresat direct Complementeaz[ transportul Complementeaz[ bit adresat direct +I ]ntre bit adresat direct =i transport SAU ]ntre bit adresat direct =i transport Descriere Octe\i Cicluri 1 2 1 2 1 2 2 2 2 12 12 12 12 12 12 24 24 24 3.11 Octe\i Cicluri 2 2 2 3 2 3 3 1 2 3 1 1 1 1 1 1 2 2 1 2 1 1 12 12 12 24 24 24 24 12 24 24 24 24 24 24 24 24 24 24 12 12 12 12
Capitolul 3. Arhitectura familiei 8051 Mnemonic Descriere Octe\i Cicluri 2 2 2 24 12 24 ORL C,/bit SAU ]ntre complementul bitului adresat direct =i transport MOV C,bit Mut[ bit adresat direct ]n transport MOV bit,C Mut[ transportul ]n bitul adresat direct Tabelul 3.5. Opera\ii la nivel de bit. 3.2.6. Instruc\iuni de salt }n tabelul 3.6 sunt prezentate instruc\iunile de salt. Mnemonic JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel DJNZ Rn,rel DJNZ direct,rel NOP Salt dac[ CY=1 Salt dac[ CY=0 Salt dac[ bitul adresat direct este 1 Salt dac[ bitul adresat direct este 0 Salt dac[ bitul adresat direct este 1 =i =terge bitul Apel subrutin[ cu adres[ absolut[ Apel subrutin[ cu adres[ lung[ Revenire din subrutin[ Revenire din ]ntrerupere Salt la adres[ absolut[ Salt la adres[ lung[ Salt la adres[ relativ[ fa\[ de PC Salt indirect la adres[ relativ[ fa\[ de DPTR Salt dac[ acumulatorul este 0 Salt dac[ acumulatorul este diferit de 0 Salt dac[ octetul adresat direct este diferit de acumulator Salt dac[ valoarea imediat[ este diferit[ de acumulator Salt dac[ valoarea imediat[ este diferit[ de registru Decrementeaz[ registru =i salt dac[ este diferit de 0 Decrementeaz[ octet adresat direct =i salt dac[ este diferit de 0 F[r[ efect Tabelul 3.6. Instruc\iuni de salt. Descriere Octe\i Cicluri 2 2 3 3 3 2 3 1 1 2 3 2 1 2 2 3 3 3 3 2 3 1 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 12
CJNE @Ri,#data,rel Salt dac[ valoarea este diferit[ de octet adresat indirect
3.12
Plac[ de aplica\ie
Microcontroller
Periferice externe
Intr[ri analogice
Figura 4.1. Schema de principiu a unei aplica\ii cu microcontroller. Sistemul dedicat este alc[tuit din dou[ componente: componenta hardware, numit[ ]n continuare placa de aplica\ie; ea cuprinde ]n principal, ]n afar[ de microcontroller =i de eventualele periferice externe, sursa de alimentare =i conectoarele pentru cuplarea la proces; componenta software, numit[ ]n continuare firmware; ea cuprinde programul dedicat al aplica\iei. }n faza de proiectare =i dezvoltare a unei aplica\ii se poate utiliza un sistem de dezvoltare a aplica\iilor cu microcontroller (figura 4.2). De=i nu este absolut necesar, sistemul de dezvoltare poate avea o influen\[ major[ asupra productivit[\ii =i calit[\ii aplica\iei finale.
PC
Proces
Figura 4.2. Schema de principiu a unui sistem de dezvoltare. PEX periferice externe. Placa de dezvoltare este un sistem cu microcontroller cu o structur[ special[ care permite ]nc[rcarea programului ]n memoria program (de tip RAM, EPROM, EEPROM sau FLASH) prin intermediul conexiunii cu PC-ul. }n paragrafele urm[toare vor fi prezentate c`teva solu\ii de realizare a unor pl[ci de dezvoltare. O alt[ solu\ie de dezvoltare a aplica\iilor o constituie utilizarea emulatoarelor ]n circuit (In Circuit Emulators ICE). Un emulator const[, ]n principal, dintr-un microcontroller cu o construc\ie special[, care posed[ conexiuni suplimentare ce permit accesul la componentele interne. Emulatorul se conecteaz[ la un sistem gazd[ (PC) care execut[ un program de depanare ce permite: ]nc[rcarea programului, analiza st[rii componentelor interne, oprirea execu\iei programului, execu\ia programului pas cu pas, etc. Printr-un conector special (pod), emulatorul se conecteaz[ pe placa de aplica\ie ]n locul microprocesorului pe care-l emuleaz[. Emulatoarele cele mai sofisticate (=i cele mai scumpe) permit execu\ia codului aplica\iei ]n timp real (cu aceea=i vitez[ ca =i microcontrollerul emulat). 4.1
Capitolul 4. Proiectarea sistemelor cu microcontroller Principalul dezavantaj al emulatoarelor este costul ridicat al acestora. }n func\ie de tipul microcontrollerului emulat =i de calitate, pre\ul unui emulator este de 100010000$. Un alt instrument utilizat ]n dezvoltarea aplica\iilor este simulatorul. Simulatorul imit[ func\ionarea nucleului unui microcontroller printr-un program ce se execut[ pe un calculator gazd[ (PC) =i care permite execu\ia pas cu pas a programului aplica\ie, examinarea =i modificarea registrelor sau loca\iilor de memorie, etc. Simulatoarele performante permit utilizarea unor fi=iere stimuli (stimulus files) ce permit modificarea st[rii pinilor de intrare-ie=ire ai microcontrollerului simulat. Simulatorul este un instrument foarte bun pentru verificarea =i depanarea unei aplica\ii, dar nu poate fi comparat cu emulatorul. Principalul dezavantaj este viteza mic[ de execu\ie; nici cele mai performante simulatoare nu pot executa codul aplica\iei la viteza microcontrollerului simulat.
Figura 4.3. Schema de principiu a unui sistem de dezvoltare. Microcontrollerul func\ioneaz[ ]n regim de microprocesor, sistemul con\in`nd dou[ blocuri de memorie: o memorie program de tip EPROM =i o memorie de tip RAM static (SRAM) care poate fi accesat[ at`t ca memorie program c`t =i ca memorie de date. Memoria program EPROM ocup[ spa\iul de adrese 0h7FFFh, iar memoria SRAM, spa\iul de adrese 8000hFFFFh. Semnalul de citire a memoriei SRAM este ob\inut prin combinarea (+I logic) semnalelor PSEN =i WR, generate de microcontroller. }n acest fel, memoria SRAM este accesat[ at`t ]n ciclurile de aducere (fetch) cu adrese mai mari de 8000h (caz ]n care este activ semnalul PSEN), c`t =i la execu\ia instruc\iunii MOVX A,@DPTR (c`nd este activat semnalul RD). Scrierea memoriei SRAM se face numai ca memorie de date, utiliz`nd instruc\iunea MOVX @DPTR,A, semnalul de scriere fiind WR. 4.2
Capitolul 4. Proiectarea sistemelor cu microcontroller Interfa\a cu memoria extern[ utilizeaz[ 18 pini de intrare-ie=ire, fapt ce reduce foarte mult num[rul de pini disponibili pentru aplica\ie. Acesta este un dezavantaj major al sistemului de dezvoltare, care poate fi par\ial dep[=it prin realizarea aplica\iei ]n sistem modular. O alt[ solu\ie const[ ]n utilizarea microcontrollerelor cu memorie program intern[ de tip FLASH =i cu facilit[\i de programare serial[ ]n circuit (ICSP) sau programare ]n sistem (ISP). }n acest caz este eliminat[ necesitatea unei pl[ci de dezvoltare, testarea =i depanarea aplica\iei put`nd fi f[cut[ pe placa de aplica\ie. Deoarece programarea se face serial, num[rul pinilor de intrare-ie=ire dedica\i program[rii memoriei FLASH este foarte redus (23 pini). Mai mult dec`t at`t, prin utilizarea unor circuite de separare sau de multiplexare, pinii de programare a memoriei pot fi folosi\i =i de aplica\ie. Principalul dezavantaj al acestei solu\ii este num[rul relativ redus de cicluri de =tergere-scriere ale memoriei FLASH (aproximativ 10000 de cicluri). Un exemplu ]n acest sens este microcontrollerul Atmel AT89S8252 care utilizeaz[ interfa\a SPI pentru programarea serial[ ]n circuit.
4.3
Bibliografie
A. C[r\i
1. Guia=u S., Theodorescu R., Matematica =i informa\ia, Editura +tiin\ific[, 1965 2. Sztojanov I. (coordonator), De la poarta TTL la microprocesor, Editura Tehnic[, 1987 3. Patrubany M., Totul despre ... microprocesorul Z80, Editura Tehnic[, 1989 4. Predko M., Handbook of microcontrollers, Editura McGraw-Hill, 1998
B. Documenta\ii de firm[
1. ***, Applications notes and development tools for 80C51 microcontrollers, Philips Semiconductors, 1995 2. ***, 80C51-based 8-bit microcontrollers, Philips Semiconductors, 1995
C. Foi de catalog
1. Atmel, Atmel 8051 Microcontrollers Hardware Manual,doc4316.pdf 2. Atmel, Flash Microcontroller. Architectural Overview, doc0497.pdf 3. Atmel, Flash Microcontroller. Memory Organization, doc0498.pdf 4. Atmel, Embedded Microcontroller Core. AT_8032, doc0875.pdf 5. Intel, An Introduction to the Intel MCS-51 Single-Chip Microcomputer Family, 01502a01.pdf 6. Intel, Using the Intel MCS-51 Boolean Processing Capabilities, 20383001.pdf 7. Intel, Oscillators for Microcontrollers, 23065901.pdf 8. Intel, How to Implement I2C Serial Communication Using Intel MCS-51 Microcontrollers, 27231901.pdf 9. Philips, 80C51 family architecture, 80C51_fam_arch_1.pdf 10. Philips, 80C51 family hardware description, 80C51_fam_hardware_1.pdf 11. Philips, 80C51 family programmers guide and instruction set, 3082.pdf 12. Philips, RAM loader program for 80C51 family applications, 8118.pdf 13. Philips, Determining baud rates for 8051 UARTs and other UART issues, 8125.pdf 14. Philips, 80C51 External Memory Interfacing, 8227.pdf 15. Philips, The I2C-bus and how to use it (including specifications), I2C_Bus_specification_1995.pdf 16. Philips, The I2C-bus specification, I2CSpec.pdf 17. Philips, Assigned I2C-bus addresses. General, IC12_97_Ass_I2C_Addr_1.pdf