You are on page 1of 42

Cuprins

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.

1.1. Date =i informa\ii


Data este reprezentarea unui lucru, fenomen, fapt sau idee ntr-o manier formalizat sau codificat[, susceptibil de a fi tratat, pstrat sau comunicat printr-un procedeu oarecare. Sistemul este o colecie de obiecte aflate n interaciune n scopul atingerii unui obiectiv. Teoria matematic[ a informa\iei precizeaz[ c[ informa\ia este o no\iune fundamental[, care nu se poate defini (a=a cum nu se poate defini, ]n matematic[, no\iunea de mul\ime) [A.1]. Dup[ o defini\ie unanim acceptat[, informa\ia este un mesaj, o transmitere de =tiri care ]nl[tur[ o nedeterminare.
Surs[ Informa\ie Traductor Semnale Canal de comunica\ie Semnale Traductor Informa\ie Receptor

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].

1.2. Calculatoare =i microprocesoare


}n Dic\ionarul explicativ al limbii rom`ne (DEX) g[sim c[ un calculator este o ma=in[ sau instala\ie cu ajutorul c[reia se efectueaz[ automat opera\ii matematice =i logice. O defini\ie mai riguroas[ a calculatorului (numit =i sisem de calcul sau sistem digital programabil) este un sistem electronic destinat prelucr[rii, memor[rii =i transmisiei datelor. Programul este o secven\[ finit[ de instruc\iuni (comenzi) prin care, dintr-un set de date numite date de intrare, se ob\ine un alt set de date numite date de ie=ire.
Calculator =i program

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).

PORT de intrare-ie=ire Interfa\[ Interfa\[ electric[

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.3. Microcontrollere =i sisteme dedicate


Sistemele dedicate apar at`t ]n structura sistemelor de calcul de uz general c`t =i ca sisteme de sine st[t[toare din componen\a diverselor aparate (televizoare, cuptoare cu microunde, ma=ini, telefoane mobile, etc.). }n prima situa\ie ele reflect[ tendin\a realiz[rii de periferice inteligente, care efectueaz[ prelucr[ri primare ale datelor, degrev`nd microprocesorul central de unele sarcini mari consumatoare de timp sau resurse de calcul (MODEM-ul, mouse-ul, controllerul de disc, controllerul video, controllerul USB, etc.). }n al doilea caz putem vorbi despre sisteme care incorporeaz[ un calculator (embedde systems sisteme cu logic[ de control incorporat[). De=i exist[ unele asem[n[ri ]ntre arhitectura unui microcalculator =i ce a unui sistem dedicat, sunt =i multe deosebiri care vor fi eviden\iate ]n cele ce urmeaz[. Una din caracteristicile de baz[ ale sistemelor dedicate este specializarea. Aceste sisteme realizeaz[ o singur[ func\ie sau un num[r redus de func\ii. O alt[ deosebire este dat[ de modul de realizare a unit[\ii centrale de prelucrare (CPU). Sistemele dedicate sunt realizate de regul[ cu microcontrollere (MCU Micro Controller Unit) =i se numesc sisteme cu microcontroller (embeddes systems). Microcontrollerul este un sistem de calcul ]ntr-un singur chip care integreaz[ procesorul, circuite suport, memoria =i dispozitive de intrare-ie=ire [A.4]. Microcontrollerele permit realizarea unor sisteme de comand[ =i control cu un num[r foarte mic de componente, lucru care conduce la pre\uri de cost mici =i fiabilitate ridicat[. Un alt aspect deosebit de important este acela c[ sistemele cu microcontroller permit, cu acea=i structur[ hardware, realizarea unei game largi de aplica\ii, fiecare cu software-ul corespunz[tor. Exist[ un num[r foarte mare tipuri de microcontrollere ce se deosebesc at`t prin arhitectur[ c`t =i prin modul de func\ionare. Acest fapt poate conduce la dificult[\i ]n alegerea microcontrollerului potrivit pentru realizarea unui sistem dedicat. Unul din obiectivele acestui curs este acela de a prezenta avantajele =i dezavantajele fiec[rei arhitecturi, facilit`nd ]n acest fel alegerea microcontrollerului cel mai potrivit pentru realizarea unei aplica\ii date. }n sf`r=it, o alt[ deosebire ]ntre microcalculatoare =i sistemele cu microcontroller este aceea c[ realizarea unui sistem dedicat presupune implementarea unor func\ii aflate tradi\ional ]n sarcina sistemului de operare sau a circuitelor suport.

1.4

Capitolul 2. Arhitectura microcontrollerelor


2.1. Procesorul
Elementul de baz[ din structura unui microcontroller (sau microprocesor) este procesorul. Procesorul este un sistem format dintr-o unitate aritmetic[ logic[ + registre (RALU Registers and Aritmethic Logic Unit) =i o unitate de comand[ (UC) [A.2]. RALU este un automat aritmetic ac\ionat de o succesiune de comenzi sosite din exterior care transform[ un =ir de date de intrare ]ntr-un alt =ir de date de ie=ire. Prelucr[rile suferite de date se numesc opera\ii elementare =i se efectueaz[ asupra unor cuvinte binare cu lungimea de n bi\i.

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.

2.2. Arhitectura Harvard


}n majoritatea implement[rilor, procesoarele au o singur[ magistral[ de date bidirec\ional[, ob\inut[ prin unificarea DI =i DO. Aceast[ arhitectur[ este cunoscut[ sub numele de arhitectur[ Harvard (cu magistrale separate pentru date =i instruc\iuni).

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

Exec I n Fetch I n+1 Decode In+1 Exec I n+1


Tn+1

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.

2.3. Arhitectura von Neumann


O alt[ modificare posibil[ a structurii din figura 2.2 este unificarea magistralelor de date =i instruc\iuni ]ntr-o singur[ magistral[ bidirec\ional[ numit[, impropriu, tot magistral[ de date. Arhitectura este cunoscut[ sub numele de arhitectur[ Princeton sau von Neumann.

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.

2.5. CISC versus RISC


}n general, procesoarele pot fi cu set complet de instruc\iuni (Complete Instruction Set Computers CISC), sau cu set redus de instruc\iuni (Reduced Instruction Set Computers RISC) =i exist[ percep\ia, nu ]ntotdeauna fondat[, c[ procesoarele RISC sunt mai rapide dec`t cele CISC. 2.3

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

Capitolul 2. Arhitectura microcontrollerelor

PC

PP apel SR PC k k+1

n-1 n n+1

CALL revenire RETURN

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).

2.7. Circuite suport


Sub denumirea de circuite suport sunt ]nt`lnite acele circuite care asigur[ func\ionarea corect[ a procesorului. }n acest paragraf sunt trecute ]n revist[ principalele circuite suport ]nt`lnite ]n arhitectura microcontrollerelor. 2.7.1. Oscilatorul Oscilatorul furnizeaz[ semnalul principal de sincronizare pentru procesor (ceasul sistem). Majoritatea microcontrollerelor (dac[ nu chiar toate), incorporeaz[ circuite care permit, cu un mum[r minim de componente, generarea semnalului de ceas sistem. Aceste circuite pot fi configurate s[ lucreze ]n trei moduri: oscilator cu cuar\ sau rezonator piezoceramic; oscilator RC ( intern sau extern); ceas extern. Oscilatorul cu cuar\ (figura 2.7.) ofer[ solu\ia cu cea mai mare stabilitare (50100 ppm parts per milion), principalele dezavantaje ale acestei solu\ii fiind costul ridicat =i fragilitatea cristalului de cuar\. Rezonatorul piezoceramic este mai robust =i mai ieftin, stabilitatea fiind ]ns[ redus[ cu aproximativ trei ordine de m[rime (0.51 %). 2.5

Capitolul 2. Arhitectura microcontrollerelor

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

Figura 2.9. Ciclu instruc\iune 8051.

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).

2.8. Dispozitive periferice incorporate


Dispozitivele periferice incorporate, numite =i dispozitive de intrare-ie=ire, pemit implementarea unor func\ii de baz[, care se ]nt`lnesc frecvent ]n aplica\iile sistemelor cu microcontroller: m[surarea precis[ a timpului sau ceasul ]n timp real (Real Time Clock RTC); num[rarea tranzi\iilor unui semnal extern (num[r[tor - counter); m[surarea precis[ a duratei unui impuls de intrare (timer); comunica\ia cu exteriorul (interfe\e seriale sau paralele); monitorizarea evenimentelor asincrone externe; conversia analog-numeric[ sau numeric analogic[. Fiecare periferic are asociat cel pu\in un registru cu func\ii speciale (SFR) prin care sunt manevrate datele de intrare-ie=ire. Alte SFR-uri asociate perifericului permit configurarea acestuia. 2.8.1. PORT-urile de intrare-ie=ire PORT-ul de intrare-ie=ire (I/O PORT) este cel mai simplu periferic, el contituind o interfa\[ ]ntre magistrala intern[ de date a microcontrollerului =i pinii de intrare-ie=ire.

Citire Latch

Func\ie alternativ[ Control ie=ire

Data Bus Scriere PORT

D Data Latch Q C Buffer intrare Citire PORT

Buffer ie=ire

Pin de intrare-ie=ire

Figura 2.11. Structura general[ a unui PORT 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

Rs Ie=ire Intrare Ie=ire Intrare


N

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

Capitolul 2. Arhitectura microcontrollerelor


Vcc Vcc

Pin ie=ire R LED Pin ie=ire RB a)


Figura 2.13. Comanda LED-urilor.

R LED b)

Pin ie=ire LED c)

}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

Rel Pin ie=ire RB a)


Figura 2.14. Comand[ releu =i motor.

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

Capitolul 2. Arhitectura microcontrollerelor

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[

Selec\ie front }ntrerupere

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

Pin ie=ire Logic[ ie=ire

Egalitate

Comparator

Control ie=ire }ntrerupere

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

Capitolul 2. Arhitectura microcontrollerelor

Perioad[ t

Durat[ (Duty Cycle)


Principala aplica\ie a generatorului PWM este comanda motoarelor.

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.

Generator rat[ Baud

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

Interfa\[ RS-232C Cablu serial Protocol RS-232C Interfa\[ RS-232C DCE

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

Capitolul 2. Arhitectura microcontrollerelor

U[V] 0
+25

"0" logic (Space)

Regiune de tranzi\ie 0
-3

+3

"1" logic (Mark)


-25

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)

Linie telefonic[ 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.

TD RD SG DTR DSR CD RTS CTS DTE

TD RD SG DTR DSR CD RTS CTS 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

SCL SDA Dispozitiv I2C

SCL SDA Dispozitiv I2C

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).

Date stabile SDA SCL

Datele se pot modifica

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

Capitolul 2. Arhitectura microcontrollerelor

SDA SCL S START


Figura 2.33. Condi\iile de START =i STOP. Transmisia datelor se face pe octe\i (8 bi\i), bitul cel mai semnificativ fiind transmis primul. Num[rul de octe\i transfera\i nu este limitat, fiecare transfer de octet fiind ]nso\it obligatoriu de o confirmare (acknowledgement ACK). Impulsul de ceas asociat secven\ei de confirmare este generat de master. Emi\[torul elibereaz[ linia de date (SDA=1) pe durata impulsului de ceas corespunz[tor secven\ei de confirmare iar receptorul, poate s[ genereze un 0 pe SDA pe durata acestui impuls pentru a confirma recep\ia octetului (ACK), sau poate elibera linia (SDA=1) pentru a nu confirma transmisia (Not ACK - NAK) (figura 2.34).

P STOP

SDA emi\[tor SDA receptor SCL master 8

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.

Adresare S Adres[ RW ACK Data 1

Transmisie date ACK Data n ACK P Stop

RW=0 scriere Adres[ SLAVE Start

Linia SDA este controlat[ de MASTER Linia SDA este controlat[ de SLAVE
Figura 3.36. Transfer de date de la master la slave.

Adresare S Adres[ RW ACK Data 1

Transmisie date ACK Data n ACK P Stop

RW=1 citire Adres[ SLAVE Start

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

Capitolul 2. Arhitectura microcontrollerelor

CS SCK SDO SDI

SS SCK MOSI MISO

CS SCK SDI SDO

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.

CS SCK SDI SDO HiZ


Figura 2.39. Formele de und[ pe magistrala SPI. Interfa\a SPI permite viteze de transfer de p`n[ la 20 Mbps, num[rul de bi\i dintr-un transfer fiind de obicei multiplu de 8. Num[rul liniilor de interfa\[ poate fi redus prin conectarea ]mpreun[ a liniilor SDI =i SDO (figura 2.40). Aceast[ configura\ie este posibil[ deoarece, atunci c`nd linia SDI este activ[ (transfer de la master c[tre slave), linia SDO este ]n starea de mare impedan\[. Circuitul master SPI poate utiliza o singur[ linie bidirec\ional[ pentru transferul de date.

CS SCK I/O Data Master SPI R

CS SCK SDI SDO Slave SPI

Figura 2.40. Interfa\[ SPI cu 3 linii.

2.20

Capitolul 3. Arhitectura familiei 8051


}n 1976 firma Intel introduce familia MCS-48 alc[tuit[ din microcontrollerele 8048, 8748 =i 8035. Acest moment marcheaz[ apari\ia primelor microcalculatoare pe un singur chip, care cuprind CPU pe 8 bi\i, memorie program de tip ROM sau EPROM de 1024 octe\i, 64 octe\i memorie de date, PORT-uri de intrare-ie=ire si un timer pe 8 bi\i. Familia a fost extins[ ]n c`teva direc\ii: 8049 =i 8039 cu o capacitate dubl[ a memoriei =i mai rapide =i 8022 care include un convertor analog-numeric pe 8 bi\i cu dou[ canale. }n 1980 este lansat[ familia MCS-51 care cuprinde microcontrollere 8051, 8751 =i 8031. 8051 a devenit unul dintre cele mai cunoscute microcontrollere pe 8 bi\i, fiind produs de mai multe firme ca: Philips, Atmel, Dallas Semiconductor, Oki etc. Facilit[\ile standard oferite de nucleul 8051 sunt: alimentare pe 5 V; oscilator cu frecven\a de maximum 24 MHz; ciclu-instruc\iune de 12 cicluri de ceas; memorie program de 4 KB; memorie de date RAM de 128 octe\i; interfa\[ pentru 128 KB memorie extern[ (64 KB memorie program =i 64 KB memorie date); 32 linii de intrare-ie=ire; dou[ timere de 16 bi\i; 6 surse de ]ntrerupere, 4 interne =i 2 externe; sistem de ierarhizare a ]ntreruperilor pe dou[ nivele; PORT serial programabil (UART); spa\ii de adresare direct[ la nivel de octet =i bit; arimetic[ binar[ =i BCD, cu detec\ia dep[=irii =i calculul parit[\ii; ]nmul\ire =i ]mp[r\ire ]n 4 cicluri instruc\iune; procesor boolean. Compar`nd acest set de facilit[\i cu cele oferite de alte familii de microcontrollere (PIC sau AVR), 8051 pare a fi ]n dezavantaj. Situa\ia se schimb[ atunci c`nd se iau ]n considera\ie diversele variante de implementare a nucleului 8051. Variantele de microcontrollere cu nucleu 8051, oferite de diver=i produc[tori, se disting prin ]mbun[t[\irile aduse proiectului ini\ial ]n privin\a vitezei de execu\ie a programelor =i a num[rului de periferice incorporate. Intel a f[cut pu\ine modific[ri ]n proiectul ini\ial 8051, cele mai notabile fiind microcontrollerele din familiile MCS-151 =i MCS-251. Firma Atmel produce dou[ versiuni interesante: AT89C1051 =i AT89S8252. Microcontrollerul AT89C1051 este o versiune scurtat[ a nucleului 8051, ]ntr-o capsul[ de 20 de pini =i cu 1KB memorie program de tip FLASH (2KB pentru AT89C2051 =i 4KB pentru AT89C4051). Microcontrollerul AT89S8252 este dotat cu o memorie program de tip FLASH de 8KB. Principalele facilit[\i suplimentare oferite, ]n compara\ie cu nucleul standard, sunt: memorie de date RAM de 256 octe\i; memorie de date EEPROM cu capacitatea de 2KB; interfa\[ serial[ SPI; ]nc[ un timer pe 16 bi\i; data pointer (DPTR) dual. 3.1

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

Control magistral[ ALE EA PSEN

PORT-uri intrare-ie=ire

UART TxD RxD

P0 P2 P1 P3 Adrese/date

Figura 3.1. Schema bloc a nucleului 8051.

3.1. Organizarea memoriei


Nucleul 8051 poate accesa o memorie program de maximum 64 KB (figura 3.2). Memoria program este de tip numai citire (read only). La variantele cu memorie program incorporat[, dimensiunea acesteia variaz[ ]ntre 2KB =i 64 KB =i poate fi de tip ROM, EPROM sau FLASH. Se produc ]ns[ =i microcontrollere f[r[ memorie program inclus[ (cu memorie program extern[). }n acest caz, CPU genereaz[ semnalul PSEN (Program Store ENable) pentru citirea memoriei program extern[. 3.2

Capitolul 3. Arhitectura familiei 8051

Memoria program (Read Only)


FFFFh

Memoria de date (RAM)


FFFFh

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

Figura 3.3. Memoria program.


Primii 4KB ai memoriei program pot fi pe chip sau ]n afara chip-ului. Selec\ia se face cu ajutorul semnalului EA (External Access).

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[.

8051 P1 P3 ALE P2 PSEN P0 Latch

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

Capitolul 3. Arhitectura familiei 8051


FFh

Blocul superior (adresare indirect[)


80h 7Fh

SFR (adresare direct[)

Blocul inferior (adresare direct[ sau indirect[)


00h

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

Spa\iu de adresare la nivel de bit (128 bi\i) 4 seturi de 8 registre R0-R7

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

Capitolul 3. Arhitectura familiei 8051

SFR adresabile la nivel de bit


F8 F0 B E8 E0 ACC D8 D0 PSW C8 C0 B8 IP P3 B0 IE A8 A0 P2 98 SCON SBUF 90 P1 88 TCON TMOD 80 P0 SP FF F7 EF E7 DF D7 CF C7 BF B7 AF A7 9F 97 8F 87

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

Figura 3.9. Conectarea memoriei de date extern[.

3.2. Setul de instruc\iuni


Microcontrollerul 8051 are un set de instruc\iuni optimizat pentru aplica\iile pe 8 bi\i. El con\ine mai multe moduri de adresare care permit un acces rapid al memoriei interne RAM, facilit`nd opera\iile pe 8 bi\i ]n cazul structurilor mici de date. 3.2.1. Moduri de adresare 8051 utilizeaz[ mai multe moduri de adresare. Adresarea direct[ }n modul direct de adresare, operandul este specificat printr-o adres[ de 8 bi\i din codul instruc\iunii. Doar memoria intern[ de date (blocul inferior) =i SFR-urile pot fi adresate direct. Adresarea indirect[ }n modul indirect de adresare, adresa operandului este con\inut[ ]ntr-un registru. At`t memoria de date intern[ c`t =i cea extern[ pot fi adresate indirect. Pentru adresare indirect[ pe 8 bi\i se utilizeaz[ registrele R0 =i R1 din setul curent, iar pentru adresarea pe 16 bi\i, se utilizeaz[ numai registrul indicator pentru date DPTR.

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

ADDC A,direct Adun[ valoarea imediat[ la acumulator

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

ANL direct,#data +I ]ntre valoare imediat[ =i octetul adresat direct

ORL direct,#data SAU ]ntre valoare imediat[ =i octetul adresat direct

XRL direct,#data SAU exclusiv]ntre valoare imediat[ =i octetul adresat direct

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

MOVC A,@A+DPTR Mut[ octet memorie program ]n acumulator

ANL C,/bit +I ]ntre complementul bitului adresat direct =i transport

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

Capitolul 4. Proiectarea sistemelor cu microcontroller


Sistemele cu microcontroller permit realizarea unor aplica\ii de control al proceselor (sisteme dedicate) cu complexitate mic[ sau medie. }n func\ie de complexitatea aplica\iei, perifericele incorporate ]n microcontroller se pot dovedi insuficiente. }n acest caz, placa de aplica\ie cuprinde un num[r de periferice suplimentare sau periferice externe (figura 4.1).

Plac[ de aplica\ie
Microcontroller

Ie=iri digitale Intr[ri digitale Ie=iri analogice Proces

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

Plac[ de dezvoltare PEX

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.

4.1. Sisteme de dezvoltare a aplica\iilor


Un sistem de dezvoltare a aplica\iilor cuprinde o plac[ de dezvoltare =i un mediu integrat de dezvoltare a programelor pentru un anume tip de microcontroller. El este utilizat pentru depanarea =i testarea aplica\iilor. Dup[ finalizarea programului de aplica\ie (firmware), sistemul este transferat pe placa de aplica\ie. }n anumite cazuri particulare, placa de aplica\ie poate fi utilizat[ ca sistem de dezvoltare. 4.1.1. Placa de dezvoltare }n figura 4.3 este prezentat[ schema de principiu a unui sistem de dezvoltare a aplica\iilor cu microcontroller 8051.
8 PC 8051 Interfa\[ RS-232C P3.1/TxD P3.0/RxD P0 ALE P2 8 8 CS Decodor 8 Conector dezvoltare 4 P1 P3.2-3.5 PSEN P3.7/RD P3.6/WR OE CS OE WE 8 15 15 D0-D7 A0-A14 Date Adrese SRAM (32K) D0-D7 A0-A14

EPROM (32K) Latch

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.

Conector ICSP AT89S8252 P1.5-1.7 P1.0-1.4 P0 P2 P3


Figura 4.4. Sistem ICSP cu AT89S8252. 4.1.2. Mediul integrat de dezvoltare a programelor

Circuit de separare Aplica\ie

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