Sunteți pe pagina 1din 126

Mihai POSTOLACHE

Sisteme
cu microprocesoare
- suport de curs -

EDITURA CONSPRESS
2013
Copyright 2013, Editura Conspress
EDITURA CONSPRESS
este recunoscut de
Consiliul Naional al Cercetrii tiinifice din nvmntul Superior

Lucrare elaborat n cadrul proiectului: "Reea naional de centre pentru


dezvoltarea programelor de studii cu rute flexibile i a unor instrumente didactice la
specializarea de licen i masterat, din domeniul Ingineria Sistemelor"

Descrierea CIP a Bibliotecii Naionale a Romniei

POSTOLACHE, MIHAI

Sisteme cu microprocesoare : suport de curs / Mihai


Postolache. Bucureti : Conspress, 2013
Bibliogr.
ISBN 978-973-100-265-1

004

Carte universitar

CONSPRESS
B-dul Lacul Tei nr.124, sector 2,
cod 020396, Bucureti
Tel.: (021) 242 2719 / 300; Fax: (021) 242 0781
Cuprins .. iii

1. Introducere n sisteme cu microprocesoare ............................................................................ 1


1.1. Componente hardware .................................................................................................. 2
1.1.1. Componente principale 2
1.1.2. Componente specifice conducerii proceselor ... 7
1.2. Componente software .................................................................................................... 8
1.2.1. Sistemul de programe de baz ....................................................................... 8
1.2.2. Programul de aplicaie ..................................................................................... 9

2. Microprocesorul 8085A structur intern i funcionare 11


2.1. Caracterizarea funcional a unui microprocesor (UCP) ............................................. 11
2.2. Structura intern i funcionarea unui microprocesor .................................................. 11
2.3. Microprocesorul 8085A ................................................................................................ 13
2.3.1. Structura intern a microprocesorului 8085A ................................................ 14
2.3.2. Iniializarea microprocesorului ....................................................................... 16
2.3.3. Regimuri de funcionare ................................................................................ 17
2.3.4. Secvenierea intern a operaiilor ................................................................. 18

3. Conectarea memoriei i a dispozitivelor de I/E ntr-un sistem cu microprocesor 8085 . 21


3.1. Demultiplexarea magistralei de adrese/date: AD7AD0 .............................................. 21
3.2. Amplificarea magistralelor ............................................................................................ 21
3.3. Generarea semnalelor de pe magistrala de comand ................................................. 22
3.4. Interfaarea cu memoria i dispozitivele de I/E ............................................................ 22
3.5. Tipuri de memorie utilizate n sistemele cu microprocesoare ...................................... 23
3.6. Transferul de informaie ntre memorie i microprocesor ............................................ 24
3.7. Organizarea memoriei ................................................................................................. 25
3.8. Transferul de informaie ntre memorie i microprocesor ............................................ 28
3.9. Tehnici de intrare-ieire ................................................................................................ 29

4. Programarea microprocesorului 8085A n limbaj de asamblare .......................................... 31


4.1. Limbajul de asamblare al microprocesorului 8085A .................................................... 31
4.1.1. Formatul instruciunilor .................................................................................. 31
4.1.2. Moduri de adresare ....................................................................................... 31
4.1.3. Setul de instruciuni ....................................................................................... 33
4.2. Programarea n limbaj de asamblare ........................................................................... 39
4.2.1. Organizarea segmentat a codului surs ..................................................... 39
4.2.2. Constante i expresii ..................................................................................... 41
4.2.3. Organizarea datelor ...................................................................................... 42
4.2.4. Definirea referinelor ntre modulele obiect ................................................... 42
4.3.2. Programarea cu macroinstruciuni ................................................................ 43
4.3.3. Programarea cu subroutine ........................................................................... 44

5. Sincronizarea programului cu evenimente externe .............................................................. 47


5.1. ntreruperile microprocesorului 8085A ......................................................................... 47
5.1.1. Linii de ntrerupere mascabile ....................................................................... 47
5.1.2. Linia de ntrerupere nemascabil .................................................................. 49
5.2. Tratarea solicitrilor multiple de ntreruperi .................................................................. 50
5.2.1. Interogarea surselor de ntrerupere ............................................................... 50
5.2.2. ntreruperi vectorizate .................................................................................... 52
5.3. Controlerul de ntreruperi programabil PIC 8259/8259 ................................................ 52
5.3.1. Structura intern i funcionarea ....................................................................52
5.3.2. Iniializarea PIC 8259/8259A ......................................................................... 54
5.3.3. Moduri de lucru .............................................................................................. 56
5.4. Realizarea unui sistem de ntreruperi (SINT) cu 8259A ............................................... 59
5.4.1. Structura hardware a SINT cu 15 niveluri ..................................................... 59
5.4.2. Programarea SINT ........................................................................................ 60

iii
6. Numrarea evenimentelor i msurarea intervalelor de timp .............................................. 63
6.1. Tehnici de introducere a timpului n sistemele cu microprocesoare ............................ 63
6.2. Circuitul programabil de timp PIT 8253 (Programmable Interval Timer) ... 65
6.2.1. Structura intern i funcionarea canalelor de timp ....................................... 65
6.2.2. Programarea canalelor de timp ..................................................................... 67
6.2.3. Moduri de operare ......................................................................................... 68
6.3. Realizarea aplicaiilor folosind circuitul PIT8253 .......................................................... 72
6.3.1. Structura hardware a sistemului .................................................................... 73
6.3.2. Programarea taskurilor de timp ..................................................................... 74

7. Interfaarea cu dispozitive periferice .......................................................................................77


7.1. Interfaarea paralel ..................................................................................................... 77
7.1.1. Transferul paralel. Controlul fluxului de date ntre interfa i periferic .. 78

7.1.2. Interfaa paralel PPI8255/8255A. Caracteristici tehnice i structur intern 80


7.1.3. Modurile de lucru ale interfeei paralele PPI 8255/8255A .... 81
7.1.4. Programarea interfeei paralele PPI 8255/8255A ................ 83
7.2. Interfaarea serial ....................................................................................................... 84
7.2.1. Interfaa serial USART 8251A. Caracteristici tehnice i structura intern ... 85
7.2.2. Funcionarea USART 8251A n modul asincron .................. 87
7.2.3. Programarea USART 8251A ................................................ 89
7.2.4. Utilizarea interfeei seriale USART 8251A n aplicaii 90

8. Microcontrolere PIC de 8 bii - structur intern i funcionare 92


8.1. Caracteristicile generale ale microcontrolerelor PIC ........................... 92
8.2. Arhitectura intern a microcontrolerelor PICMicro mid-range ........................... 95
8.3. Oscilatorul intern ............................................................................................... 96
8.4. Execuia instruciunilor tehnica pipeline pe 2 niveluri ...................... 98
8.5. Logica de resetare ............................................................................................. 98
8.6. Organizarea memoriei la PICMicro mid-range .................................... 99
8.7. Modificarea PC-ului de ctre instruciuni de salt sau apel .. 100
8.8. Stiva . 101
8.9. Citirea/scrierea n spaiul de memorie program ... 101
8.10. Memoria de date . 102
8.10.1. Adresarea direct a memoriei de date ............... 103
8.10.2. Adresarea indirect a memoriei de date ................103
8.10.3. Memoria de date EEPROM ................................... 104

9. Microcontrolere PIC de 8 bii - setul de instruciuni .. 105


9.1. Setul de instruciuni .................................................................................................... 105
9.2. Ceasul de gard (WDT) ............................................................................................. 108
9.2.1. Structura intern a WDT .............................................................................. 109
9.2.2. Funcionarea WDT ...................................................................................... 110
9.3. Modul de consum redus (Power-down) ......................................................................111

10. Microcontrolere PIC de 8 bii periferice integrate ........................................................... 112


10.1. Sistemul de ntreruperi ............................................................................................. 112
10.2. Porturile de I/E ..........................................................................................................114
10.3. Timerul 0 .................................................................................................................. 115
10.4. Timerul 1 .................................................................................................................. 116

Bibliografie selectiv ...118

iv
1. Introducere n sisteme cu microprocesoare

Sistem cu microprocesor (SMP)

Caracterizare din punct de vedere formal:

SMP=(UCP, MEM, MS, I/E)

UCP Unitate de Control a Prelucrrii informaiei numerice, format din


microprocesor i circuite auxiliare (generator de tact, circuit de resetare
etc.)

MEM suportul fizic pentru stocarea informaiei (MEMorie pentru program i


date)

I/E suportul fizic pentru legtura cu exteriorul, spre (Intrare) i dinspre (Ieire)
sistemul cu P

MS Magistrala Sistemului, la care se conecteaz toate celelalte componente


pentru a schimba informaii ntre ele.

UCP
cu P

MS

I/E
MEM

PI PE

1
Sisteme cu microprocesoare Sisteme cu microprocesor
de uz general pentru conducerea proceselor
Aplicaii Spectru foarte larg Dintr-un domeniu ngust, specializat
Funcionare Condiii obinuite Specifice aplicaiei (mediu ostil)
Fiabilitate Obinuit Ridicat
Software de Obinuit : sisteme de operare de uz Specializat: sisteme de operare sau
sistem general, multitasking, multiuser executive de timp real (timp critic)
Microprocesoare de uz general sau
UCP Microprocesoare de uz general
specializate
Putere Ct mai mare
Conform necesitilor aplicaiei
MEM Ct mai mare Conform necesitilor aplicaiei
Tip Programe + date Programul este separat de date

IE Periferice standard Periferice specifice aplicaiei


Memorii Capacitate ct mai mare Numai dac aplicaia impune
de mas
Orientat ctre utilizator: Orientat mai ales ctre proces, interfaa
Interfa multimedia, accesibil unui cu procesul este specializat i redus la
utilizator neavizat minimum
Standardizat (ISA, Multibus, VME, PCI)
MS Standardizat (ISA, VESA, PCI)
sau nu

1.1. Componente hardware

Numrul i tipul componentelor - depind de specificul aplicaiei i pot varia n limite largi.
O parte dintre componente pot lipsi.

1.1.1. Componente principale

Microprocesorul - coordonatorul sistemului execut comenzi (denumite instruciuni).

Alimentare,
Resetare,
Semnale de tact
Magistrala
M
de adrese
A
Controlul P
transferului pe MD

Magistrala Magistrala
de control Control ntreruperi MD
de date

Control accesului
la magistral

Microprocesorul categorii de semnale la pini

2
Execuia instruciunilor
- P depune pe MA adresa instruciunii;
- activeaz semnalele de citire memorie;
- citete codul instruciunii din memorie pe MD;
- decodific instruciunea
- execuia propriu-zis:
- operaii interne: aritmetice, logice, de control al strii P
- operaii pe magistral: transfer de operanzi (date) pe MD
Citirea unui operand:
P depune pe MA adresa operandului;
activeaz semnalele de citire memorie sau dispozitivul I/E;
citete operandul din memorie pe MD;
Scrierea unui operand:
P depune pe MA adresa operandului;
depune operandul pe MD;
activeaz semnalele de scriere n memorie sau dispozitivul I/E;

Memoria

Locaii de memorie (8 bii) Linie de


Adresa msb lsb selecie
zecimal hexa 7 6 5 4 3 2 1 0
0 0000h Linii
de adrese
1 0001h
Memorie
2 0002h Linii
program
3 0003h de date

4 0004h
Controlul
5 0005h transferului
6 0006h
Alimentare
7 0007h

8 0008h Linie de
selecie
9 0009h

10 000Ah Linii
de adrese
11 000Bh

12 000Ch
Memorie
Linii
de date de date
13 000Dh

14 000Eh
Controlul
15 000Fh
transferului
16 0010h
Alimentare
... .........

Memoria organizare logic i categorii de semnale la pini

Conine succesiunea comenzilor (programul), constantele i variabilele programului.

Este format dintr-un ir de locaii, identificate prin adrese unice, succesive.


3
Memoria program realizat cu circuite de tip ROM (Read Only Memory):
- n mod normal, accesul la informaiile memorate este permis (sau posibil) n sistem
numai pentru operaia de citire;
- nscrierea informaiilor se poate face nafara sistemului (programator memorii) sau, n
anumite condiii, chiar n sistem (ISP In System Programming);
- conine instruciunile i constantele programului (date care nu se modific pe durata
execuiei programului);
- acestea sunt protejate mpotriva automodificrii i a modificrilor accidentale;
- programul este rezident n memorie:
-
rmne ncrcat n memorie i dup deconectarea alimentrii;
-
nu trebuie rencrcat la conectarea alimentrii sau de fiecare dat nainte de a fi
executat.
Memoria de date realizat cu circuite de tip RAM (Random Access Memory):
- conine variabilele programului (date care se modific pe durata execuiei
programului);
- la deconectarea alimentrii, datele coninute se pierd;
- la conectarea alimentrii, coninutul locaiilor se poziioneaz aleator;
- variabilele trebuie iniializate prin program, n mod explicit, la nceputul execuiei
acestuia.
- accesul la informaiile memorate este permis n sistem att pentru citire ct i pentru
scriere.

Poate fi integrat pe acelai cip cu microprocesorul n cazul microcontrolerelor.

Dispozitivele de I/E

Asigur legtura cu mediul exterior:

- Dispozitivele de intrare prelucreaz informaiile de intrare conform unor funcii specifice.


Informaiile prelucrate pot fi accesate de pe magistrala sistemului prin intermediul unor
registre de date.

- Dispozitivele de ieire transform informaiile transmise pe magistrala sistemului, nscrise


n registrele de date, conform unor funcii specifice.

Dispozitiv de I/E
Linii
Porturi de I/E: de date
Circuite
- registre de date
Informai cu funcii
Mediul exterior

- registre de Linii
specializate
control de adrese
de intrare
- registre de stare Linie de
MS

selecie
Logic de control i
Circuite Controlul
Informai de citire/scriere transferulu
cu funcii
specializate ntrerupere
Solicitri de
de intrare
ntrerupere i de Cerere DMA
acces direct la
memorie Alimentare

Dispozitivele de I/E structur intern general i categorii de semnale la pini


4
Parametrii funciilor de prelucrare i cei ai accesului de pe magistrala sistemului sunt stabilii
de ctre microprocesor, prin intermediul registrelor de control.
Informaiile care descriu starea dispozitivului I/E la un moment dat sunt disponibile n cadrul
unor registre de stare:
stadiul i eventualele condiii speciale (erori) aprute n timpul prelucrrii specifice a
informaiilor;
controlul fluxului de date pe magistrala sistemului.
Registrele interne (de date, control i stare) ale dispozitivelor de I/E sunt denumite generic
porturi de I/E i sunt tratate, de obicei, n mod diferit fa de locaiile de memorie:
- semnale de control distincte
- spaii de adresare separate
- instruciuni de acces diferite
Spre deosebire de locaiile de memorie obinuite, care pot fi accesate doar de pe magistrala
sistemului, porturile de I/E pot fi considerate drept locaii de memorie cu dublu acces:
magistrala sistemului;
circuitele interne cu funcii specializate ale dispozitivelor de I/E.
Exemple: interfee paralele, seriale, numrtoare / temporizatoare, controlere de ntreruperi,
convertoare A/D i D/A, controlere de comunicaii, controlere de acces direct la memorie.
Unele dispozitive de I/E cu funcii larg rspndite se pot afla pe acelai cip cu microprocesorul
i memoria cazul microcontrolerelor.

Magistrala sistemului cu microprocesor (MS)


Este format din:
magistrala de adrese (MA) grup de linii unidirecionale, prin care coordonatorul
sistemului indic locaia de memorie sau portul de I/E la care dorete s aib acces.
magistrala de date (MD) grup de linii bidirecionale, pe care circul informaia
(instruciuni i date) ntre componentele sistemului cu microprocesor.
magistrala de control (MC) linii uni- sau bidirecionale, cu roluri diverse:
o stabilirea tipului de acces pe MS:
selecie a spaiului de adresare (memorie sau porturi I/E);
de control al sensului de transfer pe MD (citire sau scriere d.p.d.v. al
P);
o sincronizarea microprocesorului cu dispozitive externe mai lente (ateptare);
o dialogul dintre microprocesor i dispozitivul de I/E care solicit ntreruperi;
o dialogul dintre microprocesor i un alt controler care dorete accesul la MS
(DMA)
Este controlat n mod implicit de ctre microprocesor, care depune adresa pe MA i
activeaz linii de control ale MC, n funcie de operaia pe care o execut la un moment dat.
Pentru anumite operaii specializate: transferuri rapide de informaie ntre dispozitive de I/E
i memorie; calcule matematice n virgul mobil, etc. MS poate fi controlat, cu permisiunea
microprocesorului, de un controler specializat (controler DMA, coprocesor numeric etc.)
Exist situaii cnd, pentru a rezulta un numr de pini ct mai mic pentru un cip, informaiile
care circul pe MD sunt multiplexate n timp: magistral multiplexat de adrese/date. n acest
caz sunt necesare de regul circuite de demultiplexare sau de separare a adresei de date.

5
Liniile MS interconecteaz cel puin trei tipuri de dispozitive fizice: microprocesorul,
dispozitive de memorie i de I/E. Oricare dintre aceste dispozitive poate fi surs sau destinaie
pentru informaiile vehiculate pe MD.

Arbitrarea accesului la magistral:


1. La un moment date se efectueaz un singur transfer de date pe MD.
2. Orice transfer de informaie pe MD se face ntre dou dispozitive fizice diferite: de la
un dispozitiv surs la un dispozitiv destinaie.
3. Atunci cnd microprocesorul este coordonatorul sistemului, el este n mod obligatoriu
fie surs, fie destinaie a transferului.
4. Microprocesorul dispune de un mecanism de tip cerere/rspuns prin care poate
controla cedarea i ulterior reluarea rolului de coordonator n sistem.
5. Atunci cnd microprocesorul este coordonatorul sistemului, el stabilete cu care
dispozitiv va dialoga, prin adresa depus pe MA i prin semnalele de control al
transferului activate pe MC.
6. Fiecare dispozitiv fizic trebuie s dispun de o linie de selecie, prin care s fie
informat de ctre coordonator c a fost ales pentru transfer de informaie pe MD.
7. ntruct dispozitivele fizice, cu excepia coordonatorului, nu dispun de pini pentru
toate semnalele de pe MS, decodificarea adresei i selecia celui de-al doilea dispozitiv
ales pentru efectuarea transferului pe MD se face de ctre o logic adecvat.
8. Logica de decodificare i selecie utilizeaz informaia de pe MA i MC pentru a
genera semnale de selecie pentru fiecare dispozitiv fizic de memorie i de I/E din
sistem, astfel nct s nu apar conflicte.
9. Unele dispozitive fizice, cum ar fi controlerul DMA, atunci cnd devin coordonator, au
posibilitatea de a a selecta simultan dou dispozitive fizice: unul surs i altul
destinaie (de exemplu pentru a transfera date pe MS direct ntre un port I/E i
memorie).

UCP Controler
cu P DMA

MA

MD

MC

Logic de I/E
I/E
MEM
MEM
MEM decodificare
i selecie
Linii de Linii de PIPI PE
PE
selecie selecie
memorie dispozitive
de I/E

Logica de decodificare i selecie


6
1.1.2. Componente specifice conducerii proceselor

Funcionarea n timp real implic utilizarea unor tehnici de I/E corespunztoare.

Tehnica ntreruperilor
permite sincronizarea funcionrii microprocesorului cu evenimente din procesul condus
sau cu alte componente ale sistemului;

asigur un timp de rspuns minim la evenimentele aprute n sistem;

se utilizeaz n primul rnd mecanismele hardware i software asociate sistemului de


ntreruperi al microprocesorului;

atunci cnd resursele interne nu fac fa numrului mare de surse de ntrerupere, se pot
utiliza controlere specializate pentru tratarea cererilor multiple de ntrerupere.

Introducerea timpului n prelucrarea informaiei


msurarea intervalelor de timp ntre evenimente;
lansarea periodic n execuie a unor module de program;
generarea unor semnale cu o evoluie controlat n timp;

se utilizeaz dispozitive de I/E specializate, cunoscute sub numele de ceasuri programabile


sau timere (engl. timers).

Interfaa cu operatorul
- se utilizeaz o interfa local consola operatorului de proces
- aceasta permite introducerea i modificarea parametrilor aplicaiei, selectarea
regimurilor de lucru, solicitarea i vizualizarea informaiilor legate de starea
procesului condus i a programului de aplicaie.

Comunicaia cu periferice standard i cu alte sisteme cu microprocesoare


- pe distane mici, cu vitez mare interfee de comunicaie paralel;
- la distane mai mari, cu viteze mai mici interfee de comunicaie serial.

Interfaa cu procesul condus


Format din dispozitive de I/E specifice:
intrri numerice i analogice de la senzori i traductoare;
ieiri de putere, numerice sau analogice, ctre elemente de execuie.

Organizarea sistemului cu microprocesor - prin agregarea blocurilor funcionale.

Condiii:
Compatibilitatea fizic (hardware) - standardizarea semnalelor de intrare i ieire ale
diferitelor blocuri din sistem;
Compatibilitatea informaional - codificarea unic a datelor pentru toate blocurile
sistemului.
Compatibilitatea logic (software) - posibilitatea execuiei programelor elaborate
pentru un model de ctre alte microsisteme avnd resurse similare.

Aplicaii de complexitate mic-medie - un singur procesor - sistem monoprocesor.

Aplicaii de complexitate mare - mai multe procesoare - sistem multi(micro)procesor.


Necesit o logic de arbitrare a accesului fiecrui microprocesor la resursele comune.
7
... I/E seriale ... I/E paralele

Comunicaie Memorie UCP Memorie Comunicaie


serial program cu paralel
BRQ NMI de date (interfee
(interfee (ROM) P
seriale) BACK INTR (RAM) paralele)

I/OW MEMW I/OW


I/OR MEMR MEMR I/OR
MAGISTRALA DE ADRESE (MA)
Logic de
decodificare
MAGISTRALA DE DATE (MD)
i selecie
MACK
MAGISTRALA DE COMANDA (MC)
I/OW I/OR INTA I/OR I/OW
I/OR I/OW I/OW I/OR
MRQ
Interfaa Intrri Ieiri Sistem Ceasuri Controler
cu din ctre de programabile DMA
operatorul proces proces ntreruperi (timere)
..... ..... .. .. .. .. .. ..
. . .
Senzori i Elemente Solicitri Semnale Evenimente Solicitri
traductoare de execuie din proces de comand din proces DMA

Structura unui sistem cu microprocesor pentru conducerea proceselor

1.2. Componente software

Se pot pune n eviden dou tipuri de componente software:


- programe de baz sau de sistem
- programe de aplicaie
1.2.1. Sistemul de programe de baz
Sistemele cu microprocesoare utilizate n conducerea proceselor se caracterizeaz printr-un
sistem de programe de baz minimal, care pune la dispoziia programelor de aplicaie un set
restrns de servicii de baz de I/E; acestea sunt rezidente n memoria ROM sau sunt
disponibile ntr-un modul de funcii de bibliotec.
Sistemul de operare - un executiv de timp real, simplu i eficient, care permite o proiectare
modular a aplicaiilor, sub form de taskuri i o execuie concurent a acestora.
Se evit blocarea aplicaiei n ateptarea apariiei unuia sau mai multor evenimente, n timp
ce alte evenimente sunt ignorate.
Componentele acestuia sunt scrise de cele mai multe ori parial sau chiar n ntregime n
limbaj de asamblare, pentru a se obine o minimizare a timpului de execuie i a resurselor de
memorie folosite.
Funciile executivului de timp real:
- iniializarea componentelor sistemului;
- gestiunea taskurilor (creare, lansare, terminare);
- accesul la ceasul de timp real (ateptare);
- sincronizarea taskurilor cu evenimente externe (semnale, flaguri, ntreruperi);
- comunicaia dintre taskuri (cutii potale);
- partajarea resurselor, cu asigurarea excluderii mutuale (semafoare).

8
1.2.2. Programul de aplicaie
Aplicaia se descompune n taskuri START
simple, uor de programat i de
gestionat.
Iniializare
1. Taskuri de sistem: resurse gestionate

gestioneaz resursele critice ale


sistemului: timpul, memoria etc.
Ateptare cereri
gestioneaz dispozitivele de I/E care (fr blocare P)
formeaz consola operatorului de
proces
Intrare
realizeaz o prelucrare primar a Semnalizare parametri
datelor de la senzori i traductoare eroare

comand elementele de execuie Verificare


parametri
gestioneaz interfeele de
comunicaie cu alte sisteme cu
microprocesoare Cerere
Nu valid ? Da
au acces direct la resursele hardware
(memorie, porturi de I/E) Rezolvare
sunt taskuri rapide cerere

au prioritate ridicat
Ieire
in cont de cerinele specifice rezultate
aplicaiei
extind setul de servicii standard oferite de executivul de timp real

2. Taskuri de aplicaie propriu-zise


datele de intrare primite de la: START
taskurile de gestionare a intrrilor
de la proces (INPROC)
Iniializare
taskul de gestionare a COP variabile locale
taskurile de gestionare a
interfeelor de comunicaie (COM)
algoritmul de prelucrare a datelor Ateptare date
(algoritm de conducere) Tratare noi Tratare
COP COM
stabilit de programator
selectat de operatorul de proces Sursa
COP ? COM
datele de ieire transmise ctre: PROC
taskurile de gestionare a ieirilor
spre proces (OUTPROC)
Intrare date de la
taskul de gestionare a COP proces (INPROC)

taskurile de gestionare a
interfeelor de comunicaie (COM) Algoritm de
conducere
Implementare bucle infinite:
- control automat (PROC); Ieire date spre
proces OUTPROC
- intervenie local (COP);
- intervenie de la distan (COM).
Ritmul de parcurgere a buclei de control trebuie s urmreasc dinamica procesului.

9
Informaia preluat din proces trebuie s fie prelucrat ntr-un interval limitat de timp, astfel
nct rezultatul calculului s poat fi transmis n timp util procesului condus.
Trebuie evaluat durata de execuie pentru fiecare operaie n parte, care este un criteriu
pentru alegerea resurselor fizice i a limbajului de programare al aplicaiei.
Specificul dezvoltrii sistemelor bazate pe microprocesoare - interdependena aspectelor de
proiectare hardware (HW) i software (SW).
Dezvoltarea aplicaiilor pentru sisteme cu microprocesoare necesit cunotine privind:
- facilitile i funcionarea componentelor hardware ale sistemului cu microprocesor;
- organizarea i proiectarea hardware a sistemelor cu microprocesoare;
- utilizarea unor medii de proiectare hardware asistat de calculator (Altium Designer,
OrCAD, Protel, CadStar);
- cunoaterea tehnicilor de programare a microprocesoarelor n limbaje de nivel cobort
(limbaje de asamblare, C, etc.);
- utilizarea uneltelor de dezvoltare a programelor de aplicaie medii integrate de
dezvoltare (IDE Integrated Development Environment) formate din compilator,
asamblor, editor de legturi, simulator, analizor de performan;
- utilizarea aparaturii de laborator: osciloscoape, generatoare de semnal, analizoare
logice, programatoare de memorii;
- utilizarea unor sisteme sofisticate de dezvoltare cum sunt emulatoarele (ICE In
Circuit Emulator) sau a unor programe de depanare la distan (Remote Debugger).

10
2. Microprocesorul 8085A structur intern i funcionare

2.1. Caracterizarea funcional a unui microprocesor (UCP)

Sistem - secvenial - sincron complex.

Modelul abstract de automat finit:

A = (I, S, O, f, g, s0), unde:


I, S, O - mulimi finite de intrare, stare i ieire;
f : I S S funcia de tranziie descrie evoluia intern
g : I S O - funcia de ieire caracterizeaz evoluia semnalelor de ieire
s0 - starea iniial.

Automate deterministe:

|f(i, s)| = 1, |g(i, s)| = 1, i I, s S - au o evoluie unic pentru o pereche (i, s) dat.

Realizarea fizic - sinteza structurilor secveniale.


Format din unul sau mai multe circuite VLSI sau LSI.

2.2. Structura intern i funcionarea unui microprocesor

Microprocesor = UCP - unitate de comand i prelucrare:

Unitate de prelucrare (UP) - unitate logic i aritmetic (ULA)


- registre interne (R)
Unitate de comand (UC).

XTAL
fanioane

R + ULA UC GT

comenzi CMD. INIT.


(RESET)

P d a c

MD MA MC

Structura intern simplificat a unui microprocesor

11
Registrele interne (R)
Memoreaz temporar adrese sau date care urmeaz a fi prelucrate n ULA.

Asigur un transfer eficient i o cretere apreciabil a vitezei de execuie a instruciunilor.


Unitatea logic i aritmetic (ULA)
Prelucrarea logic sau aritmetic a operanzilor sub form de cuvinte binare.
Lungimea cuvntului cu care opereaz ULA - criteriu de clasificare a microprocesoarelor.
Unitatea de comand (UC)
- Coordoneaz evoluia microprocesorului:
- Recunoate i decodific instruciunile
- Genereaz comenzi n vederea execuiei acestora:
o n interior - spre R+ALU
o n exterior - prin magistralele de adresa (MA), de date (MD) i de comand
(MC).

Funcionare sincron sincronizare cu semnalele furnizate de un generator de tact (GT).


Generatorul de tact:
M1
CLK
- oscilator pilotat de un cristal de cuar (XTAL) T1 T2 T3

Durata unui ciclu de tact - tCY - unitatea elementar de tCY = T


timp
Semnalul de tact pentru microprocesor

Starea main (T) - durata de timp n care are loc cea mai simpl operaie intern;
Ti = tCY (i = 1, 2, 3, ...).
Mulimea strilor main posibile - fixat n structura intern a UC.
Ciclul main (M) - succesiune finit de stri main (T1, T2, ...,Tk);
Corespunde operaiilor fundamentale de schimb de informaii n interiorul microprocesorului
sau ntre microprocesor i exterior (memorie sau porturi I/E):
- Citire din memorie;
- Scriere n memorie;
- Citire dintr-un port de intrare;
- Scriere ntr-un port de ieire.
- Operaii interne - transfer de informaii ntre registrele interne n paralel cu alte
cicluri
Primul ciclu main al unei instruciuni - ciclul de aducere a codului instruciunii din
memorie (Instruction Fetch Cycle). Durata unui ciclu main Tc=kT.

Ciclul instruciune (CI) - succesiunea de cicluri main Mj realizate pe durata execuiei


complete a unei instruciuni.
l l k
CI = Mj = Tij Durata de execuie a unei instruciuni TI=lkT
j=1 j=1 i=1

Durata de execuie a unei secvene de program - n funcie de durata unei stri main i de
durata fiecrei instruciuni componente.

12
2.3. Microprocesorul 8085A
I8085A P Intel de uz general de 8 bii; NMOS;
I8085AH (3MHz) I8085AH-2 (5MHz) I8085AH-1 (6MHz) HMOS (consum mai mic cu 20%)
MSM80C85AH (0,55MHz) Oki Semiconductor
Vcc
A15A8
GND
X1
X2 AD7AD0
CLK

HOLD IO/M
HLDA 8085A S1
S0
TRAP RD
INTR WR
RST 7.5
RST 6.5 ALE
RST 5.5 READY
INTA
SID RESET IN
SOD RESET OUT
Microprocesorul 8085 semnale la pini

Tipuri de semnale la pini


Alimentare: VCC = 5V;
Semnale de tact:
oscilator intern pilotat cu cristal de cuar conectat ntre X1 i X2;
generator de tact extern conectat pe X1;
fXTAL = 2 fCLK (6 MHz - AH, 10MHz AH-2, 12 MHz AH-1, 110MHz
MSM80C85AH)
CLK semnal de sincronizare furnizat n exterior, cu frecvena fXTAL/2;
Iniializare:
RESET IN - iniializare PC=0000h, CBB IE=0, CBB HLDA=0.
RESET ieire de resetare a altor dispozitive externe.
Magistral de adrese/date multiplexat n timp:
16 linii de adrese (A15A8, AD7AD0);
8 linii de date (AD7AD0)
Controlul transferului de date:
ALE (Address Latch Enable) - reine octetul inferior al adresei ntr-un registru extern.
Liniile RD , WR i IO/ M - controlul transferului datelor ntre P i dispozitivele
externe.
S0, S1 codific starea MD (Data Bus Status) n principalele cicluri de magistral:
S1 S0 00 01 10 11
Tip ciclu HALT WRITE READ FETCH
Controlul ntreruperilor
INTR, RST 5.5, RST 6.5, RST 7.5 i TRAP linii de prezentare a cererilor de
ntrerupere
INTA - linie de confirmare a acceptrii solicitrii de ntrerupere prezentate pe linia
INTR.
13
2.3.1. Structura intern a microprocesorului 8085A

INTA RST6.5 TRAP


INTR RST5.5 RST7.5 SID SOD

Comand Comand
ntreruperi I/E serial

Magistral intern de date (8 bii)

Acumulator Registru Bistabile Registru B (8) C (8)


A (8) temporar (8) condiii (5) instr. (8) D (8) E (8)
H (8) L (8)
Unitate SP (16)
logico- Decodif. PC (16)
aritmetic instr. i codif. Latch i
ciclu main inc./dec. adr.
+5V Corecie
GND zecimal
X1 Tact Bloc de secveniere i comand Tampon Tampon
X2 extern CONTROL STATUS DMA RESET adrese adrese/date

HOLD RESET
CLK RD WR S0 S1 A15A8 AD7AD0
OUT
READY ALE IO/M HLDA Magistrale de
RESET IN adrese i adrese/date
Microprocesorul 8085A structura intern

Unitatea aritmetic i logic

- un sumator paralel de 8 bii;


- un acumulator (A) de 8 bii, accesibil utilizatorului;
- un acumulator temporar de 8 bii, (ascuns) pentru memorarea primului operand;
- un registru temporar de 8 bii, (ascuns) folosit pentru cel de-al doilea operand;
Registrul accumulator (A)
- conine iniial operandul sau unul dintre cei doi operanzi de prelucrat
- reine rezultatul operaiilor logice i aritmetice
- este cel mai utilizat pentru manipularea operanzilor
- permite intrarea i ieirea datelor n format paralel (sau serie)
- sau serie, prin deplasarea bit cu bit dreapta /stnga

CY A7 . . . . . . A0

Structura i funcionarea registrului acumulator


- Operaiile de deplasare - un CBB (circuit basculant bistabil) auxiliar - se pot transfera
i testa biii A7, ..., A0 ai cuvntului din acumulator

14
- Fanioane sau bistabile de condiii (F - Flags):
o CY (CarrY) transport/mprumut
o AC (Auxiliary Carry) - transport/mprumut interdigit
o Z (Zero) rezultat zero al operaiilor
o S (Sign) semn al rezultatului
o P (Parity) paritate numr de bii 1 ai rezultatului
D7 D6 D5 D4 D3 D2 D1 D0
PSW A7 A6 A5 A4 A3 A2 A1 A0 S Z - AC - P - CY

Structura cuvntului de stare a programului

Cuvntul de stare al programului - PSW - Program Status Word, de 16 bii.

Operarea logic - bit cu bit de acelai rang - algebra Boole.

A = (an-1 an-2 ... a1 a0 ), B = (bn-1 bn-2 ... b1 b0)


A A B = (cn-1 cn-2 ... c1 c0)
unde:
ci = ai bi
ai, bi, ci {0, 1}, i= 0, n - 1
= , , sau

Operarea aritmetic - n baza 2: operaiile: +, -

Registrele microprocesorului
- PC - Program Counter numrtorul de program,;
- SP - Stack Pointer - indicatorul vrfului stivei;
- B, C, D, E, H i L - registre generale, utilizate individual sau n pereche (B-C, D-E, H-L)
- un registru pereche W-Z (ascuns), registru temporar pentru operaii interne.

PC - incrementat/decrementat nainte de a fi transferat n registrul tampon de adres.

Registrele comunic cu magistrala intern printr-un multiplexor, adresat printr-un circuit


de selecie, sub controlul blocului de secveniere i comand.

Magistrala intern de date - izolat de magistrala extern, D7D0, prin intermediul unui
registru tampon bidirecional, care amplific semnalele la nivelul unei sarcini TTL i asigur
memorarea temporar a datelor transmise de microprocesor.

Registrul tampon faciliteaz intrarea datelor i a codurilor instruciunilor.

Registrul de instruciuni primete codul operaiei la nceputul execuiei unei instruciuni.

Blocul de decodificare a instruciunilor - memorie ROM, programat astfel nct s permit


recunoaterea codurilor instruciunilor i odificare a ciclurilor main care trebuie realizate
n etapa de execuie.

Blocul de secveniere i comand - desfurarea temporal a ciclurilor main aferente


execuiei unei instruciuni, sincronizata cu semnalul de tact generat de un oscilator intern.

15
Stiva zon de memorie RAM, cu acces de tip LIFO (Last In, First Out)
- Stocarea temporar a coninutului registrelor interne;
- Salvarea/ncrcarea adresei de revenire la execuia instruciunilor de apel/revenire;
- Transferul de parametri ntre programul apelant i subrutina apelat;

Adresarea informaiilor din stiv- registrul SP Stack Pointer indicatorul vrful stivei

SP- conine n orice moment adresa vrfului stivei - adresa ultimei locaii ocupate din stiv

Stiva crete prin decrementarea SP (n sens invers lui PC incrementare)

Operaii admise depunere i extragere


Adresa RAM
- Registre pereche sau cuvinte de 16 bii: MIN
o BC, DE, HL, PC, PSW
Memorie
- Execuie 2 cicluri succesive de scriere/citire de date
:
- Adresa este furnizat de SP :
- Ordinea - convenia Intel
- Adresa mai mic octetul mai puin semnificativ
Accesul n stiv implicit sau explicit
- Acces explicit instruciuni PUSH, POP Stiv
SP
- Acces implicit CALL, RET, XTHL MAX

2.3.2. Iniializarea microprocesorului

Comportare determinist aducerea microprocesorului n starea iniial.

Vcc

RESET D R
P
RESET
C
trigger
Schmitt

Schema de iniializare hardware a microprocesorului 8085A

Iniializare hardware RESET - foreaz unele registre interne ale microprocesorului ntr-o
stare bine definit.
Resetarea la alimentare i la cerere.
Grupul RC - durata necesar pentru semnalul RESET.
Trigger-ul Schmitt formeaz frontul semnalului de resetare.

16
2.3.3. Regimuri de funcionare
Regimul de funcionare normal
Execuie secvenial a instruciunilor programului
Execuie secvenial a ciclurilor main (CM)
Execuie secvenial a microoperaiilor specifice fiecrui ciclu main
Testarea strii liniei READY - sincronizare cu dispozitivele externe
n fiecare ciclu main este testat starea liniei READY;
Dac READY=1 - dispozitivul este pregtit pentru transfer;
Dac READY=0 se intr n regimul de ateptare.
Testarea apariiei unei cereri de cedare de magistral
Trecerea n 1 a liniei HOLD este reinut n bistabilul intern
HLDA;
La sfritul fiecrui CM este testat starea acestui bistabil;
Dac CBB HLDA este setat, se intr n regimul de cedare
magistrale.
Testarea apariiei unei cereri de ntrerupere n ultimul CM al unei
instruciuni
Se testeaz dac exist o cerere de ntrerupere valid.
Dac exist o cerere valid, se intr n regimul de ntrerupere.
Execuia instruciunii HLT (Halt)
Se intr n regimul de oprire (HALT)

Regimul de ateptare sincronizarea transferului dintre P i dispozitive externe mai lente


Se introduc perioade de ateptare TW;
Se testeaz starea liniei READY n fiecare perioad TW;
Cnd READY este gsit activ, se revine n regimul de funcionare normal.
Regimul de cedare de magistrale - (regimul HOLD):
Un alt dispozitiv solicit prin HOLD=1 accesul la magistrala sistemului;
Cererea este memorat ntr-un bistabil intern (HLDA - HoLD Acknowledge flip-flop);
P cedeaz MA, MD i MC (HZ) i confirm prin semnalul HLDA=1;
La dispariia cererii (HOLD=0), bistabilul intern este resetat i P reia controlul MS.
Regimul de ntreruperi
Se trece la execuia primei instruciuni a rutinei de tratare a ntreruperii:
furnizat de dispozitivul solicitant la activarea de ctre P a liniei INTA
(INTR)
este predefinit, fixat n hardware, fiind cunoscut de P (TRAP, RST).
Regimul de oprire
P i trece n starea HZ liniile de adrese, date i o parte dintre liniile de control;
Se execut cicluri HALT succesive.
La apariia unei cereri de cedare de magistrale, se intr n regimul HOLD.
La revenirea din regimul HOLD, se continu cu cicluri HALT.
La apariia unei cereri de ntrerupere, se intr n regimul de ntrerupere.
La revenirea din ntrerupere se continu cu instruciunea care urmeaz lui HLT.
La resetare, se intr n regimul de funcionare normal.
17
2.3.4. Secvenierea intern a operaiilor
Execuia unei instruciuni: 15 cicluri main.
TRESET RESET
RESET
HALT
T1
HALT
READY
(READY+BI) TWAIT HOLD VALIDINT
T2
HOLD
THALT
VALIDINT
Da
HOLD=1
SET CBB RESET
? SET CBB HLDA CBB HALT
Nu
HLDA
SET CBB INTA
OF CC=6 Da RESET CBB IE
T3 T4 HOLD=1
?
CC=4 Nu SET
CBB HLDA
T6 T5
CBB Da
HLDA=1
Nu THOLD HOLD
Ultimul HOLD
Nu
CM al instruciunii RESET
? CBB HLDA
Da
Nu Da
VALIDINT=1 HALT=1
? ?
Da Nu
SET CBB INTA
RESET CBB IE

Diagrama de tranziie a strilor la microprocesorul 8085A


Tipuri de cicluri main
Stare Comand
Tip ciclu
S1 S0 IO/ M RD WR INTA
OF (Opcode Fetch) 1 1 0 0 1 1
MR (Memory Read) 1 0 0 0 1 1
MW (Memory Write) 0 1 0 1 0 1
IOR (I/O Read) 1 0 1 0 1 1
IOW (I/O Write) 0 1 1 1 0 1
INA (INterrupt Acknowledge) 1 1 1 1 1 0
BI (Bus Idle): DAD 1 0 0 1 1 1
Ack. TRAP, RST 1 1 1 1 1 1
HALT 0 0 HZ HZ HZ 1

18
Secvenierea operaiilor n ciclurile main
M1 M2 . . . M5
T1 T2 T3 T4 T5, 6 T1 T2
CLK

A15A8 PCH NEDEF. (PC + 1)H


OUT IN OUT IN
AD7AD0 PCL D 7 D0 (PC+1)L D7 D0

ALE

IO/M

S1 , S0 S1 = S0 = 1

RD

READY
Adrese Date Decodificare i Adrese Date t
execuie
Diagrama de semnale pentru un ciclu Opcode Fetch

M1 M2 M3 M4
T1 T2 T3 T4 T1 T2 T3 T1 T2 T3 T1 T2 T3
CLK

IO/M,
S1, S0 ( 0,1,1) ( 0,1,0 ) ( 0,1,0 ) ( 0,0,1 )

ALE

A15A8 PCH (PC+1)H (PC+2)H ADH

OUT IN OUT IN OUT IN OUT OUT


AD7AD0 PCL OPCODE (PC+1)L ADL (PC+2)L ADH ADL ACC.

Date de la Date de la
memorie memorie
RD

WR

OF MR MR MW t

Secvenierea operaiilor la execuia instruciunii STA addr

19
M1 M2 M3
T1 T2 T3 T4 T1 T2 T3 T1 T2 T3
CLK

IO/M,
S1, S0 ( 0, 1, 1) ( 0, 1, 0 ) ( 1, 1, 0 )

ALE

A15A8 PCH (PC+1)H PORT

OUT IN OUT IN OUT IN


AD7AD0 PCL OPCODE (PC+1)L PORT PORT
Adresa port Date de la
port
RD

WR

OF MR RP

Secvenierea operaiilor la execuia instruciunii IN port

20
3. Conectarea memoriei i a dispozitivelor de I/E
ntr-un sistem cu microprocesor 8085

3.1. Demultiplexarea magistralei de adrese/date: AD7AD0

AD7AD0, ALE A7A0, D7D0 - 74HC373 sau I8212


U1 U2
LE - Latch Enable
3 2 - se conecteaz la ALE 3 4
D1 Q1 5 D1 O1 6 STB - Strobe
4 5
7 D2 Q2 6 de la 8085 7 D2 O2 8
8 D3
D4
Q3
Q4
9 LE=1: transparent 9 D3
D4
O3
O4
10 DS1 - Device Select 1
13 12 16 15
D5 Q5 LE=0: zvorre 18 D5 O5 17
DS2 - Device Select 2
14 15
17 D6 Q6 16 20 D6 O6 19 MD - Mode
D7 Q7 22 D7 O7 21
18 19
D8 Q8 OE - Output Enable D8 O8 CLR - Clear
11 11 23
1 LE - conectat la HLDA STB INT
OE Pentru detalii vezi
de la 8085, valideaz 1
13 DS1 bibliografia
74HC373
ieirile cnd HLDA=0 DS2
recomandat
(cnd 8085 e master). 14
CLR
2
MD

Driver / latch unidirecional, Circuit multifuncional, unidirecional, cu 8


8212
cu 8 linii cu trei stri, linii cu trei stri,
cu ieiri neinversate cu ieiri neinversate

3.2. Amplificarea magistralelor

Magistrala de adrese sau semnale de comand (semnale unidirecionale)


U4
Driver unidirecional, cu 8 linii cu trei stri, cu ieiri neinversate
2 18
3 A1 Y1 17
A2 Y2
4
5 A3 Y3
16
15
G1 , G 2 - semnale de validare a ieirilor Y
6 A4 Y4 14
7 A5 Y5 13
8 A6 Y6 12
9 A7 Y7 11 Liniile Ai se conecteaz la liniile de adresa / comand ale
A8 Y8
microprocesorului
1
19 G1
G2
Liniile Yi magistrala de adrese sau linii de comand amplificate
74HC541

Magistrala de date (semnale bidirecionale)


U6
Driver bidirecional, cu 8 linii cu trei stri
2 18
3 A0 B0 17
4 A1 B1 16 G - semnal de validare a ieirilor Bi
A2 B2
5
A3 B3
15 DIR semnal care indic sensul de transfer al datelor:
6 14
7 A4 B4 13 DIR=1: AB
8 A5 B5 12
A6 B6 DIR=0: BA
9 11
A7 B7
1
DIR Liniile Ai se conecteaz la liniile de date ale microprocesorului
19
G
Liniile Bi magistrala de date amplificat
74LS245

21
3.3. Generarea semnalelor de pe magistrala de comand

IO/ M , RD , WR MEMR , MEMW , I/OR , I/OW - DCD sau DMUX 3/8

C B A 74HC138
A2 A1 A0 I8205

IO / M RD WR Semnale de comand
0 0 1 MEMR O1 Y1
0 1 0 MEMW O2 Y2
1 0 1 I / OR O5 Y5
1 1 0 I / OW O6 Y6
U7 U3

1 15 Liniile de validare, de tip G (Gate) sau E 1 15


2 A Y0 14 2 A0 O0 14
3 B Y1 13 (Enable) se conecteaz la microprocesor 3 A1 O1 13
C Y2 12 astfel nct ieirile s fie active numai dac A2 O2 12
6 Y3 11 4 O3 11
4 G1 Y4 10
HLDA=0 (adic numai atunci cnd 5 E1 O4 10
5 G2A Y5 9 magistrala este controlat de 6 E2 O5 9
G2B Y6 E3 O6
Y7
7 microprocesor). O7
7

74HC138 8205

3.4. Interfaarea cu memoria i dispozitivele de I/E

Logica de decodificare i selecie - varianta cu demultiplexoare

74HC541 16
X1 X2 Y8Y
81
VCC A15A8 A8A1 MA
G1
G2 E DMUX MEM E DMUX I/E
8085
RESET IN HLDA OE
CS CS
Q8Q1
AD7AD0 D8D1 Dispozitive
HOLD 74HC373 Memorie de I/E
CLK
TRAP ALE LE X2 WR
RD RD WR D70 RESET
D70
RST 7.5 INTA
CLK
RST 6.5
RESET
RST 5.5 OUT 74LS245 AD7AD0 MD
INTR A7A0
SOD B7B0

SID G
DIR

G1 G2
IO/M A3 Y3
IO/M
RD A2 Y2
INTA WR RD MC
A1 Y1
74HC541 WR

22
Logica de decodificare i selecie - varianta cu decodificatoare

74HC541
X1 X2 Y8Y
81
VCC A15A8 A8A1 16 MA
G1
G2 DCD MEM DCD I/E
8085
RESET IN HLDA OE CS
Q8Q1 CS
AD7AD0 D8D1 Dispozitive
HOLD 74HC373 Memorie de I/E
CLK
TRAP ALE LE X2 WR
RD D70 RD WR D70 RESET
RST 7.5 INTA
CLK
RST 6.5
RESET
RST 5.5 OUT 74LS245 AD7AD0 MD
INTR A7A0
SOD B7B0
SID G
DIR

E1
IO/M MEMW
2A2 8205 MEMR
RD A 1 MC
I/OW
INTA WR 1A0 E3 E2
I/OR
VCC

3.5. Tipuri de memorie utilizate n sistemele cu microprocesoare

Nevolatil ROM read only memory:

- PROM Programmable ROM (OTP One Time Programmable)

- EPROM Eraseable PROM n afara sistemului tergere cu UV, programator de


memorii

- EEPROM Electrically Eraseable PROM tergere i reprogramare n sistem sau n


afara acestuia

- FLASH capaciti mari - tergere i programare n sistem sau nafara acestuia

Volatil RAM random access memory

- SRAM RAM static capacitate mic, nu necesit remprosptare

- DRAM RAM dinamic capacitate mare - necesit remprosptarea periodic a


informaiilor memorate (automat de remprosptare)

EEPROM utilizat pentru date de configurare a sistemului, cu acces:

- paralel

- serial

23
3.6. Transferul de informaie ntre memorie i microprocesor
Scrierea datelor n memorie

n
Linii adres An-1 A0 A0
- n linii de adrese DISP.
Linii date Dm-1 D0 An-
- m linii de date D0 MEM.
tDS tDH
Linie Dm-1
- o linie de comand comand m
a scrierii - WR tWACC TWP t
MEM
(Write)
Succesiunea semnalelor la scrierea ntr-un dispozitiv de memorie

a) pregtirea memoriei
MA - se aplic adresa pe liniile An-1A0;
MD (R) - se aplic datele pe liniile Dm-1D0;

b) nscrierea informaiei
MC MEMW - dup tDS (Data Set), se activeaz MEMW , pe durata TWP (Write Pulse);
MEM() (MD) - dup dezactivarea MEMW , datele se menin un timp tDH (Data Hold)

Timp de acces la scriere - tWACC (Write ACCess time) - intervalul dintre aplicarea adresei i
activarea semnalului de scriere.
tWACC 200 ns - memorii CMOS; tWACC 30 ns pentru memorii bipolare (TTL).

Citirea datelor din memorie

n
Linii adres An-1 A0
A DISP.
Linii date Dm-1 D0 An-1
D0 MEM.
Linie Dm-1
comand m
tRACC t
RD
Succesiunea semnalelor la citirea dintr-un dispozitiv de memorie
a) pregtirea memoriei
MA - se depune adresa pe liniile An-1A0;
MC MEMR - se comand citirea datei (pe linia RD ), dup un timp tRACC
b) citirea propriu-zis
MD MEM () - memoria depune data pe liniile Dm-1D0
R (MD) microprocesorul reine data de pe MD n registrul intern R.

Linia de comand de tip R / W - se conecteaz la MEMW .


De regul tRACC>tWACC, din acest motiv tRACC se ia n consideraie la proiectarea sistemului.

Transfer corect cu memoria: tACC tCY.


n caz contrar este necesar o logic de ateptare.

24
3.7. Organizarea memoriei

Etapele proiectrii subsistemului de memorie:


1. Dimensiunea MEMP (MEMD) numrul cel mai mic de circuite ROM (RAM) cu tACC
tCY.

2. Harta memoriei spaiul de adresare - spaiul ocupat de fiecare circuit sau grup.
- Adresa primei instruciuni executate dup resetarea P amplasare MEMP.

3. Tabelul de adresare i selecie - utilizarea liniilor MA pentru a evita un conflict logic.


- Blocurile de memorie contiguitate;
- Liniile inferioare ale MA conectate la liniile de adres ale circuitelor de memorie;
- Liniile superioare imediat urmtoare ale MA selectarea circuitelor de memorie.
4. Sinteza i implementarea funciilor de selecie individual a circuitelor de memorie.

5. Realizarea schemei de conectare a dispozitivelor de memorie la MS.

Exemplu: Sistem cu 8085, cu fXTAL=4MHz, 48 Ko MEMP i 8Ko MEMD, cu EPROM 16Ko


(27128), EPROM 32Ko (27256) i SRAM 8 Ko (6164), cu tACC < 330 ns.
1. Un numr de 2 circuite EPROM: EPROM1 - 8 bii
27256 (32Ko) i EPROM2 - 27128 (16Ko), ADRESA
respectiv 1 circuit SRAM - 6164 (8Ko). 0000h
EPROM 1
2. Harta memoriei (32Ko)
Adresa de start dup resetarea P = 0 MEMP
(valoarea iniial a numrtorului de program) 7FFFh
8000h EPROM 2
EPROM1: 32 Ko = 32 210 octei = (16Ko)
= 215 combinaii de adres 15 linii de adres BFFFh MEMD
C000h SRAM (8Ko)
DFFFh
Adresa primei locaii = 000 0000 0000 0000 b = 0000h E000h
SPAIU LIBER
(combinaia cu 15 bii de 0) FFFFh
Adresa ultimei locaii = 111 1111 1111 1111 b = 7FFFh
(combinaia cu 15 bii de 1)
EPROM2: 16 Ko = 16 210 octei = = 214 combinaii de adres 14 linii de adres ultima
combinaie binar = 11 1111 1111 1111 b = 3FFFh.

Adresa primei locaii = 7FFFh + 1 = 8000h.


Adresa ultimei locaii = 8000h + 3FFFh = BFFFh.

SRAM: 8 Ko = 8 210 octei = 213 combinaii de adres 13 linii de adres ultima combinaie
binar = 1 1111 1111 1111 b = 1FFFh.

Adresa primei locaii = BFFFh + 1 = C000h.


Adresa ultimei locaii = C000h + 1FFFh = DFFFh.

25
3. Tabelul de adresare i selecie - modul de utilizare a liniilor de adres

Numrul de linii de adres folosite pentru selecie: numrul maxim de linii rmase neutilizate
la adresarea memoriei (16-13=3 linii).

Linii pentru selecie Linii folosite pentru


Tipul Zona de cu decodificare adresarea intern
memoriei memorie ocupat
A15 A14 A13 A12 A11 . . . . . . A1 A0

EPROM1 0000 7FFFh 0 ......


EPROM2 8000 BFFFh 1 0 ......
SRAM C000 DFFFh 1 1 0 ......

4. Sinteza semnalelor de selecie prin decodificare


Doar A15, A14 i A13 se modific n spaiul de adresare, n funcie de zon.
Decodificare - complet - se decodific A15, A14 i A13 cu un DCD 3/8
- incomplet se decodific doar A15 i A14 cu un DCD 2/4 sau cu pori logice
Separarea spaiilor de adresare:
- la nivelul semnalelor de control ( MEMR , MEMW / IOR , IOW ) cu decodificatoare.

- la nivelul logicii de decodificare i selecie ( M / IO ) cu demultiplexoare.

5. Schema de conectare a dispozitivelor de memorie la MS

A15 A0 A14 MA A14 A15


A0
IO/M E A0 A1 8 bii
A15 A14
DCD 2/4
0 1 2 3
0 0 EPROM1
(32Ko)
0 1
D7 D0 MD

15 1 0 EPROM 2
CS 14 CS 13 CS (16Ko)
EPROM1 EPROM2
SRAM
A14A0 A13A0
A12A0 SRAM (8Ko)
OE OE R/W 1 1
SRAM (8Ko)
RD
WR

Selecia cu decodificare complet cu DMUX 2/4

26
A15 A0 A14 MA A14 A15
A0
A0 A1 8 bii
15 A15 A14 A13
DCD 3/8
0 1 2 3 4 5 6 7 0 0 0
0 0 1
EPROM1
0 1 0 (32Ko)
D7 D0 MD
0 1 1
1 0 0 EPROM2
CS 14 CS 13 CS (16Ko)
EPROM 1 EPROM 2 1 0 1
SRAM
A14A0 A13A0
A12A0
1 1 0 SRAM (8Ko)
OE OE R/W
1 1 1 Spaiu liber
MEMR
MEMW

Selecia cu decodificare incomplet cu DCD 3/8

A15 A0 A14 MA A15


A14
A0
15 A15 A14 8 bii

EPROM1
0 0
(32Ko)
MD 0 1
D7 D0

1 0 EPROM 2
CS 14 CS 13 CS (16Ko)
EPROM 1 EPROM 2
SRAM
A14A0 A13A0
A12A0
SRAM (8Ko)
OE OE R/W 1 1
SRAM (8Ko)
MEMR
MEMW

Selecia cu decodificare incomplet cu circuite SSI (pori logice)

27
3.8. Transferul de informaie mtre microprocesor i porturile de I/E

Locaii prin care se poate realiza un schimb de informaie ntre P i dispozitivele de I/E.

Transferul de informaie dintre UCP i porturile I/E


Scrierea datelor ntr-un PE

p
Linii adres Ap A1 A1
- p linii de adrese Spaiu de
Linii date Dm D1 Ap adresare
- m linii de date D1 porturi
tDS tDH
Linie comand Dm de I/E
- o linie de comand a I/OW m
scrierii - I/OW tWACC TWP t
WR
(Write)

Succesiunea semnalelor la scrierea ntr-un port de ieire

a) pregtirea portului
MA - se aplic adresa pe liniile ApA1;
MD (R) - se aplic datele pe liniile DmD1;

b) nscrierea informaiei
MC I/OW - dup tDS (Data Set), se activeaz I/OW , pe durata TWP (Write Pulse);
PE() (MD) - dup dezactivarea I/OW , datele se menin un timp tDH (Data Hold).

Linia de comand WR - se conecteaz la I/OW .

Citirea datelor dintr-un port de intrare

p
Linii adres Ap A1 A1
Spaiu de
Linii date Dm D1 Ap adresare
D1 porturi
Linie de I/E
Dm
comand m
tRACC t
RD
a) pregtirea portului
MA - se depune adresa pe liniile ApA1;
MC I/OR - se comand citirea datei, dup un timp tRACC

b) citirea propriu-zis
MD PI () portul de intrare depune data pe liniile DmD1
R (MD) microprocesorul reine data de pe MD.

Linia de comand RD - se conecteaz la I/OR .

28
3.9. Tehnici de intrare-ieire
Modaliti de realizare a transferului de date de la /spre dispozitivele de I/E.
Datele pot fi transferate la momente care depind de dispozitivele de I/E.
Datele devin disponibile pentru transfer cu o rat care depinde de dispozitivele de I/E.
Datele trebuie s poat fi transferate cu o rat cel puin egal cu cea cu care ele devin
disponibile.

Transferul programat I/E


Detectarea momentului n care acestea solicit sau sunt pregtite pentru un transfer I/E.
Rularea periodic, de ctre P, a unei secvene de program de interogare a strii disp. I/E.

MICRO-
PROCESOR INTEROGARE

I/E 1 DA Transfer solicitat


? de I/E 1
? NU
I/E 1
ROM DA Transfer solicitat
I/E 2
? ? de I/E 2
I/E 2
NU
RAM

? I/E n DA Transfer solicitat


I/E n
? de I/E n
NU
RETURN

Avantaje:
- simplitate;
- nu necesit dispozitive suplimentare;
Dezavantaj:
- timp pierdut cu interogarea dispozitivelor care nu au nimic de transferat.

Transferul I/E cu utilizarea ntreruperilor


- P este atenionat atunci cnd un dispozitiv
dorete sau permite transferul de date. INT
MICRO-
- ntrerupe activitatea curent pentru a efectua PROCESOR
transferul; INTA
IRQ1
- reia activitatea ntrerupt din punctul n care Controler
a rmas. ntreruperi
Cereri multiple de transfer - controler de ROM IRQn
ntreruperi tratarea solicitrilor multiple. I/E 1
Recunoaterea sursei prin interogare sau
printr-o informaie furnizat de controlerul de RAM
ntreruperi - vector de ntrerupere.
Vectorul de ntrerupere: I/E n
- adresa rutinei de tratare;
- adresa de memorie la care se afl stocat
adresa rutinei de tratare

29
Transferul I/E prin acces direct la memorie

RAM

P
MD

BRQ BACK

Controler I/E 1 I/E n


DMA
BRQ BRQ

Trecerea P n regimul de cedare de magistrale.

Controlerul DMA - gestioneaz solicitrile dispozitivelor de I/E


- arbitreaz solicitrile simultane pe baza prioritilor de servire
- lanseaz o cerere, BRQ, ctre P.
Microprocesorul: - i suspend activitatea;
- rspunde prin activarea semnalului BACK
- genereaz adresele i semnalele de control pentru memorie i
dispozitivul I/E solicitant.

Transferul are loc pe magistrala de date, direct ntre memorie i dispozitivul I/E.
Tehnica DMA asigur cea mai ridicat rat de transfer I/E.

30
4. Programarea microprocesorului 8085A n limbaj de asamblare
msb lsb
4.1. Limbajul de asamblare al byte 1 D7 OPCODE
D6 D5 D4 D3 D2 D1 D0
microprocesorului 8085A
a) instruciune de 1 octet
Limbaj simbolic - instruciuni
executabile byte 1 D7 D6 D5 D4 D3 D2 D1 D0 OPCODE

4.1.1. Formatul instruciunilor 8-BIT DATA/


byte 2 D7 D6 D5 D4 D3 D2 D1 D0 ADDRESA

Organizare pe octet: b) instruciune de 2 octei


- 1, 2 sau 3 octei
- n ordinea cresctoare a byte 1 D7 D6 D5 D4 D3 D2 D1 D0 OPCODE
adreselor (PC e incrementat)
byte 2 D7 D6 D5 D4 D3 D2 D1 D0 16-BIT
Primul octet opcod generalizat DATA /
ADDRESA
Urmtorii octei operanzi sau byte 3 D7 D6 D5 D4 D3 D2 D1 D0
adrese de operanzi
c) instruciune de 3 octei
Formatul instruciunilor la P 8085

4.1.2. Moduri de adresare


6 moduri de adresare:
Adresare implicit (cu registru specific):
- opcodul indic implicit localizarea operandului;
- operandul se afl ntr-unul din registrele interne speciale ale P (A, PC, SP) sau n CY.
Exemple:
ADD B ; Add B with accumulator: (A)(A)+(B) operand localizat implicit n
acumulator.
STC ; Set Carry: CY 1 - fanionul CY adresat implicit.
Avantaje:
- reducerea dimensiunii codului;
- micorarea duratei de execuie.

Adresarea registrelor:
- operandul se poate afla n unul din registrele interne ale P (A, B, C, D, E, H sau L);
- instruciunea specific explicit registrul n care se afl operandul.

D7 D6 D5 D4 D3 D2 D1 D0
DDD sau SSS Registru
opcod
O O D D D S S S generalizat 0 0 0 B
0 0 1 C
0 1 0 D
cod cod registru cod registru 0 1 1 E
operaie destinaie surs
1 0 0 H
1 0 1 L
1 1 0 M (*)
1 1 1 A

Exemplu:

31
MOV r1,r2 ; Move r2 to r1: (r1) (r2), r1 i r2 - oricare din registrele A, B, C, D, E, H i L;
Avantaje suplimentare: - flexibilitate sporit.

Adresarea imediat:
- operandul este o constant;
- operandul (8 sau 16 bii) e dispus n memoria program, imediat dup codul operaiei;
- operandul este adresat cu registrul PC.
Exemple:
MVI A,data8 ; Move Immediate data8=byte2 into accumulator: (A) (byte 2)
LXI H,data16 ; Load register pair HL with data16= byte3::byte2: (L) byte2, (H) byte 3
- sunt necesare nc 1 sau 2 cicluri de citire memorie pentru ncrcarea operandului.
- se utilizeaz la iniializarea registrelor interne cu valori predefinite.

Adresarea direct:
- operandul este o variabil de 8 sau 16 bii, amplasat oriunde n memorie, la o adres
stabilit la momentul asamblrii programului;
- octeii 2 i 3 ai instruciunii conin adresa la care se afl operandul;
- adresa operandului este ncrcat n W-Z n dou CM de citire memorie;
- urmeaz adresarea operandului cu W-Z i efectuarea transferului propriu-zis.

Exemple:
LDA addr ; Load Accumulator from addr=byte3::byte2: (A) (byte3::byte2)
SHLD addr ; Store H and L at addr=byte3::byte2: (byte3::byte2)(L),
; (byte3::byte2 + 1) (H)

- adresa variabilei trebuie cunoscut la momentul scrierii programului (alocare static)


- se utilizeaz i n cazul dialogului cu dispozitivele I/E: adresele porturilor de I/E sunt
cunoscute.

Exemple:
IN port ; Input from port=byte2: (A) (byte 2)
OUT port ; Output to port=byte2: (byte 2) (A)

- Adresa portului - 8 bii - este ncrcat, n cel de-al doilea ciclu al instruciunii (dup
FETCH), n ambele registre, W i Z.
- Coninutul acestor dou registre se depune, ca i n cazul adresrii memoriei, pe liniile
A15A0.
Consecine:
- porturile I/E pot fi adresate att pe liniile inferioare, A7A0, ct i pe liniile superioare
ale magistralei de adres, A15A8;
- ntruct liniile inferioare sunt folosite i pentru adresarea memoriei, pentru adresarea
porturilor se prefer de regul A15A8, din considerente de ncrcare a MA (fan-out).

Adresarea indirect sau cu registru pereche:


- operandul este o variabil de 8 sau 16 bii, amplasat oriunde n memorie, la o adres
calculat la momentul execuiei programului;
- adresa operandului se afl deja ntr-un registru pereche;
- urmeaz adresarea operandului cu registrul pereche i efectuarea transferului.

32
- permite referirea la operanzi din memorie a cror adres nu este cunoscut la
momentul scrierii programului, ci se determin la momentul execuiei acestuia,
permind lucrul cu variabile alocate dinamic n spaiul de memorie.
- cele mai multe instruciuni cu adresare indirect folosesc registrul pereche H (format
din registrele simple H i L), referit n instruciuni prin notaia M (SSS sau DDD =
1 1 0).

Exemple:
MOV A,M ; Move memory to Accumulator: (A) ((H)(L))
LDAX rp ; Load Acc. indirect from memory addresed with register pair rp: (A) ((rp)).
STAX rp ; Store Acc. indirect to memory addresed with register pair rp: ((rp)) (A)
PUSH rp ; Push rp into stack
POP rp ; Pop rp from stack

Adresarea combinat:
- utilizarea mai multor moduri de adresare n cadrul aceleiai instruciuni.

Exemple:
LDA addr ; implicit (Acc.) + direct (addr)
MOV A,M ; la registru (A) + indirect (M)
CALL addr ; direct (addr) +indirect (SP)
RST n ; direct (n) + indirect (SP)

4.1.3. Setul de instruciuni


Toate instruciunile P 8085 au codul operaiei pe un singur octet.
Din totalul celor 28 = 256 de combinaii posibile se folosesc numai 246.
80 de tipuri de nume (mnemonici) de instruciuni
74 de tipuri de operaii

Categorii de instruciuni:
a) instruciuni de transfer - copierea datelor ntre registre sau ntre registre i memorie;
aceste instruciuni nu afecteaz fanioanele de condiie.
b) instruciuni aritmetice - operaii aritmetice de adunare i scdere sau de incrementare/
decrementare cu cuvinte din registre sau din memorie. Instruciunile din aceast categorie
afecteaz toate fanioanele de condiii.
c) instruciuni logice - operaii logice asupra cuvintelor binare. Toi indicatorii de condiie
sunt afectai (CY i AC sunt resetai).
d) instruciuni de ramificare - schimbarea succesiunii uniforme de execuie a instruciunilor.
Ramificrile pot fi necondiionate sau condiionate de valorile fanioanelor.
Exist 8 condiii distincte referitoare la valorile fanioanelor Z, CY, P i S:
NZ (Not Zero) - rezultatul ultimei operaii aritmetice/logice e diferit de 0 (Z=0);
Z (Zero) - rezultatul este 0 (Z=1);
NC (Not Carry) - nu a existat transport/mprumut(CY=0);
C (Carry) - a existat transport/mprumut (CY=1);
PO (Parity Odd) - rezultatul are un numr impar de bii 1 (P=0);
PE (Parity Even) - numrul de bii 1 al rezultatului este par (P=1);
P (Plus) - n acumulator se afl un numr nenegativ (S=A7=0);
M (Minus) - n acumulator se afl un numr negativ (S=A7=1).
e) instruciuni de lucru cu stiva, de I/E i de comand a microprocesorului permit accesul
la stiv, la porturile de I/E i controleaz regimurile microprocesorului.

33
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri

Instruciuni de transfer

1 MOV r1,r2 MOVe reg. to reg. (r1 )(r2) la registru - 1/4

2 MOV r,M MOVe Mem. to reg. (r)((H)(L)) ind.+la reg. - 2/7

3 MOV M,r MOVe reg. to Mem. ((H)(L))(r) la reg.+ind. - 2/7

4 MVI r,data8 MoVe to reg. Immed. (r)data8 imed.+la reg. - 2/7

5 MVI M,data8 MoVe to Mem. Immed. ((H)(L))data8 imed.+ind. - 3/10

(rL)low(data16)
6 LXI rp,data16 Load reg. pair Immed. imed.+la reg. - 3/10
(rH)high(data16)

7 LDA addr LoaD Acc. direct (A)(addr) direct+impl. - 4/13

8 STA addr Store Acc. direct (addr)(A) impl.+dir. - 4/13

(L)(addr)
9 LHLD addr Load H and L Direct direct+impl. - 5/16
(H)(addr+1)

(addr)(L)
10 SHLD addr Store H and L Direct impl.+direct - 5/16
(addr+1)(H)

11 LDAX rp LoaD Acc. indirect (A)((rp)), rp=B,D ind.+impl. - 2/7

12 STAX rp Store Acc. indirect ((rp))(A), rp=B,D ind.+impl. - 2/7

13 XCHG eXCHanGe H,L with D,E (H)(D), (L)(E) implicit - 1/4

34
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri

Instruciuni aritmetice

14 ADD r ADD reg. to acc. (A) (A)+(r) impl.+la reg. toate 1/4

15 ADD M ADD Mem. to acc. (A)(A)+((H)(L)) impl.+ind. toate 2/7

16 ADI data8 ADd Immed. to acc. (A)(A)+data8 impl.+imed. toate 2/7

17 ADC r ADd reg. to A with Cy (A)(A)+(r)+(CY) impl.+la reg. toate 1/4

18 ADC M ADd mem. to A with Cy (A)(A)+((H)(L))+(CY) impl.+ind. toate 1/4

19 ACI data8 Add Immed. to A with CY (A)(A)+data8+(CY) impl.+imed. toate 2/7

20 SUB r SUBtract register from A (A)(A) - (r) impl.+la reg. toate 1/4

21 SUB M SUBtract Memory from A (A)(A) - ((H)(L)) impl.+ind. toate 2/7

22 SUI data8 Subtract Immed. from A (A)(A) - data8 impl.+imed. toate 2/7

23 SBB r SuB. reg. fr. A w. Borrow (A)(A) - (r) - (CY) impl.+la reg. toate 1/4

24 SBB M SuB. Mem. fr. A with Borr. (A)(A)-((H)(L))-(CY) impl.+ind. toate 2/7

25 SBI data8 Sub. Imm. Fr. A with Borr. (A)(A) - data8 - (CY) impl.+imed. toate 2/7

26 INR r INcRement register (r)(r) + 1 la registru toate 1/4

27 INR M INcRement Memory ((H)(L))((H)(L)) + 1 indirect toate 3/10

28 DCR r DeCRement register (r)(r) - 1 la registru toate 1/4

29 DCR M DeCRememt Memory ((H)(L))((H)(L)) - 1 indirect toate 3/10

(rp)(rp)+1,
30 INX rp INcrement register pair la registru - 1/6
rp=B,D,H, sau SP

31 DCX rp DeCrement register pair (rp)(rp) - 1 la registru - 1/6

32 DAD rp ADD rp to HL (H)(L)(H)(L)+(rH)(rL) impl.+la reg. CY 3/10

(A3 A0)>9 sau (AC)=1


Decimal Adjust (A) (A) + 6;
33 DAA implicit toate 1/4
Accumulator (A7 A4)>9 sau (CY)=1
(A) (A) + 6 24

35
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri

Instruciuni logice

34 ANA r ANd reg. with A (A) (A) (r) impl.+la reg. 1/4

35 ANA M ANd Mem. with A (A) (A) ((H)(L)) impl.+ind. 2/7

36 ANI data8 ANd Imm. with A (A) (A) data8 impl.+imed. 2/7

37 XRA r eXclusive oR reg. with A (A) (A) (r) impl.+la reg. 1/4
Z,S,P

38 XRA M eXcl. oR Mem. with A (A) (A) ((H)(L)) impl.+ind. CY=0 2/7

AC=0
39 XRI data8 eXcl. oR Immed. with A (A) (A) data8 impl.+imed. 2/7

40 ORI data8 OR Immed. with A (A) (A) data8 impl.+imed. 2/7

41 ORA r OR register with A (A) (A) (r) impl.+la reg. 1/4

42 ORA M OR Memory with A (A) (A) ((H)(L)) impl.+ind. 2/7

43 CMP r CoMPare register with A (A) - (r) impl.+la reg. toate 1/4

44 CMP M CoMPare Memory with A (A) - ((H)(L)) impl.+ind. toate 2/7

45 CPI data8 ComPare Immed. with A (A) - data8 impl.+imed. toate 2/7

(CY) (A7) (A0),


46 RLC Rotate A Left with Carry implicit CY 1/4
(An+1) (An), n=06

(CY) (A0) (A7),


47 RRC Rotate A Right with CY implicit CY 1/4
(An+1) (An), n=06

48 RAL (A0) (CY) (A7),


Rotate A Left through CY implicit CY 1/4
(An+1) (An), n=06

49 RAR (A0) (CY) (A7),


Rotate A Right through CY implicit CY 1/4
(An+1) (An), n=06

50 CMA CoMplement Acc. (A) (A) implicit - 1/4

51 STC SeT Carry (CY) 1 implicit CY=1 1/4

52 CMC CoMplement Carry (CY) (CY) implicit CY 1/4

36
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri

Instruciuni de ramificare

53 JMP addr JuMP unconditional (PC) addr direct - 3/10

Dac cc : (PC) addr;


3/10
54 Jcc addr Jump on condition cc direct -
1/5
Altfel: (PC) (PC) + 3

(SP) (SP) - 1
((SP)) (PCH) direct +
CALL
55 CALL addr (SP) (SP) - 1 indirect + - 5/17
unconditional
((SP)) (PCL) implicit
(PC) addr

Dac cc: (SP) (SP) - 1


((SP)) (PCH) 5/17
(SP) (SP) - 1 direct +
56 Ccc addr Call on condition cc ((SP)) (PCL) indirect + -
(PC) addr; implicit
3/11
Altfel: (PC) (PC) + 3

(PCL) ((SP))
(SP) (SP) + 1 indirect +
57 RET RETurn - 3/10
(PCH) ((SP) + 1) implicit
(SP) (SP) + 1

Dac cc: (PCL) ((SP))


3/11
(SP) (SP) + 1
(PCH) ((SP)+1) indirect +
58 Rcc Return on condition cc -
(SP) (SP) + 1; implicit
1/5
Altfel: (PC) (PC) + 1

(SP) (SP) - 1
ReSTart
((SP)) (PCH)
direct +
(SP) (SP) - 1
59 RST n indirect + - 3/11
((SP)) (PCL) implicit
n= 0, 1, 2, ..., 7
(PC) n x 8

(PCH)(H),
60 PCHL move HL to PC implicit - 1/5
(PCL)(L)

37
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri

Instruciuni de lucru cu stiva, I/E i de comand

(SP) (SP) - 1
PUSH register pair on stack la registru +
((SP)) (rH)
61 PUSH rp indirect + - 3/12
rp = B, D sau H (SP) (SP) - 1 implicit
((SP)) (rL)

PUSH accumulator and (SP) (SP) - 1


flags on stack; ((SP)) (A) indirect +
62 PUSH PSW - 3/12
Flags: (SP) (SP) - 1 implicit
S Z 0 AC 0 P 0 CY ((SP)) (Flags)

(rL) ((SP))
POP register pair off stack la registru +
(SP) (SP) + 1
63 POP rp indirect + - 3/10
rp = B, D sau H (rH) ((SP)) implicit
(SP)(SP)+1

POP accumulator and (Flags) ((SP))


Flags off stack; (SP) (SP) + 1 indirect +
64 POP PSW toate 3/10
Flags: (A) ((SP)) implicit
S Z - AC - P - CY (SP) (SP) + 1

eXchange stack Top with (L) ((SP)) implicit +


65 XTHL - 5/16
HL (H) ((SP)+1) indirect

66 SPHL move HL to SP (SP) (HL) la registru - 1/6

67 IN port Input (A) (port) impl.+dir. - 3/10

68 OUT port OUTput (port) (A) impl.+dir. - 3/10

69 EI Enable Interrupts (INTE) 1 implicit - 1/4

70 DI Disable Interrupts (INTE) 0 implicit - 1/4

71 HLT HaLT PC - blocat - - 1/7

72 NOP No OPeration (PC) (PC) + 1 - - 1/4

SOD (A7),
Set Interrupt Mask
73 SIM mascheaz RST 7.5, 6.5 implicit - 1/4
and write serial bit
i 5.5

(A7)SID,
Read serial bit and
74 RIM citete mtile liniilor implicit - 1/4
Interrupt Mask
INTR, RST 7.5, 6.5 i 5.5

38
4.2. Programarea n limbaj de asamblare
Se face n cadrul fixat de programul de asamblare automat (asamblor):
a) setul de instruciuni al microprocesorului (instruciuni executabile)
b) directivele de asamblare (pseudoinstruciuni);
c) sintaxa textului surs.
Asambloare:
Intel ASM80
Microsoft M80 (Macro-80)
Digital Research ASM, MAC, RMAC
Cross-asambloare:
Dunfield D8085
Crossware Products A8085NT
Cu mici diferene, toate respect aceleai reguli sintactice pentru fiierul surs i utilizeaz un
trunchi comun de directive de asamblare.

4.2.1. Organizarea segmentat a codului surs


Separarea codului de date amplasare n zone diferite de memorie
Segmentul de cod - codul i date constante nu se modific pe parcursul execuiei; pot fi
rezidente ntr-o memorie de tip ROM (memorie program).
Segmentul de date - variabilele programului - se modific n timpul execuiei; amplasarea lor
numai n memorii de tip RAM (memorie de date).
Segmente absolute - amplasate la adrese fixe, stabilite la scrierea codului surs.
Segmente relocabile - amplasate la adrese stabilite ulterior, la editarea legturilor.

Directive de segmentare:
CSEG (Code SEGment) nchide segmentul curent i (re)deschide segmentul de cod
relocabil.
DSEG (Data SEGment) - nchide segmentul curent i (re)deschide segmentul de date
relocabil.
ASEG (Absolute SEGment) - nchide segmentul curent i deschide un segment absolut.

Segmentele relocabile nu au nume: exist un singur segment de cod i unul singur de date.

Segmentele absolute nu au nume, dar pot fi mai multe, identificate prin adresa de start.
Segmentele absolute nu trebuie s se suprapun n spaiul de adrese.

Asamblorul folosete cte un contor de locaii pentru fiecare segment, ce poate fi referit n
program printr-un simbol predefinit (uzual $).

Contorul de locaii atribuite adrese octeilor rezultai din asamblarea instruciunilor


executabile i octeilor rezervai pentru date.

Adresele sunt temporare n cazul segmentelor relocabile sau definitive n cazul segmentelor
absolute.

Aceste adrese, mpreun cu octeii corespunztori, sunt stocai n fiierul obiect generat de
asamblor.

Contorul de locaii este iniializat cu 0000h la nceputul segmentului relocabil.

39
La nceputul unui segment absolut, contorul de locaii este iniializat cu adresa de start a
acestuia (sau cu 0000h dac aceasta lipsete). La nchiderea unui segment relocabil,
contorul de locaii este salvat, fiind rencrcat la redeschiderea segmentului.

Exemplu:
; nceputul fiierului surs n limbaj de asamblare
; segmentul de cod relocabil (implicit, chiar dac lipsete CSEG)
; $=0000h
...
; $=x
DSEG ; nchide segmentul de cod relocabil i deschide segmentul relocabil de date
... ; $=0000h

; $=y
CSEG ; nchide segmentul de date i redeschide segmentul relocabil de cod
; $=x
...
; $=z
DSEG ; nchide segmentul de cod i redeschide segmentul relocabil de date
; $=y
...
; $=w
ASEG 2000h ; nchide segmentul relocabil de date i deschide un segment absolut
; $=2000h
...
; $=t
DSEG
; $=w
...

n cadrul fiecrui segment, se poate fora modificarea numrtorului de locaii cu alt valoare
dect cea care rezult n mod natural, prin incrementare.

ORG exp - expresia exp precizeaz deplasamentul (offset-ul) care se adaug la adresa de
nceput a segmentului, iar rezultatul se ncarc n numrtorul de locaii.

Exemplu:
; nceputul fiierului surs n limbaj de asamblare

CSEG ; nchide segmentul curent i redeschide segmentul relocabil de cod


... ; $=0000h

; $=x < 0100h


ORG 100h ; foreaz ncrcarea numrtorului de locaii cu 0000h+100h
... ; $=0100h

ASEG 8000h ; nchide segmentul curent i deschide un segment absolut la 8000h


... ; $=8000h

; $=x < 8040h


ORG 40h ; foreaz ncrcarea numrtorului de locaii cu 8000h+40h=8040h
... ; $=8040h

40
4.2.2. Constante i expresii

Constante numerice ncep cu o cifr.

- zecimale baza 10 183


- binare baza 2 10110111b
- octale baza 8 267Q
- hexazecimale - 0B7h (se adaug 0 pentru a incepe cu o cifr)
- ASCII #

Constante simbolice ncep cu o liter sau cu unul din caracterele speciale $ . ? @ sau _.

Se definesc cu ajutorul directivelor EQU i SET:

const EQU exp (EQUate) - atribuie n mod permanent constantei cu numele simbolic const
valoarea dat de expresia exp (o expresie numeric sau logic).

cstemp SET exp - atribuie n mod temporar constantei cu numele simbolic cstemp valoarea
dat de expresia exp. Un simbol definit cu SET se poate redefini ulterior, n cadrul aceluiai
fiier surs, ori de cte ori este nevoie.

Asamblorul substituie numele simbolice const sau cstemp cu valorile atribuite cu ajutorul
directivelor EQU i SET ele trebuie s precead orice utilizare a numelor simbolice.

inainte equ 1 ; constante permanente


inapoi equ 0
sens set inainte ; constant temporar
... ; orice apariie a simbolului sens va fi nlocuit cu 1
sens set napoi
... ; orice apariie a simbolului sens va fi nlocuit cu 0
Expresii aritmetice i logice - folosesc drept operanzi orice tip de constante descrise mai sus,
combinai cu ajutorul operatorilor:
- aritmetici: +, -, *, /, MOD (modulo)
- logici: NOT, AND, OR, XOR, SHL, SHR (de deplasare la stnga sau la dreapta);
- paranteze (stnga i dreapta).
Expresiile sunt evaluate pe 16 bii.

Reguli de preceden:
1. expresiile dintre paranteze;
2. *, /, MOD, SHL, SHR
3. +, -
4. NOT
5. AND
6. OR, XOR

Operatorii MOD, SHL, SHR, NOT, AND, OR i XOR trebuie separai de operanzi cu cel
puin un blanc.

baza equ 0
intrare1 equ baza+4
intrare2 equ baza OR 10000000b
intrare3 equ (baza+intrare1)*2
TRUE EQU 1
FALSE EQU NOT TRUE

41
4.2.3. Organizarea datelor

Date iniializate
[etich:] DB lista (Define Byte) - definete valoarea numelui simbolic etich (opional) ca fiind
adresa de nceput a unei zone de memorie alocat static, organizat pe octei i iniializat
cu valorile numerice ale elementelor din lista.

Acestea pot fi:


valori numerice (0255);
constante simbolice (definite anterior cu EQU sau SET);
iruri de caractere ASCII ntre ghilimele simple;
expresii aritmetice i logice.

Directiva DB se utilizeaz de regul pentru a defini date de 1 octet, constante sau variabile
iniializate static.

[etich:] DW lista (Define Word) - la fel ca DB, dar zona de memorie alocat este organizat pe
cuvinte de 2 octei.
n list se afl de obicei valori numerice (065535) sau adrese simbolice (etichete) de
instruciuni ori de date, definite n fiierul surs; octetul mai puin semnificativ se
memoreaz la adresa mai mic.

Date neiniializate

[etich:] DS exp (Define Storage) - definete valoarea numelui simbolic etich (opional) ca fiind
adresa de nceput a unei zone de memorie neiniializat, alocat static, de dimensiune egal
cu valoarea numeric a expresiei exp.

n cmpul operand, exp, se poate afla un numr, o constant simbolic definit anterior (cu
EQU sau SET) sau o expresie aritmetic.
DSEG

mesaj: DB Buffer de date,0


buffer: DS 100
lung: DB $-buffer
count: DS 1
ptrbuf: DB LOW(buffer)
DB HIGH(buffer)
ptrmes: DW mesaj

4.2.4. Definirea referinelor ntre modulele obiect

Program format din mai multe fiiere surs n limbaj de asamblare

- apelarea unor subrutine definite ntr-un alt fiier surs.


- accesul la date definite n alt fiier surs.
PUBLIC lista face cunoscut o list cu numele simbolice accesibile din alte fiiere surs.
EXTRN lista precizeaz c numele simbolice din list sunt definite n alte fiiere surs.

Editorul de legturi rezolv referinele ntre module la momentul generrii codului


executabil.

Alte directive de asamblare:


- asamblare condiionat
- control al coninutului fiierului listing
42
4.3.2. Programarea cu macroinstruciuni

Tehnic de optimizare a codului surs.


Secvene identice care apar de mai multe ori ntr-un program, eventual cu ali
parametri.
astfel de secven se poate defini ca o macroinstruciune.
Utilizarea macroinstruciunilor duce la o scurtare i la o modularizare a fiierului
surs.

Definirea macroinstruciunii (n limbajul Macro-80):


nume MACRO arg1, arg2, ... ; nceputul macroinstruciunii.

... ; Corpul macroinstruciunii.

ENDM ; Sfritul macroinstruciunii.


Odat definit, o macroinstruciune se poate referi ori de cte ori este nevoie, prin simpla
inserare n program a numelui i a parametrilor acesteia.

Exemplu:
O macroinstruciune de adunare a dou locaii de memorie de 1 octet, iar rezultatul s se
regseasc n acumulator.
Folosind aceast macroinstruciune:
- s se adune coninutul locaiei a1 cu octetul de la adresa a2, rezultatul s se depun la a3
- s se adune octeii de la adresele b1 i b2, iar rezultatul s se memoreze la adresa b3.
ADUNA MACRO par1, par2 ; Definire macroinstruciunE ADUNA, cu 2 parametri.
LDA par1 ; ncrcarea n acumulator a primului termen.
MOV B,A ; Primul termen este memorat n B.
LDA par2 ; Se ncarc cel de-al doilea termen (de la adresa par2).
ADD B ; Se adun cu primul termen; rezultatul se obine n A.
ENDM ; Sfritul macroinstructiunii ADUNA.
; ...
ADUNA a1,a2 ; Calculeaz (a1)+(a2) printr-o referire la ADUNA.
STA a3 ; Depune rezultatul n memorie, la adresa a3.
ADUNA b2,b1 ; Calculeaz (b2)+(b1).
STA b3 ; Depune rezultatul n memorie, la adresa b3.
La asamblare, macroasamblorul va expanda toate referirile la macroinstruciune:
- va nlocui linia de referire cu corpul macroinstruciunii
- argumentele formale vor fi substituite cu parametrii efectivi.

LDA a1 ; ncrcarea n acumulator a primului termen.


MOV B,A ; Primul termen este memorat n B.
LDA a2 ; Se ncarc cel de-al doilea termen (de la adresa par2).
ADD B ; Se adun cu primul termen; rezultatul se obine n A.
STA a3 ; Depune rezultatul n memorie, la adresa a3.
LDA b1 ; ncrcarea n acumulator a primului termen.
MOV B,A ; Primul termen este memorat n B.
LDA b2 ; Se ncarc cel de-al doilea termen (de la adresa par2).
ADD B ; Se adun cu primul termen; rezultatul se obine n A.
STA b3 ; Depune rezultatul n memorie, la adresa b3.

43
4.3.3. Programarea cu subrutine

Utilizarea macroinstruciunilor este avantajoas pentru secvene scurte.

Secvenele lungi, referite frecvent, determin creterea exagerat a dimensiunii codului.


n astfel de situaii, se utilizeaz subrutine.

Subrutina:

- succesiune de instruciuni cu unul sau mai multe puncte de intrare etichetate i cu unul
sau mai multe puncte de ieire;

- realizeaz o anumit funcie: operaii de I/E, conversii al formatului datelor, operaii


matematice n virgul fix sau mobil etc.;

- poate fi apelat ori de cte ori este nevoie;

- pentru ea se aloc memorie numai o singur dat.

- la terminare trebuie s se rentoarc n programul apelant, indiferent de locul de unde


este apelat.

Spre deosebire de rutinele de ntreruperi, punctele din program n care este apelat o
subrutin sunt stabilite la momentul scrierii programului.

subrutinele obinuite nu necesit neaprat salvarea tuturor regitrilor modificai, aa


cum este obligatoriu n cazul rutinelor de tratare a ntreruperilor.

spre deosebire de rutinele de tratare a ntreruperilor, subrutinele obinuite pot primi


parametri de la programul apelant i pot returna rezultate ctre acesta.

Realizarea legturii dintre programul apelant i subrutine:

Programul apelant

CALL subrutina subrutina:


...
Instruciunea urmtoare RET
...

Pentru creterea lizibilitii codului surs, fiecare subrutin trebuie documentat la definire,
precizndu-se:

- numele i funcia ndeplinit;

- modul n care sunt primii parametrii de intrare;

- modul n care rezultatele sunt returnate programului apelant;

- registrele modificate n cadrul subrutinei.

44
Exemplu: Subrutin de transfera unui numr de octei (nrb) de la adresa sursa la adresa dest.

Se folosesc registrele pereche H i D pentru adresarea indirect a locaiilor din zonele de


memorie surs, respectiv destinaie, iar registrul C va contoriza numrul de octei rmai de
transferat. Subrutina se va numi memcpy (copie o zon de memorie n alt zon).

; Programul apelant
; ...
LXI H,sursa ; Se ncarc n registrul pereche H adresa zonei surs.
LXI D,dest ; Se iniializeaz DE cu adresa de nceput a zonei destinaie.
MVI C,nrb ; Se ncarc n C numrul iniial de octei de transferat.
CALL memcpy ; Se apeleaz rutina de transfer.
; ... ; Instruciunea urmtoare, la care se revine cu RET.

; MEMCPY - rutina de copiere a unei zone de memorie n alt zon


; Intrare: HL = adresa de nceput a zonei surs
; DE = adresa de nceput a zonei destinaie
; C = numrul de octei de transferat.
; Ieire: zona de memorie destinaie are acelai coninut cu zona de memorie surs.
; Distruge: coninutul registrelor A, C, DE, HL, indicatorii de condiie.

memcpy: ; Punctul de intrare n subrutin, identic cu numele subrutinei.


MOV A,M ; Citete n A octetul din zona surs, de la adresa din HL.
STAX D ; Inscrie octetul din A n zona destinaie, la adresa din DE.
INX H ; Incrementeaz registrul pointer pentru zona surs (HL).
INX D ; Incrementeaz registrul pointer n zona destinaie (DE).
DCR C ; Decrementeaz numrul de octei rmai de transferat.
JNZ memcpy ; Dac mai sunt octei, sare la nceputul subrutinei;
RET ; altfel, revine n programul apelant

n corpul subrutinei se modific coninutul unor registre interne sau indicatorii de condiie.
Programul apelant dorete conservarea lor.
Programul apelant sau subrutina apelat - salvarea/refacerea lor din stiv.
Exemplu:
; Programul apelant
; ... ; Starea registrelor dinainte de apelul subrutinei.
CALL subrutina ; Se apeleaz subrutina.
; ... ; Starea registrelor de dup revenirea din subrutin este
; aceeai cu cea de dinaintea apelului subrutinei.
; SUBRUTINA -
; Intrare: ...
; Ieire: . . .
; Distruge: Nimic

subrutina:
PUSH PSW ; Salveaz pe stiv acumulatorul i indicatorii de condiie.
PUSH B ; Salveaz pe stiv coninutul registrului pereche B (B i C).
PUSH D ; Salveaz pe stiv D (D i E).
PUSH H ; Salveaz pe stiv H (H i L).
... ; corpul subrutinei - modific registrele i indicatorii de condiie.
POP H ; Reface de pe stiv H i L.
POP D ; Reface de pe stiv D.
POP B ; Reface de pe stiv B.
POP PSW ; Reface de pe stiv acumulatorul i indicatorii de condiie.

RET ; Revine din subrutin, cu coninutul registrelor neschimbat.

45
Transferul parametrilor i a rezultatelor ntre programul apelant i subrutine

Prin intermediul registrelor interne ale microprocesorului

Parametrii formali - registre interne ale microprocesorului.


Parametrii efectivi de intrare ai subrutinei sunt ncrcai de programul apelant n registre
interne ale microprocesorului naintea apelului.
Subrutina ncarc rezultatele n registre interne ale microprocesorului.
La revenire, programul apelant utilizeaz rezultatele din registre.

Prin intermediul unor zone de memorie - atunci cnd numrul i/sau dimensiunea
parametrilor este mai mare dect numrul de registre ale microprocesorului.

Datele pot fi memorate la adrese succesive de memorie, iar adresa zonei poate fi comunicat
subrutinei prin intermediul unui registru pereche.

Cea mai simpl metod de transfer al datelor prin intermediul memoriei utilizeaz stiva;
adresa de nceput a stivei este coninut implicit de registrul SP, accesibil att programului
apelant ct i subrutinei apelate.

Programarea cu subrutine:

- optimizeaz programele surs (modularizare) i codul executabil generat, contribuind


la utilizarea eficient a memoriei.

- crete timpul de execuie a programului: fiecare apel de subrutin necesitnd execuia


suplimentar a cel puin unei instruciuni CALL i a unei instruciuni RET;

- necesit existena stivei, deci impune prezena n sistem a unei memorii de tip RAM.

46
5. Sincronizarea programului cu evenimente externe
5.1. ntreruperile microprocesorului 8085A

- 4 linii de ntrerupere mascabile: INTR, RST 5.5, RST 6.5, RST 7.5
- o linie de ntrerupere nemascabil - TRAP

5.1.1. Linii de ntrerupere mascabile


Linia INTR (INTterrupt Request) intrare de ntrerupere, activ pe nivel ridicat.
Este testat la sfritul ultimului ciclu main al fiecrei instruciuni (cu unele excepii).
ntreruperea se consider valid dac bistabilul intern IE (Interrupt Enable) este setat.
Bistabilul IE
- resetat odat cu microprocesorul (ntreruperile pe linia INTR sunt iniial inhibate);
- poate fi setat prin program - instruciunea EI Enable Interrupts
- poate fi resetat prin program - instruciunea DI Disable Interrupts
- este resetat automat odat cu acceptarea unei cereri de ntrerupere (echivalent DI).
- ntreruperile pe linia INTR nu sunt acceptate la sfritul instruciunilor EI i DI.

O ntrerupere valid este acceptat odat cu urmtorul ciclu main ciclu INA:
- este resetat CBB IE (chiar dac solicitarea rmne activ, nu mai este valid);
- se seteaz CBB INTA se activeaz semnalul INTA
- se inhib incrementarea automat a registrului PC - reine adresa instruciunii
urmtoare
- la activarea INTA , dispozitivul solicitant furnizeaz codul operaie al instruciunii
urmtoare de executat.
Teoretic - orice instruciune poate fi teoretic furnizat microprocesorului
Practic - aceast instruciune trebuie s ndeplineasc o serie de cerine pentru a fi util:
- s asigure saltul la adresa de tratare a solicitrii de ntrerupere
- s permit revenirea n programul ntrerupt i reluarea fluxului normal de
instruciuni.
Exist doar dou instruciuni care pot ndeplini aceste cerine:
- o instruciune de apel necondiionat CALL addr
permite apelarea rutinei de tratare amplasat oriunde n spaiul de memorie
are 3 octei, deci dispozitivul solicitant trebuie s fie capabil s furnizeze
succesiv cei trei octei ai instruciunii (utilizat de controlerele de ntreruperi),
la activarea de trei ori succesiv a liniei INTA .
- o instruciune de apel scurt RST n (Restart) (n=07)
are un singur octet, fiind uor de furnizat pe MD la activarea semnalului
INTA ;
codului operaie include un cmp de 3 bii (n) pentru codificarea celor 8 adrese
posibile de tratare.
Execuia instruciunii inserate de dispozitivul solicitant:
- se salveaz n stiv coninutul registrului PC (adresa instruciunii urmtoare din
programul ntrerupt)
- se ncarc n PC adresa rutinei de tratare: 8 n (RST) sau addr (CALL)

47
M1 (INA) M2 (INA) M3 (INA) M4 (MW) M5 (MW)

T1 T2 T3 T4 T5 T6 T1 T2 T3 T1 T T3 T1 T2 T3 T1 T2 T3

CLK

INTA

IO/M,
S 1, S 0 ( 1,1,1) ( 1,1,1 ) ( 1,1,1) ( 0,0,1 ) ( 0,0,1 )

ALE

A15A8 PCH PCH PCH (SP-1)H (SP-2)H

OUT IN OUT IN OUT IN OUT OUT OUT OUT


AD7AD0 ADL ADH (SP- PCH (SP- PCL
PCL CALL PCL PCL 1)L) 2)L)
LOW HIGH
(ADDR) (ADDR)

RD

WR t

Acceptarea solicitrii de ntrerupere pe linia INTR (instruciunea CALL addr)

Rutina de tratare:
- amplasat la adresa corespunztoare instruciunii de apel furnizat de solicitant;
cu ajutorul directivelor de asamblare
- conserv starea programului ntrerupt
salvarea pe stiv a registrelor care urmeaz a fi modificate i refacerea lor la
final
- trateaz solicitarea de ntrerupere;
operaii de I/E specifice dispozitivului solicitant;
- informeaz solicitantul dup tratare pentru ca acesta s-i dezactiveze cererea;
dialog cu dispozitivul solicitant n spaiul de I/E;
- revalideaz ntreruperile pe linia INTR
IE=1 dup execuia instruciunii EI Enable Interrupts
- revine n programul apelant la terminarea tratrii
cu o instruciune de revenire (RET RETurn)

Liniile RST 5.5, RST 6.5 i RST 7.5


- linii de ntrerupere mascabile
- pot fi mascate individual, prin bii suplimentari fa de IE;
- mascarea/demascarea liniilor RST - instruciunea SIM (Set Interrupt Mask);
- citirea strii biilor de mascare - instruciunea RIM (Read Interrupt Mask);
- nu necesit o confirmare extern a acceptrii solicitrilor;
- P 8085 execut automat instruciuni de tip RESTART implementate n hardware;
- adresele rutinelor de tratare: 85.5=44=002Ch, 86.5=52=0034h i 87.5=60=003Ch;
- nu se suprapun peste adresele folosite de INTR prin RST n (n=07)

48
Solicitri simultane ordinea prioritilor (maxim) RST 7.5, RST 6.5, RST 5.5 (minim)
Liniile RST au prioritate mai mare dect linia INTR.
Liniile RST 6.5 i RST 5.5 sunt active pe nivel logic 1, la fel ca i INTR.
Linia RST 7.5 - activ pe front cresctor: cererea este memorat ntr-un bistabil intern, care
este resetat dup servire, printr-o mascare software sau la resetarea P.
Instruciunea SIM (Set Interrupt Mask)
ieire serial (SOD CBB SOD, dac SOE=1 - Serial Output Enable);
resetarea bistabilului care reine cererea de ntrerupere aprut pe RST 7.5 (R7.5=1)
mascarea/demascarea liniilor de ntrerupere RST (M7.5, M6.5 i M5.5), dac MSE=1
(Mask Set Enable). Ex.: MSE=1, M5.5=1, M7.5=0 linia de ntreruperi RST 5.5 este
mascat, iar linia RST 7.5 este demascat.
Dup acceptarea unei ntreruperi pe oricare din liniile RST, toate ntreruperile mascabile
sunt dezactivate automat (IE=0) i ele trebuie revalidate cu o instruciune EI. EI i DI nu
afecteaz starea mtilor pentru liniile RST.
7 6 5 4 3 2 1 0

SOD SOE R7.5 MSE M7.5 M6.5 M5.5

Instruciunea RIM (Read Interrupt Mask)


intrare serial (SID SI);
- citirea strii bistabililor de validare (IE) i mascare a ntreruperilor (M7.5, M6.5,
M5.5)
- citirea solicitrilor de ntrerupere pe liniile RST n curs de servire (I7.5, I6.5, I5.5).
7 6 5 4 3 2 1 0

SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5

5.1.2. Linia de ntrerupere nemascabil

Linia TRAP nu poate fi mascat prin program


- nu necesit o confirmare extern a acceptrii solicitrilor;
- P 8085 execut automat o instruciune RST 4.5 implementat n hardware;
- adresa rutinei de tratare: 84.5=36=0024h;
- nu se suprapune peste adresele folosite de liniile INTR i RST;
- activ att pe front pozitiv ct i pe nivel;
- o solicitare e acceptat numai dac se menine pe nivel ridicat pn la testare;
- conserv starea sistemului de ntreruperi mascabile (bitul de validare general IE i
biii de masc ai liniilor RST);
- rezervat pentru situaii catastrofale- iminenta dispariie a tensiunii de alimentare.
Linia de Adresa Nivelul de Modul de Tipul
ntrerupere de salt prioritate activare ntreruperii
TRAP 0024h 1 (max) front i nivel nemascabil
RST 7.5 003Ch 2 front pozitiv mascabil
RST 6.5 0034h 3 nivel logic 1 mascabil
RST 5.5 002Ch 4 nivel logic 1 mascabil
INTR dat de instruciunea 5 (min) nivel logic 1 mascabil
RST n sau CALL addr

49
8085A are integrat un controler de gestionare a cererilor multiple de ntrerupere.

Funcionarea n timp real rspuns rapid la apariia unor evenimente externe, asincrone:
- scurgerea unui interval de timp msurat de un dispozitiv I/E (ceas);
- controlul fluxului de date transferate;

Soluia - regimul de ntreruperi.

Sursele de evenimente externe mai numeroase dect liniile de ntrerupere.

Surse de ntrerupere:
dispozitive de I/E diferite;
- mecanisme (cauze) distincte din cadrul aceluiai dispozitiv de I/E.

5.2. Tratarea solicitrilor multiple de ntreruperi

Probleme principale:
- arbitrarea cererilor selectarea uneia din mai multe cereri active;
- recunoaterea solicitantului stabilirea rutinei de tratare a cererii de ntrerupere.

Arbitrarea cererilor - sistem de prioriti:


- fixe tratare preferenial sistematic a unor cereri n detrimentul altora;
- ciclice tratare echilibrat a cererilor pe termen lung.

Recunoaterea solicitantului:
- interogare (polling);
- tratare vectorizat (vectoring)

5.2.1. Interogarea surselor de ntrerupere

Mai multe surse de ntrerupere conectate la aceeai linie de ntrerupere a P

Rutina de tratare:

- este comun pentru toate sursele;

- asigur interogarea tuturor potenialelor surse pentru a detecta cauza ntreruperii;

Prioritatea de tratare - ordinea de interogare.

Exemplu: 3 dispozitive de I/E, care pot genera ntreruperi pe aceeai linie - RST 5.5.

D1, D2 cte o surs fiecare (#1, #2), fr registre interne de stare pentru memorarea
solicitrilor;
D3 - cu dou surse (#3, #4), dispune de un registru intern de stare care poate preciza cauza
ntreruperii.

Adresa rutinei de tratare este fix i comun pentru toate cele 3 surse: 85,5=44=002Ch.

Starea cererilor de la sursele #1 i #2 poate fi citit cu ajutorul unui port de intrare extern,
format din dou amplificatoare (drivere) cu 3 stri.

Cauza ntreruperii generate de D3 (#3, #4) poate fi identificat citind portul intern de stare.

50
A15A8

DMUX
M/IO E
I/E
8085
Port de stare cereri #1, #2

AD7AD0

RD
WR
RST 5.5

#1 I/E D1 I/E D2 I/E D3


Port de stare
#2 D5 D2
#4
#3

Sistem de tratare a ntreruperilor prin interogare

RST 5.5

Citire port de
stare cereri de la

Cerere Tratare cerere de


de la #1? la #1

Cerere Tratare cerere de


de la #2? la #2
Tratare cereri de
ntrerupere
Citire port de
stare cereri de la

Cerere Tratare cerere de


de la #3? la #3

Cerere Tratare cerere de


de la #4? la #4

RET
Secvena de interogare

51
Dezavantaje:
prioritate fix n servire
timp de rspuns relativ ridicat - inacceptabil de mare pentru o funcionare n timp real.
tratarea unei solicitri nu poate fi ntrerupt nici de o cerere mai prioritar.

5.2.2. ntreruperi vectorizate


- permit tratarea eficient a unui numr mare de solicitri;
- dispozitive de I/E specializate - controlere de ntreruperi.

Vector de ntrerupere: adresa de tratare a ntreruperii specifice unei anumite surse.

5.3. Controlerul de ntreruperi programabil PIC 8259/8259A

PIC Programmable Interrupt Controller


- accept cereri pe 8 linii de ntrerupere;
- determin cererea de prioritate maxim;
- ntrerup activitatea unitii centrale la apariia a cel puin unei solicitri;
- informeaz P, prin instruciuni CALL addr (la 8085) sau INT n (la 8086), asupra
adresei de start a rutinei care deservete linia de ntrerupere;
- se pot utiliza pentru realizarea de sisteme de tratare a ntreruperilor cu pn la 64 de
linii de ntrerupere, prin conectarea lor n cascad, pe dou niveluri (Master-Slave).

8259A - o versiune mbuntit a circuitului 8259 poate lucra i cu P de 16 bii.

5.3.1. Structura intern i funcionarea

INTA INT
Tampon
D7D0 magistral
de date Logic de comand

Magistral intern

RD Logic
WR de citire/ Registrul Registrul
Rezolvitor IR0
A0 scriere ntrerupe- cererilor
de IR1
rilor n de .
prioriti
servire ntrerupere .
CS
(ISR) (PR) (IRR) IR7
CAS0 Logic de
CAS1 comparare
CAS2 /cascadare
Registrul de mascare ntreruperi (IMR)

SP/EN
Schema bloc a circuitelor PIC 8259/8259A

IR0IR7 - linii de cerere de ntrerupere active pe nivel sau pe front, la alegere.


IRR (Interrupt Request Register) memoreaz cererile i le transmite ctre blocul de
arbitrare a cererilor n funcie de prioritile acestora PR (Priority Resolver).
O cerere este valid dac nu este mascat n registrul IMR (Interrupt Mask Register).
52
La apariia cel puin a unei cereri valide, logica de comand activeaz linia INT de cerere
ctre microprocesor. La 8085, aceasta se conecteaz la linia INTR.

La sosirea cofirmrii ( INTA =0), cererea cea mai prioritar n acel moment din IRR este
servit, fiind nscris i n registrul cererilor n curs de servire (ISR - In Service Register).
Tamponul magistralei de date - amplificator bidirecional cu trei stri - asigur transferul
datelor ntre P i registrele interne ale 8259.
Logica de citire/scriere controleaz transferul prin amplificatorul bidirecional de date:
A0 adreseaz registrele interne ale controlerului.
CS - selecie circuit valideaz transferul prin amplificatorul bidirecional de date.
RD , WR - stabilete sensul de transfer prin amplificatorul bidirecional de date.
Logica de comparare/cascadare asigur recunoaterea sursei ntreruperii n sisteme cu dou
sau mai multe controlere conectate n cascad, pe dou niveluri (master-slave), printr-un
dialog ntre acestea pe liniile CAS2 CAS0.

SP/ EN - Slave program / Enable linie a crei funcie la 8259A este stabilit prin program:
SP - Slave Program intrare - stabilete prin hardware modul de lucru al
controlerului: Slave ( SP =0) sau Master ( SP =1)
EN - Enable ieire - valideaz transferul de informaii de la PIC printr-un buffer, n
sistemele complexe, care necesit bufferizarea magistralei de date.
CAS2 CAS0 Cascade linii prin care controlerul master informeaz un controler slave c
trebuie s furnizeze instruciunea CALL addr la acceptarea unei cereri de ntrerupere.
La 8259 este prezent numai funcia SP .

P 8085

INTR INTA AD7AD0

Vcc

D7 D0 INT INTA
CAS2
SP/EN PIC Master CAS1
CAS0
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
#12 #13 #14
#1 #10 #11

D7 D0 INTA INT INT INTA D7 D0


CAS2 CAS2
PIC Slave 1 CAS1 CAS1 PIC Slave 2
SP/EN CAS0 CAS0 SP/EN
IR0 IR7 IR0 IR7

#29 #1522
Conectarea n cascad a controlerelor de ntreruperi PIC 8259/8259A
53
5.3.2. Iniializarea PIC 8259/8259A

PIC 8259/8259A - dispozitive I/E programabile trebuie iniializate nainte de a le utiliza

A0 D7 D6 D5 D4 D3 D2 D1 D0 A0 D7 D6 D5 D4 D3 D2 D1 D0
0 A7 A6 A5 1 0 F S 0 ICW1 0 A7 A6 A5 1 LTM ADI S IC4

1 A15 A14 A13 A12 A11 A10 A9 A8 ICW2 1 A15 A14 A13 A12 A11 A10 A9 A8

Da Singur ? Da Singur ?
(S=1) (S=1)
Nu Master Nu Master
1 S7 S6 S5 S4 S3 S2 S1 S0 ICW3M 1 S7 S6 S5 S4 S3 S2 S1 S0
1 ID2 ID1 ID0 ICW3S 1 ID2 ID1 ID0
Slave Slave
Modul cu Nu
prioriti fixe IC4=1 ?
Da
ICW4 1 1 0 0 SFN BUF M/S AEOI PM

a) b) Modul cu
prioriti fixe

Iniializarea controlerelor de ntreruperi PIC 8259 (a) / 8259A (b)

Iniializare:
- secven de maxim trei (la 8259) sau 4 (la 8259A) cuvinte de comand de iniializare
- ICW Initialization Command Word

ICW1 se nscrie n registrul intern de comand selectat cu A0=0


ICW2 se nscrie n registrul intern de comand selectat cu A0=1
A15A5 cei mai semnificativi bii ai adresei utilizate de instruciunea CALL addr, furnizat
de controler n ciclul de acceptare a ntreruperii i utilizat de P pentru recunoaterea sursei
ntreruperii i apelarea rutinei de tratare specifice.
Intervalul dintre dou adrese succesive, corespunztoare la dou linii succesive, poate fi
stabilit cu bitul F (Four) sau ADI (call ADdress Interval):
F=1 sau ADI=1 interval de 4 octei
F=0 sau ADI=0 interval de 8 octei
Rezult o zon de 48=32=25 octei sau de 88=64=26 octei denumit tabela cu vectori de
ntrerupere (TABVI), amplasat la o adres multiplu de 32 sau de 64.
Vectorii de ntrerupere (adresele de tratare) se regsesc n TABVI la adrese multiplu de 4,
respectiv de 8.
Atunci cnd controlerul furnizeaz codul instruciunii CALL addr, cmpul de adres indic
adresa rutinei de tratare amplasat n TABVI specific unei anumite linii de ntrerupere cea
pentru care este nregistrat cererea valid cea mai prioritar la momentul respectiv.
Pentru un interval de 4(8) octei:
biii A15A5(A15A5) sunt furnizai de controler aa cum sunt primii n ICW1 i ICW2.
biii A4A2(A5A3) ai adresei reprezint codul liniei de ntrerupere.
biii A1 i A0 (A2, A1 i A0) sunt forai pe 0 - vector de ntrerupere multiplu de 4(8).

54
F=1 sau ADI=1 (intervale de 4 octei)

Linia de Vector de ntrerupere (addr)


ntrerupere A15 A8 A7 A5 A4 A3 A2 A1 A0
IR0 0 0 0 0 0
IR1 0 0 1 0 0
IR2 0 1 0 0 0
IR3 0 1 1 0 0
Din ICW2 Din ICW1
IR4 1 0 0 0 0
IR5 1 0 1 0 0
IR6 1 1 0 0 0
IR7 1 1 1 0 0

F=0 sau ADI=0 (intervale de 8 octei, A5 este ignorat n ICW1)


Linia de Vector de ntrerupere (addr)
ntrerupere A15 A8 A7 A6 A5 A4 A3 A2 A1 A0
IR0 0 0 0 0 0 0
IR1 0 0 1 0 0 0
IR2 0 1 0 0 0 0
IR3 0 1 1 0 0 0
Din ICW2 Din ICW1
IR4 1 0 0 0 0 0
IR5 1 0 1 0 0 0
IR6 1 1 0 0 0 0
IR7 1 1 1 0 0 0

S Single exist un singur controler n sistem (S=0 mai multe controlere, n cascad)

LTM Level Triggered Mode programabil numai la 8259A stabilete forma de prezentare
a cererilor pe liniile IR0IR7:
LTM = 0 cereri active pe front cresctor (Edge Triggered Mode) existent la 8259;
LTM = 1 cereri active pe nivel ridicat.

Cererile trebuie meninute active cel puin pn cnd P obine adresa rutinei de tratare. n
caz contrar, se genereaz o ntrerupere implicit pe linia IR7, fr a se seta bitul ISR7.
Se pot astfel detecta i rejecta perturbaiile care pot s apar pe liniile IRi.

IC4 indic, numai la 8259A, dac ICW4 se folosete (IC4=1) sau nu (IC4=0).

ICW1 i ICW2 sunt suficiente pentru ca un sistem format dintr-un singur controler s
funcioneze n modul cu prioriti fixe (Fully Nested Mode).

ICW3 utilizat numai n sisteme cu mai multe controlere conectate n cascad


Formatul ICW3 difer pentru master fa de slave:
ICW3M indic prin Si=1 liniile IRi la care sunt conectate controlere slave.
ICW3S indic, prin ID2ID0, codul i al liniei IRi de la master la care este conectat.

ICW4 - numai la 8259A, dac IC4=1 n ICW1.


Opiuni suplimentare:
PM (Microprocessor Mode) - tipul de microprocesor:
dac D0=0 P de 8 bii CALL addr
dac D0=1 P de 16 bii INT n

55
AEOI (Automatic End Of Interrupt) achitare automat a ntreruperii:
AEOI=1 - resetarea automat a bitului din ISR corespunztor cererii n curs de
servire, cnd microprocesorul recepioneaz adresa complet a rutinei de tratare.
AEOI=0 - pentru resetarea bitului din ISR este necesar un cuvnt special de operare
de la microprocesor, EOI (End Of Interrupt).

BUF=1 magistral de date bufferizat, caz n care linia SP/ EN are rolul de validare a
bufferului: este activat de ndat ce controlerul depune o dat valid pe MD.
M/S - cnd BUF=1, preia cealalt funcie a liniei SP/ EN i stabilete tipul controlerului.
SFNM - Special Fully Nested Mode masterul ia n considerare o cerere de ntrerupere de la
un PIC slave, chiar i atunci cnd exist deja o cerere n curs de servire, primit anterior, de
la acelai controler.
SINT se comport ca i cum ar fi format dintr-un singur controler, cu 15 linii de
ntrerupere - sistem de prioriti global.
La revenirea din rutina de tratare a unei cereri de la PIC-slave, se achit mai nti
ntreruperea de la PIC-slave i, numai dac nu mai este o alta n curs de tratare la
slave, se achit i la PIC-master.
n mod normal (SFNM=0), o nou solicitare de la un slave este blocat de master pn la
achitarea celei n curs de servire.
SINT lucreaz cu sisteme de prioriti locale, la nivelul fiecrui controler.
La revenirea din rutina de tratare a unei cereri de la PIC-slave, se achit mai nti
ntreruperea de la PIC-master i apoi la PIC-slave.
IC4=0 n ICW1 este echivalent cu ICW4=00h.

5.3.3. Moduri de lucru


La iniializare:
se terg registrele IMR, IRR i ISR (odat cu nscrierea ICW1);
se intr n modul cu prioriti fixe;

Se poate trece ntr-un alt mod de lucru printr-un cuvnt de operare specific.
Modul de lucru cu prioriti fixe (Fully Nested mode):
liniei IR0 i se atribuie prioritate maxim, iar liniei IR7 prioritate minim;
ordinea prioritilor rmne nemodificat n timpul funcionrii;
la apariia mai multor cereri de ntrerupere, acestea sunt tratate n ordinea prioritii;
dup acceptarea unei ntreruperi pe o linie:
- la primul impuls INTA este ters bitul din IRR i este setat bitul din ISR
corespunztor cererii servite;
- nu mai sunt luate n considerare alte cereri pe aceeai linie sau pe linii de prioritate
mai mic pn la achitarea ntreruperii n curs (resetare bit din ISR).
- sunt ns acceptate ntreruperi pe liniile mai prioritare, chiar i nainte de achitarea
celei n curs.
Modul de lucru cu rotirea prioritilor (Rotating mode):
asigur o tratare echiprioritar a liniilor de ntrerupere pe termen lung;
cu rotire normal (Auto mode):
- dup tratarea ntreruperii pe o linie, aceasta capt automat prioritate minim;
cu rotire specific (Specific mode):
- se precizeaz prin program linia de prioritate minim.

56
Modurile de mascare - determin, pentru liniile mascate cu OCW1, inhibarea cererilor
ulterioare aprute pe acele linii;

Modul de mascare normal (Normal Mask mode) - la servirea unei ntreruperi, inhib
solicitrile de pe nivelul respectiv i de pe cele inferioare, indiferent dac acestea sunt
mascate sau nu.
Modul de mascare special (Special Mask mode) - valideaz solicitrile de pe oricare
din celelalte niveluri care nu sunt mascate, indiferent dac sunt superioare sau
inferioare celui n curs de tratare.
Modul de lucru cu interogare (Polled mode):
se poate realiza tratarea prin interogare, renunndu-se la tratarea vectorizat, prin
ntreruperi.
P nu mai primete cereri de ntrerupere, ci trebuie s interogheze periodic
controlerele de ntreruperi din sistem, prin comenzi OCW3 cu P=1.
controlerul devine un simplu sistem de nregistrare a cererilor de ntrerupere
furnizeaz - numai la cererea microprocesorului - informaii despre existena
solicitrilor de ntrerupere, ntr-un cuvnt de forma urmtoare:
D7 D6 D5 D4 D3 D2 D1 D0
I - - - - W2 W1 W0

Dac exist o solicitare de ntrerupere, I=1, activarea semnalului RD ( RD =0, A0=0):


este interpretat de 8259/8259A ca i un rspuns la cerere ( INTA );
determin setarea n ISR a bitului corespunztor cererii de prioritate maxim, avnd
codul precizat de biii W2W0.
ntreruperile de la controler trebuie ignorate de ctre P.
Cuvintele de operare OCW1, OCW2 i OCW3 identice pentru 8259 i 8259A
OCW1 - asigur mascarea uneia sau mai multor linii de ntrerupere:
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 M7 M6 M5 M4 M3 M2 M1 M0

Mi=1 (i=70) asigur mascarea liniilor de ntrerupere IRi

OCW2 conine urmtoarele informaii:


A0 D7 D6 D5 D4 D3 D2 D1 D0
0 R SL EOI 0 0 L2 L1 L0
codul liniei, n Specific mode
0 0 1 Resetarea bitului 1 de prioritate maxim din ISR Achitare
0 1 1 Resetarea bitului 1 din ISR specificat de L2 L1 L0 ntrerupere
1 0 1 Rotire odat cu resetarea bitului 1 de prioritate maxim din
Rotire
1 0 0 Setare mod rotire n Automatic EOI
automat
0 0 0 Resetare mod rotire n Automatic EOI
1 1 1 Rotire odat cu resetarea bitului 1 din ISR specificat de L2 L1 L0 Rotire
1 1 0 Stabilire nivel de prioritate minim (cel specificat de L2 L1 L0) specific
0 1 0 Nici o operaie

57
AEOI=1 n ICW4, n modul cu prioriti fixe, OCW2 nu este necesar;
OCW2 poate fi totui folosit pentru intrarea/ieirea n/din modul cu rotire automat a
prioritilor.
AEOI=0 n ICW4 sau dac nu se utilizeaz ICW4 (8259):
bitul din ISR corespunztor cererii de ntrerupere n curs de servire trebuie resetat
explicit, nainte de revenirea din ntrerupere;
aceasta se poate face cu un cuvnt OCW2 avnd bitul EOI=1.
- n modul cu prioriti fixe sau cu rotirea automat a prioritilor, bitul care trebuie
resetat este identificat automat ca fiind bitul 1 de prioritate maxim din ISR.
- n modul cu rotire specific a prioritilor(Specific End Of Interrupt), rutina de
tratare trebuie s precizeze explicit care este bitul din ISR ce trebuie resetat, prin
liniile L2L0, cu ajutorul unui cuvnt OCW2 cu SL=1 (Select Line) i EOI=1.
Comenzile de achitare a ntreruperilor (EOI) se pot da independent sau mpreun cu
comenzile de rotire a prioritilor: R=1 (Rotating mode).
Dac R=1, SL=0 i EOI=1, rezult varianta de rotire normal, cnd se reseteaz bitul 1
avnd prioritate maxim n ISR.
Dac R=1, SL=1 i EOI=1 se obine cea de-a doua variant, de rotire i achitare specific: se
reseteaz bitul 1 din ISR corespunztor liniei avnd codul precizat de L2L0, care totodat
capt prioritate minim.
Prioritile pot fi rotite i fr achitarea ntreruperii, dar numai specific:
R=1 i SL=1, EOI=0, fac ca linia L2L0 s devin cea mai puin prioritar.

OCW3 are urmtoarea structur:


A0 D7 D6 D5 D4 D3 D2 D1 D0
0 ESMM SMM 0 1 P RR RIS

0 fr efect
fr efect 0
1 0 urmeaz citirea IRR
Reset 1 0
1 1 urmeaz citirea ISR
Set 1 1
Special Mask Mode Polling mode

SMM (Special Mask Mode) ESMM (Enable SMM) - setarea sau tergerea modului special de
mascare.

P - asigur trecerea la modul cu interogare (P=1) a cererilor.


P =1 - este prioritar fa de RR=1.

OCW3 - permite citirea de ctre microprocesor a coninutului registrelor IRR sau ISR.

Citirea IRR i ISR se realizeaz cu A0=0 i trebuie precedat de nscrierea unui cuvnt OCW3
cu RR=1 (Read Register):

RIS = 0 urmeaz citirea IRR.


RIS = 1 urmeaz citirea ISR.

Registrul IMR poate fi citit n orice moment, cu A0=1.


58
5.4. Realizarea unui sistem de ntreruperi (SINT) cu 8259A
Se cunoate:
numrul surselor de ntreruperi;
prioritatea relativ de tratare a acestora;
forma de prezentare a cererilor (nivel, front);
tipul de microprocesor (8/16 bii);
spaiul de memorie rezervat pentru amplasarea tabelului cu vectorii de ntreruperi;
intervalul dintre doi vectori de ntrerupere succesivi;
spaiul de I/E disponibil pentru adresarea controlererului / controlerelor;
Se cere:
numrul de controlere necesare i interconectarea acestora;
schema de conectare a sistemului de ntreruperi n sistemul cu P;
programarea controlerelor (iniializarea i stabilirea modului de lucru).
organizarea tabelei de ntreruperi;
rutinele de tratare a cererilor de la sursele de ntrerupere.
Exemplu:
S se organizeze un SINT cu 15 niveluri pentru un sistem cu P 8085, folosind 8259A.
Se cunoate c tabelul cu vectorii de ntreruperi va fi amplasat n memorie cu ncepere de la
adresa 1000h, i va avea intervale de 4 octei.
Spaiul de I/E ocupat este definit, prin decodificare, de adresele A15A12.
Se dorete o tratare cu prioriti fixe, cu arbitrare a acestora la nivel global (SFNM).
Nu se utilizeaz bufferizarea magistralei de date.
15 linii - sunt necesare dou controlere, interconectate ntr-o structur master-slave.
Dispozitivul slave se conecteaz la master pe una din intrrile IRi (i=70).
PIC-master - cererile de prioritate ridicat, PIC-slave conectat la PIC-master pe linia IR7.

5.4.1. Structura hardware a SINT cu 15 niveluri

A15A0 Magistrala de adrese A8 A15 A14A12 A8

IO/M E3 E1 A2 A1 A0 E2
8085 INTR DCD I/E (8205)
+ 0 1 2 3 4 5 6 7
8212
Extensie
Magistrala de date SINT
DINTA
D
RD
WR

INT INTA A0 D7D0 CS INT INTA A0 D7D0 CS


RD CAS2 RD CAS2
WR PIC-M CAS1 WR PIC-S CAS1
VCC SP / EN CAS0 SP / EN CAS0
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15


max. Prioritate min.

59
5.4.2. Programarea SINT

- iniializarea PIC-M i PIC-S;

- mascarea nivelurilor neutilizate;

- stabilirea modului de operare;

- organizarea tabelului de ntreruperi;

- scrierea rutinelor de tratare.

CSEG

; INIIALIZARE PIC-M

ICW1M EQU 00010101b ; 4 octei/interval, master-slave, TABVIM la adresa 1000h


ICW2M EQU 10h ; TABVIM la adresa 1000h
ICW3M EQU 10000000b ; PIC-S conectat pe IR7 la PIC-M.
ICW4M EQU 10010000b ; SFNM=1
PIC_M EQU 50h ; Adresa de baz a PIC-M (de la DCD 8205)

MVI A,ICW1M
OUT PIC_M ; Se nscrie ICW1 n PIC-M (cu A0=0).
MVI A,ICW2M
OUT PIC_M+1 ; Se nscrie ICW2 n PIC-M (cu A0=1).
MVI A,ICW3M
OUT PIC_M+1 ; Se nscrie ICW3M n PIC-M (cu A0=1).
MVI A,ICW4M
OUT PIC_M+1 ; Se nscrie ICW3M n PIC-M (cu A0=1).

; INIIALIZARE PIC-S

ICW1S EQU 00110100b ; 4 octei/interval, master-slave, TABVIS la adresa 1020h


ICW2S EQU 10h ; TABVIS la adresa 1020h
ICW3S EQU 00000111b ; PIC-S conectat la PIC-M pe linia IR7.
PIC_S EQU 60h ; Adresa de baz a PIC-S (de la DCD 8205)

MVI A,ICW1S
OUT PIC_S ; Se nscrie ICW1 n PIC-S (cu A0=0).
MVI A,ICW2S
OUT PIC_S+1 ; Se nscrie ICW2 n PIC-S (cu A0=1).
MVI A,ICW3S
OUT PIC_S+1 ; Se nscrie ICW3S n PIC-S (cu A0=1).

; PROGRAMARE MTI - Implicit, dup iniializare, toate nivelurile sunt validate.

; Dac se dorete ca unele linii s fie mascate, se folosesc cuvinte de tip OCW1:

OCW1M EQU 01000000b ; Se mascheaz linia IR6 de la master


OCW1S EQU 11110000b ; i liniile IR7IR4 de la slave.
MVI A,OCW1M
OUT PIC_M+1 ; Se nscrie OCW1 n PIC-M (cu A0=1).

MVI A,OCW1S
OUT PIC_S+1 ; Se nscrie OCW1 n PIC-S (cu A0=1).

; ORGANIZAREA TABELULUI DE NTRERUPERI

DSEG

ORG 1000h ; TABVIM ncepe la 1000h.

60
TABVIM:
JMP trat0 ; Tratare ntrerupere pe linia IR0 de la PIC-M.
NOP ; JMP trat0 are 3 octei, NOP are 1 octet, n total sunt 4 octei.

JMP trat1 ; Se ajunge aici ca urmare a faptului c n ciclurile INA,


NOP ; PIC-M furnizeaz microprocesorului instruciunea CALL trat1.
;.................
JMP trat6 ; Salt la rutina de tratare a solicitrii pe linia IR6 de la master.
NOP

JMP eroare ; EROARE: la o solicitare pe linia IR7 de la master nu se ajunge aici,


NOP ; ci n TABVIS (adresa de apel e furnizat de PIC-S, nu de PIC-M).
TABVIS: ; TABVIS=TABVIM+84; TABVIM i TABVIS sunt multiplu de 32.
JMP trat7 ; Salt la rutina de tratare a solicitrii pe linia IR0 de la slave.
NOP
JMP trat8 ; Salt la rutina de tratare a solicitrii pe linia IR1 de la slave.
NOP
;..................
JMP trat14 ; Salt la rutina de tratare a solicitrii pe linia IR7 de la slave

; STRUCTURA UNEI RUTINE DE TRATARE A NTRERUPERII DE LA PIC-M (trat0trat6)


EOI EQU 00100000b ; Definete un cuvnt de comand OCW2 de tip EOI.
trati: ; trat1 trat6
PUSH PSW ; Salveaz pe stiv acumulatorul, flag-urile,
PUSH B ; precum i coninutul celorlalte registre modificate de subrutin.
PUSH D
PUSH H
;........... ; Tratare specific sursei (seciune nentreruptibil).
EI ; Validare ntreruperi pe linia INTR
;........... ; Tratare specific sursei (seciune ntreruptibil).
MVI A,EOI
DI ; Invalidare ntreruperi - intrare n seciunea critic.
OUT PIC_M ; Achit ntreruperea - numai la PIC-master.
POP H ; Reface de pe stiv contextul programului ntrerupt,
POP D ; salvat la intrare.
POP B
POP PSW
EI ; Revalideaz ntreruperile.
RET ; Revine n programul ntrerupt.
; STRUCTURA UNEI RUTINE DE TRATARE A NTRERUPERII DE LA PIC-SLAVE (trat7trat14)
trati: ; trat7 trat14
PUSH PSW ; Salveaz pe stiv acumulatorul, flag-urile,
PUSH B ; precum i coninutul celorlalte registre modificate de subrutin.
PUSH D
PUSH H
MVI A,EOI
OUT PIC_M ; Achit ntreruperea - mai nti la PIC-master.
;............... ; Tratare specific sursei (seciune nentreruptibil).
EI
;............... ; Tratare specific sursei (seciune ntreruptibil).
MVI A,EOI
DI ; Invalidare ntreruperi - intrare n seciunea critic.
OUT PIC_S ; Achit ntreruperea - i la PIC-slave.
POP H ; Reface de pe stiv contextul programului ntrerupt,
POP D ; salvat la intrare.
POP B
POP PSW
EI ; Revalideaz ntreruperile.
RET ; Revine n programul ntrerupt.

61
; STABILIREA MODULUI SPECIAL DE MASCARE

; n rutina de pe nivelul 10 se vor accepta i solicitri de pe nivelurile 1114.


;..............
MVI A, 00001000b ; Mascare nivel 10 (IR3 de la PIC-slave)
OUT PIC_S+1 ; nscrie comanda de mascare (OCW1).
MVI A, 01101000b
OUT PIC_S ; Comand intrarea n modul special de mascare (OCW3).
;.............

; CITIREA REGISTRULUI ISR DIN PIC-M


MVI A, 00001011b ; Comand citire ISR.
OUT PIC_M ; nscrie OCW3 n PIC_M.
IN PIC_M ; (A) (ISR)
;.............

; CITIREA REGISTRULUI IRR DIN PIC-S


MVI A, 00001010b ; Comand citire ISR.
OUT PIC_S ; nscrie OCW3 n PIC_S.
IN PIC_S ; (A) (ISR)
;.............

; CITIREA REGISTRULUI IMR DIN PIC-M


IN PIC_M+1 ; (A) (IMR)

62
6. Numrarea evenimentelor i msurarea intervalelor de timp

P trebuie s efectueze o anumit operaie numai dup a n-a apariie a unui eveniment.

Exist 3 posibiliti de implementare:

1. P ateapt fiecare apariie a evenimentului, o detecteaz i o contorizeaz.


- cea mai dezavantajoas soluie, din cauza utilizrii ineficiente a timpului P.
2. P este atenionat printr-o cerere de ntrerupere la fiecare apariie a evenimentului,
care este contorizat n rutina de tratare a ntreruperii.
- o parte din timpul P este consumat cu tratarea a n cereri de ntrerupere.
3. Evenimentele sunt contorizate de un dispozitiv extern, independent, iar P este
atenionat o singur dat, imediat dup a n-a apariie a evenimentului.
- soluia cea mai eficient: P programeaz dispozitivul extern, dar numrarea are loc
n paralel cu efectuarea altor sarcini de ctre procesor.

Tipuri de evenimente:

Aperiodice se produc la intervale aleatoare, deci necunoscute programului.


Durata numrrii necunoscut.

Periodice - se produc la intervale egale (T), cunoscute programului.


Durata procesului de numrare = nT (numrarea msurarea timpului = temporizare).

Tipuri de dispozitive externe de contorizare a evenimentelor:


- dispozitive MSI (numrtoare asincrone sau sincrone).

- numrtoare programabile (8253, 8254) integreaz, pe lng numrtoare, o logic


de acces la aceste registre i de control a numrrii, care permite:
presetarea numrtorului cu o valoare iniial;
citirea numrtorului n timpul numrrii;
activarea specific a unui semnal de ieire pe durata i la sfritul numrrii;
controlul numrrii, prin program i prin hardware:
- pornire;
- oprire;
- rencrcare a valorii iniiale.

6.1. Tehnici de introducere a timpului n sistemele cu microprocesoare

1. Utilizarea unei bucle de program de durat controlabil.


- cea mai dezavantajoas soluie blocheaz P pe durata temporizrii.

2. Folosirea unor dispozitive analogice de tip monostabil sau astabil 74SN123, E 555.
- intervale fixe, neprogramabile, precizie redus

3. Numrarea unor evenimente periodice (perioade ale unui semnal de tact de freceven
stabil i cunoscut).
- intervale programabile, precizie ridicat, flexibilitate ridicat.

Numrtoarele programabile de evenimente periodice canale de timp sau timere.

63
Necesitatea introducerii timpului ca variabil n prelucrarea informaiei

1. Generarea de semnale care marcheaz intervale de timp de durat programabil.

UCP
Fi
cu P Fe =
INT N
1 1
Fi = CEAS Fe =
Controler
Ti Te
de ntreruperi
T CEAS Te = nTi(0) + mTi (1)
IR
Fi
CEAS Fe =
n+m
Generarea de ntreruperi la momente de timp prestabilite

Ceas de timp real (RTC Real Time Clock), utilizat pentru:


- Achiziia unor informaii din proces la anumite intervale de timp;
- Aplicarea unor mrimi de comand pe o anumit durat;
- Rularea periodic a unor programe de autotest;
- Editarea unor rapoarte periodice, la anumite intervale de timp;
- Msurarea timpului astronomic.
Divizarea cu un factor programabil a frecvenei unor semnale.
Generarea unor semnale factor de form programabil (PWM Pulse Width Modulation).

2. Msurarea timpului scurs ntre dou evenimente

START EV1
EV1
CEAS . . . EV2 CEAS
EVn
STOP EV2

Se pot utiliza dou proceduri:


a) La EV1 i EV2 se citete ceasul, intervalul de timp fiind calculat prin diferen;
b) EV1 pornete ceasul, EV2 l oprete, dup care se citete valoarea indicat de ceas.
Aproximarea derivatelor unor mrimi fizice n raport cu timpul: viteze, debite etc.
Ceas de gard (WDT Watch Dog Timer):

(Re)declanare Execuie
WDT program

ntrerupere
Q
Monostabil sau RESET

Funcionarea ceasului de gard

6.2. Circuitul programabil de timp PIT 8253 (Programmable Interval Timer)


64
Caracteristici generale:
Tehnologie NMOS, alimentat la 5V cc.
Se conecteaz direct la magistralele sistemelor cu P 8085 i 8086
Semnalele la pini sunt compatibile TTL
Conine 3 canale de timp independente
Fiecare canal de timp conine un numrtor de 16 bii cu decrementare
Decrementarea se poate realiza n cod binar sau BCD
Fiecare numrtor poate fi ncrcat i citit de ctre microprocesor
Pentru fiecare canal sunt disponibile 6 moduri de lucru.

6.2.1. Structura intern i funcionarea canalelor de timp

Fiecare canal are 3 semnale de control:

o CLK intrarea de numrare a impulsurilor (Fmax= 2,63 MHz)


o GATE intrarea de control a numrrii (oprire, pornire, rencrcare)
o OUT - ieire care indic starea canalului.

D7D0 Tampon CLK0


magistral
Ceas GATE0
de date
#0
OUT0
RD
WR Logic
de CLK1
A1 citire/
scriere Ceas GATE1
A0 #1
OUT1
CS

CLK2
Registrul
cuvntului Ceas GATE2
de #2
OUT2
comand

Schema bloc a circuitului PIT 8253

Tamponul magistralei de date asigur legtura ntre MD i magistrala intern, este validat
la selectarea circuitului ( CS =0).

Logica de citire/scriere stabilete sensul de transfer al datelor prin tamponul magistralei de


date ( RD , WR ) i decodific liniile A1 i A0 pentru a selecta registrele interne.

65
CS RD WR A1 A0 Efect
1 8253 dezactivat - TS
0 1 0 0 0 ncrcare numrtor canal #0
0 1 0 0 1 ncrcare numrtor canal #1
0 1 0 1 0 ncrcare numrtor canal #2
0 1 0 1 1 nscriere registru de comand (RC)
0 0 1 0 0 Citire numrtor canal #0
0 0 1 0 1 Citire numrtor canal #1
0 0 1 1 0 Citire numrtor canal #2
0 0 1 1 1 Nici o operaie TS (RC nu poate fi citit)
0 1 1 Nici o operaie - TS

Tabelul de funcionare al circuitului 8253

8253 4 porturi de I/E:


PIT (A1=A0=0) adresa numrtorului canalului #0
PIT+1 adresa numrtorului canalului #1
PIT+2 adresa numrtorului canalului #2
PIT+3 adresa registrului de control al circuitului

Fiecare canal de timp (ceas) conine cte 3 registre de 16 bii:

1. Un numrtor cu decrementare:

se decrementeaz la fiecare front descresctor pe intrarea de numrare CLK:


- n mod automat, independent de GATE
- numai dac linia GATE este pe 1 logic.

2. Un registru al constantei de timp:

este ncrcat de ctre P la programarea canalului i memoreaz valoarea


ncrcat

coninutul su poate fi copiat de numrtorul cu decrementare:


- la nceputul unui nou ciclu de funcionare;
- la apariia unui front cresctor pe linie GATE.

3. Un registru cu zvorre (latch):

poate reine (captura) la comand coninutul numrtorului cu decrementare;

valoarea memorat poate fi apoi citit prin program.

66
6.2.2. Programarea canalelor de timp

Dup alimentare, canalele nu funcioneaz, iar ieirile OUT sunt meninute n 1 logic.
Programarea unui canal de timp:
- scrierea unui cuvnt de control n registrul de comand;
- scrierea constantei de timp n registrul asociat canalului.
D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 RL1 RL0 M2 M1 M0 BCD

Selecie canal Read/Load Selecie mod Tip decrementare


0 0 - canal #0 0 0 - captur (memorare) 0 0 0 - modul 0 0 - n cod binar:
0 1 - canal #1 0 1 - Read/Load CST8 (LSB) 0 0 1 - modul 1 (0CSTFFFFh)
1 0 - canal #2 1 0 - Read/Load CST8 (MSB) 1 0 - modul 2 1 - n cod BCD:
1 1 - ilegal 1 1 - Read/Load CST16 (mai 1 1 - modul 3 (0CST9.999)
nti LSB, apoi MSB) 1 0 0 - modul 4
1 0 1 - modul 5
Configuraia cuvntului de control pentru un canal de timp

Constanta de timp:
Mai mic sau egal cu 255 (RL1 RL0 = 01) numai LSB va fi nscris i va putea fi citit
Multiplu de 256 (RL1 RL0 = 10) numai MSB va fi nscris i va putea fi citit
Mai mare de 255 (RL1 RL0 = 11) nti LSB, apoi MSB vor fi inscrise i vor putea fi citite

nscrie cuvntul de control


pe adresa registrului de
comand (cu A1=A0=1)

urmeaz CST16 - 11 00 - captur (memorare)


RL1 RL0
nscrie LSB al
CST16 pe adresa
01 10 Citete LSB i/sau
MSB al valorii me-
canalului selectat
morate, de la adresa
(A1=SC1, A0=SC2) urmeaz CST8 urmeaz CST8 canalului selectat
(A1=SC1, A0=SC2)
nscrie CST8 de tip nscrie CST8 de tip
n funcie de tipul
nscrie MSB al LSB pe adresa MSB pe adresa
constantei folosite la
CST16 pe adresa canalului selectat canalului selectat
programarea
canalului selectat (A1=SC1, A0=SC2) (A1=SC1, A0=SC2)
canalului de timp
(A1=SC1, A0=SC2)

Citirea valorii din numrtorul cu decrementare:

direct, chiar n timpul funcionrii (pot s apar erori)


dup o comand de memorare n registrul cu zvorre, special prevzut n acest scop.

67
PIT 8254 - poate lucra la Fmax = 8 MHz i chiar 10MHz (8254-2).
- complet compatibil la pini cu 8253
- dispune i de o a treia modalitate de citire a coninutului unui numrtor: read-back.

Cuvntul de comand pentru read-back:


D7 D6 D5 D4 D3 D2 D1 D0

1 1 COUNT STATUS CNT2 CNT1 CNT0 0

- se folosete combinaia D7=D6=1, neutilizat la 8253, cu COUNT =0


- canalele pe care se realizeaz operaia de memorare sunt selectate prin biii CNTi=1.
- dac STATUS =0, n registrele latch ataate numrtoarelor se va memora starea
canalelor specificate prin biii CNTi=1, ntr-un cuvnt de stare de forma:
D7 D6 D5 D4 D3 D2 D1 D0
NULL
OUTPUT RW1 RW0 M2 M1 M0 BCD
COUNT

Biii D5D0 - conin informaiile transmise prin cuvntul de comand.


RW1, RW2 (Read/Write la 8254 n loc de Read/Load la 8253)
OUTPUT - starea linie de ieire OUT;
NULL COUNT = 1 dac numrtorul canalului a fost ncrcat i poate fi citit.

COUNT i STATUS pot fi active simultan:


- la prima citire va fi returnat starea
- la urmtoarele citiri se returneaz LSB i/sau MSB.

6.2.3. Moduri de operare


Rolul liniei GATE:

Mod GATE=0 sau trece n 0 () GATE trece n 1 ( ) GATE=1


Valideaz
0,4 Inhib decrementarea -
decrementarea
1) Iniiaz numrarea
1,5 - 2) OUT trece n 0 dup urmtorul -
front activ pe linia CLK (modul 1)
1) Inhib decrementarea Valideaz
2,3 Iniiaz numrarea
2) OUT trece imediat n 1 decrementarea

* * *
CLK

GATE

CONTOR 7 6 6 6 5 4 7 6 7 6 5 7

Linia GATE poate fi activ:


- pe nivel GATE=1 permite decrementarea numrtorului pe un front descresctor activ
(*) pe intrarea CLK: numai dac GATE=1 pe frontul cresctor imediat anterior al CLK.
- pe front primul front activ pe linia CLK care urmeaz dup frontul cresctor pe linia
GATE determin rencrcarea constantei de timp n numrtorul cu decrementare.

68
Modul 0: numrtor de evenimente / monostabil programabil, (re)declanat prin program
CLK

CW n=4 n=5
WR

OUT 4 3 2 1 0 FFFF FFFE 5 4 4 4 4 3 2 1 0 FFFF

GAT
E
Programare:
nscriere CW: OUT=LOW.
nscriere constant de timp:
LSB: oprete decrementarea;
MSB: funcionarea pornete odat cu urmtorul front activ pe linia CLK.
Funcionare:
Decrementare: cu o unitate, pe fiecare front activ pe linia CLK.
Renscrierea constantei: rencrcare contor pe urmtorul front activ pe linia CLK.
Control hardware: GATE = LOW blocheaz decrementarea.
Contor = 0000h: OUT=HIGH (cerere ntrerupere); decrementarea continu.
Reluare funcionare:
Software: ncrcarea unei noi constante redeclaneaz funcionarea.
Hardware: nu
CLK aperiodic numrtor de evenimente
- periodic monostabil programabil.

Modul 4: numrtor de evenimente / impuls programabil, (re)declanat prin program


CLK

CW n=4 n=5
WR

OUT 4 3 2 1 0 FFFF FFFE 5 4 4 4 4 3 2 1 0 FFFF

GATE

Programare:
nscriere CW: OUT=HIGH.
nscriere constant de timp:
LSB: oprete decrementarea;
MSB: funcionarea pornete odat cu urmtorul front activ pe linia CLK.
Funcionare:
Decrementare: cu o unitate, pe fiecare front activ pe linia CLK.
Renscrierea constantei: rencrcare contor pe urmtorul front activ pe linia CLK.
Control hardware: GATE = LOW blocheaz decrementarea.
Contor = 0000h: OUT=LOW pentru o perioad de tact CLK; decrementarea continu.
Reluare funcionare:
Software: ncrcarea unei noi constante redeclaneaz funcionarea.
Hardware: nu
CLK aperiodic numrtor de evenimente
- periodic impuls programabil.

69
Modul 1: numrtor de evenimente / monostabil programabil, (re)declanat prin hardware

CLK

WR CW n=2 n=3 n=5

GATE

OUT 2 1 0 FFFF FFFE 3 2 1 3 2 1 0 FFFF 5 4 3

Programare:
nscriere CW: OUT=LOW.
nscriere constant de timp: nu declaneaz nceperea numrrii.
Funcionare:
Declanare: pe primul front activ de dup un impuls 1 pe linia GATE (min. 150 ns)
Decrementare: cu o unitate, pe fiecare front descresctor al semnalului CLK.
Renscriere constant: luat n considerare numai dup un impuls 1 pe linia GATE.
Control hardware: nivelul liniei GATE nu afecteaz decrementarea.
Contor = 0000h: OUT=HIGH (cerere ntrerupere); decrementarea continu.
Reluare funcionare:
Software: nu
Hardware: un impuls 1 pe linia GATE (min. 150 ns)
CLK aperiodic numrtor de evenimente
- periodic monostabil programabil

Modul 5: numrtor de evenimente / impuls programabil, (re)declanat prin hardware

CLK

WR CW n=2 n=3 n=5

GATE

OUT 2 1 0 FFFF FFFE 3 2 1 3 2 1 0 FFFF5 4 3

Programare:
nscriere CW: OUT=HIGH.
nscriere constant de timp: nu declaneaz nceperea numrrii.
Funcionare:
Declanare: pe primul front activ de dup un impuls 1 pe linia GATE (min. 150 ns)
Decrementare: cu o unitate, pe fiecare front descresctor al semnalului CLK.
Renscriere constant: luat n considerare numai dup un impuls 1 pe linia GATE.
Control hardware: nivelul liniei GATE nu afecteaz decrementarea.
Contor = 0000h: OUT=LOW pentru o perioad de tact CLK; decrementarea continu.
Reluare funcionare:
Software: nu
Hardware: un impuls 1 pe linia GATE (min. 150 ns)
CLK aperiodic numrtor de evenimente
- periodic impuls programabil

70
Modul 2: numrtor de evenimente modulo n / generator de impulsuri programabil

CLK

WR CW n=3 n=4
3 2 1(0)3 2 1 (0)4 3 3 4 3 2 1(0) 4 3 2 1 (0) 4 3
OUT

GAT
E
Programare:
nscriere CW: OUT=HIGH.
nscriere constant de timp: declaneaz nceperea numrrii.
Funcionare:
Decrementare: cu o unitate, pe fiecare front activ al semnalului CLK.
Ieire - OUT=HIGH pentru n-1 perioade CLK, OUT=LOW n ultima perioad CLK.
Renscrierea constantei: luat n considerare numai la trecerea numrtorului prin 0.
Control hardware: GATE=0 blocheaz decrementarea i foreaz OUT=HIGH.
Sincronizare: hardware frontul cresctor pe linia GATE rencarc ultima constant.

Reluare funcionare: automat, cu ultima constant ncrcat (minim 2).


CLK aperiodic numrtor de evenimente modulo n
- periodic generator de impulsuri cu frecven programabil

Modul 3: numrtor de evenimente modulo n/2 / divizor de frecven programabil.

CLK

WR CW n=4 n=5

4 4 4 2 (0)4 2 (0) 4 2 (0) 4 2(0)5 4 2 (0)5 2 (0) 5 4 2(0)5

OUT

GATE

Programare:
nscriere CW: OUT=HIGH.
nscriere constant de timp: declaneaz nceperea numrrii.
Funcionare:
Decrementare: cu dou uniti odat, pe fiecare front activ al semnalului CLK.
Ieire n=2k(+1): OUT=HIGH pe durata primelor k(+1) impulsuri CLK
OUT=LOW pe durata ultimelor k impulsuri CLK.
Renscrierea constantei: luat n considerare numai la trecerea numrtorului prin 0.
Control hardware: GATE=0 blocheaz decrementarea i foreaz OUT=HIGH.
Sincronizare: hardware frontul cresctor pe linia GATE rencarc ultima constant.
Reluare funcionare: automat, cu ultima constant ncrcat (minim 3)

CLK aperiodic numrtor de evenimente modulo n/2


- periodic divizor de frecven programabil.

71
6.3. Realizarea aplicaiilor folosind circuitul PIT8253

Exemplu: Sistem cu 8085, FXTAL=3MHz, s se organizeze un SIT care s asigure urmtoarele


taskuri de timp:
a) numrtor pentru 100 de evenimente (ntrerupere pe linia RST 5.5)
b) ntrziere programabil (timeout) de 50 ms (ntrerupere la expirare pe linia RST 6.5)
c) ceas de timp real, n cuante de 200ms (ntrerupere pe linia RST 7.5)
d) ceas de gard (WDT) de 1,5 s (ntrerupere nemascabil)
e) semnal de tact pentru o interfa serial USART 8251, cu frecvena de 169600 Hz.
Stabilirea necesarului de canale, a modurilor de lucru i a constantelor de timp
Se utilizeaz semnalul furnizat de 8085 pe linia CLK, cu frecvena FCLK = FXTAL/2 = 1,5MHz.
a) 100-1=99<255 1 canal (#1), programat n modul 0, ncrcat cu N1=99.

TOUT 50ms 50 103 s


x= = = = 50 103 s 1,5 106 Hz = 75 103 = 75000 > 65535
b) TCLK 1 1
6
1,5MHz 1,5 10 Hz
un singur canal nu este suficient, trebuie utilizate dou canale nseriate:
#2: divizor de frecven (modul 2), avnd la intrare semnalul CLK;
#3: primete semnalul furnizat de primul canal pe ieirea OUT i lucreaz n modul 0;
N2 (N3+1) = 75000.
TOUT 200ms 200 103 s
x= = = = 200 103 s 1,5 106 Hz = 300 103 = 300000 > 65535
c) TCLK 1 1
1,5MHz 1,5 106 Hz
nu este suficient un singur canal: va fi utilizat canalul #2 i un nou canal:
#4: programat ca divizor de frecven (modul 3).
N2 N4 = 300000.

TOUT 1,5s 1,5s


x= = = = 1,5s 1,5 10 6 Hz = 2,25 10 6 = 2250000 > 65535
d) TCLK 1 1
1,5MHz 1,5 10 6 Hz
nu este suficient un singur canal: va fi utilizat canalul #2 i un nou canal:
#5: programat ca impuls (re)declanat prin program (modul 4).
N2 (N5+1)= 2250000.

FCLK 1,5MHz 1,5 106 Hz


e) x = = = = 9,765625 10 < 255
FOUT 16 9600Hz 153600Hz
#6: programat ca divizor de frecven (modul 3 - und dreptunghiular), ncrcat cu
constanta N6=10.
N2: un divizor comun (mai mic dect 65535) al valorilor 75000, 300000 i 2250000.
Dac N2=5000 N3+1=15, N4=60, N5+1=450 N3=14, N4=60, N5=449.
Au rezultat un numr de 6 canale de timp, care pot fi implementate cu 6:3=2 circuite 8253.

72
Evenimente externe
Numrtor de
(a) RST 5.5
N1=99 Modul 0
evenimente

FXTAL=1,5 MHz FPILOT = 300 Hz


Divizor de
N2=5000 Modul 2
frecven

Monostabil (b) RST 6.5


(re)declanat N3=14 Modul 0
prin program

FPILOT = 300 Hz

(c) RST 7.5


Divizor de
N3=60 Modul 3
frecven

Impuls (d) TRAP


(re)declanat N5=449 Modul 4
prin program
(e) 16 9600 Hz
Divizor de
N6=10 Modul 3
frecven

Utilizarea canalelor de timp pentru implementarea taskurilor ae

6.3.1. Structura hardware a sistemului

3MHz Magistrala de adrese A15 A14A1


A15A0
A1 A0 A1 A0
IO/M E3 E1 A2 A1 A0 E2
DCD I/E (8205)
8085 0 1 2 3 4 5 6 7
+ 8212
TRAP
Magistrala de date
RST 7.5
D7D0 RD
RST 6.5 WR
1,5MHz VCC
RD WR A1 A0 D7D0 CS RD WR A1 A0 D7D0 CS
CLK1 GATE0 GATE0
OUT0 PIT-A GATE1 GATE1 PIT-B OUT2
OUT2 GATE2 GATE2
CLK0 OUT1 CLK2 CLK0 CLK1 OUT0 OUT1 CLK2
Eveniment

169600 Hz
Conectarea circuitelor 8253 ntr-un sistem cu P 8085

73
6.3.2. Programarea taskurilor de timp
; INIT_PIT iniializare circuite 8253
; - Intrare nimic; Ieire nimic; Distruge - A
init_pit:

; PROGRAMARE PIT_A
PIT_A EQU 10h ; adresa de baz a dispozitivului
CWA0 EQU 00010001b ; Cuvnt de comand #0: modul 0, CST8, LSB, BCD.
N1 EQU 99h ; Constanta N1 (numrtor pentru 100 de evenimente).
CWA1 EQU 01110100b ; Cuvnt de comand #1: modul 2, CST16, binar.
N2 EQU 5000 ; Constanta N2 (divizor de frecven cu 5000).
CWA2 EQU 10010000b ; Cuvnt de comand #2: modul 0, CST8, LSB, binar.
N3 EQU 14 ; Constanta n3 (ceas de gard de 1,5 s).

; PROGRAMARE CANAL NUMRTOR DE EVENIMENTE


MVI A,CWA0
OUT PIT_A+3 ; Se nscrie cuvntul de comand pentru #0.
MVI A, N1
OUT PIT_A ; Se nscrie N1 pe adresa canalului #0 (PIT_A+0).

; PROGRAMARE CANAL PILOT


MVI A,CWA1
OUT PIT_A+3 ; Se nscrie cuvntul de comand pentru #1.
MVI A,LOW(N2)
OUT PIT_A+1 ; Se nscrie constanta N2 (LSB) pe adresa canalului 1.
MVI A,HIGH(N2)
OUT PIT_A+1 ; Se nscrie constanta N2 (MSB) pe adresa canalului 1.

; PROGRAMARE CANAL NTRZIERE


MVI A,CWA2
OUT PIT_A+3 ; Se nscrie cuvntul de comand pentru #2.
MVI A,N3
OUT PIT_A+2 ; Se nscrie constanta N3 pe adresa canalului 2.
; PROGRAMARE PIT_B
PIT_B EQU 20h
CWB0 EQU 00010110b ; Cuvnt de comand #4: modul 3, CST8 (LSB), binar.
N4 EQU 60 ; Constanta N4 (ceas de timp real de 200 ms).
CWB1 EQU 01111000b ; Cuvnt de comand #5: modul 4, CST16, binar.
N5 EQU 449 ; Constanta N5 (ceas de gard de 1,5 s).
CWB2 EQU 10010110b ; Cuvnt de comand #6: modul 3, CST8 (LSB), binar.
N6 EQU 10 ; Constanta N6 (semnal de tact pentru 9600Baud).
; PROGRAMARE CANAL CEAS DE TIMP REAL
MVI A,CWB0
OUT PIT_B+3 ; Se nscrie cuvntul de comand pentru #0.
MVI A,N4
OUT PIT_B ; Se nscrie constanta N4 pe adresa canalului 0.
; PROGRAMARE CANAL CEAS DE GARD
MVI A,CWB1
OUT PIT_B+3 ; Se nscrie cuvntul de comand pentru #1.
MVI A,LOW(N5)
OUT PIT_B+1 ; Se nscrie constanta N5 (LSB) pe adresa canalului 1.
MVI A,HIGH(N5)
OUT PIT_B+1 ; Se nscrie constanta N5 (MSBB) pe adresa canalului 1.
; PROGRAMARE DIVIZOR DE TACT PENTRU INTERFAA SERIAL
MVI A,CWB2
OUT PIT_B+3 ; Se nscrie cuvntul de comand pentru #0.
MVI A,N6
OUT PIT_B+2 ; Se nscrie constanta N4 pe adresa canalului 0.
74
RET
;...........................
;Programul principal

main:
;...........................

CALL INIT_PIT
;...........................

loop:
CALL WDT_RESET
;...........................

MVI A, event_nr
CALL EV_COUNTER

;...........................

MVI A,delay
CALL TIMEOUT

;...........................

CALL READ_COUNT
;...........................

CALL READ_WDT
;...........................

JMP loop

; WDT_RESET resetare (rearmare) ceas de gard


; - Intrare nimic
; - Ieire nimic
; - Distruge - A
WDT_RESET:
MVI A,LOW(N5)
OUT PIT_B+1 ; Se nscrie constanta N5 (LSB) pe adresa canalului 1.
MVI A,HIGH(N5)
OUT PIT_B+1 ; Se nscrie constanta N5 (MSBB) pe adresa canalului 1.
RET

; EV_COUNTER programeaz generarea unei ntreruperi dup un numr de evenimente


; - Intrare A numrul de evenimente ateptat -1
; - Ieire nimic
; - Distruge - nimic
EV_COUNTER:
OUT PIT_A ; Se nscrie parametrul din A n canalul #0 (PIT_A+0).
RET

; TIMEOUT programeaz generarea unei ntreruperi dup scurgerea unui interval de timp
; - Intrare A numrul de cuante de timp - 1
; - Ieire nimic
; - Distruge - nimic
TIMEOUT:
OUT PIT_A+2 ; Se nscrie parametrul din A pe adresa canalului 2.
RET

75
; READ_EV_COUNT citete numrul de evenimente care au aprut pn n acest moment
; - Intrare A numrul de evenimente ateptat - 1, n format BCD
; - Ieire A numrul de evenimente care au aprut
; - Distruge A, B, PSW
read_ev_count:
PUSH PSW ; depune PSW pe stiv
IN A,PIT_A ; citete #0
MOV B,A ; copie n B valoarea citit din #0
POP PSW ; reface PSW de pe stiv
XRA A ; foreaz CY=0
SBB B ; calculeaz numrul de evenimente care au aprut
RET ; revine avnd n A numrul de evenimente aprute

; READ_WDT citete valoarea din numrtorului ceasului de gard


; - Intrare nimic
; - Ieire BC valoarea rmas n WDT
; - Distruge A,B,C
read_wdt:
MVI A, 01000000b ; cuvntul de comand pentru captur #1
OUT PIT_B+3 ; transmite comanda de captur
IN A,PIT_B+1 ; citete LSB al valorii capturate din #1
MOV C,A ; o copie n C
IN A,PIT_B+1 ; citete LSB al valorii capturate din #1
MOV B,A ; o copie n B
RET ; revine avnd n registrul pereche B valoarea citit

76
7. Interfaarea cu dispozitive periferice
Sistemele cu P pentru conducerea proceselor interfee pentru cuplarea perifericelor:
- dialogul cu operatorul:
o butoane, comutatoare, lmpi de UCP cu P
semnalizare, tastaturi, afiaje etc.
- nregistrarea i stocarea datelor din proces:
o imprimante, plotere, memorii de
mas etc.
- conducerea proceselor fizice:
o intrri de la traductoare:
convertoare A/N
traductoare analogice;
intrri numerice Interfa Interfa
limitatoare de curs, senzori paralel serial
numerici;
intrri n impulsuri
traductoare cu ieire n
impulsuri.
o ieiri ctre elemente de execuie: Dispozitive periferice
convertoare N/A;
ieiri numerice;
ieiri n impulsuri.
- comunicaia cu alte sisteme cu microprocesoare:
o paralel;
o serial.

7.1. Interfaarea paralel


Transferul informaiei ntre P i interfa:
- n spaiul de I/E sau de memorie (I/E mapate in memorie);
UCP cu P
- vitez de transfer mare dat de caracteristicile P i ale
porturilor interfeei paralele;
- transferul se realizeaz pe magistrala de date a sistemului cu
P;
- sincronizarea transferului semnalele de control de
citire/scriere.
Interfa paralel
Transferul informaiei ntre interfa i periferic:
pe o magistral paralel;
cu vitez mare, dat de caracteristicile interfeei i ale
dispozitivului periferic;
la o distan relativ redus (de ordinul m)
cu imunitate sczut la perturbaii.
Dispozitive periferice
Fluxul de date:
Unidirecional (sincronizat sau nesincronizat);
Bidirecional (multiplexat n timp).
77
7.1.1. Transferul paralel. Controlul fluxului de date ntre interfa i periferic
Tipuri de transfer paralel: cu sau fr controlul fluxului de date.
I/E nesincronizat (fr controlul fluxului de date)
Sursa: UCP cu P
poate furniza date pe magistrala de I/E n orice moment;
menine datele valide pe magistrala de I/E pn cnd
depune noi date.
MA MD MC
Destinaia:
utilizeaz datele prezente pe magistrala de I/E, fr a le
memora; Interfa paralel
are acces la date ct timp acestea sunt disponibile pe
magistrala de I/E.
E
I Date de la periferic I

E Date pentru periferic

Intrare nesincronizat: Dispozitive periferice


perifericul depune date noi pe liniile I;
P citete direct starea liniilor de intrare I.
Ieire nesincronizat:
P comand direct nivelul semnalului de pe liniile de ieire E;
perifericul utilizeaz continuu datele prezente pe liniile de ieire E.

I/E sincronizat (cu controlul fluxului de date):


- fr confirmare;
- cu confirmare: simpl sau dubl. UCP cu P
I/E sincronizat fr confirmare:
Sursa:
poate furniza date pe magistrala de I/E n orice moment;
indic depunerea datelor printr-un impuls pe linia SRC ; MA MD MC
opional - menine datele valide pe magistrala de I/E.
Destinaia:
memoreaz datele prezente pe magistrala de I/E la Interfa paralel
detectarea impulsului pe linia controlat de surs ( SRC );
are acces la datele memorate pn la sosirea altora noi. E
SRCE
I SRCI
I/E Date de la / spre periferic

Dispozitive periferice
SRCI/E

Intrare sincronizat fr confirmare:


perifericul comand nscrierea datelor n portul de intrare.
P ateapt apariia de date noi n portul de intrare.
Ieire sincronizat fr confirmare:
P nscrie date n portul de ieire al interfeei paralele;
perifericul ateapt ca interfaa s nscrie date noi.

78
I/E sincronizat cu confirmare simpl (single-handshake):
Sursa:
poate nscrie datele la destinaie numai cnd aceasta
este pregtit s le preia (DST=1);
UCP cu P
opional - menine datele valide pe magistrala de I/E.
Destinaia:
indic sursei prin DST dac poate primi date noi;
reine datele prezente pe magistrala de I/E la
MA MD MC
detectarea impulsului pe linia SRC ;

I/E Date de la / spre


Interfa paralel

SRCI/E
DSTI E SRCE
DSTI/E I
SRCI DSTE
Intrare sincronizat cu confirmare simpl:
perifericul ateapt permisiunea interfeei
de a nscrie date noi; Dispozitive periferice
P ateapt apariia de date noi n portul de intrare.

Ieire sincronizat cu confirmare simpl:


P ateapt permisiunea interfeei de a nscrie date noi;
perifericul indic interfeei momentul n care poate primi date noi.

Utilizat n transferuri paralele unidirecionale.

I/E sincronizat cu confirmare dubl (double-handshake):


Sursa:
poate depune datele pe magistral numai cnd destinaia confirm c magistrala este
liber (DST=0);
nscrie datele la destinaie ( SRC=1).
menine datele valide ct timp DST=0.
Destinaia:
indic sursei prin DST dac poate depune sau nu date pe magistral;
reine datele prezente pe magistrala de I/E la dezactivarea semnalului pe linia SRC .

I/E Date de la / spre periferic

SRCI/E

DSTI/E

Intrare sincronizat cu confirmare dubl:


perifericul ateapt permisiunea interfeei pentru a depune i nscrie date noi;
P ateapt apariia de date noi n portul de intrare.

Ieire sincronizat cu confirmare simpl:


P ateapt permisiunea interfeei de a nscrie date noi;
perifericul indic interfeei momentul n care aceasta poate depune i nscrie date noi.
Utilizat n transferuri paralele bidirecionale.
79
7.1.2. Interfaa paralel PPI 8255/8255A. Caracteristici tehnice i structura intern

PPI - Programmable Peripheral Interface interfa paralel programabil


40 de pini, compatibil TTL, alimentat la +5V;
8255/8255A - NMOS, 82C55A CMOS;
3 porturi I/E paralele de 8 bii.

Grup A
PA7PA0
Port A

Comand
Grup A
Grup A
Port C
(sup) PC7PC4
Tampon
D7D0 magistral
de date Grup B
PC3PC0
CS Port C
(inf)
Comand
RD Logic Grup B
WR de
A1 comand Grup B
citire/ PB7PB0
A0
scriere Port B
RESET

3 porturi de 8 bii: A, B i C: Grup A = Port A + Port Csup, Grup B = Port B + Port Cinf

Tamponul magistralei de date asigur legtura ntre MD i magistrala intern, este validat
la selectarea circuitului ( CS =0).
Logica de citire/scriere stabilete sensul de transfer al datelor prin tamponul magistralei de
date ( RD , WR ) i decodific liniile A1 i A0 pentru a selecta registrele interne.
Logica de comand conine un registru de control (CWR - Control Word Register), prin
care se poate programa modul de lucru al celor dou grupuri de porturi.
Linia RESET terge coninutul registrelor interne (A, B, C porturi de intrare n modul 0).

CS RD WR A1 A0 Tipul operaiei efectuate


0 0 1 0 0 Citire port A
0 0 1 0 1 Citire port B
0 0 1 1 0 Citire port C
0 0 1 1 1 Nici o operaie (D7D0 n HZ)
0 1 0 0 0 Scriere n portul A
0 1 0 0 1 Scriere n portul B
0 1 0 1 0 Scriere n portul C
0 1 0 1 1 Scriere n registrul de comand
1
Nici o operaie (D7D0 n HZ)
0 1 1

80
Porturile A, B i C porturi independente de 8 bii.

Portul A - un registru de ieire cu memorare;


- un registru cu memorare pe intrare.
Portul B - un registru tampon intrare/ieire cu memorare
- un tampon de intrare;
Portul C - un registru tampon de intrare fr memorare;
- un registru tampon de ieire cu memorare.
Porturile A i B linii utilizate numai pentru transferul de date pe octet
Portul C - poate fi controlat pe octet, semioctet i pe bit.
- liniile portului C au i funcii de sincronizare a transferului prin A i B.

7.1.3. Modurile de lucru ale interfeei paralele PPI 8255/8255A

Circuitul 8255A poate lucra n trei moduri, selectabile prin program.

Modul 0 - intrare/ieire nesincronizat


A, B, Csup i Cinf pot fi programate separat pentru transfer paralel nesincronizat.

Modul 1 intrare sau ieire sincronizat


A i B programate independent pentru transfer paralel sincronizat cu confirmare simpl.

Modul 2 intrare/ieire sincronizat


Portul A programat pentru transfer bidirecional sincronizat, cu confirmare dubl.

Magistrala de adrese A1 A0

Magistrala de comand
I/OR I/OW
Magistrala de date

RD WR D7D0 CS A1 A0

RESET 8255A

Port A Port C Port B


PA7PA0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB7PB0

Mod Mod
Port A Port B
0 I/E I/E I/E I/E I/E I/E I/E I/E I/E I/E 0

1 I I/E I/E IBFA STB A INTRA STB B IBFB INTRB I 1

1 E OBFA ACK A I/E I/E INTRA ACKB OBFB INTRB E 1

2 I-E OBFA ACK A IBFA STB A INTRA

81
Modul 1 intrare: SRC = STB (strobe); DST = IBF (Input Buffer Full);

1 2 3 4 5 6 7 8 9 1
tST

STB

IBF
Numai dac
INTR INTE=1

RD tPS tPH
Date de la
Data stabil
periferic

1. Perifericul depune data pe liniile de intrare.


2. Perifericul activeaz semnalul STB i nscrie data n portul de intrare.
3. Portul de intrare reine data i indic acest lucru prin activarea liniei IBF.
4. Informat despre ncrcarea datei, perifericul dezactiveaz linia STB .
5. Perifericul poate nceta s mai menin data valid pe magistral.
6. Atunci cnd STB IBF RD =1, 8255 activeaz linia de ntrerupere INTR, dac INTE=1.
7. P afl c data este disponibil i declaneaz o procedur de citire a ei ( STB =0).
8. Achitarea cererii de ntrerupere (INTR=0).
9. Data este citit de microprocesor.
10. Linia IBF este dezactivat: perifericul poate depune o nou dat pe magistral.

Modul 1 ieire SRC = OBF (Output Buffer Full); DST = ACK (Acknowledge);

1 1 1 1 1 1 1 1 1 2

WR

OBF

INTR Numai dac


INTE=1
ACK tWB
Date pentru
periferic Data stabil

11. P nscrie data n portul de ieire.


12. Se dezactiveaz cererea de ntrerupere pe linia INTR (dac exist).
13. Se termin scrierea, odat cu dezactivarea semnalului WR .
14. Datele apar pe magistral dup tWB de la terminarea scrierii.
15. Se activeaz linia OBF , care anun perifericul c datele sunt valide pe magistral.
16. Perifericul confirm preluarea datei prin activarea semnalului ACK .
17. Aceasta determin portul s-i dezactiveze linia OBF .
18. Se dezactiveaz linia de confirmare a prelurii datei de ctre periferic.
19. Atunci cnd WR OBF ACK =1, se genereaz o ntrerupere pe linia INTR, dac INTE=1.
20. P este anunat astfel c portul de ieire este pregtit s accepte noi date.

82
Modul 2 - intrare-ieire sincronizat SRC = STB A, OBF A; DST = IBFA, ACK A.
INTRA = STB AIBFA RD + WR OBF A ACK A, condiionat de INTE1 i INTE2.
Controlul fluxului de date cade n sarcina perifericului.
1 1 1 1 1 1 1 1 2

WR

OBFA

INTRA

ACKA tST

STBA

IBFA tAD tKD


PA7PA0 Date de la periferic Date pt. periferic

RD tPS tPH

1 2 3 4 5 6 1 14 7 8 9 10

7.1.4. Programarea interfeei paralele PPI 8255/8255A


D7 D6 D5 D4 D3 D2 D1 D0
1 MA1 MA0 PA PCS MB PB PCI
Grup A Grup B
Mod Tip Mod Tip
Control
Port A Port A PC7PC4 Port B Port B PC3PC0
Word
0 0 - modul 0
1- I 1- I 0 - mod 0 1- I 1- I
0 1 - modul 1
0-E 0-E 1 - mod 1 0-E 0-E
1 x - modul 2

D7 D6 D5 D4 D3 D2 D1 D0
0 x x x B2 B1 B0 S/ R
Nu conteaz Selecie bit port C Operaia
CW
PC0 0 0 0
PC1 0 0 1
PC2 0 1 0
PC3 0 1 1 1 - Set
Single Bit Set/Reset
PC4 1 0 0 0 - Reset
PC5 1 0 1
PC6 1 1 0
PC7 1 1 1

Comenzi pe bit (portul C n modul 0)


Activarea/dezactivarea ntreruperilor (modurile 1 i 2).

83
Citirea portului C informaie de stare SW (Status Word) interogare

Mod Port A D7 D6 D5 D4 D3 D2 D1 D0 Mod Port B

0 I/E PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0 I/E

1- I PC7 PC6 IBFA INTEA INTRA INTEB IBFB INTRB 1-I

1-E OBF A INTEA PC5 PC4 INTRA INTEB OBF B INTRB 1-E

2 I-E OBF A INTE1 IBFA INTE2 INTRA

7.2. Interfaarea serial

Transferul informaiei ntre P i interfa:


- la fel ca la interfaa paralel. UCP cu P

Transferul informaiei ntre interfa i periferic:


pe linii seriale (bit cu bit);
cu vitez mai redus, dat de caracteristicile
interfeei i ale dispozitivului periferic;
la o distan invers proporional cu viteza (de Interfa serial
ordinul zeci - sute de m)
cu imunitate mai ridicat la perturbaii.

Transferul serial sincronizat:


- la nivel de caracter transfer asincron;
- la nivel de bit transfer sincron. Adaptor de comunicaie

Fluxul de date:
Simplex unidirecional;
Half-duplex bidirecional, multiplexat n timp;
Duplex bidirecional, simultan. Dispozitiv periferic
sau
Tipuri de legturi seriale: sistem cu microprocesor

- punct la punct;
- multipunct.

84
ETPD ETCD ETCD ETPD
IP IP
Unitate IS IL IS Unitate
central Interfa Adaptor Adaptor Interfa central
cu micro- serial de comu- de comu- serial cu micro-
procesor nicaie nicaie procesor
linie
de date
circuit de date
legtur de date
simplex
semiduplex

duplex

ETPD - echipamente terminale de prelucrare a datelor (DTE - Data Terminal Equipment);


ETCD - echipamente terminale pentru comunicaii de date (DCE - Data Communication
Equipment).
Linia de comunicaie - mediul fizic prin care se propag datele seriale.
- linii dedicate - linie telefonic nchiriat, linie telex, fibr optic, transmisie radio;
- linii comutate linii telefonice din reeaua public.

Adaptor de comunicaie adaptarea la caracteristicile liniei de date.


Linii cu cuplaj direct (adaptor fr modem): EIA RS-232, RS-422A, RS-423A, RS-485.

7.2.1. Interfaa serial USART 8251A. Caracteristici tehnice i structura intern

USART (Universal Synchronous / Asynchronous Receiver / Transmitter)


- un canal serial full duplex;
- viteza maxim 19200 Baud (asincron), 64000 Baud (sincron).

Tampon
D7D0 Tampon
magistral TxD
transmisie
de date

TxRDY
RD Logic Comand
de transmisie TxE
WR
comand TxC
C/D i
CLK citire/
RESET scriere Tampon
RxD
recepie
CS
RTS
Comand RxRDY
CTS Comand
modem
DTR recepie RxC
DSR SYNDET/BRKDET

85
Tamponul magistralei de date asigur legtura ntre MD i magistrala intern, este validat
la selectarea circuitului ( CS =0).
Logica de comand i citire/scriere:
- stabilete sensul de transfer al datelor prin tamponul magistralei de date ( RD , WR ) i
decodific linia C/ D (Control / Data) pentru a selecta registrele interne.
- sincronizeaz funcionarea transmitorului i receptorului, cu ajutorul semnalului CLK,
avnd frecvena cuprins ntre 750 Khz i 3 MHz (de cel puin 30 de ori > viteza serial).

Linia C/ D - se conecteaz la linia A0 a magistralei de adrese.

CS RD WR C/ D Tipul operaiei efectuate


0 0 1 0 Citire octet din tamponul de recepie
0 1 0 0 Scriere octet n tamponul de transmisie
0 0 1 1 Citire cuvnt de stare
0 1 0 1 nscriere cuvnt de mod/comand
0 1 1
Nici o operaie (D7D0 n HZ)
1

RESET aduce circuitul n starea de inactivitate (Idle), pregtindu-l pentru programare.

Canalul serial are dou blocuri complet independente:


Transmitorul primete date de la P i le transmite pe TxD, sincron cu TxC.
Receptorul primete date pe RxD, sincron cu RxC, care sunt preluate de P.

Transmitorul format din:


- un registru paralel paralel: ncrcat de P cu date de transmis.
- un registru paralel serie: preia data din registrul paralel-paralel i o transmite pe TxD.
- o logic de comand a transmisiei seriale pe linia TxD, sincronizat de TxC.

De la Registru Registru
magistrala paralel- paralel- TxD
intern paralel serie

De la TxRDY
logica de
Comand transmisie TxE
comand i
citire/scriere TxC

TxC sincronizeaz transmisia serial la nivel de bit: un nou bit apare pe TxD pe:
- fiecare front cztor al TxC:
o viteza de transmisie este egal cu frecvena TxC;
- fiecare al 16-lea (al 64-lea) front cztor pe TxC:
o viteza de transmisie este de 16 sau 64 ori mai mic dect frecvena TxC.
TxRDY (Transmitter Ready) P poate nsrie un nou octet n registrul paralel-paralel.
TxE (Transmitter Empty) registrul paralel-serie este gol.
TxRDY, TxE ntreruperi la transmisie.

86
Receptorul format din:
- un registru serie paralel: preia biii de pe linia RxD, pe care i asambleaz n caractere.
- un registru paralel paralel: preia caracterele din registrul serie-paralel, la dispoziia P
- o logic de comand a recepiei seriale pe linia RxD, sincronizat de RxC.

RxC sincronizeaz recepia serial la nivel de bit: starea liniei RxD este citit pe:
- fiecare front cresctor al RxC:
o viteza de recepie este egal cu frecvena RTxC;
- fiecare al 16-lea (al 64-lea) front cresctor pe RxC:
o viteza de transmisie este de 16 sau 64 ori mai mic dect frecvena RxC.

La Registru Registru
magistrala paralel- paralel- RxD
intern paralel serie

De la
logica de RxRDY
Comand recepie
comand i RxC
citire/scriere

RxRDY un caracter recepionat este disponibil pentru a fi citit de P (ntrerupere recepie)

SYNDET/BRKDET (SYNc DETect/BReaK DETect) rol specific modului de lucru.

Logica de comand modem controlul hardware al fluxului de date:

DSR (Data Set Ready) intrare - modem pregtit pentru transfer;


DTR (Data Terminal Ready) ieire - terminal de date pregtit pentru transfer;
RTS (Request to Send) ieire cere permisiunea de a transmite;
CTS (Clear to Send) intrare primete confirmarea la cererea de transmisie.

7.2.2. Funcionarea USART 8251A n modul asincron

D0 D1 D2 . . . Dn-1
Transmisie

Bit de Bit de Bii de Bit de
TxD Bii de date (n=58) Bii de date
START paritate STOP START
De la microprocesor
Inserai automat de ctre 8251A
Caracter
D0 D1 D2 . . . Dn-1
Recepie

Bit de Bit de Bii de Bit de
RxD Bii de date (n=58) Bii de date
START paritate STOP START
Preluai de ctre microprocesor
Testat de Verificai
8251A de

87
Modul de lucru asincron:
sincronizarea receptorului cu transmitorul:
o la nivel de caracter: grup de 58 bii succesivi.
Linia TxD:
- nu este nici un caracter de transmis nivel HIGH;
- are un caracter de transmis:
o transmite un bit de START nivel LOW
o transmite biii caracterului, ncepnd cu lsb;
o (opional) transmite bitul de paritate;
o transmite 1, 11/2 sau 2 bii de STOP - nivel HIGH.
Validarea transmisiei:
- software TxEN=1 n registrul de comand;
- hardware - CTS =0 confirmare la cererea de transmisie furnizat prin RTS =0.

TxD abandonarea transmisiei n curs de desfurare:


SBRK=1 n registrul de comand (Send BReaK character)
foreaz TxD continuu pe nivel LOW.
Linia RxD:
- nu este nici un caracter prezent pe linie nivel HIGH;
- apariia unui caracter:
o sincronizeaz receptorul pe frontul cztor detectat pe linia RxD;
o verific bitul de start la jumtatea perioadei corespunztoare vitezei de
recepie;
o citete periodic starea liniei RxD pentru a reine biii de date;
o (opional) citete bitul de paritate;
o verific prezena bitului (biilor) de STOP pe nivel HIGH.

Validarea recepiei: software RxEN=1 n registrul de comand.

Tipuri de erori detectate i semnalizate n cuvntul de stare (SW Status Word):

- eroare de paritate bitul de paritate primit nu coincide cu bitul de paritate recalculat;


o se seteaz bistabilul PE (Parity Error) din registrul de stare.

- eroare de ncadrare bitul (biii) de STOP nu au fost gsii pe nivel HIGH;


o seteaz bistabilul FE (Framing Error) din registrul de stare.

- eroare de suprapunere P nu a citit la timp caracterul primit anterior, care s-a pierdut,
fiind supranscris de urmtorul caracter sosit pe linie.
o seteaz bistabilul OE (Overrun Error) din registrul de stare.

Erorile detectate nu opresc funcionarea interfeei seriale.

Bistabilele de eroare pot fi resetate prin program: ER=1 (Error Reset) n registrul de
comand.
La detectarea unui caracter BREAK (nivel LOW continuu pe linie, pe o durat mai mare
dect a unui caracter):

linia BRKDET (ieire) trece pe nivel HIGH;

este setat bistabilul cu acelai nume din registrul de stare.

88
7.2.3. Programarea USART 8251A

Resetare iniializare comenzi


D7 D6 D5 D4 D3 D2 D1 D0
S2 S1 EP PEN L2 L1 B2 B1
Numr bii de STOP Tip paritate Validare Numr bii de date Factor de vitez
0 0 - inactiv generare/control 0 0 - 5 bii (mod asincron)
0 1 - 1 bit paritate 0 1 - 6 bii
0 - impar 0 1 - 1/1
1 0 - 11/2 bii 1 0 - 7 bii 1 0 1/16
1 - par 0 - fr paritate
1 1 - 2 bii 1 1 - 8 bii 1 1 1/64
1 - cu paritate

D7 D6 D5 D4 D3 D2 D1 D0
SCS ESD EP PEN L2 L1 0 0
Numr Tip Tip paritate Validare Numr bii de date Mod sincron
caractere sincro- generare/control 0 0 - 5 bii (Factor de vitez
SYNC nizare paritate 0 1 - 6 bii 1/1)
0 - impar 1 0 - 7 bii
0 - dou 0-intern 1 - par 0 - fr paritate 1 1 - 8 bii
1 - unul 1-extern 1 - cu paritate

Factorul de vitez divizor de frecven pentru semnalele de tact TxC i RxC.

1 obligatoriu TxC al transmitorului datelor trebuie s fie comun cu RxC al receptorului.

16, 64 TxC al transmiatorului poate fi independent fa de RxC al receptorului.


Funcionarea circuitului poate fi controlat n orice moment, de ctre microprocesor, prin
cuvinte de comand (CW) nscrise n registrul de mod/comand.

D7 D6 D5 D4 D3 D2 D1 D0
EH IR RTS ER SBRK RxEN DTR TxEN
Intrare n Resetare Foreaz Resetare Foreaz Validare Foreaz Validare
mod intern RTS =0 bistabile TxD=0 recepie DTR =0 transmisie
HUNT (=RESET) (pin) de eroare (pin) (pin)

D7 D6 D5 D4 D3 D2 D1 D0
DSR SYNDET/ FE OE PE TxEMPTY RxRDY TxRDY
BRKDET
Indic dac Eroare de Eroare de Eroare de
ncadrare suprapunere paritate
DSR =0 Reflect ntocmai starea pinilor cu acelai nume
(pin)
Iniializarea USART 8251A: scrierea unei succesiuni de octei, cu C/ D =1:
- secvena de sincronizare (numai dup o resetare hardware):
o nscrierea a 3 octei de comand cu valoarea 00h;
- nscrierea unui cuvnt de comand de resetare intern (IR=1);
- nscrierea unui cuvnt de mod;
- nscrierea a 1 sau 2 caractere de sincronizare n modul sincron;
- nscrierea unui cuvnt de comand.

89
ntre dou scrieri succesive n registrul de control (C/ D =1) trebuie asigurat un interval de
timp de cel puin 16 perioade ale semnalului de tact CLK (tRV Recovery Time).

Dup iniializare - 8251A este apt s transfere date.


La nscrierea datelor n tamponul de transmisie - nu este necesar s se in cont de tRV.

7.2.4. Utilizarea interfeei seriale USART 8251A n aplicaii

Canal de comunicaie serial asincron RS232 U [V]


+12V
niv el
RS-232C - standard comunicaie serial
L
asincron
+3V
0
Caracteristici electrice: t
-3V
Nivelul logic 0 (L - Low) - 312V niv el
H
Nivelul logic 1 (H - High) 12 -3V
-12V
Zona logic interzis: -3 3V

Caracteristicile mecanice:

tipul conectorilor: DB25 sau DB9 Nr. pin: /25 (/9) Nume
2 (3) TxD Transmisie date
25 de semnale i linii de dialog pentru
controlul transferului de date ntre 4 (7) RTS Cerere de transmisie
interfaa serial i modem. 5 (8) CTS Pregtit pentru transmisie

Conectori de tip T (tat) pentru DTE 15 (-) TxC Ceas de transmisie


17 (-) RxC Ceas de recepie
Conectori de tip M (mam) pentru
3 (2) RxD Recepie date
DCE
20 (4) DTR Terminal de date pregtit
6 (6) DSR Modem pregtit
Circuitele de interfa serial - 22 (9) RI Indicator de apel
semnale compatibile TTL
8 (1) CD Detecie purttoare
Nu sunt direct compatibile cu 7 (5) SG Mas semnal
caracteristicile electrice definite de 1 (-) PG Mas protecie
standardul RS-232.

Pentru adaptare:

circuite emitor-receptor de linie (MAX232)

Tensiunea negativ este format cu ajutorul unor condensatoare care se monteaz n


exterior.

90
TTL RS232

11 T1IN T1OUT 14
TxD TxD
12 R1OUT R1IN 13
RxD RxD
10 7
RTS T2IN T2OUT RTS
9 8
CTS R2OUT R2IN CTS
1
C1+
C1 +
MAX232 2 VCC
V+
2.2F + C3
3
C1- 2.2F

4
C2+
C2 + 6 +
V-
2.2F C4
5
C2- 2.2F

Adaptorul de comunicaie serial asincron MAX232

A1 A0 Magistrala de adrese A0

Magistrala de comand
I/OR I/OW I/OR I/OW
Magistrala de date

RD WR D7D0 CS A1 A0 RD WR D7D0 CS C/D RESET


CLK RESET
8253 8251
TxCLK TxRDY La
RxCLK RxRDY SINT
GATE2 CLK2 OUT2 TxD RxD RTS CTS

T1IN R1OUT T2IN R2OUT


Vcc
MAX232

T1OUT R1IN T2OUT R2IN


fCLK (de la 8085)

TxD RxD RTS CTS

Linii RS232

Canal de comunicaie serial asincron RS232 ntr-un sistem cu P 8085

91
8. Microcontrolere PIC de 8 bii - structur intern i funcionare

Microcontroler sistem cu microprocesor: microprocesor + memorie + dispozitive de I/E


Familii de microcontrolere de 8 bii:
MCS 51 i compatibile (8 bii) 20 productori:
o Intel
o Atmel
o Infineon Technologies (Siemens)
o Maxim (Dallas Semiconductor)
o NXP (Philips Semiconductor)
o ST Microelectronics
o Silicon Laboratories (Cygnal)
o Texas Instruments
o Cypress Semiconductor
PIC Microchip
AVR Atmel
Z8 Zilog
HC08, HC11, Freescale Semiconductor (Motorola Semiconductor)
H8 Renesas Technology (Hitachi)
PsoC Cypress Semiconductor

8.1. Caracteristicile generale ale microcontrolerelor PIC

PICmicro Peripheral Interface Controller


(Programmable Interface Controller Programmable Intelligent Computer)
base-line PIC 10F (i o parte din PIC 12 i PIC 16)
mid-range o parte din PIC 12, PIC 14 i PIC 16
high-end PIC 17 i PIC 18

92
PIC base-line
cele mai simple microcontrolere PIC
folosesc instruciuni codificate pe 12
bii
mpachetate n capsule cu 6-28 de pini
alimentate la tensiuni reduse ideale
pentru sisteme alimentate pe baterii.

PIC 10F cele mai noi 6 pini


PIC 12 8 pini (capsule DIP i SOIC), conin
memorie Flash i OTP
PIC 16C5X, PIC16F5X 14, 18, 20 i 28 pini
(capsule SOIC i SSOP)

PIC mid-range
folosesc instruciuni codificate pe 14 bii
mpachetate n capsule cu 8-64 de pini
conin memorie Flash, OTP, EEPROM
5 MIPS
35 de instruciuni (RISC)
gestioneaz ntreruperi
(stiv hardware cu mai multe niveluri)

PIC 16 integreaz diverse


periferice:
USB
SPI
I2C
USART
LCD
convertoare A/D

93
PIC high-end
folosesc instruciuni codificate pe 16 bii
mpachetate n capsule cu 18-80 de pini
conin memorie Flash, OTP, EEPROM
gestioneaz mai multe ntreruperi (stiv hardware cu 32 de niveluri)
spaiu liniar de memorie de pn la 2 MB
10 MIPS
79 de instruciuni
(RISC)

PIC 18 integreaz
periferice complexe:
CAN
USB
TCP/IP
ZigBee

Caracteristici comune PICmicro:

- ci separate pentru date i cod (arhitectur Harvard)


- numr mic de instruciuni de lungime fix (arhitectur RISC)
- cele mai multe instruciuni se execut ntr-un singur ciclu main (4 perioade de tact)
- un singur acumulator (W workspace register), cu adresare implicit
- un spaiu de date de 256 de octei (tipic), care poate fi extins pe bancuri de memorie
- registrele CPU, ale porturilor i ale perifericelor - mapate n spaiul memoriei de date
- numrtorul de program (Program Counter) este mapat n memoria de date (i poate
fi nscris pentru a realiza salturi indirecte)
- toate locaiile de memorie RAM intern pot fi surs sau destinaie pentru diferite
operaii
- nu exist o distincie ntre registre i memorie de date (RAM), memoria mai este
numit i spaiul de registre (register file).
- stiv hardware pentru stocarea adreselor de revenire din subrutine

94
8.2. Arhitectura intern a microcontrolerelor mid-range
Program Counter de 13 bii
Stiv HW de 13 bii cu 8
niveluri
Memorie program Flash
- max. 8192 instruciuni
de 14 bii
Instruction register de 14 bii
Opcode Decodificator de
instruciuni i generare
semnale de control
ALU de 8 bii
Working register (8 bii)
Status register (8 bii)
Memorie de date (max. 512
cuvinte de 8 bii)
File select register (8 bii)
Memorie EEPROM
Porturi de I/E
Periferice integrate

Unitatea aritmetic i logic (ALU)

- operanzi pe 8 bii
adunare
scdere
i
sau
deplasare

- 2 operanzi:
- unul este n
registrul W
(working
register)
- cellalt este un
registru (SFR sau
GPR) sau o
constant

W nu este adresabil
(nu este o locaie din spaiul de memorie de date Register file)

- 1 operand aflat n W sau ntr-un alt registru (adresabil n zona de memorie de date
Register file)

95
8.3. Oscilatorul intern

Selecia modului de lucru al oscilatorului


pentru dispozitive care folosesc 2 bii de configurare (FOSC1-FOSC0)
FOSC1 FOSC0 Mod Descriere
1 1 RC Modul implicit - soluia cea mai ieftin, lucreaz la 0 4MHz, necesit
doar un rezistor i un condensator montate n exterior. Dezavantaj:
variaii mari ale frecvenei. Identic cu EXTRC cu CLKOUT.
1 1 HS Rezonator ceramic / cristal de cuar cu frecven ridicat (420 MHz),
consum mare
1 1 XT Cristal de cuartz cu frecven (14 MHz) i consum mediu
1 1 LP Cristal de cuartz cu frecven redus (32200 kHz), consum mic

pentru dispozitive care folosesc 3 bii de configurare (FOSC2FOSC0)


FOSC2 FOSC1 FOSC0 Mod Descriere
1 1 1 EXTRC cu Modul implicit soluie ieftin, lucreaz la 0 4MHz,
CLKOUT necesit doar un rezistor i un condensator montate n
exterior. Dezavantaj: variaii mari ale frecvenei. Pinul
CLKOUT este validat.
1 1 0 EXTRC Soluie ieftin, lucreaz la 0 4MHz, necesit doar un
rezistor i un condensator montate n exterior. Dezavantaj:
variaii mari ale frecvenei. Funcia CLKOUT este
dezactivat (pin de I/E).
1 0 1 INTRC cu Cea mai ieftin soluie, lucreaz la 4MHz. Funcia
CLKOUT CLKOUT este activat.
1 0 0 INTRC Cea mai ieftin soluie, lucreaz la 4MHz. Funcia
CLKOUT este dezactivat (pin de I/E).
0 1 1 - Rezervat
0 1 0 HS Rezonator ceramic / cristal de cuar cu frecven ridicat
(420 MHz), consum mare (High Speed)
1 0 0 XT Cuartz cu frecven (14 MHz) i consum mediu (XTal)
1 0 0 LP Cuartz cu frecven redus (32200 kHz), consum mic
(Low Power)

Utilizarea unui cristal de cuartz sau rezonator ceramic

Utilizarea unui generator de tact extern

96
Utilizarea unui oscilator extern (paralel sau serie)

Utilizarea oscilatorului cu un grup RC montat n exterior

REXT = 3K 100 K, CEXT > 20pF.

Utilizarea oscilatorului cu grup RC intern


4 Mhz

Registrul intern OSCCAL permite calibrarea oscilatorului intern pentru ajustarea


frecvenei.

R/W-0 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0 U-0 U-0


OSCCAL CAL3 CAL2 CAL1 CAL0 CALFST CALSLW - -
Bit 7 Bit 0

CAL3CAL0 ajustare fin, n interiorul unei ferestre de frecven (0000=min, 1111=max)


CALFST deplasarea ferestrei cu un offset spre valori mai mari ale frecvenei (fast)
CALSLW deplasarea ferestrei cu un offset spre valori mai mici ale frecvenei (slow)

Ultima locaie de memorie program conine o instruciune RETLW xx, unde xx=valoarea de
calibrare stabilit de fabric.

97
8.4. Execuia instruciunilor tehnica pipeline pe 2 niveluri

- extragerea unei instruciuni din memoria program se suprapune peste execuia celei
anterioare

8.5. Logica de resetare a microcontrolerelor PIC

Exist 6 tipuri de resetare:


- Resetare la conectarea alimentrii (POR Power On Reset)
- Resetare n timpul funcionrii normale ( MCLR Reset)

- Resetare n regimul de consum redus ( MCLR SLEEP)


- Resetare cauzat de ceasul de gard n timpul funcionrii normale (WDT Reset)
- Resetare la coborrea temporar a tensiunii de alimentare sub un anumit prag (BOR -
Brown-out Reset)
- Resetare cauzat de o eroare de paritate (PER Parity Error Reset)

Cele mai multe registre nu sunt afectate


de reset, cu excepia POR, cnd sunt
poziionate aleator.

Altele, sunt forate ntr-o stare iniial,


cunoscut.

98
VDD creste rapid VDD crete ncet
Registrul PCON
R-u U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
PCON MPEEN - - - - PER POR BOR
Bit 7 Bit 0
MPEEN starea bitului de configurare Memory Parity Error Enable
Biii 2, 1 i 0 indic apariia unui reset cauzat de o eroare de paritate, de o pornire la
conectarea alimentrii, respectiv dup o coborre temporar a tensiunii de alimentare sub o
valoare de prag.

Registrul STATUS
R-u U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
STATUS IRP RP1 RP0 TO PD Z DC C
Bit 7 Bit 0
/TO Time Out = a expirat timpul pentru ceasul de gard (resetare cauzat de WDT)
/PD Power Down intrare n modul de consum redus (instruciunea SLEEP)

8.6. Organizarea memoriei la microcontrolerele PIC16 (mid-range)

Tipuri de memorie
Memorie program instruciuni
Memorie de date variabile
o Registre de uz general (GPR = General Purpose Registers)
coninutul se pierde la deconectarea alimentrii
o Registre cu funcii speciale (SFR - Special Function Registers)
controleaz activitatea perifericelor interne
Memorie EEPROM date nevolatile - coninutul se pstreaz la deconectarea
alimentrii
Memoria program
Mid-range PICmicro - 2K, 4K, 8K instruciuni de 14 bii fiecare
PC Program Counter numrtor de program, de maximum 13 bii (pentru
dispozitive cu 8K instruciuni)
Dup reset PC=0000h vectorul de reset
Se incrementeaz automat dup fiecare extragere de instruciune din memoria
program.
Instruciunile care pot modifica registrul PC:
Implicit - instruciuni de salt sau apel: GOTO adresa, CALL adresa; adresa este
constant, cunoscut
Explicit - instruciuni care pot scrie n PC determin un salt calculat la o anumit
instruciune.
99
8.7. Modificarea PC-ului de ctre instruciuni de salt sau apel

GOTO adresa, CALL adresa


adresa adresa efectiv, pe 13 bii, la care se dorete a se efectua saltul sau apelul
aceasta nu este complet ncorporat n instruciunea de 14 bii
numai ultimii 11 bii mai puin semnificativi ai adresei efective sunt specificai de
instruciune
restul, adic cei mai semnificativi 2 bii ai adresei efective sunt ncrcai la execuie din
registrul PCLATH

Rezultatul: o adresare paginat, cu


maximum 4 pagini de 2K:
adresa este un deplasament
(sau offset) fa de nceputul
paginii
cei 2 bii din PCLATH
furnizeaz codul paginii n care
se afl locaia adresat
Observaii:
Orice salt sau apel trebuie precedat de
o analiz a situaiei:

- n ce pagin se afl adresa


efectiv, la care se face
saltul/apelul
- care este pagina selectat prin
biii 4 i 3 din PCLATH

Dac se constat c pagina n care se


face saltul difer de cea curent
selectat, instruciunea de salt/apel
trebuie precedat de ncrcarea n
PCLATH a codului paginii n care
urmeaz s se fac saltul.

Dac programul ncape ntr-o singur pagin, atunci nu este necesar modificarea registrului
PCLATH.

La resetare, PCLATH=0.

100
Modificarea PC-ului de ctre instruciuni de scriere n PCL

PC format din PCH i PCL (8 bii).

Numai PCL poate fi nscris direct prin


program.

Atunci cnd se scrie n PCL, coninutul


PCLATH se nscrie automat n PCH.

PCLATH nu poate fi citit.

8.8. Stiva

are 8 niveluri (locaii) pentru adrese de 13 bii


nu este adresabil nici n spaiul memoriei program, nici n cel al memoriei de date
stack pointerul nu este accesibil prin program
nu exist instruciuni PUSH sau POP
pe stiv se salveaz adresa de revenire la execuia instruciunii CALL sau la ntrerupere
de pe stiv se reface PC la execuia unei instruciuni de revenire

8.9. Citirea/scrierea n spaiul de memorie program

Unele dispozitive pot citi date de 14 bii amplasate n spaiul memoriei program:

- sume de control, date de calibrare, iruri ASCII sau tabele de constante (look up tables)

In acest scop se utilizeaz 5 registre SFR:

- 2 registre selecteaz adresa: PMADRH - PMADR


- 2 registre primesc data: PMDATH - PMDATA
- 1 sau 2 registre controleaz accesul la memorie PMCON1

Alta variant, mai simpl, de citire date (numai 8 bii) din memoria program: RETLW xxh

Dispozitivele cu memorie program de tip Flash pot s citeasc i s scrie n acest spaiu.

In acest scop se utilizeaz 6 registre SFR:

- 2 registre selecteaz adresa: EEADRH EEADR


- 2 registre conin data: EEDATH - EEDATA
- 2 registre controleaz accesul la memorie EECON1 i EECON2

101
8.10. Memoria de date
pn la 512 locaii
GPR i SFR
4 bancuri a cte 128 de locaii
primele 32 locaii din fiecare banc
rezervate pentru SFR
unele locaii SFR sunt vizibile n
toate bancurile
unele locaii SFR nu sunt utilizate
unele dispozitive au o zon de
memorie partajat, comun
pentru toate bancurile (ultimiele
16 locaii din fiecare banc)
Locaiile de memorie de date pot
fi accesate n dou moduri:
o adresare direct
o adresare indirect

102
8.10.1. Adresarea direct a memoriei de date

Adresa complet a unei locaii de memorie de date RAM este de 9 bii (maximum 512
locaii)

O instruciune cu adresare direct nu furnizeaz dect 7 bii (cei mai puin


semnificativi).

Restul de 2 bii (cei mai semnificativi) provin din STATUS.

Ei selecteaz unul din cele 4 bancuri de 128 de octei (RP1 i RP0).

8.10.2. Adresarea indirect a memoriei de date

Adresa complet a unei locaii de memorie de date RAM este de 9 bii (maximum 512
locaii).

Adresarea indirect se face cu registrul FSR, care furnizeaz doar 8 bii (cei mai puin
semnificativi).

Cel de-al 9-lea bit (cel mai semnificativ) provine din registrul STATUS (IRP).

El selecteaz cte o pereche de bancuri de 128 de octei (perechea de bancuri 0 i 1,


respectiv 2 i 3).

103
8.10.3. Memoria de date EEPROM

Memorie de date nevolatil

Permite stocarea a pn la 256 de octei de date

Accesul se bazeaz pe aceiai regitri ca i la scrierea n memoria program de tip Flash

o EEADR - selecteaz adresa

o EEDATA conine data

o EECON1 i EECON2 controleaz accesul la memorie

Este disponibil la dispozitivele care permit scrierea n memoria Flash

Poate fi nscris de un mare numr de ori (100000)

Memoria program Flash poate fi nscris de pn la 1000 de ori.

104
9. Microcontrolere PIC de 8 bii - setul de instruciuni
9.1. Setul de instruciuni
ortogonal - o instruciune poate lucra cu orice registru (locaie din memoria RAM)
Exist trei categorii de instruciuni: 13 8 7 6 0
OPCOD d f
instruciuni de lucru pe octet
OPCOD cod operaie 6 bii
f adres direct registru (file) 7 bii
d destinaia rezultatului: 0 W; 1 f

13 10 9 7 6 0
instruciuni de lucru pe bit OPCOD b f

OPCOD cod operaie 4 bii


b adres bit din octet 3 bii
f adres direct registru 7 bii

13 8 7 0 13 11 10 0
OPCOD k OPCOD k

OPCOD cod operaie 6 bii OPCOD cod operaie 3 bii


k constant imediat 8 bii k adres program 11 bii
(numai GOTO i CALL)

instruciuni de lucru cu constante (literali) i de control

Instruciuni de transfer
Nr. Mnemonic, Descriere Operaie Nr. Cod main Indicatori
Crt. operanzi cicli Msb Lsb de condiii
1 MOVF f,d Move f dest f 1 00 1000 dfff ffff Z
2 MOVWF f Move W to f fW 1 00 0000 1fff ffff Z
3 MOVLW k MOVe Literal to W Wk 1 11 00xx kkkk kkkk
4 CLRF f Clear f f0 1 00 0001 1fff ffff Z
5 CLRW Clear W W0 1 00 0001 0xxx xxxx Z

Observaii:
dest = W dac d=0 sau dest = f dac d=1.
Dac valoarea transferat a fost 0, Z=1; altfel, Z=0
Exemple:
MOVF FSR, W ; Coninutul registrului FSR se copie n W
MOVF INDF, W ; Coninutul locaiei RAM de la adresa din FSR (adresare indirect)
; se copie n W
MOVF FSR, F ; Coninutul registrului FSR este copiat n el nsui (pentru a testa
; valoarea din FSR)
MOVWF FSR ; Coninutul registrului W este copiat n registrul FSR
MOVWF INDF ; coninutul registrului W este copiat n locaia adresat de FSR
MOVLW 0x5A ; iniializeaz W cu 0x5A
MOVLW const ; valoarea constantei simbolice const se ncarc n W
MOVLW HIGH(tabel) ; octetul mai semnificativ al adresei tabelului se ncarc n W
CLRF FSR ; FSR=0
CLRW ; W=0

105
Instruciuni aritmetice
Nr. Mnemonic, Nr. Cod main Indicatori
Crt. operanzi Descriere Operaie cicli Msb Lsb de condiii
6 ADDWF f,d ADD W and f dest W + f 1 00 0111 dfff ffff C, DC, Z
7 ADDLW k ADD Literal and W W k +W 1 11 111x kkkk kkkk C, DC, Z
8 INCF f,d Increment f dest f + 1 1 00 1010 dfff ffff Z
9 INCFSZ f,d Increment f, Skip if 0 dest f + 1 1(2) 00 1111 dfff ffff
if dest=0,
PC=PC+1
10 SUBWF f,d Substract W from f dest f W 1 00 0010 dfff ffff C, DC, Z
11 SUBLW k SUBstract W from WkW 1 11 110x kkkk kkkk
C, DC, Z
Literal
12 DECF f,d Decrement f dest f 1 1 00 0011 dfff ffff Z
13 DECFSZ f,d Decrement f dest f 1 1(2) 00 1011 dfff ffff
if dest=0,
PC=PC+1

Exemple:

ADDWF FSR, W ; Coninutul registrului FSR se adun cu cel al W, rezultatul n W


SUBWF INDF, F ; Din coninutul locaiei adresate de FSR se scade coninutul W
ADDWF PCL ; La valoarea din PCL se adaug valoarea din W
SUBLW 0x20 ; Din valoarea 0x20 se scade W, rezultatul n W
INCF CNT, F ; Coninutul locaiei CNT este incrementat
INCF INDF, W ; Coninutul locaiei adresate de FSR e incrementat i ncrcat n W
DECFSZ CNT, F ; CNT este decrementat i dac devine 0 sare peste instr. urmtoare

Instruciuni logice
Cod main Indica-
Nr. Mnemonic, Nr.
Descriere Operaie tori de
Crt. operanzi cicli Msb Lsb condiii
14 ANDWF f,d ADD W and f dest W f 1 00 0101 dfff ffff Z
15 ANDLW k AND Literal and W WWk 1 11 1001 kkkk kkkk Z
16 IORWF f,d Inclusive OR W with f dest W f 1 00 0100 dfff ffff Z
17 IORLW k Inclusive OR literal WWk 1 11 1000 kkkk kkkk
Z
with W
18 XORWF f,d eXclusive OR W with dest W f 1 00 0110 dfff ffff
Z
f
19 XORLW k eXclusive OR Literal WWk 1 11 1010 kkkk kkkk Z
with W
20 COMF f,d COMplement f dest f 1 00 1001 dfff ffff Z
21 RLF f,d Rotate Left f through dest f <<1 1 00 1101 dfff ffff C
Carry
22 RRF f,d Rotate Right f through dest f >>1 1 00 1100 dfff ffff C
Carry
23 SWAPF f,d SWAP nibbles in f destf3:0 f7:f4 1 00 1110 dfff ffff

Exemple:

ANDWF FSR, F ; I logic ntre registrul FSR i registrul W, rezultatul n FSR


IORWF INDF, W ; SAU ntre locaia indicat de FSR i registrul W, rezultatul n W
XORWF REZ, W ; XOR ntre locaia REZ i registrul W, rezultatul n W
ANDLW 0xF0 ; Foreaz n 0 cei mai puin semnificativi 4 bii din W
COMF REG,F ; Complementeaz (fa de 1) coninutul locaiei REG
RLF INDF,F ; Rotete spre stnga cu o poziie coninutul locaiei adresate de FSR
SWAPF REG,W ; W REG3:0 REG7:4

106
Instruciuni de lucru pe bit
Nr. Mnemonic, Nr. Cod main Indicatori
Descriere Operaie
Crt. operanzi cicli Msb Lsb de condiii
24 BCF f,b Bit Clear f fb=0 1 01 00bb bfff ffff

25 BSF f,b Bit Set f fb=1 1 01 01bb bfff ffff

26 BTFSC f,b Bit Test f, Skip if if fb=0, 1(2) 01 10bb bfff ffff
Clear PC=PC+1
27 BTFSS f,b Bit Test f, Skip if if fb=1, 1(2) 01 11bb bfff ffff
Set PC=PC+1

Exemple:

BCF REG, 7 ; Bitul 7 din locaia REG este resetat


BSF INDF, 4 ; Bitul 4 din locaia adresat de FSR este setat

BTFSC FLAG,3 ; testeaz dac bitul 3 din locaia FLAG este 0


GOTO bit3unu ; dac a fost fals, se execut instruciunea
zero ... ; dac a fost adevrat, se continu de aici

BTFSS FLAG,2 ; testeaz dac bitul 3 din locaia FLAG este 1


GOTO bit2zero ; dac a fost fals, se execut instruciunea
unu ... ; dac a fost adevrat, se continu de aici

Instruciuni de ramificare
Nr. Mnemonic, Nr. Cod main Indicatori
Descriere Operaie
Crt. operanzi cicli Msb Lsb condiii
28 CALL k CALL TOS PC+1 2 10 0kkk kkkk kkkk
subroutine
PC10:0 k
PC12:11PCLATH4:3
29 GOTO k Go to address PC10:0 k 2 10 1kkk kkkk kkkk

PC12:11PCLATH4:3
30 RETURN RETURN from PC TOS 2 00 0000 0000 1000
subroutine
31 RETLW k RETURN with PC TOS, W k 2 11 01xx kkkk kkkk
Literal in W
32 RETFIE RETURN from PC TOS, GIE 1 2 00 0000 0000 1001
interrupt

Exemple:

CALL rutina ; apeleaz secvena de cod de la adresa rutina


GOTO loop ; sare la adresa loop
RETURN ; revine la adresa din vrful stivei
RETLW A ; revine la adresa din vrful stivei cu W = A
RETFIE ; revine la adresa din vrful stivei, revalideaz ntreruperile (GIE=1)

107
Realizarea salturilor cu instruciuni GOTO (salt la adrese cunoscute la momentul scrierii
codului)

RESET movlw HIGH main ; adresa de intrare dup reset


movwf PCLATH ; ncarc PCLATH cu codul paginii n care se afl main
goto main ; sare la adresa main
nop
INT movlw HIGH rutint ; adresa de intrare dup reset
movwf PCLATH ; ncarc PCLATH cu codul paginii n care se afl rutint
goto rutint ; sare la adresa rutint

Realizarea salturilor cu instruciuni de modificare explicit a registrului PCL


mowlw HIGH eticheta
movwf PCLATH ; ncarc PCLATH cu octetul superior al adresei
mowlw LOW eticheta
movwf PCL ; ncarc PCL cu octetul inferior al adr. eticheta

Accesul la date constante n memoria program folosind adresarea relativ la PC


movlw HIGH string
movwf PCLATH ; ncarc PCLATH cu octetul superior al adresei
string
movf index,w ; preia n W indexul n tabel
call string ; apeleaz rutina string
movwf PORTB ; afieaz caracterul ASCII din W
...
string addwf PCL,F ; calculeaz saltul
retlw S ; revine cu S n W
retlw i ; revine cu i n W
retlw r ; revine cu r n W

Nr. Mnemonic, Descriere Nr. Cod main Indicatori


Crt. operanzi cicli Msb Lsb de condiii
33 SLEEP Go into WDT 0 1 00 0000 0110 0011 /TO, /PD
standby mode Prescaler WDT 0
/TO 1, /PD 0
34 CLRWDT Clear WDT 0 1 00 0000 0110 0100 /TO, /PD
Watchdog Prescaler WDT 0
Timer /TO 1, /PD 1
35 NOP No operation 1 00 0000 0xx0
0000

9.2. Ceasul de gard (WDT)

Ceasul de gard un timer cu funcionare continu (free running timer), pilotat de un


oscilator intern RC (altul dect cel al UCP), care nu necesit componente externe.

WDT funcioneaz chiar dac oscilatorul principal este oprit (la execuia unei instruciuni
SLEEP).

WDT este validat/inhibat de un bit de configurare a dispozitivului (WDTE).

Acest bit, mpreun cu ali bii de configurare a dispozitivului, nu poate fi accesat la


momentul execuiei programului, ci numai n regim de programare, fiind amplasat la adresa
2007h din memoria program.

Odat validat, funcionarea WDT nu poate fi inhibat prin program.


108
Funcii selectabile prin cuvntul de configurare:
Protecia memoriei program (CP1:CP0)
Protecia memoriei EEPROM (DP)
Validarea mecanismului brownout reset (BODEN)
Validarea timerului Power-up Timer (/PWRTE)
Validarea funciei de resetare extern pe pinul /MCLR (MCLRE)
Validarea ceasului de gard (WDTE)
Selectarea modului de pilotare a UCP (FOSC1:FOSC0 sau FOSC2:FOSC0).
Se recomand ca operaia de configurare s fie legat de codul surs.
La programarea dispozitivului s se ncarce att codul aplicaiei, ct i configuraia dorit.
Se reduce riscul lansrii unui program de aplicaie pe un dispozitiv configurat
necorespunztor.

Acest lucru este posibil prin utilizarea directivei de asamblare CONFIG, recunoscut de
asamblorul MPASM, ca n exemplul urmtor:
LIST p=16F877 ; definete tipul dispozitivului
#INCLUDE <P16F877.INC> ; include definiiile funciilor selectabile din cuvntul de
; configurare
__CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_ON

9.2.1. Structura intern a WDT

109
9.2.2. Funcionarea WDT

WDT - are o durat de time-out nominal de 18ms (poate varia cu condiiile de temperatur
i de alimentare).

Aceasta poate fi crescut, folosind un divizor suplimentar selectabil (postscaler) cu 2-4-8-16-


64-128, cu ajutorul biilor PS2:PS0 din registrul SFR OPTION_REG.
Se pot obine astfel durate de time-out de circa 2,3 secunde (18 128).

Numrtorul postscaler poate fi utilizat:


de ctre WDT - dac bitul PSA=1 din registrul OPTION_REG
de ctre Timerul 0, ca prescaler - dac bitul PSA=0

CLRWDT i SLEEP - terg WDT i numrtorul postscaler (dac este utilizat), prevenind
generarea unui reset cauzate de expirarea perioadei de time-out WDT.

Bitul /TO din registrul STATUS:


va fi setat (dezactivat) la tergerea forat a WDT (execuia unei instruciuni
CLRWDT sau SLEEP)
va fi resetat (activat) la expirarea perioadei de time-out.

Factorul de divizare - poate fi modificat prin program, on-the-fly (n timpul funcionrii).


Pentru a se evita o resetare accidental cauzat de WDT, se recomand ca aceast operaie s
fie precedat de o instructiune CLRWDT.

Numrtorul postscaler - poate fi comutat ntre WDT i Timerul 0.

Pentru a se evita o resetare accidental cauzat de WDT, se recomand:


tergerea WDT, Timer 0 i postscaler, la un factor de divizare diferit de 1
comutarea utilizrii numrtorului postscaler
setarea factorului de divizare final.

110
9.3. Modul de consum redus (Power-down)
Instruciunea SLEEP oprete oscilatorul - reduce drastic consumul dispozitivului.

Dac WDT este validat, instruciunea SLEEP l rearmeaz, iar acesta continu s funcioneze.
De asemenea, /PD=0, /TO=1.

Ieirea din modul Power-down poate fi fcut de:


o resetare a dispozitivului
WDT
orice periferic intern care i poate activa flagul de ntrerupere n modul Power-
down.

Dup o resetare la conectarea alimentrii, /PD=1.


Dac dup o resetare /PD=0, nseamn c resetarea s-a produs din modul Power-down.
Ultimele dou situaii asigur repornirea dispozitivului fr a-l reseta (repornire din starea n
care a fost oprit).

Dac la repornire /TO=0, repornirea a fost cauzat de WDT, iar execuia continu cu
urmtoarea instruciune de dup SLEEP.

Dac la repornire /TO=1, nseamn c repornirea a fost cauzat de o cerere de ntrerupere de


la un periferic care avea validat individual cererea de intrerupere.
Dac ntreruperile erau inhibate la nivel global, execuia este reluat cu urmtoarea
instruciune dup SLEEP.
Dac intreruperile erau validate la nivel global, mai nti se va executa instruciunea
de dup SLEEP, apoi se va face saltul la adresa rutinei de tratare a ntreruperii
(0004h).

111
10. Microcontrolere PIC de 8 bii periferice integrate
10.1. Sistemul de ntreruperi
Microcontrolerele PIC de 8 bii din categoria mid-range pot avea mai multe surse de
ntrerupere:
- ntreruperea extern INT
- depire Timer 0
- modificare stare pini port RB sau GPIO
- ntreruperi de la periferice integrate:
o Comparator
o Parallel slave port
o USART
o Convertor A/D
o Controler LCD
o Terminare scriere n EEPROM
o Timer 1
o Timer 2
o Port serial sincron - SSP
o Unitate de comparare/captur/pwm CCP
Fiecare surs de ntreruperi are asociat un flag de ntrerupere, n care este memorat cererea,
precum i un flag de validare individual a ntreruperii respective.
n plus, perifericele integrate au un flag suplimentar de validare a ntreruperilor, PEIE.
De asemenea, exist un flag de ntrerupere global a tuturor ntreruperilor, GIE.

112
GIE, PEIE, flagurile de validare i de cerere ale ntreruperilor externe (INT), depire Timer
0 i schimbare stare pini port RB (sau GP) se regsesc n registrul INTCON.

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0


INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
Bit 7 Bit 0

Celelalte flaguri de validare i de cerere, asociate perifericelor integrate, sunt coninute n


unul sau mai multe registre PIE, respectiv PIR (PIE1, PIE2 ... PIR1, PIR2...), n funcie de
tipul microcontrolerului.
Dac GIE=0, nici o cerere de ntrerupere nu va ajunge la CPU.
Dac PEIE=0, nici o ntrerupere de la perifericele integrate din lista anterioar nu va fi
acceptat.
Dac flagul de validare al unei surse de ntreruperi este 0 (de ex. T0IE=0), cererea de
ntrerupere nregistrat n flagul corespunztor (de ex. T0IF=1) nu va fi naintat ctre CPU.

Aceasta nsemn c primele 3 surse de ntrerupere au dou niveluri de validare a cererilor:


- individual
- global (GIE)
iar celelalte surse au 3 niveluri de validare:
- individual
- grup (PEIE)
- global (GIE)

Timpul de rspuns la apariia unei cereri de ntrerupere este:


- 3 TCY pentru ntreruperile sincrone (interne)
- 3 3,75 TCY pentru ntreruperile asincrone (cauzate de evenimente externe: INT, RB).

Tratarea ntreruperii la nivel hardware:


- GIE=0
- salvarea PC n stiva hardware
- salt la adresa 0004h.

Dac se dorete salvarea altor registre (W, STATUS), aceasta trebuie fcut prin program,
nainte de modificarea lor.
Dup identificarea cauzei care a produs ntreruperea i tratarea ntreruperii (sau
ntreruperilor) valide, se reface starea registrelor salvate (W, STATUS), apoi se execut
instruciunea RETFIE, care are drept efect:
- refacerea PC din vrful stivei hardware
- GIE=1.

113
10.2. Porturile de I/E
- cele mai simple periferice integrate
- permit monitorizarea i controlul dispozitivelor externe
- unii pini de I/E au atasate funcii alternative, specifice altor periferice integrate
(timere, USART, etc.)
- atunci cnd se utilizeaz funciile alternative (ca urmare a validrii funcionrii unui
periferic), pinii respectivi nu mai pot fi folosii ca pini de I/E.

Pentru cele mai multe porturi, tipul liniilor de port (I sau E) poate fi selectat individual,
pentru fiecare pin, cu ajutorul unui registru denumit TRIS.
Fiecrui pin al portului PORT (PORT7:0) i corespunde un bit n registrul TRIS (TRIS7:0).
TRISi = 1 PORTi = intrare
TRISi = 0 PORTi = ieire
Ca ieire, latch-ul TRIS (fiind resetat) permite ca cele dou tranzistoare ale etajului final s
fie comandate n opoziie de valoarea bitului de date nscris n Data Latch: cnd unul este
deschis, cellalt este blocat, permind conectarea pinului de ieire fie la VDD (bitul de date=1),
fie la mas (cnd bitul de date este 0).
Ca intrare, latch-ul TRIS (fiind setat) face ca ambele tranzistoare ale etajului final s fie
blocate, iar pinul s fie adus n starea de nalt impedan (TRI-State, de unde i denumirea
latch-ului TRIS).
Se poate citi starea latchului TRIS, dar nu i starea latch-ului Data. Citirea din port aduce pe
magistrala intern de date starea pinului i nu starea latch-ului Data.

Structura intern tipic a unui port de I/E

114
10.3. Timerul 0
- numrtor de 8 bii, care poate fi nscris i citit prin program
- poate fi folosit i un prescaler programabil de 8 bii (numrtorul postscaler partajat
cu WDT)
- sursa impulsurilor numrate poate fi intern (fosc/4) sau extern (pinul T0CKI)
- poate genera o ntrerupere la depire (FFh00h)
- se poate selecta frontul activ al semnalului aplicat pe pinul extern.

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0


OPTION_REG RPBU INTEDG T0CS T0SE PSA PS2 PS1 PS0
Bit 7 Bit 0

T0SE bit din OPTION_REG, selecteaz frontul activ al semnalului aplicat pe T0CKI
T0CS bit din OPTION_REG, selecteaz sursa impulsurilor de numrare
PS2:PS0 bii din OPTION_REG, selecteaz factorul de divizare al prescalerului
2,4,8,16,32,64,128,256.
PSA - bit din OPTION_REG, care asigneaz prescalerul fie Timerului 0 (PSA=0), fie WDT
(PSA=1).

Modul Timer
- sursa impulsurilor este oscilatorul intern (fosc/4)
- dac factorul de divizare este 1:
o registrul TMR0 este incrementat n fiecare ciclu main
o la scrierea n registrul TMR0, incrementarea este blocat pentru 2 perioade de
tact.
- dac factorul de divizare este altul dect 1 (dac se folosete prescalerul):
o prescalerul este incrementat n fiecare ciclu main
o la scrierea n registrul TMR0:
prescalerul este resetat
incrementarea prescalerului este blocat pentru 2 perioade de tact.
Modul Counter
- sursa impulsurilor este un semnal extern, aplicat pe pinul T0CKI
- semnalul este sincronizat cu semnalul de tact intern.

115
La apariia depirii, flagul de ntrerupere T0IF este setat i, dac T0IE=1 i GIE=1, este
acceptat cererea de ntrerupere.
Flagul de ntrerupere T0IF trebuie resetat prin program, n rutina de tratare a ntreruperii,
nainte de revenirea n programul principal.

10.4. Timerul 1

- numrtor de 16 bii, format cu dou registre SFR nseriate: TMR1H i TMR1L, care
pot fi nscrise i citite prin program
- TMR1H:TMR1L se incrementeaz de la 0000H la FFFFh, iar la depire este setat
flagul de ntrerupere TMR1IF
- se genereaz o cerere de ntrerupere, care este acceptat de CPU dac TMR1IE=1,
PEIE=1 i GIE=1

Timerul 1 poate funciona n unul din urmtoarele 3 moduri:


- timer sincron: TMR1CS=0
- numrtor sincron: TMR1CS=0 i /T1SYNC=0
- numrtor asincron: TMR1CS=0 i /T1SYNC=1

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0


T1CON - - T1CKPS1 T1CKPS0 T1OSCEN /T1SYNC TMR1CS TMR1ON
Bit Bit 0
7

Incrementarea poate fi pornit i oprit cu ajutorul bitului TMR1OFF.


Poate fi resetat intern de ctre modulul CCP (Compare/Capture/PWM).

116
Funcionarea n modul timer:
TMR1H:TMR1L se incrementeaz n fiecare ciclu main (fosc/4)
/T1SYNC nu are nici un efect deoarece semnalul este deja sincronizat cu tactul intern.

Funcionarea n modul numrtor:


TMR1H:TMR1L se incrementeaz pe frontul cresctor al:
o semnalului aplicat pe pinul T1CKI (dac TOSCEN=0)
o semnalului aplicat pe pinul T1OSI (dac TOSCEN=1)
n modul sincron:
- semnalul de incrementare este sincronizat cu tactul intern dup prescaler (care poate
diviza frecvena cu un factor egal cu 2, 4 sau 8).
- n modul Power-down, blocul de sincronizare este oprit, deci la TMR1H:TMR1L nu
vor ajunge impulsuri de incrementare.

n modul asincron:
- semnalul de incrementare nu este sincronizat cu tactul intern
- n modul Power-down, TMR1H:TMR1L va continua s se incrementeze, iar la
depire poate genera o ntrerupere care s reporneasc dispozitivul
- apar probleme legate de citirea/scrierea numrtorului de 16 bii al Timerului 1:
o la citire:
se efectueaz dou citiri pentru fiecare din TMR1H i TMR1L
trebuie s se in cont de o posibil depire sau transport ntre octei
o la scriere:
se recomand oprirea Timerului 1 nainte de modificarea valorilor din
TMR1H sau TMR1L
n caz contrar, scrierea poate intra n conflict cu incrementarea, cu
rezultate imprevizibile

Oscilatorul poate fi pilotat cu un cristal cu frecvena sub 200KHz (tipic 32 KHz).


El va continua s funcioneze i n modul Power-down i s creasc astfel consumul
dispozitivului.

Prescalerul este ters automat la o scriere n TMR1H sau TMR1L.

TMR1H:TMR1L nu este ters la resetare, ci numai de un semnal de la unitatea CCP.


tergerea poate s nu funcioneze dac Timerul 1 lucreaz ca numrtor asincron, de aceea
nu trebuie folosit n acest caz.
Atunci cnd tergerea apare simultan cu scrierea n numrtor, prioritatea cea mai mare o
are operaia de scriere.

117
Bibliografie selectiv

[1] Huanu, C., Postolache, M., Sisteme cu microprocesoare n conducerea automat a proceselor,
Vol.1, ed. a II-a, Ed. Academica, Iai, 2001
[2] Huanu, C., Postolache, M., Sisteme cu microprocesoare n conducerea automat a proceselor,
Vol.2, Ed. Tehnica-Info, Chiinu, 2002
[3] Bates, M., Interfacing PIC Microcontrollers, Newnes, Amsterdam, 2006
[4] Kleitz, W., Digital and Microprocessor Fundamentals. Theory and Applications. 2nd Ed.,
Prentice-Hall Ed., New Jersey, 1997
[5] *** INTEL, Embedded Application Handbook, 1997/98
[6] *** Microchip, PICmicro Mid-Range MCU Family Reference Manual, 1997

118

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