Sunteți pe pagina 1din 13

UNIVERSITATEA VALAHIA TRGOVITE

AUTOMATIC IV

PROIECT
LA
SISTEME CU MICROPROCESOARE

Olteanu Ciprian
Gabriel

-2002 -

TEMA PROIECT:

S se implementeze un algoritm care s realizeze numrarea cu afiare


cu tactul de 6Hz pn la o valoare de referin citit de pe portul de intrare cu
microprocesoare. Cnd contorul ajunge la valoarea de referin, aceasta va fi
afiat timp de 3 secunde, apoi va ncepe numrarea invers pn la 0.
Decrementarea se va face cu o frecven de 8Hz.

Noiuni introductive
Domeniul microprocesoarelor este unul dintre cele mai dinamice din industria
calculatoarelor. Aprut n anii 1970, microprocesorul este un circuit capabil s efectueze
funciile aritmetice i de control ale unui calculator. Pe atunci un microprocesor era un circuit
integrat pe scar larg (LSI), coninnd cteva mii de tranzistoare, pe o suprafa de
aproximativ 5 mm2. Dezvoltarea microprocesoarelor a urmat dezvoltrii circuitelor integrate,
complexitatea acestora dublndu-se practic n fiecare an. n prezent s-a ajuns la cteva
milioane de tranzistoare (6-9 milioane: Pentium II, AMD K6-2, Cyrix MII) pe o suprafa de
civa milimetri ptrai.
Z80 este un procesor care nu se mai folosete n nici un calculator actual, iar viteza lui
este foarte mic (5 MHz), comparativ cu frecvenele procesoarelor actuale (sute de Mhz).
Totui, mai este folosit i acum, n concuren cu microcontrolerele, la realizarea unor sisteme
de automatizare simple i fr necesiti prea mari de vitez. Z80 este un microprocesor pe 8
bii, cu 16 linii de adres.
In interiorul calculatoarelor toate informaiile sunt reprezentate sub forma unor
numere binare, sau sub forma unor grupe de bii.
Sistemul cel mai potrivit s-a dovedit a fi cel hexazecimal, cel care admite aisprezece
cifre distincte (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).

Cap. I. Microprocesorul Z80


1.1. Noiuni introductive. Arhitectura intern

Microprocesoarele nu sunt altceva dect uniti centrale de calculator (CPU Central


Processing Unit) ncorporate ntr-o singur capsul de circuit integrat.
Ele vor citi instruciunile unui program dintr-un bloc de memorie, le vor decodifica i
vor executa comenzile formulate n nsui codul instruciunii. Pentru a citi din blocul de
memorie extern codul instruciunii ce urmeaz a fi executat, microprocesorul va trebui s
genereze o adres pe care o va pune la dispoziie memoriei, pn cnd din celula selectat pe
baza acestei adrese va apare data cerut. Pentru a putea menine starea liniilor de adres pe
durata ntregii operaii de citire, microprocesorul va trebui s posede un element memorator
intermediar, pe care-l vom numi registrul tampon de adrese AB (Adress Buffer). Informaia
codificat, citit din memorie o vom depune temporar, de asemenea ntr-un registru
intermediar numit registrul tampon de date DB (Data Buffer).
Liniile electrice pe care se va genera cuvntul binar de adres le vom numi magistrala
de adrese ABUS (Adess Bus), iar pe cele dedicate datelor citite/ scrise n memorie, magistrala
de date DBUS (Data Bus).
Z80 este un microprocesor pe 8 bii, cu 16 linii de adres.
In interiorul calculatoarelor toate
informaiile sunt reprezentate sub forma
unor numere binare, sau sub forma unor
grupe de bii.
Sistemul cel mai potrivit s-a dovedit
a fi cel hexazecimal, cel care admite
aisprezece cifre distincte (0, 1, 2, 3, 4, 5, 6,
7, 8, 9, A, B, C, D, E, F).
Structura intern a microprocesorului
Z80, organizat pe blocuri funcionale, este
prezentat n figura alturat. (UAL
Unitatea
aritmetic
i
logic;
RI

Registrul
de
instruciuni;
UCC Unitatea de comand i control.)

REGITRII SPECIALI

Contorul program PC (Program Counter) este un registru dublu, avnd lungimea de


16 bii. El este destinat s memoreze adresa instruciunii ce urmeaz a fi executat. Dup ce se
citete codul instruciunii curente din memorie coninutul acestui registru este incrementat
automat cu 1.
Indicatorul de stiv SP ( Stack Pointer) este un registru dublu, avnd lungimea de 16
bii. SP este un registru de adresare special, avnd aceeai lungime ca i PC, el poate adresa
ntregul spaiu de adrese de memorie: 0000- FFFF.
La microprocesorul Z80, registrul SP organizeaz o stiv descresctoare: la fiecare salvare se
nscriu n memorie 2 octei (2 regitrii simplii sau 1 registru dublu) i coninutul indicatorului
de stiv este decrementat cu 2.
La fiecare restaurare se citesc din memorie 2 octei si coninutul indicatorului de stiv
este incrementat cu 2.
Registrul de instruciune IR (Instruction Register) este un registru special cu
lungimea de 8 bii. Aceasta este celula n care se depoziteaz codul unei instruciuni, citit din
memorie la operaia fetch. Circuitul de comand al microprocesorului preia codul instruciunii
de executat din IR, l decodific i i programeaz toate activitile pe care le are de efectuat
n vederea ducerii la bun sfrit a poruncii primite.
Registrul - A ( Acumulator) este un registru avnd lungimea de 8 bii. El se distinge
prin faptul c pe lng a ti s memoreze un octet, este implicat n toate
operaiile aritmetice i logice: unul din cei doi parametrii asupra crora urmeaz s fie
efectuat o operaie aritmetic sau logic (adunare, scdere, etc.) se va afla obligatoriu n
acumulator. Rezultatul operaiei se genereaz de asemenea n registrul A, el suprascriindu-se
peste valoarea iniial. Observm c operaiile aritmetice i cele logice acioneaz astfel nct
acumuleaz rezultatele n registrul A. De aici provine i numele de acumulator.
Registrul indicatorilor de condiie F ( Flag). Aa cum o spune i numele simbolic
ales pentru acest registru special el este menit s semnaleze ceva. n acest registru, care n
cazul microprocesorului Z80 are lungimea de 8 bii, fiecare bit n parte are semnificaia lui.
De aceea ei se numesc indicatori de condiie. Flagurile furnizeaz att programatorului ct i
nsi unitii de comand a microprocesorului, informaii privind natura rezultatului unei
operaii aritmetice sau logice efectuate. Din starea biilor dedicai ai registrului F putem afla
dac rezultatul operaiei efectuate este 0 sau nu, dac
el este un numr pozitiv sau negativ, dac numrul biilor din rezultat ce au valoarea 1 este un
numr par sau impar.

Flagul S (sign= semn) care apare pe poziia cea mai semnificativ a registrului F (bit
7), memoreaz bitul cel mai semnificativ al unui numr rezultat pe baza unei operaii
aritmetice sau logice, n acumulator.
Flagul Z (zero) apare pe poziia bitului 6 a registrului F. El este nscris (valoarea 1),
dac rezultatul unei operaii aritmetice/ logice este 0. Dac rezultatul operaiei difer de 0,
atunci coninutul indicatorului Z va fi 0.
Flagul H (Half carry) reprezint transportul care apare n cursul unei operaii
aritmetice de la bit 3 spre bit 4 al acumulatorului. El ocup poziia bit 4 n registrul
indicatorilor de condiie F .Flagul H nu poate fi testat prin instruciuni de salt condiionat. El
este folosit de ctre unitatea aritmetic i logic a microprocesorului la execuia instruciunii
de corecie zecimal, pentru corecia numerelor zecimale codificate n binar: BCD.
Flagul P/V (Parity/ Overflow) este un indicator de condiie multifuncional. El ocup
poziia bit 2 n registrul F. Aa cum rezult din numele acestui indicator, el poate indica
paritatea numrului din acumulator sau depire de domeniu.
Flagul N este un indicator care memoreaz tipul ultimei operaii aritmetice efectuate:
adunare sau scdere. n registrul F el ocup poziia bit 1.
N=1 dac ultima operaie aritmetic a fost adunare;
N=0 dac ultima operaie aritmetic a fost scdere.
Flagul F este folosit mpreun cu indicatorul de transport H i cu indicatorul de transport Cy.
Flagul Cy (Carry - transport) este indicatorul cel mai popular, afectat att de
operaiile aritmetice/ logice ct i de clasa operaiilor de rotire/ deplasare octet. El ocup
poziia cea mai puin semnificativ (bit 0) n registrul indicatorilor de condiie F.
Registrul de remprosptare a memoriilor dinamice - R (Refresh) este un registru cu
lungimea de 7 bii, menit s asigure printr-o numrare ciclic de la 127 (0000000 - 1111111)
remprosptarea memoriilor RAM dinamice, din componenta unui microcalculator, atunci
cnd ele exist.
Prezena registrului R este un ctig semnificativ n favoarea microprocesorului Z80,
ea scutindu-l pe proiectantul microcalculatorului de un efort coniderabil, cel de a realiza o
memorie cu 2 ci de acces ( din partea procesorului i din partea unui circuit de
remprosptare extern) i de a rezolva conflictele ce apar ntre cele dou componente.
Registrul vectorului de ntreruperi - I (Interrupt register) este ultimul n irul
regitrilor speciali ai microprocesorului Z80. El este un registru cu lungimea de 8 bii i
servete n modul de ntreruperi 2 la dirijarea sursei de cerere a ntreruperilor.
Prin ntrerupere ntelegem fenomenul la apariia cruia microprocesorul abandoneaz
la cererea unui eveniment extern programul n curs de rulare, deservete executnd un

program dedicat evenimentul extern, dup care se rentoarce la programul abandonat,


relundu-i execuia din punctul n care ea fusese suspendat.

REGITRII GENERALI
Regitrii de uz general au menirea s pstreze n imediata apropiere a focarului
microprocesorului date, care s poat fi accesate rapid, evitndu-se pe ct se poate accesele la
memorie i astfel reduc viteza de lucru a microprocesorului.
ntr-o grupare semnificativ a figurii 1 distingem alturi de regitrii deja prezentai
(PC, SP, R, I) alte casue simbolizate cu B, C, D, E, H, L.
Regitrii B i C: sunt regitrii generali de 8 bii. Exist o multitudine de instruciuni(de
transfer, aritmetice, logice, de rotire, etc.) care trateaz coninutul acestor regitrii. Ei nu au
fost figurai ntmpltor pe aceeai linie: n anumite condiii ei se pot ataa, formnd un
registru pereche BC, avnd lungimea de 16 bii. n aceast situaie B este octetul cel mai
semnificativ, iar C octetul cel mai puin semnificativ. Exist instruciuni care trateaz
perechea BC ca un registru de 16 bii(instruciuni de transfer, instruciuni aritmetice).
Regitrii D i E: se caracterizeaz prin aceleai trsturi ca i regitrii B i C. Atunci
cnd perechea DE formeaz un registru dublu de 16 bii, D ocup octetul superior iar E
octetul inferior.
Regitrii H i L: difer de cei anteriori B, C, D, E doar prin faptul c sunt implicai
ntr-un numr mai mare de instruciuni, avnd astfel un grad de funcionalitate sporit fa de
BC i respectiv DE. Atunci cnd ei formeaz o pereche HL, registrul H ocup octetul superior,
iar L cel inferior. Perechea HL devine principalul instrument de adresare indirect a unor
operanzi locazai n memorie la adrese cunoscute.
Regitrii index IX i IY: sunt regitrii de 16 bii. Ei sunt dedicai eminamente pentru
stocarea unor adrese de memorie. i vom trata ca regitrii de 16 bii. Aceti regitrii au fost
gndii s fie utilizai atunci cnd trebuiesc efectuate operaii aritmetice/logice asupra unor
cmpuri de date ce sunt aezate la adrese succesive de memorie, formnd astfel un tabel.
Regitrii index nu vor conine adresa celulei care se dorete a fi tratat.

CAP II. Clasificarea


intructiunilor
microprocesorului Z80 pe clase de instructiuni.

Clasa 1.

Instruciuni de transfer de 8 bii

LOAD-8

Mnemonici incluse: LD
Totalul intruciunilor din clasa: 111
Numrul de grupe: 11

Clasa 2.

Instruciuni de transfer de 16 bii

LOAD-16

Mnemonici incluse: LD, EX, EXX, POP, PUSH


Totalul instruciunilor din clasa: 39
Numrul de grupe: 10

Clasa 3.

Instruciuni de transfer de blocuri de date

LOAD-IDR

Mnemonici incluse: LDD, LDDR, LDI, LDIR


Totalul instruciunilor din clasa: 4
Numrul de grupe: 2

Clasa 4.

Instruciuni aritmetice/logice pe 8 bii

AR/LOG-8

Mnemonici incluse: ADD, ADC, SUB, SBC, AND, XOR, OR, CP, INC, DEC, CPL, NEG,
DAA, RLCA, RRCA, RLA, RRA
Totalul instruciunilor din clasa: 115
Numrul de grupe: 26

Clasa 5.

Instruciuni aritmetice de 16 bii

ARIT-16

Mnemonici incluse: ADD, ADC, BC, INC, DEC


Totalul instruciunilor din clasa: 32
Numrul de grupe: 7

Clasa 6.

Instruciuni logice pe blocuri de date

LOG-IDR

Mnemonici incluse: CPD, CPDR, CPI, CPIR


Totalul instruciunilor din clasa: 4
Numrul de grupe: 2

Clasa 7.

Instruciuni orientate pe bit

BITSR

Mnemonici incluse: BIT, SET, RES, SCF, CCF


Totalul instruciunilor din clasa: 242
Numrul de grupe: 7

Clasa 8.

Instruciuni de salt

JUMP

Mnemonici incluse: JP, JR, DJNZ


Totalul instruciunilor din clasa: 18
Numrul de grupe: 6
Clasa 9.

Instruciuni de apel i revenire din subrutin

Mnemonici incluse: CALL, RET, RST


Totalul instruciunilor din clasa: 26
Numrul de grupe: 5

CALL/RET

Clasa 10.

Instruciuni de rotire i deplasare

ROT/HIFT

Mnemonici incluse: RLC, RRC,RL, RR, SLA, SRA, SRL, RLD, RRD
Totalul instruciunilor din clasa: 72
Numrul de grupe: 9

Clasa 11.

Instruciuni de intrare/ ieire

IN/OUT

Mnemonici incluse: IN, IND, INDR, INI, INIR, OTDR, OTIR, AUT,
Totalul instruciunilor din clasa: 24
Numrul de grupe: 8

Clasa 12.

Instruciuni de comand

Mnemonici incluse: DI, EI, HALT, IM, NOP, RETI, RETN


Totalul intruciunilor din clasa: 9
Numrul de grupe: 5

SYS

OUTD

CAP. III. Descrierea algoritmului folosit pentru tema


enuntata.

Adresa de Eticheta Mnemonica


memorie
simbolic i
Operanzi
1000
LD P, 1400H
1003
IN A,(0CH)
1005
LD D, A
1006
LD B, A
1007
LD C, 0
1009
Et1
INC C
100A
LD A, C
100B
OUT(OCH, A)
100D
CALL 1100H
1010
DJNZ Et1
1012
CALL 1200H
1015
LD B, D
1016
Et2
LD A, B
1017
OUT(OCH, A)
1019
CALL 1300H
101C
DJNZ Et2
101E
RET

Opcodul
310014
DB0C
57
47
0.00E+00
0C
79
D30C
CD0011
10FF
CD0012
42
78
D30C
CD0013
10F8
C9

SUBRUTINA adresa 1100


1100
1103
1104
1105
1106
1109

Et3

LD HL, 43D0H
DEC HL
LD A, H
OR L
JPNZ Et3
RET

21D043
2B
7C
B5
C20311
C9

Comentarii

SUBRUTINA adresa 1200


1200
1202
1025
1026
1027
1028
120B
120C
120F
1212
1213
1214
1215
1218

Et4
Et5

Et6

LD C, 04
LD HL, FFFF
DEC HL
LD A, H
OR L
JPNZ Et5
DEC C
JPNZ Et4
LD HL, C4B7H
DEC HL
LD A, H
OR L
JPNZ
RET

OEO4
21FFFF
2B
7C
B5
C20512
0D
C20212
21B7C4
2B
7C
B5
C21212
C9

SUBRUTINA adresa 1300


1300
1303
1304
1305
1306
1309

Et7

LD HL, 32DCH
DEC HL
LD A, H
OR L
JPNZ Et7
RET

21DC32
2B
7C
B5
C20313
C9

BIBLIOGRAFIE:
1. D. Crstoiu Sisteme cu microprocesoare, Note de curs
2. M. Patrubany Totul despre microprocesorul Z80, Ed. Tehnic 1989
3. epelea, Lupu Microprocesoare aplicaii
4. I. Spnulescu, S. Spnulescu Circuite integrate digitale i sisteme cu
microprocesoare, Ed. Victor 1996
5. G. Musc Programare n limbaj de asamblare, Ed. Teora,1998
Gh. Toace Introducere n microprocesoare, Ed. t. i Enc.1985
6. Patrubany M. Ed. Tehnic 1989

Totul despre microprocesorul Z80

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