Sunteți pe pagina 1din 5

Laborator Microcontrollere i Microprocesoare

Definirea conceptelor de Microcontroller i Microprocesor


Prin microcontroller ( C ) se nelege un circuit integrat ce combin pe aceeai pastil de siliciu procesorul capabil s execute programe, memoria pentru pstrarea programelor (memorie program) i datelor (memorie de date), precum i o serie de interfee cu funciuni de intrare/ieire (I/O) ce permit interconectarea cu mediul exterior (senzori, traductoare, dispozitive de acionare, comunicaii, etc.), acestea fiind cunoscute ca periferice ale C -lui. Principala diferen dintre un microcontroller (C) si un microprocesor (P) o constituie faptul c un C integreaz n acelai circuit integrat memoria de program, memoria de date i alte interfee de intrare/ieire sau periferice, n timp ce P nu dispune de aceast periferie extrem de bogat i variat avnd ns o unitate de procesare i de accesare a memoriei mult mai complexe i mult mai performante ca putere, respectiv vitez de calcul. Pentru a putea lucra cu un microcontroller sau microprocesor este necesar programarea acestora, adic descrierea unui algoritm folosind instruciuni specifice, totalitatea lor formnd setul de instruciuni al C/P. Instruciunile proprii care sunt nelese doar de un anumit tip de C/P definesc limbajul main sau limbajul de asamblare al microcontrollerului respectiv. Arhitectura (structura) unui set de instruciuni al unui C/P codific pe unul sau mai muli octei (locaii de memorie) denumirea fiecrei instruciuni (mnemonica), modurile de adresare a le memoriei i periferiei, precum i setul intern de regitrii ai C/P -lui mpreun cu spaiul de memorie intern sau extern vizibil programatorului. Cele mai ntalnite structuri coninute n circuitul integrat al unui C sunt urmatoarele: Unitatea centrala de procesare (P core) cu o arhitectur care poate fi pe 8, 16, 32 sau 64 de bii; Memorie de date volatil (RAM) sau nevolatil pentru date sau program (Flash sau EEPROM); Porturi digitale de intrare-ieire; Interfee seriale (RS232, SPI, I2C, CAN, RS485); Timere, generatoare de PWM sau watchdog; Convertoare analog-digitale; Suport pentru programare si depanare-testare (debugging).

Reprezentarea numerelor n interiorul C/P


n interiorul unui microprocesor numerele sunt utilizate numai n form binar. Orice informaie (date, mrimi, constante, variabile, adrese, etc.) citit, sau scis din/n exterior nu poate fi prelucrat de C/P dect dup aducerea ei n format binar

(doar 0 i 1) folosind pentru implementarea fizic dou tensiuni . Spre exemplu cifra 0 este reprezentat prin nivelul cel mai redus de tensiune electric acceptat de C/P adic 0V, n timp ce valoarea 1 este asociat cu nivelul cel mai mare de tensiune, de regul egal cu cel al tensiunii de alimentare. Comparativ cu lucrul n sistem zecimal, reprezentarea n baza doi (folosind numai 0 i 1) ridic anumite probleme privind aritmetica binar , spre exemplu reprezentarea numerelor negative, n binar neexistnd un echivalent pentru semnul . Pentru a rezolva acest neajuns, atunci cnd C/P opereaz cu numere negative, bitul cu ponderea cea mai semnificativ (MSB) a reprezentrii sale binare devine bit de semn indicnd o valoare pozitiv pentru 0 i una negativ pentru valoarea 1. Spre exemplu, dac reprezentarea intern se face pe 8 bii (la nivel de octet) numrul 0000 00012 reprezint valoarea 1, iar 1000 00002 reprezint -1. n cazul reprezentrii numerelor fr semn n interiorul P , valorile sunt doar pozitive de la 0 255 dac ne referim la reprezentarea pe un octet. n cazul numerelor cu semn valorile numerice reprezentate pe un octet sunt n domeniul -127 +127. Un prim neajuns al reprezentrii numerelor cu semn ar fi valoarea redus la jumtate. Mai exist i un alt dezavantaj explicitat prin exemplul urmtor. Dac se adun dou numere pozitive +127 i +2 rezult:

Prin urmare 127 2 1 i nu 129. Pentru a evita aceste accidente microprocesoarele folosesc numerele complementare. Ele rezolv cele dou neajunsuri semnalate anterior, adic numerele pozitive i negative reprezentate pe un octet sunt n domeniul 0 255 10 00000000111111112 , iar adunarea i scderea vor da rezultate corecte utiliznd acelasi circuit sumator. Utilizarea reprezentrii numerelor n complement permite transformarea unei scderi n adunri astfel nct ea poate fi realizat de acelai circuit sumator folosit de adunare. Dac lum spre exemplu adunarea n zecimal 87+x = 49 gsirea numrului x se face prin rezolvarea ecuaiei rezultnd 87 + (-38) = 49. n binar, (-38) care realizeaz adunarea de mai sus se numete complementul fa de 2 al numrului 38.

Procedura de determinare a complementului fat de 2 al unui numr binar const n inversarea fiecrei cifre binare (0 1, iar 1 0), iar la numrul astfel rezultat se adun 1. Numrul rezultat prin inversarea biilor se numete complementul numrului iniial, sau complement fa de 1. Reprezentnd numrul 38 n binar rezult 38 10 00100110 2 . Prin complementare rezult numrul 11011001. Complementul fa de 2 rezult adunnd 1 la complement.

Dac adunam 87 la complementul fa de doi al lui 38 rezult:

Rspunsul corect este 49 dar numrnd biii se observ c sunt 9 existnd un transport n urma adunrii din rangul cel mai semnificativ 1 2+12= 102, registrul de ieire al blocului aritmetic care realizeaz operaia de adunare memornd numai 8 bii, adic numrul 49 reprezentnd rezultatul corect. Bitul suplimentar este ignorat putnd fi interpretat ca 1 care se adun suplimentar la complement. Mai exist o regul de determinare a complementului fa de 2 al unui numr, mai rapid dar utilizabil cu precdere n calculele pe hrtie i nu de ctre microprocesor. Metoda stipuleaz c la numrul reprezentat n binar i la care se adaug zerouri la partea cea mai semnificativ (n stnga) pn rezult un numr pe lungimea registrilor microprocesorului (8, 16 sau 32 bii) se inverseaz toi biii ncepnd din stnga i continund spre dreapta pn la ultimul 1 ntlnit care nu se modific nici el, nici zerourile care urmeaz. Revenind la exemplul precedent 38.0 se scrie 1001102, iar prin umplere cu zero n stnga pna la 8 bii rezult 00100110. Complementnd pn la ultimul 1 i lsnd restul de bii inclusiv acel 1 neschimbat rezult 11011010, adic exact valoarea complementului fa de doi pentru 38. Acest mecanism este valabil i pentru numere ce depesc reprezentarea pe 8 bii, algoritmul extinzndu -se la 16 sau 32 bii. Se consider lungimea de reprezentare a unui numr n interiorul microprocesorului egal cu lungimea registrilor interni care memoreaz i stocheaz numrul respectiv,

respectiv a magistralelor interne pe care se efectueaz transferul datelor. Se vorbete astfe de arhitectur pe 8, pe 16 sau pe 32 bii.

Reprezentarea numerelor n format hexazecimal


Bitul reprezint o locaie dintr-o memorie n care se poate afla o cifr 0 sau o cifr 1. Pentru a simplifica introducerea (scrierea) i extragerea (citirea) datelor din memorie (locul unde acestea sunt pstrate), biii de memorie sunt organizai (grupai) n locaii de memorie, fiecare avnd o adres unic n cadrul memoriei. Totalitatea locaiilor de memorie ce pot fi accesate n citire/scriere de un C/P definesc saiul maxim de adrese. Cea mai comun form de organizare a locaiilor de memorie n cazul microcontrollerelor, inclusiv al familiei 8051 studiat n acest curs/laborator este cea orientat pe octet, fiecare octet de memorie grupnd 8 bii succesivi la cte o adres de memorie unic. Mai jos se d un exemplu de astfel de organizare a memoriei. Adres memorie Coninut Memorie Bit 7 MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 LSB

........
0x04 0x03 0x02 0x01 0x00

.
1 0 1 1 0

.
0 0 1 0

.
0 1 0 1

.
1 1 0 0 1

.
1 1 0 1 0

.
1 1 0 0

.
1 0 0 1

.
0 0 1 0 1

1 0 O cifr hexa (digit)

1 0 O cifr hexa (digit)

ntr-un octet primul bit notat Bit 0 are ponderea cea mai mic fiind denumit bitul cel mai puin semnificativ (LSB- Least Significant Bit), iar ultimul bit, Bit 7 are ponderea cea mai mare fiind denumit cel mai semnificativ - MSB (Most Significant Bit). Programatorilor sau toi cei care lucreaz cu programarea C/P-lor le este dificil s foloseasc sistemul binar de numeraie i reprezentarea de mai sus. Dac s-ar ncerca codificarea ntregului octet ar fi necesare 256 de simboluri diferite, cu valori ntre 0 255 , respectiv valorile n zecimal minime i maxime ce pot fi reprezentate pe un octet. Aceasta ar nsemna folosirea unei baze de numeraie 256 ceea ce este imposibil i cu mult mai greu de utilizat chiar dect cea binar. Din acest motiv s-a convenit spargerea octetului n dou jumti, fiecare numit digit . Un digit poate avea valori n zecimal de la 0-la 15 putnd fi codificat cu 16 simboluri, de exemplu cifrele de la 0-9 i literele de la A-F conform tabelului din Fig.1. n acest mod se definete o cifr (digit) n hexazecimal, folosind baza de numeraie 16, iar octetul prin 2 cifre hexazecimale succesive. n acest mod coninutul exemplului anterior de memorie poate fi reprezentat mult mai simplu i sugestiv ca mai jos.

Adres memorie

Coninut Memorie

........
0x04 0x03 0x02 0x01 0x00

....
9 3 C A 5

...
E C 1 A 5

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