Sunteți pe pagina 1din 12

L0: Lucrul cu mediile de dezvoltare

1. Scopul lucrarii
Scopul acestei lucrari introductive este de a prezenta cele doua microcontrolere
(microcontrolerul Intel 8051 si microcontrolerul Texas Instruments MSP430G2553) cu care
se va lucra in cadrul lucrarilor de laborator ulterioare, precum si modul de lucru cu mediile de
dezvoltare (Keil uVision si IAR Embedded Workben for MSP430) si simulare (Proteus ISIS
Professional) ce vor fi folosite.

2. Breviar teoretic
Microcontrolerele sunt microprocesoare cu o structur simpl i cu un limbaj de asamblare
cu un numr redus de instruciuni, fiind foarte utilizate n aplicaiile n care este nevoie de
executarea unor calcule i a unor algoritmi nu foarte complicai, oferind un cost de implementare
redus datorit preului care n cazul microcontrolerelor este mai mic dect cel al altor procesoare
digitale mai complexe, un exemplu fiind DSP-urile, mult mai complexe dar i mult mai scumpe.
Diversitatea i multitudinea de periferice incluse il fac apt pentru controlul diverselor aplicaii.
Practic, cu un astfel de circuit este posibil realizarea unui ntreg microsistem de calcul.

De asemenea, datorit structurii simple i a limbajului de asamblare cu un numr redus de


instruciuni, microcontrolerele sunt foarte simplu de utilizat i de programat n diverse aplicaii.
Printre multele domenii unde utilizarea lor este practic un standard industrial se pot
mentiona:
-

industria de automobile (controlul aprinderii motorului, climatizare, diagnoza, sisteme

de alarma, etc.);
-

in asa zisa electronica de consum (sisteme audio, televizoare, camere video si

videocasetofoane, telefonie mobila, GPS-uri, jocuri electronice, etc.);


-

in aparatura electrocasnica (masini de spalat, frigidere, cuptoare cu microunde,

aspiratoare);
-

in controlul mediului si climatizare (sere, locuinte, hale industriale);

in industria aerospatiala;

in mijloacele moderne de masurare - instrumentatie (aparate de masura, senzori si

traductoare inteligente);
-

la realizarea de periferice pentru calculatoare;

in medicina.

2.1. Microcontrolerul 8051


Un microcontroler este un circuit integrat care contine in aceeasi capsula, pe langa
processor, memorie, circuite de intrare-iesire specializate de tip porturi paralele, canale timer, cai
seriale si circuite care gestioneaza logica de intreruperi.
Intel 8051 este considerat ca fiind un standard in industria microcontrolerelor
performante. Firma INTEL a introdus familia de microcontroloare 8051 din anul 1980. Aceasta
familie este continuatoarea altor familii de microcontroloare (8035, 8048), realizat de aceiai
firm.El este implementat cu o structur pe 8 biti, fiind produs in mai multe variante, in functie

de cantitatea si tipul de memorie inclusa precum si in functie de capacitatile structurale. De


asemenea, majoritatea firmelor producatoare de microcontrolere produc modele compatibile cu
standardul 8051, cu diverse imbunatatiri.
In tabelul 1.1 sunt prezentate cateva microcontrolere din familia 8051 impreuna cu
caracteristicile lor.

Tip

Fara

Cu

ROM

RAM

Timere pe Tipul

chip

ROM

EPROM

intern

intern

16 biti

circuitului

8051

8031

---

4k

128 bytes

NMOS

80C51

80C51

87C51

4k

128 bytes

HMOS

8052

8032

8752

8k

256 bytes

NMOS

80C52

80C52

87C52

8k

256 bytes

CMOS

Microcontrolerul standard 8051 este realizat ntr-o capsul cu 40 pini (DIL) sau 44 pini
(PLCC). Pentru funcionare are nevoie de o singur surs de tensiune (+5V). Iniial a fost realizat
n tehnologie NMOS (consum 125 150 mA), iar ulterior a aprut i variante CMOS (consum
15 30 mA). Denumirea versiunii CMOS este 80C51.
Caracteristicile principale ale microcontrolerului 8051 sunt urmatoarele:
- CPU pe 8 bii

- 128 octei de RAM intern


- 4 koctei de ROM intern
- Posibilitate de adresare a 64 koctei de memorie program
- Posibilitate de adresare a 64 koctei de memorie de date
- 32 de linii I/O bidirecionale adresabile individual
- 2 timere/countere pe 16 bii
- 5 surse de ntrerupere cu dou nivele de prioriti
- Generator de tact intern
- Posibilitate de lucru full-duplex prin interfa serial
- Posibilitate de lucru pe bii

In general, procesoarele prezinta doua tipuri de arhitecturi (PRINCETOWN si


HARVARD).
Intr-o arhitectura PRINCETOWN, instructiunile se plaseaza in acelasi spatiu de memorie
cu datele. Intr-o arhitectura HARVARD, spatiul de memorie ce contine instructiuni difera de
spatiul de memorie ce contine date. De obicei, instructiunile se pastreaza in memoria ROM, iar
datele in RAM.
Structura interna de baza a microcontrolerului 8051 este prezentata in figura de mai jos:

CPU (Central Processing Unit) este procesorul matematic al sistemului, el fiind inima
intregii functionari a microprocesorului.
OSC (Internal OSCillator) este generatorul de tact intern cu care este dotat
microcontrollerul. Acesta genereaza, cu ajutorul impulsurilor provenite de la un cristal de cuart
legat in exterior, semnalul de tact care asigura functionarea intregului sistem intern. De
asemenea, microcontrolerul poate functiona si dupa un semnal de ceas extern. Frecventa
cristalului de cuart ce trebuie conectat difera in functie de performanta microcontrolerului si este
specificata de producator, dar o valoare tipica pentru aceasta este de 12 MHz. Valorile capacitatii
celor doi condesatori este de asemenea data de catre producator in documentatia
microcontrolerului.
Porturile paralele formeaza una din caile de comunicare cu exteriorul. Microcontrolerul
este dotat cu 4 porturi de intrare/iesire, fiecare dintre acestea fiind de 8 biti. In total, avem 32 de
linii de intrare/iesire. Porturile sunt notate cu P0, P1, P2 si P3. Liniile acestora sunt notate P0.1P0.7, etc Pe langa functiile de intrare/iesire porturile mai au si unele intrebuintari alternative.
Astfel, iesirile din P0 si P2 precum si intrarile din P0 sunt utilizate la accesarea memoriei
externe.
Portul serial este de tip UART si asigura prin liniile RXD si TXD comunicarea de tip
serial. Funcionarea portului serial poate sa aiba loc n 4 moduri distincte, selectabile prin
program, la care variaza viteza de transmisie, numita rata de baud. Astfel, avem:
-

modul 0 rata de baud fixa 1/12 din frecventa oscilatorului

modul 1 si 3 rata de baud variabila generata de Timerul 1

modul 2 rata de baud fixa 1/32 sau 1/64 din frecventa oscilatorului.

TIMER 0 si TIMER1. Numaratoarele pot fi utilizate in doua moduri. Primul mod, numit
timer, face ca decrementarea valorii sa fie executata in functie de ceasul intern al procesorului.
Astfel, cunoscand durata unei perioade de ceas, se poate masura o perioada de timp.
Al doilea mod, numit counter, face ca decrementarea sa aiba loc la schimbarea starii de pe un pin
extern al microcontrolerului.
Blocul de intreruperi. Microcontrolerul 8051 este dotat cu 5 surse principale de
intrerupere. Aceste intreruperi, odata activate, opresc executia firului principal al programului si

determina saltul la o adresa specifica din memorie unde se poate scrie o rutina speciala care sa se
execute in cazul declansarii intreruperii.
Configuratia pinilor circuitului 8051 este urmatoarea:

Circuitul standard realizat in capsula DIL prezinta 40 pini. Dintre acestia, doi pini sunt
rezervati tensiunii de alimentare (+5V si masa).
Controlerul contine 4 porturi paralele de cate 8 biti fiecare, ce pot fi folosite pentru
generarea si, respectiv, receptarea semnalelor digitale (notate P0, P1, P2, P3). Functie de modul
de lucru in care lucreaza, aceste porturi se pot configura si pot avea mai multe situatii de lucru.
Astfel, daca se lucreaz cu memorie ROM externa, 2 dintre aceste porturi se constituie in linii ce
formeaza magistralele de adrese si de date. Portul P0 genereaza, multiplexat in timp, partea cea
mai putin semnificativa a informatiei de adresa (A0-A7) si, respectiv, gestioneaza magistrala de
date (D0-D7). Pentru formarea magistralei de adrese va fi nevoie sa se plaseze in exteriorul
MCU-ului un circuit de tip latch (de exemplu 74HCT573), cu scopul de a memora informatia de
adresa. Actionarea acestui circuit se face utilizand semnalul ALE. Portul P2, in aceleasi situatii,

genereaza octetul cel mai semnificativ al informatiei de adrese (A8-A15). Cele 16 linii de adrese
astfel formate permit adresarea a 64 Ko memorie. De fapt, se pot adresa 64Ko memorie de
programe (ce contine instructiuni) si, respectiv, 64Ko memorie de date, deci in total 128 Ko.
Notatiile liniilor porturilor sunt Pi.j, cu i = 0, .., 3, iar j = 0, ..., 7.
Atunci cand formeaza magistrala de adrese si date, liniile portului P0 mai sunt notate
AD0-AD7, iar liniile lui P2 au denumirea A8-A15. Cand nu se lucreaza cu magistralele externe,
cele 2 porturi P0 si P2 se pot folosi ca porturi de tip paralel. In aceasta situatie se atrage atentia
asupra faptului ca liniile portului P0 sunt de tipul open drain, fiind necesara plasarea in exterior
de rezistente catre sursa de alimentare, in vederea asigurarii polarizarii.
P1 este in orice situatie de lucru a microcontrolerului, port de tip paralel, bitii acestuia
fiind configurabili atat ca iesiri, cat si ca intrari digitale. Liniile portului sunt notate P1.0, ...,
P1.7. Ultimul port (P3) are un caracter multifunctional, functie de modul de lucru al
microcontrolerului. Pe de o parte, prin liniile acestui port, circuitele I/O existente in MCU (cele 2
canale timer, canalul de comunicatie serial, logica pentru gestionarea intreruperilor) sunt
accesibile utilizatorului. Daca nu se lucreaza cu circuitele I/O locale, acest port poate sa lucreze
ca un port de tip paralel, liniile asigurand generarea si preluarea de semnale digitale.
Corespondenta liniilor portului 3 cu liniile circuitelor I/O interne este urmatoarea:
- P30 - RXD -intrare pentru recepia serial a datelor la unitatea serial;
- P31 -TXD - ieire pentru transmisia serial a datelor de la unitatea serial;
- P32 - INT0 - intrare pe care se poate aplica o cerere de ntrerupere extern;
- P33 - INT1 - intrare pe care se poate aplica o cerere de ntrerupere extern;
- P34 - T0 - intrare pe care se pot aplica impulsuri externe cu numrare de ctre timerul 0;
- P35 - T1 - intrare pe care se pot aplica impulsuri externe cu numrare de ctre timerul 1;
- P36 - WR - semnal pentru scriere la lucrul cu memoria de date extern;
- P37 - RD - semnal pentru citire la lucrul cu memoria de date extern;

EA - external address. Cand se lucreaza cu magistrale externe, acest pin se conecteaza la ,,0logic. Cand se foloseste memoria ROM interna, pinul se leaga la ,,1- logic. In aceasta situatie, la
adresarea ROM-ul intern de 4K, controlerul genereaza adrese din gama 0000h-0FFFh si nu se
emit semnale pe magistralele externe (P0 si P2 putand fi folosite ca porturi paralele). Exista
posibilitatea folosirii in completare, a unei memorii ROM externe, dar care va fi selectata si
adresata incepand cu adresa 1000h (P0 si P2 incetand sa mai poata fi folosite ca porturi paralele).

ALE - address latch enable. Semnalul este folosit pentru demultiplexarea externa a informatiilor
emise pe portul P0. Astfel, semnalul este folosit in vederea memorarii in latch-ul extern
74HCT573, a partii mai putin semnificative a adresei A0-A7 emisa pe liniile acestuia. Semnalul
este activ ,,1logic.
PSEL - program select. Este semnalul prin care se face activarea memoriei de programe atunci
cand controlerul realizeaza extragerea codurilor instructiunilor. Daca se lucreaz cu ROM-ul
intern, acest semnal nu se genereaza. Pinul este folosit si in situatiile de programare ale ROMului
intern. In acest caz, pinul este intrare avand notati PROG (Programming).
RESET - Semnal pentru initializarea controlerului, activ 0- logic.
XTAL1; XTAL2 - Pini pe care se conecteaza in exterior cristalul de cuart in ritmul caruia
lucreaza oscilatorul local. Se poate lucra si cu oscilator extern, semnalul respectiv aplicandu-se
pe XTAL1. In acest caz, XTAL2 amplifica semnalul in vederea folosirii de catre alte circuite din
respectivul microsistem care au nevoie de un astfel de semnal. Varianta standard de C 8051
lucreaza cu un cristale de cuart de 12 MHz. Au aparut variante la 16 Mhz, ajungandu-se chiar de
30 Mhz.

2.2. Microcontrolerul MSP430G2553

2.3. Generalitati despre limbajul de programare C


Se numete limbaj de programare un limbaj prin care putem comunica unui calculator
metoda de rezolvare a unei probleme.
Limbajul de programare C ca i orice alt limbaj de programare i are alfabetul su i
specificul de utilizare a simbolurilor. Alfabetul se numete un set de simboluri permis pentru
utilizare i recunoscut de compilator, cu ajutorul cruia pot fi formate mrimi, expresii i
operatori ai acestui limbaj de programare.
Borland C este un mediu de programare dezvoltat pentru MS-DOS i Microsoft
Windows fiind succesorul programului Turbo C++.
Limbajul de programare C a fost elaborat de ctre Denis M. Ritchi n 1972 i descris
detaliat n cartea Limbajul de programare C de Ritchi i Brian B. Kerningan.

Limbajul C este un limbaj de programare standardizat, compilat, de nivel mediu. Este


implementat pe majoritatea sistemelor de calcul existente astzi, fiind cel mai popular limbaj de
programare. Acest limbaj aparine clasei limbajelor de nivel sczut sau de nivel mediu.
Limbajul C are urmtoarele caracteristici importante:

Este un limbaj de baz simplu, cu importante funcionaliti cum ar fi funciile


matematice sau cele de manipulare ale fiierelor;

Utilizeaz programarea procedural care implic programarea ntr-un mod structurat;

Utilizeaz un set simplu de tipuri de date ;

Permite accesarea la nivel sczut a memoriei calculatorului prin utilizarea pointerilor;


Limbajul C++ au fost iniial derivat din C. Totui nu orice program scris n C este valid

n limbaj C++. Deorece fiecare compilator a evoluat independent, au aprut ntre cele dou
versiuni o serie de incompatibiliti.
Tipuri de date C
Limbajul C cuprinde tipuri de date ntregi, de diferite dimensiuni, cu sau fr semn,
numere n virgul mobil, enumerri, structuri de date i uniuni.
Exemplu de tipuri de date:
-integer: pentru memorarea valori ntregi (n MikroC este nevoie de date de acest tip, la
apelarea librriilor grafice);
-double: date reale, pentru prelucrarea matematic a tensiunilor msurate, la
implemetarea diverilor algoritmi.
-short int: folosit la diverse contoare etc;
-char: caracterele sunt necesare n cadrul proiectului la afiarea rezultatului msurrii.
Un tablou reprezint o colecie de date de acela tip. Tablourile unidimensionale sunt
denumite i vectori. Vectorii sunt folosii n limbajul C. Acetia se declar astfel:
Tipul_datelor nume_vector[Numarul_total_de_elemente];
Tablourile bidimensionale, sau matricile reprezint o colecie de date de acela tip, iar
pentru declararea acestora, se specific numrul de elemente ale fiecrei dimensiuni, incluznd
fiecare dintre aceste numere ntre paranteze drepte:
Tipul_datelor nume_matrice [nr_linii][nr_coloane];
n limbajul de programare C, se utilizeaz cel puin o funcie i aceasta este main, funcie
a crei prezen este obligatorie. O funcie, poate fi apelat fie din programul principal, fie dintr-

o alt funcie. n limbajul C, o funcie nu poate fi definit n interiorul altei funcii. Funciile, n
limbajul C, au sintaxa:
Tipul_rezultatului nume_funcie(lista_de_parametrii)
{declaraii interne
Instruciuni
}
Funciile sunt folosite n cadrul programului principal. Un program C, ce const doar
dintr-o definiie de funcie (alta dect main), nu poate fi rulat. n general, orice program de test
trebuie :
- s iniializeze parametrii de intrare
- s apeleze funcia
- s afieze rezultatul
Un apel de funcie const din numele funciei, urmat de parametrii actuali ai funciei.
Dac funcia returneaz o valoare, aceasta trebuie atribuit unei variabile.
n programarea interfeelor electronice este adesea necesar s prelucrm datele la nivel de
bit. Limbajul C este un limbaj adecvat pentru dezvoltarea de sisteme electronice i datorit
faptului ca are un set bogat de operatori de prelucrare la nivel de bit i anume:
&

(operatorul I)

(operatorul SAU)

(operatorul SAU EXCLUSIV)

Toi aceti operatori, cu excepia operatorului ~ (negare), sunt operatori binari, adic au
doi operanzi.
Ali operatori folosii sunt cei matematici, nelipsii din fiecare algoritm implementat.

2.4. Descrierea mediului de simulare a circuitelor electronice, Proteus ISIS


Proteus ISIS versiunea 7.10 este programul folosit n realizarea i simularea
schemelor electronice. ISIS beneficiaz de o interfa uor de utilizat, avnd un numr mare de
caracteristici ceea ce l face potrivit pentru design-ul complex de circuite. Pagina de start din
ISIS Proteus arata ca in figura de mai jos:

ISIS Schematic Capture permite:


-

Customizarea aspectului schematicului (grosimile liniilor, culori, fonturi);

Design ierarhic, posibilitatea de a lucra pe blocuri ierarhice, incluznd posibilitatea de


a parametriza valorile componentelor de subcircuit;

Utilizarea de magistrale, porturi pentru ciruite, pini;

Previzualizarea rapid a footprinturilor n timpul selectrii componentelor;

Posibilitatea de realizare a librriilor noi ct i a noilor componente;

Utilizarea unor librrii expandate cu peste 10000 de componente, majoritatea avnd


model pentru simulare.

Mai multe despre modul cum se realizeaza un circuit electronic in Proteus, cat si un exemplu
concret veti vedea in desfasurarea lucrarii.

2.5. Mediul de dezvoltare Keil uVision


Mediul de dezvoltare Vision este un mediu de dezvoltare integrat (IDE-Integrated
Development Environment) cu ajutorul caruia se poate implementa ntregul ciclu de dezvoltare a
unei aplicatii software (sau proiect) pentru un microcontroler din familia 8051.
In figura de mai jos este prezentat ciclul de dezvoltare mpreuna cu principlalele unelte
soft (programe) care alcatuiesc mediul integrat de dezvoltare pentru Keil uVision2:

Ciclul de dezvoltare este similar oricarei alte aplicatii software si presupune etapele:
-

crearea unui proiect, cu selectarea unei anumite variante de microcontroler 8051

precum si cu configurarea componentelor (uneltelor) soft ce vor fi utilizate;

crearea si editarea fisierelor sursa n limbaj de asamblare sau C;

generarea codului pentru aplicatie (Build = asamblare/compilare urmata de link

editare/locatare) prin intermediul unui manager de proiecte;


-

corectarea erorilor;

testarea aplicatiei cu ajutorul simulatorului si/sau al sistemului de dezvoltare

Mediul uVision2 permite crearea fisierelor sursa si organizarea lor ntr-un proiect care defineste
aplicatia tinta. El permite automatizarea asamblarii/compilarii urmata de link editare (editarea de
legaturi intre modulele obiect) si locatarea codului n memoria program. Corectarea interactiva a
erorilor, cu setarea diverselor optiuni sunt alte facilitati oferite.