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
POSTOLACHE, MIHAI
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
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
iv
1. Introducere n sisteme cu microprocesoare
I/E suportul fizic pentru legtura cu exteriorul, spre (Intrare) i dinspre (Ieire)
sistemul cu P
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
Numrul i tipul componentelor - depind de specificul aplicaiei i pot varia n limite largi.
O parte dintre componente pot lipsi.
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
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
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
... .........
Dispozitivele de I/E
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
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.
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
Tehnica ntreruperilor
permite sincronizarea funcionrii microprocesorului cu evenimente din procesul condus
sau cu alte componente ale sistemului;
atunci cnd resursele interne nu fac fa numrului mare de surse de ntrerupere, se pot
utiliza controlere specializate pentru tratarea cererilor multiple de ntrerupere.
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.
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.
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
au prioritate ridicat
Ieire
in cont de cerinele specifice rezultate
aplicaiei
extind setul de servicii standard oferite de executivul de timp real
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
Automate deterministe:
|f(i, s)| = 1, |g(i, s)| = 1, i I, s S - au o evoluie unic pentru o pereche (i, s) dat.
XTAL
fanioane
R + ULA UC GT
P d a c
MD MA MC
11
Registrele interne (R)
Memoreaz temporar adrese sau date care urmeaz a fi prelucrate n ULA.
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.
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
Comand Comand
ntreruperi I/E serial
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
CY A7 . . . . . . A0
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
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.
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.
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
Vcc
RESET D R
P
RESET
C
trigger
Schmitt
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)
18
Secvenierea operaiilor n ciclurile main
M1 M2 . . . M5
T1 T2 T3 T4 T5, 6 T1 T2
CLK
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
Date de la Date de la
memorie memorie
RD
WR
OF MR MR MW t
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
WR
OF MR RP
20
3. Conectarea memoriei i a dispozitivelor de I/E
ntr-un sistem cu microprocesor 8085
21
3.3. Generarea semnalelor de pe magistrala de comand
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
74HC138 8205
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
- 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).
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.
24
3.7. Organizarea memoriei
2. Harta memoriei spaiul de adresare - spaiul ocupat de fiecare circuit sau grup.
- Adresa primei instruciuni executate dup resetarea P amplasare MEMP.
SRAM: 8 Ko = 8 210 octei = 213 combinaii de adres 13 linii de adres ultima combinaie
binar = 1 1111 1111 1111 b = 1FFFh.
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).
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
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
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
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.
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)
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).
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.
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.
MICRO-
PROCESOR INTEROGARE
Avantaje:
- simplitate;
- nu necesit dispozitive suplimentare;
Dezavantaj:
- timp pierdut cu interogarea dispozitivelor care nu au nimic de transferat.
29
Transferul I/E prin acces direct la memorie
RAM
P
MD
BRQ BACK
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
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)
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).
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)
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
(rL)low(data16)
6 LXI rp,data16 Load reg. pair Immed. imed.+la reg. - 3/10
(rH)high(data16)
(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)
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
20 SUB r SUBtract register from A (A)(A) - (r) impl.+la reg. toate 1/4
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
(rp)(rp)+1,
30 INX rp INcrement register pair la registru - 1/6
rp=B,D,H, sau SP
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
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
43 CMP r CoMPare register with A (A) - (r) impl.+la reg. toate 1/4
45 CPI data8 ComPare Immed. with A (A) - data8 impl.+imed. toate 2/7
36
Nr. Mnemonica Mod(uri) de Flaguri CM/
Descrierea instruciunii
crt. instruciunii adresare afectate stri
Instruciuni de ramificare
(SP) (SP) - 1
((SP)) (PCH) direct +
CALL
55 CALL addr (SP) (SP) - 1 indirect + - 5/17
unconditional
((SP)) (PCL) implicit
(PC) addr
(PCL) ((SP))
(SP) (SP) + 1 indirect +
57 RET RETurn - 3/10
(PCH) ((SP) + 1) implicit
(SP) (SP) + 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
(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)
(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
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.
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 $).
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.
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
40
4.2.2. Constante i expresii
Constante simbolice ncep cu o liter sau cu unul din caracterele speciale $ . ? @ sau _.
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.
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.
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
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.
43
4.3.3. Programarea cu subrutine
Subrutina:
- succesiune de instruciuni cu unul sau mai multe puncte de intrare etichetate i cu unul
sau mai multe puncte de ieire;
Spre deosebire de rutinele de ntreruperi, punctele din program n care este apelat o
subrutin sunt stabilite la momentul scrierii programului.
Programul apelant
Pentru creterea lizibilitii codului surs, fiecare subrutin trebuie documentat la definire,
precizndu-se:
44
Exemplu: Subrutin de transfera unui numr de octei (nrb) de la adresa sursa la adresa dest.
; 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.
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.
45
Transferul parametrilor i a rezultatelor ntre programul apelant i subrutine
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:
- 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
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
RD
WR t
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)
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
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;
Surse de ntrerupere:
dispozitive de I/E diferite;
- mecanisme (cauze) distincte din cadrul aceluiai dispozitiv de I/E.
Probleme principale:
- arbitrarea cererilor selectarea uneia din mai multe cereri active;
- recunoaterea solicitantului stabilirea rutinei de tratare a cererii de ntrerupere.
Recunoaterea solicitantului:
- interogare (polling);
- tratare vectorizat (vectoring)
Rutina de tratare:
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
RST 5.5
Citire port de
stare cereri de la
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.
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
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
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
#29 #1522
Conectarea n cascad a controlerelor de ntreruperi PIC 8259/8259A
53
5.3.2. Iniializarea PIC 8259/8259A
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
Iniializare:
- secven de maxim trei (la 8259) sau 4 (la 8259A) cuvinte de comand de iniializare
- ICW Initialization Command Word
54
F=1 sau ADI=1 (intervale de 4 octei)
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).
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.
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
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.
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.
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):
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
59
5.4.2. Programarea SINT
CSEG
; INIIALIZARE PIC-M
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
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).
; Dac se dorete ca unele linii s fie mascate, se folosesc cuvinte de tip OCW1:
MVI A,OCW1S
OUT PIC_S+1 ; Se nscrie OCW1 n PIC-S (cu A0=1).
DSEG
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.
61
; STABILIREA MODULUI SPECIAL DE MASCARE
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.
Tipuri de evenimente:
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.
63
Necesitatea introducerii timpului ca variabil n prelucrarea informaiei
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
START EV1
EV1
CEAS . . . EV2 CEAS
EVn
STOP EV2
(Re)declanare Execuie
WDT program
ntrerupere
Q
Monostabil sau RESET
CLK2
Registrul
cuvntului Ceas GATE2
de #2
OUT2
comand
Tamponul magistralei de date asigur legtura ntre MD i magistrala intern, este validat
la selectarea circuitului ( CS =0).
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
1. Un numrtor cu decrementare:
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
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
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.
* * *
CLK
GATE
CONTOR 7 6 6 6 5 4 7 6 7 6 5 7
68
Modul 0: numrtor de evenimente / monostabil programabil, (re)declanat prin program
CLK
CW n=4 n=5
WR
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.
CW n=4 n=5
WR
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
GATE
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
CLK
GATE
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.
CLK
WR CW n=4 n=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)
71
6.3. Realizarea aplicaiilor folosind circuitul PIT8253
72
Evenimente externe
Numrtor de
(a) RST 5.5
N1=99 Modul 0
evenimente
FPILOT = 300 Hz
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).
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
; 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
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.
Dispozitive periferice
SRCI/E
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 ;
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.
SRCI/E
DSTI/E
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).
80
Porturile A, B i C porturi independente de 8 bii.
Magistrala de adrese A1 A0
Magistrala de comand
I/OR I/OW
Magistrala de date
RD WR D7D0 CS A1 A0
RESET 8255A
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
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
Modul 1 ieire SRC = OBF (Output Buffer Full); DST = ACK (Acknowledge);
1 1 1 1 1 1 1 1 1 2
WR
OBF
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
RD tPS tPH
1 2 3 4 5 6 1 14 7 8 9 10
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
83
Citirea portului C informaie de stare SW (Status Word) interogare
0 I/E PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0 I/E
1-E OBF A INTEA PC5 PC4 INTRA INTEB OBF B INTRB 1-E
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
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).
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
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.
- 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.
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):
88
7.2.3. Programarea USART 8251A
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
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).
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
Pentru adaptare:
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
A1 A0 Magistrala de adrese A0
Magistrala de comand
I/OR I/OW I/OR I/OW
Magistrala de date
Linii RS232
91
8. Microcontrolere PIC de 8 bii - structur intern i funcionare
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 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)
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
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
- 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
96
Utilizarea unui oscilator extern (paralel sau serie)
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
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)
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
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
8.8. Stiva
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)
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.
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)
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).
103
8.10.3. Memoria de date EEPROM
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
13 8 7 0 13 11 10 0
OPCOD k OPCOD k
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:
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:
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
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:
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:
107
Realizarea salturilor cu instruciuni GOTO (salt la adrese cunoscute la momentul scrierii
codului)
WDT funcioneaz chiar dac oscilatorul principal este oprit (la execuia unei instruciuni
SLEEP).
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
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).
CLRWDT i SLEEP - terg WDT i numrtorul postscaler (dac este utilizat), prevenind
generarea unui reset cauzate de expirarea perioadei de time-out WDT.
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.
Dac la repornire /TO=0, repornirea a fost cauzat de WDT, iar execuia continu cu
urmtoarea instruciune de dup SLEEP.
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.
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.
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.
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
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.
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
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