Sunteți pe pagina 1din 6

Tablouri

UNIDIMENSIONAL MULTIDIMENSIONAL

#define l 5 #define l 5
#define c 3 #define c 3
int m[l][c]; int v[l * c];
int i,j,k; int i,j,k;
int main () int main ()
{ {
for (i=0; i<l; i++) for (i=0; i<l; i++)
for (j=0; j<c; j++) for (j=0; j<c; j+
+)

m[i][j]=k++; v[i*l+j]=k+
+;
} }

Pointeri
Incrementare/decrementare (P++ ; P--) Adunarea sau
scaderea unui pointer cu un nr intreg

Scaderea a doi pointeri: p = v;


int v[10], *p, *q; *(p + 2) = 10
p = v + 4; // *p este v[4] cout << v[2] << endl; //
10
q = v + 7; // *q este v[7] cout << (p + 3)[1] <<
endl; // 5
cout << q - p << endl;
cout << p - v << endl;

Transmiterea parametrilor prin adresă

Pentru a transfera un obiect V ca parametru prin referinţă, se transferă un pointer


către V; parametrul formal va
fi un pointer către valoarea obiectului V.
Transmiterea parametrilor prin referinţă constă în copierea adresei unui argument
într-un
parametru. În funcţia în care se face apelarea, este folosită adresa respectivă
pentru accesarea
argumentului folosit efectiv la apelare.

void interschimba (int *a, int *b) //transmit prin adresă


{
int c;
c = *a;
*a = *b;
*b = c;
}
int main (void)
{
int *x, *y; // parametrii locali - pointeri
int z, w; // parametrii locali
x = &z; // z şi w sunt folosite pentru
y = &w; // iniţializarea celor doi pointeri
printf ("Introd. valoarea primului numar: ");
scanf ("%d", x);
printf ("Introd. valoarea pentru al doilea numar: ");
scanf ("%d", y);
interschimba (x, y); // apelarea funcţiei
interschimba (&z, &w); // apel recomandat al funcţiei
printf ("Nr. interschimbate sunt %d si %d", *x, *y);
getch ();
return 0;
}

Transmitera tablourilor ca parametri

tablourile pot fi furnizate funcţiilor ca parametri. Acest lucru, în C, nu se face


prin furnizarea întregului bloc
de memorie, ci a adresei acestuia. Efectul obţinut este asemănător.

void afisare(int v[100], int n)


{
for (int i=0; i<n; i++)
cout << v[i] << ' ';
cout << '\n';
}
int main ()
{
int a[] = {5, 10, 15}, b[] = {2, 4, 6, 8, 10};
afisare(a,3);
afisare(b,5);
}

Sistemul incorporat

sistemul încorporat este o combinație de hardware (un mic calculator bazat pe un


microprocesor sau microcontroler) și software
specializat (software înglobat), proiectat să îndeplinească o anumită funcție, sau
a câtorva sarcini, de obicei în timp real (aproape instantaneu).

Microprocesorul

Microcontrolerul este o structură electronică destinată controlului unui proces


sau, mai
general, este un microcircuit care incorporează o unitate centrală (CPU) şi o
memorie împreună
cu resurse care-i permit interacţiunea cu mediul exterior.

Dezvoltarea unei aplicatii soft pe


microcontroller

1.Alegerea microcontrolerului – pe criterii de rapiditate, consum


de putere, set de instructiuni, optiuni de interfatare
2. Scrierea programului
- limbaj de asamblare – abreviatii sau mnemonici
- limbaj de nivel inalt
- interpretoare si compilatoare
3. Testare si depanare
-sistem de dezvoltare
- simulatoare
Unitatea centrala de procesare

UAL implementează diferite operații aritmetice și logice asupra operanzilor


obținuți din memorie. Conține, în principal, un circuit logic pentru adunare,
numit sumator, toate operațiile aritmetice reducându-se la o succesiune de
operații de adunare.
transferuri de date între registre și între acestea și memorie;
operații aritmetice cu operanzii adresați de UCC;
operații logice (SI, SAU, NU) cu operanzii adresați de UCC;
operații de deplasare a conținutului unui registru sau locație de memorie;
operații de comparație a doi operanzi.
UAL generează informații referitoare la rezultatul ultimei instrucțiuni aritmetice
și logice executate.
Acestea se referă la semnul rezultatului, la paritatea acestuia (par sau impar),
dacă rezultatul este nul sau nenul etc.

Registrele
Setul de registre din cadrul UCP păstrează temporar operanzii unei operații
aritmetice sau logice, rezultatele intermediare și finale,
sau adresele acestora. Utilizarea registrelor crește viteza de prelucrare,
eliminând necesitatea accesului repetat la memorie. Ele reprezintă deci o memorie
internă temporară foarte rapidă.
Unele registre pot avea funcții dedicate, altele se pot utiliza pentru orice
operații, fiind registre generale.
O parte din registre nu sunt accesibile prin program, fiind registre de lucru (de
exemplu, registrul de instrucțiuni,
care păstrează instrucțiunea curentă (cea care se execută la un moment dat).

UCC coordonează activitatea calculatorului:

adresează și extrage din memoria principală instrucțiunile binare ale programului;


decodifică (interpretează) instrucțiunile și generează secvența semnalelor de
comandă necesare către toate celelalte unități funcționale ale calculatorului; ca
urmare a acestor semnale instrucțiunea curentă este executată;
în plus, UCC analizează semnalele de stare și sincronizare ce provin de la
celelalte unități funcționale ale calculatorului și, ca urmare, poate schimba
succesiunea semnalelor de comandă pe care le generează. La terminarea execuției
instrucțiunii curente, se trece la instrucțiunea următoare.
Tot în cadrul UCC se includ și circuitele pentru generarea adreselor, care
calculează adresele (pentru memoria principală, pentru porturi de I/O,
pentru registrele interne ale UCP) pe baza informațiilor binare din corpul
instrucțiunilor.

Memorie
Se impart in doua categorii:
Volatile – datele se pierd la intreruperea alimentarii
 DRAM (Dynamic Random Access Memory)
 SRAM (static Random Access Memory)
Nevolatile – utilizate pentru stocarea codurilor de program
sau informaţiilor care nu se schimbă niciodata
– ROM (Read Only Memory)
– EPROM (sau UV-EPROM - Ultra Violet Erasable
Programable ROM)
– EEPROM -- Electrically Erasable Programmable ROM
Erasable ROM
 ROM
 Programat de catre producator
 Programmable ROM (PROM)
 Se programeaza printr-un programator

 Erasable Programmable ROM (EPROM)


 Foloseste unda ultraviolet care se aplica pentru stergere printr-o “fereastra”
de pe cip
 OTP semnifica ‘one-time programmable’

 Electrically Erasable Programmable ROM (EEPROM)


 Fiecare locatie din program poate fi stearsa individual
 scumpa
 Se cere programator

 FLASH
 Se programeaza in circuit sau in sistem
 Usor de sters (nu e nevoie de programator)
 Doar o portiunea poate fi stearsa/scrisa o data (in general, 64 de bytes o
data)

Stiva reprezinta o zona de memorie accesibila rapid in care se depun temporar


informatii importante in desfasurarea programului.
Stiva este definita de obicei in RAM. Implementarea accesului presupune existenta
unui registru de adresare (SP) si a mecanismului de
memorare declansat de instructiuni specifice (instructiunile PUSH/POP).

I/O digitale
intrare digitală. În această configuraţie pinul respectiv poate primi şi interpreta
doar semnale digitale: 0 logic (dacă tensiunea
aplicată la intrare este mai mică decât 0,5 x Va, unde Va este tensiunea de
alimentare a microcontroller-ului) sau 1 logic (dacă tensiunea de la intrare
este mai mare decât 0,5 x Va);

ieşire digitală. În acest caz, pe pinul respectiv microcontroller-ul poate dicta


doar semnale digitale: 0 logic (adică o tensiunea practic egală cu 0V)
sau 1 logic (o tensiune practic egală cu tensiunea de alimentare a microcontroller-
ului);

PWM
Ieşire PWM. Semnalul PWM (Pulse Width Modulation) este un semnal format din
impulsuri cu frecvenţă constantă dar cu durată variabilă.
Dacă la ieşirea unui pin configurat ca ieşire PWM aplicăm un filtru RC care să
integreze aceste impulsuri (adică să le transforme într-un semnal continuu,
“lin”), vom obţine o tensiune a cărei valoare este direct proporţională cu durata
impulsurilor.
În acest mod, din microcontroller putem obţine şi semnale de ieşire analogice,
adică şi “nuanţe de gri”, nu doar “alb” sau “negru”.
Spre deosebire rezoluţia de transformare din analogic în digital, rezoluţia unei
ieşiri configurate ca ieşire PWM este de obicei doar de 8 biţi
(adică doar 256 de “nuanţe de gri”).

(Sistemul de intreruperi)
 odată activate, opresc execuţia firului principal al programului 
saltul la o adresă specifică din memorie unde se poate scrie o rutină
specială care să se execute în cazul declanşării întreruperii.
-5 surse principale de întrerupere:
- 2 întreruperi externe (INTR0 şi INTR1) - au alocaţi doi pini în
capsula microcontrolerului care se activează la aplicarea unui semnal
logic pe unul din aceşti pini; sunt foarte utile pentru semnalizarea unui
eveniment extern
- 2 întreruperi de timer (TIMER0, TIMER 1)- se activează de către
numărătoare la terminarea ciclului de numărare
- 1 întrerupere utilizată la transmisia pe portul serial.

Sistemul de arbitrare alocă priorităţi cererilor de întrerupere, servind


întotdeauna
cererile cu prioritatea cea mai mare. Se permite, de asemenea ca o rutină de
tratare să poată fi la rândul ei întreruptă de o cerere cu prioritate mai mare.

Magistrale
(magistrala de adrese de 16 biți, magistrala de date de 8 biți) și a dezvoltării
tehnologiei HMOS,
firma INTEL realizează microprocesorul 8086 (magistrală multiplexată - 20 linii de
adresă, 16 linii de date) cu care se implantează solid și în domeniul
microprocesoarelor de 16
biți.

Interfete seriale
Transmisia se face bit cu bit

SPI a fost dezvoltată de Motorola pentru a furniza o interfaţă simplă


şi de cost redus între microcontrollere şi dispozitive periferice
• SPI e numită uneori interfaţă cu patru fire
• Poate fi utilizată pentru interfaţarea diverselor dispozitive, cum ar fi:
– memorie (stocare date)
– convertoare analog-digitale
– convertoare digital-analoge
–RTCşi calendare RTC
– LCD drivers
– sensori
– chip-uri audio
– alte microcontrollere
– .... domeniul componentelor cu interfaţă SPI creşte continuu

SPI utilizează patru semnale:


1. Master Out Slave In (MOSI)
2. Master In Slave Out (MISO)
3. Serial CLock (SCLK sau SCK)
4. Chip Select (/CS) for the peripheral
• Unele procesoare au un semnal de chip select dedicat pentru SPI,
numit Slave Select (/SS)
• MOSI este generat de master şi recepţionat de scalv
– La unele chip-uri MOSI este numit Serial In (SI) sau Serial Data In
(SDI)
• MISO este produs de sclav, dar generarea sa este controlată de
master
–MISOeste uneori numit Serial Out (SO) sau Serial Data Out (SDO)
• Semnalul de chip select către periferice este de obicei generat cu
ajutorul unui pin de I/O digitală a masterului

Master-ul şi scalvii conţin câte un registru cu deplasare serială a datelor


(serial shift register)
• Master-ul începe transferul unui octet prin scrierea acestuia în registrul său
SPI de serializare.
•Pemăsură ce se face transmisia serială către sclav (prin linia MOSI),
sclavul transferă conţinutul registrului său de serializare (prin linia MISO)
către master

•I2C este o magistrală sinconă, bidirectională, de viteză mică


• Conectarea / deconectarea unor dispozitive la I2C nu afectează alte
dispozitive
•I2C este o magistrală multi-master

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