Sunteți pe pagina 1din 68

ARHITECTURA

SISTEMELOR CU
MICROPROCESOR
(Intel 8080,Zilog Z80)
APLICAII

Aplicaii 2013: Facultatea E.T.T.I. Iai, secia E.A.
























Hricu Alioa
























































PREFA

Apariia circuitelor integrate pe scar larg (Large Scale Integration) i a
microprocesoarelor, ca automate secveniale programabile prin instruciuni (programabile
soft), a reprezentat o etap decisiv n dezvoltarea societii, etap reprezentat prin
automatizarea tuturor activitilor (de la automatizarea activitilor de birou i de arhivare,
pn la automatizarea activitilor industriale). Astfel, s-a obinut o cretere a bunstrii
sociale att prin mrirea calitii, ct i a randamentului tuturor activitilor.
Sistemele programabile prin instruciuni, numite generic sisteme de procesarea
(prelucrarea) informaiei sau sisteme de calcul, ce realizeaz efectuarea automat a
operaiilor aritmetice, logice, de ramificare i de transfer, au ptruns n toate domeniile de
activitate, dezvoltndu-se programe pentru aplicaii foarte complexe.
Acum folosirea sistemelor de calcul reprezint o parte foarte important n educaia
i activitatea noastr, viaa fr calculator i telefon, ca mijloace de transmitere i
prelucrare a informaiei, neputnd fi conceput. De menionat c telefonul mobil este
foarte util, puterea sa de utilizare fiind ns dat de o unitate central de operare (unitate
de calcul) ce permite implementarea pe telefon a numeroase aplicaii asociate unui sistem
de calcul.
Omul modern nu poate concepe viaa fr informaie i fr micare, ambele
controlate i comandate eficient prin liantul reprezentat de sistemele de calcul.
Simplificnd, putem afirma cu siguran c viaa nu poate fi conceput fr
calculator, ca element de prelucrare a informaiei i fr automobil, simbol al micrii, ce
ne asigur mobilitate.
Elementele de informaie i de micare se regsesc n numeroase aplicaii i cu
precdere n aplicaiile de frontier (la limita ntre domenii). Astfel, automobilul cu ardere
intern este controlat, eficientizat i chiar condus de un sistem de calcul realizat cu
microprocesor sau microcontrolor (microcontroller). Sistemul de calcul nsui este o
simbioz ntre informaie i micare, prelucrarea informaiei fcndu-se cu circuite
integrate pe scar larg, dar stocarea ei fcnd apel la o memorie de mare capacitate,
numit memorie de mas, realizat pe band de casetofon sau microdrive, floppy disk ori
pe hard disk, ce sunt elemente n micare.
Importana domeniului electric n dezvoltarea societii este evideniat de apariia
n acest domeniu de faculti tehnice cu specializri pe telecomunicaii, electronic
industrial, microelectronic, ingineria calculatoarelor, automatizri, informatic,
electromecanic, electroenergetic ori mecatronic, diversificare realizat dup 1990, dar
avnd bazele puse n perioada socialist de industrializare a Romniei.
Acest curs, intitulat Arhitectura sistemelor cu microprocesor este n programa
specializrii de Electronic Aplicat a facultii de Electronic, telecomunicaii i
tehnologia informaiei din Universitatea Tehnic Gh. Asachi din Iai, fiind precedat de
cursurile Circuite integrate digitale i Automate Programabile.
n cadrul disciplinei, la curs se prezint bazele funcionrii microprocesoarelor, prin
analiza microprocesoarelor de 8 bii Intel 8080 i Zilog Z80, iar la aplicaii se analizez
programul Monitor i structura unui sistem de dezvoltare cu microprocesor Zilog Z80.
Astfel, un cursant dispune de toate cunotinele necesare realizrii unui sistem cu
microprocesor i programrii de aplicaii n limbaj de asamblare.
mi exprim ntreaga mea recunotin fa de toi cei care au contribuit la educarea
i formarea mea profesional.

ef lucrri doctor inginer
Hricu Alioa
1-1
LIMBAJE DE PROGRAMARE

Fiecare sistem de calcul conine o unitate central de operare capabil s efectueze un numr
finit de operaii elementare ce i-au fost implementate. Pentru ca o unitate central de operare s
efectueze o operaie elementar ce i-a fost implementat, trebuie s i se indice, att operaia
elementar de efectuat, ct i mrimile operanzilor implicai, sau locurile din sistem unde acetia se
gsesc.
Definiie
Ansamblul informaiilor necesare unitii centrale de operare pentru a efectua o operaie
elementar implementat se numete instruciune.

Cu alte cuvinte, o instruciune reprezint o comand dat unitii centrale de operare. Fiecare
unitate central de operare dispune de un grup de instruciuni, prin care poate fi comandat s
efectueze operaiile elementare ce i-au fost implementate, numite instruciuni de comand.
Rezolvarea unei probleme complexe ntr-un sistem de calcul, impune descompunerea
problemei ntr-o succesiune de operaii elementare comandate unitii centrale de operare din
sistemul de calcul prin instruciuni.
Definiie
Ansamblul instruciunilor sub a cror comand o unitate central de operare rezolv o
problem impus se numete program.

Un sistem de calcul opereaz n baza doi de numeraie, pe cuvinte binare formate dintr-un
acelai numr de caractere binare numite bii, numr ce reprezint o caracteristic a sistemului,
fiind sisteme de calcul ce opereaz pe cuvinte binare din 1, 2, 4, 8, 16, 32, 64 sau 128 de bii.
Sistemul binar s-a impus n sistemele de calcul pentru c folosete doar dou simboluri ce pot fi
reprezentate electric prin dou tensiuni mult diferite ntre ele, fapt ce ofer o mare imunitate la
perturbaii.
Rezult c pentru efectuarea unui program ntr-un sistem de calcul, instruciunile i datele din
componena programului vor trebui codificate (reprezentate) prin cuvinte binare, adic n forma
simbolic binar.
Dificultatea de programe direct n forma simbolic binar, singura form simbolic acceptat
ntr-un sistem de calcul, a condus spre alte forme simbolice de reprezentare a datelor i
instruciunilor, forme simbolice mai accesibile unui programator.
Definiii
1. Ansamblul instruciunilor de comand a unei uniti centrale de operare, reprezentate ntr-
o form simbolic, se numete limbaj de programare.
2. Ansamblul instruciunilor de comand a unei uniti centrale de operare, reprezentate n
form simbolic binar, se numeste limbaj main.
3. Un program realizat n limbaj main se numete program obiect.
4. Un program realizat ntr-un limbaj de programare a crui form simbolic e diferit de
forma simbolic binar a limbajului main, se numete program surs.
Observaie
Un limbaj de programare este mijlocul de a comunica unui automat programabil sarcina de
efectuat descris ca o succesiune de comenzi recunoscute de automat.

Efectuarea ntr-un sistem de calcul a unui program obiect necesit depunerea cuvintelor
binare din componena programului n locaiile memoriei sistemului.
O cretere a eficienei programrii s-a obinut prin nlocuirea formei simbolice binare a
limbajului main, cu forma simbolic octal sau forma simbolic hexazecimal, astfel prin
reducerea numrului de caractere dintr-un cuvnt, simplificndu-se sarcina de programare a
aplicaiilor. Efectuarea ntr-un sistem de calcul a unui program surs realizat n forma simbolic
octal sau hexazecimal, impune conversia sa ntr-un program obiect ale crui cuvinte binare s se
1-2
depun n memoria sistemului n care se opereaz, sarcini ce se realizeaz automat cu un program
special, rezident n memoria sistemului i numit n cazul conversiei din forma simbolic octal
ncrctor octal, iar n cazul conversiei din forma simbolic hexazecimal ncrctor hexazecimal.
Dificultatea programrii cu limbaje de programare n formele simbolice octal i
hexazecimal a condus la un nou limbaj de programare, ntr-o nou form simbolic, numit form
simbolic de asamblare, n care notaia fiecrei instruciuni de comand a unitii centrale de
operare conine dou cmpuri, dintre care primul, numit mnemonic, indic sugestiv operaia
efectuat n instruciune printr-un grup de litere din denumirea n limba englez a operaiei din
instruciune, iar al doilea cmp, numit operand sau adres, indic mrimea operanzilor din
instruciune, sau locaiile din sistem unde aceti operanzi se gsesc.
Definiie
Totalitatea instruciunilor de comand a unei uniti centrale de operare, exprimate n forma
simbolic de asamblare se numete limbaj de asamblare.

Pentru a efectua ntr-un sistem de calcul un program surs n limbaj de ansamblare, acest
program trebuie convertit ntr-un program obiect ale crui cuvinte binare s fie depuse n locaiile
sistemului, sarcini ce se realizeaz automat cu un program special, rezident n memoria sistemului
i numit program de asamblare, ori simplu asamblor.
Instruciunile limbajelor de programare ce corespund formelor simbolice binar, octal,
hexazecimal i de ansamblare, fiind doar reprezentri simbolice ale instruciunilor de comand
ale unitii centrale de operare, vor specifica i registrele folosite din unitatea central de operare,
astfel c programarea cu asemenea limbaje impune programatorului s gestioneze registrele
unitii centrale de operare ale crei arhitectur intern i funcionare trebuie s le cunoasc.
Fiecare tip de unitate central de operare dispune de limbaje proprii de programare n formele
simbolice binar, octal, hexazecimal i de ansamblare i ca urmare un program realizat ntr-un
asemenea limbaj al unui tip de unitate central de operare, nu poate fi efectuat ntr-un sistem de
calcul coninnd alt tip de unitate central de operare, spunndu-se c limbajele de programare n
formele simbolice binar, octal, hexazecimal i de asamblare nu au portabilitate.
Necesitea unor limbaje de programare ce s aib portabilitate i s fie mai accesibile unui
utilizator, a condus la crearea de noi limbaje de programare formate din instruciuni complexe,
diferite de cele de comand ale unitii centrale de operare i independente de arhitectura intern i
funcionarea unitii centrale de operare, numite limbaje de progamare de nalt nivel. Astfel de
limbaje de programare sunt: BASIC, FORTRAN, COBOL, C++, etc.
Pentru efectuarea ntr-un sistem de calcul a unui program surs realizat ntr-un limbaj de
programare de nalt nivel, se impune, att conversia programului surs ntr-un program obiect
format din instrunciuni de comand ale unitii centrale de operare din sistemul de calcul n care se
opereaz, ct i depunerea cuvintelor binare ale programului obiect n memoria sistemului. Aceste
sarcini, de conversie i depozitare, sunt efectuate automat cu un program rezident n memoria
sistemului numit compilator i despre care se spune c realizeaz o compilare.
Realizarea conversiei instruciunilor unui limbaj de programare de nalt nivel, caracterizat
prin portabilitate, n instruciuni de comand ale unitii centrale de operare din sistemul de calcul
folosit, impune compilatorului s preia gestionarea registrelor interne ale unitii centrale de
operare, programul compilator fiind astfel dependent de tipul unitii centrale de operare folosite.
O instruciune a unui limbaj de programare de nalt nivel fiind mai complex dect o
instruciune de comand a unitii centrale de operare, va fi convertit de compilator n mai multe
instruciuni de comand a unitii centrale de operare, dintre care unele nu au nici un efect n
sarcina de efectuat. De aceea, programul obiect obinut prin compilarea unui progam surs realizat
cu un limbaj de programare de nalt nivel va fi mai mare dect n cazul realizrii programului cu un
limbaj de programare format din instruciuni de comand a unitii centrale de operare, cum sunt
limbajele de programare n formele simbolice binar, octal, hexazecimal i de asamblare. Din
aceast cauz, ntr-un sistem de calcul timpul de efectuare a unei sarcini programat ntr-un limbaj
de programare de nalt nivel va fi mai mare dect n cazul programrii sarcinii direct ntr-un limbaj
1-3
de programare ntr-una din formele simbolice binar, octal, hexazecimal, sau de asamblare, adic
ntr-un limbaj de programare la nivelul unitii centrale de operare.
Indiferent de limbajul de programare folosit, conversia unui program surs n program obiect
se realizeaz cu un progam special de conversie corespunztor limbajului de programare folosit i
care va ocupa o parte a memoriei sistemului, fapt ce reduce capacitatea de memorie aflat la
dispoziia programatorului.
n afara conversiei propriuzise, programelor de conversie li se pot implementa (prevedea) i
efectuarea altor sarcini, ceea ce duce la creterea mrimii i complexitii acestor programe. Dintre
programele de conversie amintite, un asamblor poate necesita, dup complexitatea sa, o zon de
memorie de 2... 16 kilolocaii, n timp ce un compilator necesit peste 32 kilolocaii.
Din considerentele prezentate mai sus, se recomand ca pogramarea n limbaj de asamblare s
fie utilizat n sisteme de calcul de capacitate redus, pentru comenzi n timp real ce necesit
rezolvri rapide, n aplicaii de serie mare (pentru economie de circuite de memorie) i n aplicaiile
necesitnd multe operaii de transfer i puine calcule, n timp ce programarea n limbaje de nalt
nivel se recomand n sistemele de mare capacitate, n aplicaiile cu multe calcule, n aplicaiile de
serie mic unde preul de cost nu conteaz i cnd se dispune deja de programe performante de nalt
nivel.
Se tinde spre generalizarea limbajelor de nalt nivel prin creterea capacitii circuitelor de
memorie i a vitezei de operare a unitilor centrale de operare integrate numite microprocesoare
i prin apariia de limbaje de pogramare de nalt nivel, performante.


2-1
ASAMBLOARE

TIPURI DE ASAMBLOARE
Dup modul n care opereaz i dup sarcinile suplimentare pe care le execut un asamblor,
se deosebesc urmatoarele tipuri de asambloare:
Cross-asamblorul, este un program de asamblare prin care se realizeaz conversia unui
program surs realizat n limbaj de asamblare al unui tip de unitate central de operare, ntr-un
program obiect exprimat n limbajul main al tipului de unitate central de operare folosit n
sistemul de calcul n care se opereaz. Cross-asamblorul realizeaz portabilitatea unui limbaj de
asamblare.
Auto-asamblorul, numit i asamblor rezident, este programul de asamblare care opereaz
ntr-un sistem de calcul asupra programelor realizate in limbajul de asamblare al unitii centrale de
operare din sistemul de calcul pe care se opereaz.
Macro-asamblorul, este programul de asamblare care permite ca la programarea n limbaj
de asamblare, programatorul s poat defini, n cadrul oricrui program, noi instruciuni n limbaj
de asamblare, numite macro-instruciuni, pe care apoi s le foloseasc n realizarea programului.
Meta-asamblorul, este un program de asamblare ce deservete mai multe tipuri de uniti
centrale de operare i opernd deci cu mai multe limbaje de asamblare.
Asamblorul cu o singur trecere, este programul de asamblare care opereaz printr-o
singur explorare asupra unui program surs n limbaj de asamblare. Acest tip de asamblor trebuie
s rezolve problema notaiilor din programul n limbaj de asamblare i a generrii programului
obiect corect, printr-o singur explorare a programului surs n limbaj de asamblare.
Asamblorul cu dubl trecere, este programul de asamblare care acioneaz asupra unui
program surs n limbaj de asamblare, prin dou explorri succesive, la prima trecere identificndu-
se i definindu-se notaiile simbolice folosite, iar la a doua trecere nlocuindu-se notaiile cu
valorile pe care le definesc i generndu-se programul obiect corect.
Micro-asamblorul, numit i asamblor de microprograme, este un program utilizat pentru
redactarea microprogramelor, care, nscrise n memoria de comand a unei uniti centrale de
operare, stabilesc modul de efectuare a instruciunilor de comand a unitii centrale de operare.

CARACTERISTICILE UNUI ASAMBLOR
Un asamblor impune ca instruciunile dintr-un limbaj de asamblare s fie divizate n
urmtoarele zone, numite cmpuri: cmpul etichet, cmpul mnemonic, cmpul operand i cmpul
comentariu. Delimitarea cmpurilor dintr-o instruciune n limbaj de asamblare se realizeaz cu
urmtoarele semne separatoare:
: = separ cmpurile etichet i mnemonic;
(= spaiu alb) = separ cmpurile mnemonic i operand;
, = separ doi operanzi din cmpul operand;
; = separ cmpurile operand i comentariu.
Cmpul etichet este primul cmp dintr-o instruciune n limbaj de asamblare, completarea
acestiu cmp nefiind ns obligatorie. Acest cmp poate conine o notaie simbolic, numit
etichet, creia asamblorul i atribuie ca valoare adresa locaiei de memorie n care se afl primul
cuvnt al instruciunii numit cuvnt instruciune.
Deoarece, notaiile etichetelor contribuie la documentarea unui program, a crui rapid
urmrire i nelegere o uureaz, se recomand folosirea de notaii sugestive pentru etichete.
Astfel, prima instruciune dintr-un grup de instruciuni ce realizeaz o temporizare, va primi
eticheta TIME .
Pentru stabilirea notaiilor etichetelor se recomand:
s nu se utilizeze ca etichete notaiile simbolice de instruciuni, deoarece aceste notaii fie
creaz confuzie, fie nu sunt luate n consideratie de asamblor;
s nu se utilizeze pentru etichete notaii cu un numr de caractere mai mare dect cel admis,
deoarece asamblorul va elimina, de la nceputul etichetei, caracterele suplimentare, existnd

2-2
posibilitatea ca noua etichet rezultat prin eliminare de caractere, fie s coincid cu o alta,
genernd eroare, fie s nceap cu un caracter nterzis de asamblor;
s se evite utilizarea n notaiile etichetelor a caracterelor speciale numerice i alfanumerice
ori a literelor mici, recomandndu-se doar folosirea majusculelor i a cifrelor;
notaia fiecrei etichete s nceap cu o liter mare, dar diferit de I, O, Z.
Folosirea de etichete la realizarea unui program n limbaj de asamblare ofer urmtoarele
avantaje:
o etichet atribuit unei instruciuni permite eeperarea uoar a instruciunii n cadrul
programului;
dac se atribuie alt valoare unei etichete, asamblorul va efectua automat modificarea n
toate instruciunile din program, ce conin acea etichet;
asamblorul poate translata un ntreg program ntr-o alt zon a memoriei, doar prin
adugarea unei constante la fiecare etichet din program;
etichetarea sugestiv a primei instruciuni dintr-un program, etichet reprezentnd titlul
programului, permite o bun arhivare a programului ntr-o blibiotec de programe;
folosirea etichetelor uureaz munca de programare, prin faptul c nu mai trebuie calculate
adresele locaiilor de memorie n care urmeaz a se depune cuvintele programului.
Cmpul mnemonic al unei instruciuni n limbaj de asamblare, indic operaia efectuat n
nstruciune printr-un grup de litere provenit din denumirea operaiei n limba englez.
Cmpul comentariu este admis de toate asambloarele, comentariile neavnd nici un efect n
obinearea programului obiect. Rolul comentariilor este doar de a permite uoara nelegere a
programelor.
Pentru realizarea de comentarii eficiente se recomand:
comentariile s fie scurte, precise i fr abrevieri;
n comentariu se va arta funcia ndeplinit n aplicaie i nu modul cum unitatea central
de operare execut instruciunile;
se vor comenta punctele cheie ale programului i instruciunile a cror semnificaie nu este
evident;
comentariile se fac pe instruciuni i pe secvene de instruciuni;
se vor comenta detaliile semnificative.
Cmpul operand, numit i cmp adres, este cmpul al crui coninut este lsat la dispoziia
programatorului, asamblorul impunnd n acest cmp urmtoarele:
a) Registrele interne ale unitii centrale de operare s fie indicate printr-o notaie impus;
b) Un numr ce reprezint un operand, sau o adres, poate fi indicat ntr-o instruciune n
limbaj de asamblare n sistemele binar, octal, hexazecimal, indicate prin literele B, Q i respectiv H
adugate la sfritul numrului, n timp ce un numr neurmat de o liter este interpretat de asamblor
ca exprimat n baza zece. Deoarece asamblorul impune ca un numr s nceap obligatoriu cu o
cifr, forma hexazecimal de exprimare a unui numr, al crui prim caracter este o liter, va fi
obligatoriu precedat de cifra 0 (zero).
Exemplu
ADD 3 ; AA+
10
3 =A+
2
00000011
LD A,47H ; A
16
47 =
2
.0 0 00 111 1
LD A,0F0H ; A
16
F0 =
2
.0 1 11 000 1
LD A,147Q ; A
8
147 =
2
100 0 . .111 1
SUB 01100000B ; AA -
2
01100000
c) Un operand sau o adres pot fi expimate prin coduri ASCII (= American Standard Code for
Interchange Information) ale unor caractere, fapt recunoscut de asamblor prin ncadrarea grupului
de caractere ASCII ntre apostrofuri.
Exemplu
LD H,B ; Hcod ASCII al literei B
d) Un operand sau o adres pot fi indicate printr-o notaie simbolic, asamblorul impunnd ca

2-3
notaia folosit s fie definit printr-o pseudoinstruciune specific, anterior instruciunii unde-i
folosit.
Exemplu
NAME : EQU 5 ; Se definete NAME =
10
5

=
2
00000101

LD B, NAME ; BNAME =
10
5

=
2
00000101
e) Un operand poate fi indicat prin adresa locaiei unde se afl, adres dat de rezultatul
relaiei de adunare ntre un numr, numit deplasament, i coninutul, simbolizat prin $, al
numrtorului de locaii al asamblorului, numrtor ce are o funcionare similar cu a registrului
numrator de adrese PC (=Program Counter) al unitii centrale de operare. Deplasamentul ns,
trebuie indicat ntr-o form acceptat de asamblor.
Exemplu
LD ($+0E1H), A ; cuvntul din registrul A e ncrcat n locaia a crei
; adres este rezultatul expresiei: $+
16
E1
f) Un operand sau o adres pot fi indicate ca rezultat al unei expresii ntre mrimi exprimate
ntr-o form acceptat de asamblor, mrimile i rezultatul avnd n binar o reprezentare prin 16
caractere binare. ntr-o expresie n care intervin mai multe mrimi, asamblorul va efectua nti
operaiile dintre paranteze, restul operaiilor fiind efectuate ntr-o ordine de prioritate impus de
asamblor, operaiile cu aceiai prioritate fiind efectuate n ordinea n care apar de la stnga spre
dreapta espresiei. Punerea unei ntregi expresii ntre paranteze semnific ns coninutul locaiei de
memorie a crei adres este chiar rezultatul expresiei.

Operaiile pe care asamblorul ZILOG Z80 le permite n cmpul operand i ordinea lor de
prioritate, sunt date n tabelul urmtor:

OPERAIE PRIORITATE DESCRIERE
+
-
.NOT.
.RES.
1
Incrementare
Decrementare
NU logic
REZULTAT
** 2 Exponeniere
*
/
.MOD.
.SHR.
.SHL.
3
nmulire
mprire
MODULO
Decalaj logic la dreapta
Decalaj logic la stnga
+
-
4
Adunare
Scdere
.AND. 5 I logic
.OR.
.XOR.
6
SAU logic
SAU EXCLUSIV logic
=
.GT. , .LT.
.UGT. , .ULT.
7
Egalitate
> , < ntre numere fr semn
> , < ntre numere cu semn

Observaii
1) Operaia .RES. semnific suprimarea depirii n cazul numerelor cu semn n vederea
pstrrii nealterate a semnului.
2) Operaiile .SHL. , .SHR. ce realizeaz decalarea logic la stnga, respectiv la dreapta vor
fi indicate n forma

2-4
1 2
.SHL. n , n
n care
1
n

este numrul decalrilor de efectuat, iar
2
n

este numarul ai crui bii sunt decalai.
Aceste decalri sunt numite logice deoarece bitul de pondere maxim dintr-o decalare cu o poziie
la dreapta i bitul de pondere minim dintr-o decalare cu o poziie la stnga, rmnnd liberi n
urma decalrii, vor fi pui n 0 logic.
3) Rezultatul generat ntr-o operaie de comparare va fi unul din calificative FALS, ori
ADEVRAT, calificativul FALS fiind indicat printr-un rezultat cu toi biii n 0 logic, iar
rezultatul ADEVRAT avnd toi biii n 1 logic.







3-1
PSEUDOINSTRUCIUNI

Un limbaj de asamblare al unei uniti centrale de operare este format din instruciunile de
comand a unitii centrale, i dintr-un grup special de instruciuni, numite pseudoinstruciuni, prin
care se comanda asamblorului, i nu unitii centrale de operare, efectuarea unor operatii absolut
necesare n obinerea programului obiect corect. O pseudoinstruciune nu are o codificare binar
proprie i, spre deosebire de o instruciune de comand a unitii centrale de operare, nu este
convertit n cuvinte binare.
Limbajul de asamblare al microprocesorului Intel 8080, conine urmtoarele
pseudoinstruciuni:
a) Pseudoinstruciunea cu simbolizarea:
ETICHET: ORG adres; comentariu ,
comand asamblorului s atribuie notaiei din cmpul etichet, ca valoare, numrul de adres
indicat n cmpul operand ntr-o form acceptat de asamblor, i s iniializeze numrtorul de
locaii al asamblorului cu numrul de adres din cmpul operand, ce reprezint chiar adresa primei
locaii a zonei de memorie n care se va depune programul ce urmeaz, operaie numit de
iniializare, i indicat cu mnemonica ORG dup denumirea ORIGIN dat acestei operaii n limba
englez.
ntr-un asamblor, numrtorul de locaii, a crui funcionare e similar cu a registrului
numrator de adrese PC (=Program Counter) al unitii centrale de operare, va indica adresa
locaiei de memorie alocat depunerii fiecrui cuvnt al programului obiect.
ntr-un program n limbaj de asamblare, acolo unde se impune trecerea la o nou zon de
memorie a crei prima adres este diferit de cea coninut n numrtorul de locaii al
asamblorului, se va introduce o nou pseudoinstruciune cu mnemonica ORG.
b) Pseudoinsrtuciunea cu simbolizarea:
ETCHET: EQU operand; comentariu ,
comand asamblorului s atribuie notaiei din cmpul etichet valoarea indicat n cmpul operand
ntr-o form acceptat de asamblor, operaie numit de echivalen i indicat cu mnemonica EQU
stabilit dup denumirea EQUATE dat acestei operaii n limba englez.
ntr-un program, unei etichete i se poate atribui o valoare printr-o pseudoistruciune de
echivalent, doar o singur dat, orice redefinire ulterioar a notaiei etichetei nefiind luat n
consideraie de asamblor.
c) Pseudoinstruciunea cu simbolizarea:
ETICHET: SET operand; comentarii ,
comand asmblorului s atribuie notaiei din cmpul etichet valoarea indicat n cmpul operand
ntr-o form acceptat de asamblor, operaie numit de setare i avnd mnemonica SET ce
reprezint denumirea dat acestei operaii n limba englez. Pseudoinstruciunea de setare
acioneaz ca i cea de echivalen, de care se deosebete ns prin aceea c ntr-un program o
aceiai etichet poate fi redefinit ori de cte ori este nevoie.
n limbajul de asamblare al microprocesorului Z80, operaia de setare este numit definire
etichet, iar pseudoinstruciunea echivalent celei de setare are simbolizarea:
ETICHET: DEFL operand; comentarii ,
n care mnemonica DEFL a fost stabilit dup denumirea DEFINE LABEL din limba englez a
operaiei definire etichet.
d) Pseudoinstruciunea cu simbolizarea:
ETICHET: DS operand; comentarii ,
comand asamblorului ca, ncepnd cu adresa aflat n numrtorul de locaii al asamblorului, s
rezerve attea locaii succesive de memorie, cte specific numrul indicat n cmpul operand ntr-o
form acceptat de asamblor, i s atribuie notaiei din cmpul etichet,ca valoare, adresa primei
locaii rezervate, operaie numit difinire stocare i avnd mnemonica DS stabilit dup denumirea
DEFINE STORAGE date acestei operaii n limba englez.
n locaiile rezervate cu aceast pseudoinstruciune, se vor depune ulterior date.

3-2
e) Pseudoinstruciunea cu simbolizarea:
ETICHET: DB operand; comentarii ,
comand asamblorului s depun cei maxim 8 octei indicai n cmpul operand ntr-o form
acceptat de asamblor, i n ordinea n care apar de la stnga spre dreapta cmpului operand, n
locaii succesive de memorie, ncepnd cu adresa aflat n numrtorul de locaii al asamblorului, i
s atribuie notaiei din cmpul etichet, ca valoare, adresa de depozitare a primului octet, operaie
numit definire octet i avnd mnemonica DB stabilit dup denumirea DEFINE BYTE dat
operaiei n limba englez.
f) Pseudoinstruciunea cu simbolizarea:
ETICHET: DW OPERAND; comentarii ,
comand asamblorului s depun cele maxim 8 cuvinte din cmpul operand, fiecare cuvnt format
din cte doi octei, indicai ntr-o form acceptat de asamblor, ncepnd cu octetul de pondere
minim, n locaii succesive de memorie, pornind de la adresa aflat n numrtorul de locaii al
asamblorului i n ordinea n care octeii apar de la stnga spre dreapta cmpului operand, i s
atribuie notaiei din cmpul etichet, ca valoare, adresa de depozitare a primului octet, operaie
numit definire cuvnt i avnd mnemonica DW, dup denumirea DEFINE WORD dat acestei
operaii n limba englez.
g) Pseudoinstruciunea cu simbolizarea:
ETICHET: END operand; comentarii ,
semnaleaz sfritul programului surs n limbaj de asamblare i comand asamblorului s atribuie
notaia din cmpul etichet, ca valoare, adresa indicat n cmpul operand ntr-o form acceptat de
asamblor i s ncarce aceast adres n registrul numarator de adrese PC al microprocesorului,
astfel trecndu-se la executarea programului pornind de la aceast adres. Necompletarea cmpului
operand semnific faptul c adresa de nceput a programului este zero.

Observaii
(1) Cnd n cmpul operand al unei pseudoinstruciuni, sau instruciuni, se folosete o notaie,
aceast notaie trebuie definit anterior n program cu o pseudoinstruciune specific.
(2) ntr-un program o adres neetichetat va fi indicat printr-o expresie de adunare ori
scdere a unei constante dintr-o etichet din program, astfel reducnd numrul de etichete folosite
ce pot fi sugestive.
(3) Un program n limbaj de asamblare este cuprins ntre pseudoinstruciunile ORIGIN i
END.
(4) Orice limbaj de asamblare conine pseudoinstruciunile prezentate, eventual cu alte
mnemonice. Astfel, pseudoinstruciunile limbajului de asamblare al microprocesorului ZILOG Z80
sunt:
(a1) ETICHET : ORG adresa; comentariu
(b1) ETICHET : EQU operand; comentariu
(c1) ETICHET : DEFL operand; comentariu
(d1) ETICHET : DEFS operand; comentariu
Mnemonica DEFS (= DEFINE STORAGE) indic operaia definire stocare.
(e1) ETICHET : DEFB operand; comentariu
Mnemonica DEFB (=DEFINE BYTE) indic operaia definire octet, cmpul operand coninnd un
singur octet.
(f1) ETICHET : DEFW operand; comentariu
Mnemonica DEFW (=DEFINE WORD) indic operaia definire cuvnt, cmpul operand coninnd
un singur cuvnt indicat ncepnd cu octetul de pondere minim.
(g1) ETICHET: END operand; comentariu
Mnemonica END indic sfaritul programului surs n limbaj de asamblare.

Modul de folosire a pseudoinstruciunilor la programarea n limbaj de asamblare este
prezentat n urmtorul

3-3
Exemplu

ETICHET: SIMBOLIZARE;
(Mnemonic+Operand)
COMENTARII
CANRAS: ORG 1000H ; CANRAS=1000H = adresa primului cuvnt din
program i titlul programului.
CONST: EQU 0F0H; CONST=F0H= valoare ce nu poate fi redefinit
NAME: SET B; NAME=Cod ASCII al literei B=valoare ce poate fi
redefinit
DB 10H ; CANRAS=(1000H) 10H
DW 0010H ; (1001H) 00H ; (1002H)10H
CLOCK: DS 1 ; rezervare locaie cu adresa 1003H=CLOCK
MOV A,C ; AC i (1004H)MOV
CALL 00,51H ; apel la adresa 5100H
(1005H)CALL ; (1006H)00H ; (1007H)51H
BLOK: ORG 5100H ; programul se continu la adresa 5100H
ADI NAME ; AA+NAME = A+B
(5100H)ADI ; (5101H)B=NAME
.
END 1004H ; PC1004H ; execuia programului ncepe de la
adresa 1004H, iar programul surs s-a ncheiat.


MACROINSTRUCIUNI

ntr-un program n limbaj de asamblare, un acelai grup de instruciuni se poate repeta de mai
multe ori, la fiecare repetare ns o parte dintre operanzi modificndu-i valorile. Pentru
simplificarea programrii n limbaj de asamblare, asambloarele puternice, numite macro-
asambloare, ofer programatorului posibilitate definirii ntr-un program a unui grup repetitiv de
instruciuni, n care operanzii variabili numii parametri sunt reprezentai cu notaii simbolice,
printr-o instruciune distinct, numit macroinstruciune, cu alt mnemonic i al crei cmp operand
conine enumerarea notaiilor parametrilor.
Grupul repetitiv de instruciuni, pentru a fi definit ca o macroinstruciune, se ncadreaz ntre
dou pseudoinstruciuni prevzute limbajului de asamblare, una de nceput avnd simbolizarea:
ETICHET: MACRO enumerare notaii parametri; comentarii ,
ce informeaz asamblorul c instruciunile ce urmeaz se definesc ca o macroinstruciune al crei
mnemonic este dat de notaia din cmpul ETICHET i n al crei cmp operand se enumer
notaiile parametrilor, i una de sfrit avnd simbolizarea:
ETICHET: ENDM; comentarii ,
i indicnd asamblorului sfritul definirii macroinstruciunii. Se spune c s-a realizat definirea
macroinstruciunii.
Astfel, n program, n locul repetrii grupului de instruciuni pentru valori determinate ale
parametrilor, se introduce macroinstruciunea cu mnemonica stabilit la definirea sa i n al crei
cmp operand sunt enumerate valorile parametrilor exact n ordinea n care apar la definirea
macroinstruciunii. Se spune c n program se realizeaz referirea la macroinstruciunea definit.
n procesul asamblarii, pentru obinerea formei binare a programului obiect, fiecare
macroinstruciune din program va fi nlocuit prin instruciunile din componena sa n care
parametrii au valorile indicate n macroinstruciune. Se spune c la asamblare se realizeaz
dezvoltarea macroinstruciunilor din programul surs.
Programarea cu macroinstruciuni implic deci urmtoarele trei etape: definirea
macroinstruciunilor, realizat la nceputul unui programsurs n limbaj de asamblare, referirea la
macroinstruciunile definite n procesul de realizare a programuuil surs i dezvoltarea

3-4
macroinstruciunilor din programul surs, n procesul asamblrii.
Programarea cu macroinstruciuni ofer urmtoarele avantaje:
- programul surs cu macroinstruciuni este mai scurt;
- macroinstruciunile reprezint noi instruciuni pentru un limbaj de asamblare;
- definirea corect a macroinstruciunilor reduce considerabil probabilitatea comiterii unei
erori la programare.
La programarea cu macroinstruciuni, dei programele surs obinute sunt mai scurte,
programele obiect rezultate n urma asamblrii au aceiai mrime ca n cazul progamrii fr
macroinstruciuni.
Observaie
Spaiul de memorie ocupat de un program va fi mai mic dac macroinstruciunile ce definesc
un grup mai mare de 15 instruciuni vor fi nlocuite prin subprograme.

PROGRAM SURS CU MACROINSTRUCIUNI
PROGRAM
DEZVOLTAT
TIME : MACRO NAME, FLY ;
Instr. M1 ; definire macroinstruciune, cu
Instr. M2 ; parametrii NAME i FLY
Instr. M3 ;
ENDM ;
Instr. P1 ; Instr. P1
Instr. P2 ; Instr. P2
TIME 10,20 ; referire la macroinstruciune, cu
; NAME=10, FLY=20, ce va
; fi dezvoltat n instruciunile
; componente, la asamblare
Instr. M1
Instr. M2
Instr. M3
Instr. P3 ; Instr. P3
Instr. P4 ; Instr. P4
TIME 10H,20H ; referire la macroinstruciune, cu
; NAME=10H, FLY=20H, ce va
; fi dezvoltat n instruciunile
; componente, la asamblare
Instr. M1
Instr. M2
Instr. M3
Instr. P5 Instr. P5



4-1
ADUNAREA A DOU NUMERE DIN 16 CIFRE ZECIMALE

Aplicaia const n adunarea a dou numere din cte 16 cifre zecimale, fiecare numr fiind
situat n opt locaii succesive de memorie ncepnd cu cifra de pondere minim, iar fiecare locaie
coninnd cte dou cifre zecimale. Microprocesorul Intel 8080 folosit, opernd pe cuvinte din opt
bii, rezult c adunarea acestor numere necesit opt etape successive. n fiecare etap se vor aduna
octeii de aceeai pondere ai numerelor i cifra de transport generat din etapa anterioar.
Aceast sarcin va conine o faz de iniializare a registrelor folosite din microprocesor,
registre ce sunt indicate mai jos cu precizarea destinaiei lor.











Numrarea celor opt etape de adunare folosete registrul C ca numrtor prin decrementare a
etapelor aplicaiei.
Aceast sarcin, fiind descris ca un subprogram, va realiza cu primele instruciuni salvarea n
stiv a registrelor afectate i care vor fi refcute din stiv cu ultimele instruciuni din program.
Algoritmul descris prin organigram i programul sarcinii sunt prezentate mai jos.

Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri
ORG 1080 H; Informare asamblor c adresa
de nceput este 1080 H:
numrtor locaii 1080 H.

1080 H
1081 H
SUM: PUSH PSW;
PUSH B;
Salvare n stiv a registrelor
afectate.
3c
3c
1082 H
1084 H
MVI C,8;
XRA A;
Numrare etape cu registrul C
Anulare A i CY printr-o
operaie SAU EXCLUSIV.
2c
1c

1085 H
1086 H
REPEAT: LDAX D;
ADC M;
Adunarea n binar a octeilor
de aceeai pondere.
2c
2c
1087 H DAA; Corecie rezultat. 1c
1088 H MOV M,A; Salvare rezultat n locul
primului operand care astfel
se distruge.
2c
1089 H
108A H
INX H;
INX D;
Generare adrese n pregtirea
etapei urmtoare.
1c
1c
108B H
108C H
DCR C;
JNZ REPEAT;
Numrare etap ncheiat
afectnd Z=0 dac sarcina nu
s-a terminat, cnd se reia o
nou etap de la eticheta
REPEA .
1c
3c
108F H
1090 H
POP B;
POP PSW;
La terminarea sarcinii, cnd
Z=1, se refac din stiv
registrele afectate BC i PSW.
3c
3c
H Adres octet din primul operand L

D Adres octet din al 2-lea operand E

B Numrtor de etape C

A S Z - AC - P - CY F (=PSW)

4-2
Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri
1091 H RET; Revenire n programul
apelant.
3c
END 1080 H; Informare asamblor c
programul s-a sfrit i s se
treac la execuia sa prin
transferul: PC 1080 H.
Total: 31c




Fig.1 Organigrama aplicaiei SUM

Teme
1. S se completeze programul de la rubrica ADRES i pentru fiecare instruciune a
programului s se indice att tipurile de adresare folosite, ct i descrierea sintetic.
2. S se determine timpul T de efectuare a programului tiind c frecvena tactului sistemului
este f=2Mhz i considernd c fiecare ciclu de maina este efectuat n trei stri.
3. Rol stiv.
4. Salvare registre n memoria stiv la nceput de subrutin.
START
PUSH PSW,B
C8
AAA; (
CY=0, A=0)
A(DE)
AA+(HL)+CY
DAA
(HL)A
HLHL+1
DEDE+1
CC-1

Z=1?
POP B, PSW
STOP
Iniializare registre
microprocesor i salvarea
registrelor afectate n stiv.
Adunarea octeilor cu aceeai
pondere i salvare rezultat n
locul primului operand.
Pregtirea urmtoarei etape.
Numrare etap ncheiat.
Sarcin terminat?
Refacerea din stiv a
registrelor afectate.
Nu
Da
SUM:
REPEAT:
4-3
5. Registrele de date ale microprocesorului Intel 8080 : B, C, D, E, H, L, M = (HL), A.
6. PSW (= Processor Status Word ), notat i AF. Rolul bistabilelor de condiie.

S Z - AC - P - CY
PSW 7 PSW6 PSW5 PSW4 PSW3 PSW2 PSW1 PSW 0
Low Byte of PSW (=Processor Status Word) F (=Flag Flip-Flop Register)

7. Ajustare zecimal a unui rezultatului din registrul accumulator A.
8. Afectarea bistabilului de condiie de transport CY n instruciunile aritmetice i logice.
9. Operare n complement fa de 2.

5-1
NMUIREA A DOU NUMERE DE 8 BII

Programul de nmuire a dou numere de 8 bii va fi realizat dup organigrama oinut pe baza
alocrii registrelor interne de date ale microprocesorului Intel 8080 i a algoritmului evideniat prin
urmtorul exemplu de nmulire a dou numere din cte 3(trei) bii fiecare:

Denmulit . 1 1 0
nmulitor .. 1 0 1
1 1 0
0 0 0
1 1 0 0
Rezutat. 1 1 1 1 0

Pentru a evidenia etapele identice n algoritmul operaiei de nmulire i desfurarea fiecrei
etape, exemplul prezentat se pune n urmtoarea form:

1 1 0 ..Denmulit
1 0 1 ..nmulitor
Etapa 1 : produs parial 1 (iniial nul)...0 0 0 +
1 1 0
rezultat parial 1.....................1 1 0
Etapa 2 : produs parial 2.....................1 1 0 +
0 0 0 0
rezultat parial 2..................... 0 1 1 0
Etapa 3 : produs parial 3......................0 1 1 0 +
1 1 0 0
rezultat parial 3...................... 1 1 1 1 0 = Rezultat Final

Acest exemplu evideniaz c operaia de nmulire a dou numere binare are loc n attea
etape identice ca desfurare, ci bii are nmuliorul. n fiecare etap se stabilete starea definitiv
a cte unui bit al rezultatului cutat, ncepnd de la bitul de pondere minim, i doar n etapa final
se stabilete starea definitiv pentru biii de pondere maxim al cror numr este egal cu numrul
de bii ai denmulitului.
ntr-o etap se formeaz un produs parial deplasnd cu o poziie la dreapta rezultatul din etapa
precedent, la care adunnd, sau nu, denmuliul (dup cum bitul implicat din nmulitor este n
starea logic 1, respectiv 0) se genereaz rezultatul parial al etapei.
Se pornete de la un produs parial iniial nul n prima etap, iar rezultatul ultimei etape este
chiar rezultatul cutat.
n efectuarea acestei sarcini de nmulire se folosesc registrele microprocesorului Intel 8080
indicate n fig.1 cu precizarea destinaiei lor, modul lor de folosire fiind evideniat n organigrama
aplicaiei, ce reprezint forma grafic a algoritmului de rezolvare sarcinii de nmulire.
Sarcina de nmulire este descris ca subprogram, fapt ce impune s se salveze n stiv
registrele microprocesorului afectate n subprogram, cu primele instruciuni din subprogram, iar cu
ultimele instruciuni ale subprogramului s se refac din stiv aceste registre. Astfel se asigur
funcionarea corect a programului apelant n momentul revenirii din subprogramul ncheiat,
deoarece registrele microprocesorului au coninutul din momentul apelrii. Salvarea, att a
registrelor de date, ct i a celor de adrese, se face n memoria stiv. Un transfer cu memoria stiv
implic transferul a doi octei, acest mod de funcionare fiind datorat faptului c memoria stiv a
fost conceput iniial doar pentru salvare de numere de adres.
Coninutul registrului HL este stabilit anterior subprogramului.
n aceast aplicaie, etapa de inializare este numerotat ca a 9-a etap i de aceea
numrtorul de etape este iniializat n 9.
5-2












Fig.1 Alocarea registrelor i organigrama aplicaiei
START
STOP
EE-1
AA+B
(HL) B
HLHL-1
(HL) C
POP D,B,PSW
RET
AB
AC
1RAR
CA
1RAR, BA
PUSH PSW
PUSH B,D
B0
E9
C(HL)
HL HL+1
D(HL)

Salvare n stiv
Iniializare
registre P
CYbitul implicat
din nmulitor
Numrare etap afectnd
Z=1 la sfritul sarcinii .
Sarcin ncheiat ?
Aprodus parial
Test bit nmulitor
Rezultat parial
Produs parial
Salvare
rezultat
Refacere
din stiv
CY=1?
Da
Nu
Z=1?
Nu
Da
MUL :
CYCLE :
PASS :
STOP :
AC
1RAR
CA
Definitivare
rezultat.
D Denmulit Numrtor de etape E

B Rezultat parial nmulitor C

A
CY 7 6 .. 0

5-3
Adres
(H)
ETICHET : SIMBOLIZARE ; COMENTARIU
Nr.
cicluri
ORG 1800H ; Nr. locaii 1800H=adres de
nceput a programului.

1800 MUL: PUSH PSW ;
PUSH B ;
PUSH D ;
Salvare n stiv a registrelor
PSW,B,D n aceast ordine.


MVI B,0 ;
MVI E,9;
MOV C,M ;
INX H ;
MOV D,M ;
B0
E9
CM=(HL)= nmulitor
HHL+1
DM=(HL)=denmulit

180A CYCLE: DCR E ;
JZ STOP ;
Numrare etap cu Z=1 la
sfrit sarcin.CYCLE=180AH

MOV A,C;
RAR;
MOV C,A ;
Bitul de testat al nmulitorului
se transfer n CY.

MOV A,B ; Aprodus parial
JNC PASS ;
ADD B;
Generare rezultat prin adunare
dac bit nmulitor este 1.

PASS: RAR ;
MOV B,A ;
JMP CYCLE ;
Pregtire etap urmtoare cu
generare produs parial i salt
la o nou etap.

STOP: MOV A,C;
RAR;
MOV C,A ;
Definitivare rezultat n
registrul C.

MOV M,B ;
DCR H ;
MOV M,C ;
Salvare rezultat din registrul
BC, n locul operanzilor.

POP D ;
POP B ;
POP PSW ;
RET ;
Refacere registre din stiv dar
n ordine invers a salvrii lor.

END ; Sfrit program surs .

Tem
1. S se completeze programul la rubricile Adres i Nr. cicluri, precum i cu descrierea
sintetic a instruciunilor.
2. S se determine timpul de efectuare a programului, dac frecvena tactului sistemului este
de 2MHz .


6-1
MPRIREA A DOU NUMERE DE OPT BII

Pentru mprirea a dou numere binare de opt bii se va evidenia algoritmul pe baza analizei
unui exemplu , apoi se va construi organigrama prin fixarea registrelor interne folosite din
microprocesorul Intel 8080, n final scriindu-se programul de mprire n limbajul de asamblare al
microprocesorului Intel 8080.
Determinarea algoritmului de mprire n binar folosete exemplul de mprire a dou
numere binare de patru bii, ce decurge ca n zecimal.









Pentru exemplul prezentat se poate scrie:

1110 : 0010 = 0111 + 0000
demprit : mpritor = ct + rest

Exemplul de mprire pe patru bii poate fi pus n forma:

1 1 1 0 : 0 0 1 0 = 0 1 1 1
Rest parial iniial .............................. 0 0 0 0
Primul demprit parial 0 0 0 1 -
0 0 0 0
Primul rest parial .................................. 0 0 0 1
Al doilea demprit parial 0 0 1 1 -
0 0 1 0
Al doilea rest parial ................................ 0 0 0 1
Al treilea demprit parial 0 0 1 1 -
0 0 1 0
Al treilea rest parial ................................... 0 0 0 1
Al patrulea demprit parial 0 0 1 0 -
0 0 1 0
Al patrulea rest parial ................................... 0 0 0 0 = Rest final

Din exemplul prezentat rezult ca operaia de mprire se face ntr-un numr de etape
identice ca desfurare, egal cu numrul de bii ai dempritului. n fiecare etap este implicat cte
un bit al dempritului ncepnd de la cel de pondere maxim, i al crui rang este acelai cu al
bitului ctului a crui stare definitiv se determin.
Astfel, ntr-o etap intermediar se formeaz din restul parial al etapei anterioare, prin
adugarea ca bit de pondere minim a bitului implicat din demprtit, un demprit parial, din
care scznd, sau nu, mpritorul (dup cum dempritul parial obinut este mai mare, sau egal,
respectiv mai mic dect mpritorul), se va genera restul parial al etapei. Remarcm c n prima
etap dempritul parial se obine dintr-un rest parial iniial nul i c restul parial generat n
ultima etap reprezint chiar restul final.
La efectuarea mpririi, registrele folosite din microprocesorul Intel 8080 sunt indicate n
fig.1 mpreun cu precizarea destinaiei lor.
n aceast aplicaie, registrul numrtor de etape, n care la iniializare doar bitul de pondere
1 1 1 0 : 1 0 = 1 1 1
1 0
= 1 1
1 0
= 1 0
1 0
= =
6-2
maxim este pus n starea logic 1, realizeaz numrarea unei etape efectuate prin deplasarea
coninutului su cu o poziie la dreapta prin bistabilul de transport CY. Astfel, dup a opta etap,
bascularea bistabilului de transport n starea CY=1 va indica sfritul operaiei de mprire.
Se observ de asemenea c ntr-o etap, bitul n starea 1 din registrul numrtor n inel are
acelai rang cu al bitului implicat din ct, care astfel poate fi adus n starea logic 1 printr-o
operaie logic OR ntre registrul destinat ctului i cel numrtor n inel.
Aceast operaie este descris prin organigrama i programul prezentate mai jos.











Fig.1 Alocarea registrelor microprocesorului



Adres ETICHET: SIMBOLIZARE ; COMENTARIU
ORG 1000; Nr. locaii 1000
DEMP: EQU 0A1H; DEMP= 0A1H
MP: EQU 07H; MP= 07H; EQU= EQUATE= EQUAL
1000 DIVIDE: XRA A ; AAA=0, DIVIDE= 1000
1001 MOV B,A; BA= 0
1002 MOV L,A; LA= 0
1003 MVI D,80H; D1000.0000B=80H
1005 MVI C,DEMP; C DEMP
1007 MVI E, MP; E MP
1009 LOOP: MOV A, C;
1010 RAL;
1011 MOV C, A;
1012 MOV A, B;
1013 RAL;
1014 MOV B,A;
Formare a dempritului parial, rotind
registrul BC cu o poziie la stnga ca dou
rotiri successive pe opt bii folosind CY i
rotind nti registrul C i apoi B (L00P=
=1009).
1015 CMP E;
1016 JC PASS;
Salt la adresa PASS =1024 dac
demprit parial < mpritor.
1019 SUB E;
1020 MOV B, A;
1021 MOV A,D;
1022 ORA L;
1023 MOV L, A;
Dac
demprit parial > mpritor,
genereaz rest prin scdere i pune n 1
bitul implicat din CT.
1024 PASS: MOV A, D;
1025 RRC;
1026 MOV D, A;
1027 JNC LOOP;
Numr etapa consumat realiznd CY= 1 la
sfrit de sarcin, iar dac CY= 0 salt la
adresa LOOP= 1009
END DIVIDE; PCDIVIDE= 1000

H Ct L

D Numrtor n inel mpritor E

B Rest Demprit C

A S Z - AC - P - CY F

6-3


Fig.2 Organigrama sarcinii de mprire

Tem
1. Care este timpul de execuie a programului la o frecven a tactului sistemului de 2MHz?
2. S se rescrie aplicaia pentru cazul cnd este tratat ca subprogram.
START
AC
1RAL
CA
AB
1RAL
BA
AAA= 0
B, L A
D80H
CDEMP
EMP
CMP E
AA - E
BA
AD
1RRC
DA

AD
AAL
LA
Iniializare
registre
microprocesor
Formare
demprit
parial
demprit - mpritor
demprit < mpritor?
Formare demprit
parial
Da
Nu
Operaie
neterminat ?
Numrare etap
ncheiat.
Bitul din CT,
pus n starea 1.
STOP
Da
Nu
CY=1?
CY=0?
DIVIDE:
LOOP:
PASS:
7-1
TRANSFER HANDSHAKING

Aplicaia const dintr-un subprogram de transfer n memoria sistemului cu microprocesor a
unui bloc de date din 128 octei, furnizai de un periferic destinat achiziiei de date, subprogramul
fiind efectuat printr-o cerere de ntrerupere lansat de periferic cnd toi cei 128 octei sunt gata de
transfer. Fiind vorba de un transfer handshaking, canalul de comunicaie ntre periferic i sistemul
cu microprocesor este constituit astfel:
- semnalele de comand END i DA (=Data Acknowledge) sunt emise de microprocesor pe
biii de rang 1 i respectiv de rang 0 ai portului de ieire cu adresa 2E hexa;
- semnalul de control DR (=Data Ready) generat de periferic este transferat prin bitul de rang
0 al portului de intrare cu adresa 3F hexa;
- transferul celor 128 octei se face prin portul de intrare cu adresa 3E hexa
Aceste semnale de sincronizare, utilizate n transferul handshaking de date, a cror forme de
und sunt reprezentate n fig.1, au urmtoarele semnificaii:
- cnd perifericul dispune de toi cei 128 octei, va aplica microprocesorului semnalul INT=1,
cruia astfel i solicit o ntrerupere temporar a programului n curs de execuie, n vederea
efecturii subprogramului mai prioritar, de transfer al blocului de date din 128 octei;
- la sfritul instruciunii n curs de execuie, microprocesorul, acceptnd cererea de
ntrerupere, emite semnalul INTA=0, sub aciunea cruia blocul de control al perifericului
transmite microprocesorului prin magistrala de date instruciunea de apel RST 4, prin a crei
efectuare microprocesorul trece la executarea programului de ntrerupere, plasat de la adresa
39=0027 hexa, i care ncepe cu emiterea semnalului de comand END=0, ce informeaz
perifericul c este pregtit pentru recepia unui octet, comanda END=0 fiind pstrat pe toat
durata de transferare a celor 128 octei;
- blocul logic de comanda al perifericului, sub aciunea semnalului INTA=0 i va anula
cererea de ntrerupere, a crei deservire tocmai a nceput, prin emiterea semnalului INT=0, iar sub
aciunea semnalului END=0, va aplica portului de intrare de date un octet, dup care va emite
semnalul de control DR=1 pentru a informa microprocesorul c la portul de intrare de date cu
adresa 3E hexa este disponibil o nou dat;
- programul de ntrerupere supravegheaz permanent semnalul DR, prin citirea portului de
intrare cu adresa 2E hexa, i imediat ce se identific semnalul DR=1 programul continu cu citirea
datei din portul de intrare cu adresa 3E hexa, dup care se emite ctre logica de control a
perifericului semnalul de comand DA=1, ce determin perifericul s emit semnalul DR=0 pn
cnd se aplic portului de intrare de date cu adresa 3E hexa urmtorul octet de transferat;
- fiecare octet transferat este numrat i dup transferarea celui de al 128-lea octet se ncheie
aplicaia de ntrerupere prin emiterea ctre periferic a semnalului de comand END=1.



Fig.1 Semnalele de sincronizare asociate transferului handshaking


Aceast sarcin are alocate prin instruciunea de apel su simbolizarea
RST 4
doar 8 locaii de memorie, ncepnd cu adresa 32 (=48), spaiu total insuficient aplicaiei i din
t END
DR (=Data Ready)
DA (=Data Acknowledge)
7-2
care se trece, prin ramificare de apel, n zona din memoria sistemului unde se continu programul.
Aplicaia va ncepe cu validarea funcionrii n ntreruperi a microprocesorului i iniializarea
registrelor folosite din microprocesor, registre ce sunt indicate n fig.3, cu precizarea destinaiei lor.



Fig.2 Organigrama aplicaiei de transfer handshaking

Numrarea celor 128 etape de transfer de octei folosete registrul C ca numrtor prin
decrementare, iar registrul HL, iniializat cu adresa de nceput a zonei de destinaie a transferului,
va servi la formarea adresei de destinaie pentru fiecare din cei 128 octei preluai de la periferic.
START START
EI
CALL RELOC
RET
Salvare n stiv:
PSW, HL, BC
Iniializare:
END0
C128
HLADDR

Numrare etap:
CC-1
Preluare octet:
AInput Byte
HLA

Impuls DA:
DA1
DA0
STOP
Nu.
Da
Sarcin
ncheiat?
Nu
Da
RELOC:
LOOP:
Pregtire etap:
HLHL+1
Z=1?
Inhibare periferic
END1
Refacere registre
BC, HL, PSW
STOP
SERV:
RET
STOP:
Octet nou?
(CY=1?)
7-3
Aceast sarcin, va ncepe cu salvarea n stiv a registrelor afectate i se va ncheia cu
instruciunile de refacere din stiv a registrelor folosite.
Algoritmul aplicaiei este descris prin organigram din fig.2.










Fig.3 Alocarea registrelor microprocesorului


Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri
ORG 0021H; numrtor locaii 0021H .
0021 H SERV: EI
CALL RELOC;
RET;
ORG 4E00H;
ADDR:
MASK:
SET 1100H;
EQU 1132H;
Definire notaii.
4E00 H RELOC: PUSH PSW;
PUSH H;
PUSH B;
Salvare n stiv a registrelor
afectate.

LDA MASK;
ANI 0FDH;
MOV B,A;
n octetul de la adresa MASK,
ce conine toate semnalele de
comand, se face END=0

OUT 2EH; Se emite END=0.
LXI H,ADDR; HLADDR=adresa zonei de
destinaie a transferului

MVI C,80H; C (=numrtor etape)128
LOOP: IN 3FH; A(3F)= semnale de control
RAR; CY semnalul DR
JNC LOOP; Se testeaz DR pn ce DR=1
IN 3EH; A(3E) dac CY=0
MOV M,A; (HL)A=octet de intrare
MOV A,B;
ORI 01H;
OUT 2EH;
XRI 01H;
OUT 2EH;
Se emite un impuls DA=1 cu
durata timpului de efectuare a
ultimilor dou instruciuni.

DCR C; Se numr transferal efectuat
JZ STOP; Z=1? (sarcin ncheiat?)
INX H; HLHL+1 (=adres nou)
JMP LOOP; Salt pentru urmtorul transfer.
STOP: LDA MASK;
OUT 2EH;
La final se emit semnalele de
comand: END=1 i DA=0

H Adres de destinaie a octetului de intrare L

B Numrtor de etape C

A
CY 7 6 .. 0

7-4
Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri
POP B;
POP H;
POP PSW;
Se refac din stiv registrele
afectate

RET; Revenire n SERV
END; Sfritul programului surs.

Teme
1. S se completeze programul de la rubrica ADRES i pentru fiecare instruciune a
programului s se indice att tipurile de adresare folosite, ct i descrierea sintetic.
2. S se determine timpul T de efectuare a programului tiind c frecvena tactului sistemului
este f=2Mhz i considernd c fiecare ciclu de maina este efectuat n trei stri.
3. S se rescrie programul n limbajul de asamblare al microprocesorului Zilog Z80.
4. S se corecteze programul pentru situaia n care trecerea de la secvena SERV, la secvena
RELOC se face prin salt necondiionat.
8-1
CONVERTOR ANALOG-NUMERIC PE OPT BII, CU REGISTRU CU APROXIMAII
SUCCESIVE (CANRAS)

n asistarea numeric a unui proces controlat este necesar msurarea numeric a unor
parametri prin convertoare analog-numerice. Convertoarele analog-numerice fiind elemente
scumpe se impune ca acolo unde este posibil un acelai convertor s fie utilizat n conversia
succesiv a mai multor mrimi analogice.
ntre convertoarele analog-numerice cele mai rapide, dar scumpe, sunt convertoarele de tip
paralel, iar cele mai ieftine, dar lente, sunt convertoarele cu reacie.
Un compromis ntre pre i vitez de conversie l realizeaz convertoarele analog-numerice cu
registru cu aproximaii succesive pe reacie. Astfel, o conversie pe k bii este realizat cu un
convertor analog-numeric de tip paralel ntr-un tact al generatorului de sincronizare ce piloteaz
convertorul, cu un convertor analog-numeric cu numrtor pe reacie n
k
2 tacte, iar cu un
convertor analog-numeric cu registru cu aproximaii succesive pe reacie (CANRAS) n k tacte.
n cazul unui CANRAS, ntr-o etap de conversie se stabilete starea final a cte unui bit din
rezultatul cutat, ncepnd de la bitul de pondere maxim, iar numrul de etape de conversie este
egal cu numrul de bii ai rezultatului. La nceputul unei etape se stabilete starea logica 1, pentru
bitul de prelucrat, iar biii de pondere superioar avnd strile definitiv stabilite n etapele
anterioare. Rezultatul parial astfel format, este convertit numeric-analogic i comparat cu mrimea
analogic de msurat. Compararea va indica prin starea logica 0 c rezultatul parial este mai mic
dect cel real. Rezultatul comparrii reprezint chiar starea definitiv a bitului prelucrat, astfel
generndu-se rezultatul etapei.
O conversie CANRAS pe opt bii va conine deci opt etape de conversie, identice ca
desfurare.
n aplicaia prezentat partea de registru cu aproximaii succesive a fost implementat pe un
sistem cu microprocesor Intel 8080 folosind o interfa paralel PPI 8255.



Fig.1 Realizare CANRAS

Circuitul de interfa PPI 8255 este tratat ca un circuit de memorie prin conectarea
terminalelor sale RD i WR la liniile MEMR i respectiv MEMW ale magistralei de comand i







Clock





Intel 8228





CS , A0, A1

PPI 8255






CNA
Intel 8224
STSTB
Uin

+

-
COMP
Intel 8080
ADDRESS BUS
DATA
BUS
Q
D0..D7

RD, WR
DBIN
HOLDA
1,2
RESET
READY

SYNC
DI0..DI7
DO0..DO7
RDYIN
RESIN
MEMR
MEMW
RD
WR

D0..D7
A0..A15
IOR
IOW
INTA
PC0 PA
8-2
control i ca urmare transferul de date cu locaiile interfeei PPI 8255 se poate face prin mai multe
tipuri de instruciuni dect n cazul tratrii interfeei ca circuit de intrare-ieire. Registrele folosite
sunt indicate n fig.3, cu precizarea destinaiei lor, iar algoritmul aplicaiei este evideniat prin
organigrama din fig.2.



Fig.2 Organigrama aplicaiei
START
PUSH PSW,B,D
B,EA=AA=0
CY1
Programare PPI
AA, RAR, EA
AB , AA+E
BA , PAA
POP D,B,PSW
RET
C1
CC-1
STOP
A(PC)
AA (01H)
AB , AA-E
BA
CY=?
Z=1?
Z=0?
=1 =0
STOP :
CANRAS :
STAGE :
=0
=1
=0
=1
TIME :
8-3








Fig.3 Alocarea registrelor microprocesorului

Numrarea celor 9 etape, dintre care prima este de iniializare i urmtoarele 8 etape sunt de
conversie, se face prin deplasarea la dreapta a coninutului registrului pe 9 bii format din registrul
numrtor de etape E i bistabilul de transport CY, n care un singur bit se afl n starea logic 1
i al crui rang coincide n fiecare etap de conversie cu rangul bitului prelucrat din rezultatul ce se
determin. Astfel, bitul din rezultat, ce este prelucrat ntr-o etap, poate fi stabilit ntr-una din strile
logice 0, sau 1, printr-o operaie aritmetic ntre rezultatul parial aflat n registrul B i
coninutul registrului numrtor E, fr a se afecta restul biilor rezultatului.


Adres ETICHET : SIMBOLIZARE ; COMENTARIU
ORG 1800H; Informare asamblor.
PPICOM :
PPIPA :
PPIPC :
EQU 0003H;
EQU 0000H;
EQU 0002H;
PPICOM=3
PPIPA=0
PPIPC=2
1800H CANRAS : PUSH PSW;
PUSH B;
PUSH D;
Salvare registre afectate n stiv.
MVI A,81H;
STA PPICOM;
Programare PPI8255 in mod 0 : PA=>,
PC
0 3
<= .
XRA A;
MOV E,A;
MOV B,A;
STC;
AAA=0
EA=0
BA=0
CY1
STAGE : MOV A,E;
RAR;
MOV E,A;
JC STOP;
Numrare etap afectnd CY=1 la sfrit de
sarcin, cnd se ncheie programul de la
eticheta STOP.
MOV A,B;
ADD E;
MOV B,A;
STA PPIPA;
Formare rezultat parial: salvat n B i
nscris n portul PA conectat la CNA.

TIME :
MVI C,1;
DCR C;
JNZ TIME;
Temporizare de circa 10 sec necesar
stabilizrii ieirii comparatorului.
LDA PPIPC;
ANI 1;
ZPC
0

JNZ STAGE;
Dac PC
0
=1 continu cu numrarea etapei
de la adresa etichetat STAGE.
B Rezultat parial Numrtor de temporizare C

D Numrtor n inel E

A
CY 7 6 .. 0

8-4
Adres ETICHET : SIMBOLIZARE ; COMENTARIU
MOV A,B;
SUB E;
MOV B,A;
Dac PC
0
=0, pune n 0 bitul prelucrat din
rezultat.
JP STAGE; ncheie etapa cu numrarea ei, de la eticheta
(adresa) STAGE.
STOP : POP D;
POP B;
POP PSW;
RET;
Refacere registre P din stiv i revenire n
programul apelant.

END 1800H; PC 1800H

Teme
1. S se completeze programul la rubrica ADRES i pentru fiecare instruciune s se indice
descrierea sintetic i tipurile de adresare folosite.
2. S se refac programul pentru cazul tratrii interfeei PPI 8255 ca circuit de intrare-ieire.
3. Pentru prgramul prezentat s se determine timpul de efectuare tiind c: f=2MHz,
stare ciclu
T 3 T = .
4. S se refac programul pentru cazul numrrii n inel doar a celor 8 etape de conversie.
9-1
CONTOLUL UNEI TASTATURI

Cel mai frecvent, comanda unui sistem cu microprocesor, n vederea efectuarii unei sarcini,
este realizat de utilizator printr-o claviatur ce reprezint un ansamblu de comutatoare acionate
manual. Comanda unui sistem cu microprocesor prin intermediul unei clavituri impune ns o
supraveghere permanent a claviaturii pentru a se realiza, att identificarea tastei apsate cu
generarea codului binar al tastei reprezentat prin numrul de ordine al tastei n cadrul claviaturii, ct
i protecia mpotriva apsrii simultane a mai multor taste i a comutrilor multiple ce apar la
acionarea unei taste datorit vibraiei mecanice a lamelor de contact ale comutatorului.
Aceste probleme pot fi rezolvate fie pe cale hardware de ctre un circuit specializat prin
care claviatura se conecteaz la sistem, fie printr-un subprogram al programului MONITOR ce
realizeaz i gestioneaz sarcinile prevzute sistemului.
Determinarea adresei subprogramului din MONITOR corespunztor sarcinii unei taste
apsate se face pe baza codului binar al tastei apsate cu subprogramul din MONITOR destinat
supravegherii claviaturii. La terminarea efecturii subprogramului sarcinii comandate de la
claviatur, programul MONITOR va reveni automat la suprvegherea claviaturii n vederea
detectrii unei tastei apsate.
Obinuit claviatura se conecteaz la sistemul cu microprocesor prin intermediul unor
registre de intrare-ieire, numite porturi , ale unui circuit de interfa cu transfer paralel de date.
n cazul claviaturilor cu un numr redus de taste, fiecare tasta se conecteaz la cte un bit de
intrare, situaie reprezentat n fig.1 pentru cazul obinuit al tastelor avnd comutatoarele normal
deschise.



Fig.1 Claviatur simpl

Numrul biilor de intrare-ieire prin care o claviatur se conecteaz la sistemul cu
microprocesor a fost redus prin conectarea tastelor claviaturii ntr-o matrice n care fiecare tast
apsat realizeaz un scurtcircuit ntre linia i coloana la a cror intersecie se afl, matricea
claviturii fiind conectat cu fiecare linie i coloan la cte un bit distinct de intrare-ieire.
Astfel, ntr-o clavitur avnd nm taste aezate ntr-o matrice cu n linii i m coloane numrul
biilor de intrare-ieire pentru supravegherea claviaturii s-a redus de la nm la n+m. ntr-o clavitur
matriceal, numrul biilor de intrare-ieire pentru supravegherea claviaturii este minim dac
matricea este ptrat.
Conectarea la un sistem cu microprocesor a unei claviaturi cu 16 taste aezate ntr-o matrice
cu 4 linii i 4 coloane i supravegheat prin baleere de linii este prezentat n fig.2.
R1 R2 R3
SW1 SW2 SW3
ADDRESS
BUS
CONTROL
BUS
PC2 PC1 PC0
DATA
BUS
D0..D7 A0, A1, CS
RESET,
WR , RD
+Vcc=+5V
PPI
8255
9-2


Fig.2 Tehnica baleerii de linii

Identificarea ntr-o clavitur matriceal a unei taste apsate se poate face prin dou tehninci:
tehnica baleerii (de linii sau de coloane) i tehnica inversrii.
Problema apsrii simultane accidental a mai multor taste se rezolv prin ignorarea tastelor
pn n momentul cnd rmne apsat doar o singur tast.




Fig.3 Oscilaiile mecanice ale unei lamele de contact

Protecia mpotriva oscilaiilor parazite de tensiune produse de vibraiile mecanice ale
contactelor ntreruptorului unei taste acionat i a cror standardizare este de 10 msec, este
realizat prin citirea strii claviaturii cu o ntrziere de cel puin 10 msec din momentul acionrii
tastei, aa cum se arat n fig.3.

METODA BALEERII
Aceast metod este exemplificat n fig.2 pentru o claviatur matriceal din 16 taste
format din 4 linii i 4 coloane.
ntr-o claviatur matriceal identificarea unei taste apsate prin metoda baleerii de linii se
face prin citirea strilor coloanelor matricii, cnd doar o singur linie a matricei claviaturii se afl n
starea logica 0, ntr-un ciclu de baleere fiecare linie fiind pus n starea logica 0 n cte o etap
distinct. Deoarece o tast apasat realizeaz ntr-o claviatur matriceal un scurtcircuit ntre linia
1 (=+5V)
0
t
Citire la
presare
Citire la
depresare
10 msec 10 msec
R4
R1
R2
R3
0
0
0
4
3 (=cod tast) 2 1 0
0
0
0
C
B A 9 8
7 6 5
1
1
1
1
1
F E D
PA
PIO Z80
CONTROL
BUS
ADDRESS
BUS
DATA
BUS
+Vcc=+5V
1
IEI, IEO,
INT, RD,
IORQ, M1

CE,
B/ A, C/ D

D0..D7
PB
SW F
tast apsat
C
u
v

n
t

s
t
a
r
e

c
o
l
o
a
n
e
C
u
v

n
t

s
t
a
r
e

l
i
n
i
i
PA0
PA3
PB0
PB3
9-3
i coloana la a cror intersecie se afl, rezult c prin metoda baleerii de linie, starea logic 0 va
aprea doar pe coloana tastei apsate i numai n etapa n care pe linia tastei apsate se aplic starea
logic 0. ntr-o etap, existena n starea logic 0 a unei linii i a unei coloane identific precis
tasta apsat aflat la intersecia lor.
Supravegherea unei claviaturi matriceale prin metoda baleerii impune deci ca un ciclu de
baleere complet a claviaturii s conin un numr de etape egal cu numrul de linii al matricii dac
se realizeaz baleerea de linii, ori cu numrul de coloane al matricii dac se realizeaz baleerea de
coloane.
Prin aceast metod liniile sau coloanele ce se baleeaz vor fi conectate la bii de ieire, n
timp ce coloanele respectiv liniile ale cror stri se testeaz se vor conecta la bii de intrare.
Se observ c determinarea doar a existenei unei taste apsate dintr-o claviatur matriceal
se poate face ntr-o singur etap prin punerea n starea logic 0 a tuturor biilor de ieire alocai
supravegherii claviaturii i citirea biilor de intrare ntre care doar bitul de intrare corespunztor
tastei apsate se va afla n starea logic 0, indicnd existena unei taste apsate.
n general, supravegherea unei claviaturi matriceale implic realizarea urmtoarelor sarcini:
determinarea existenei unei taste apsate, identificarea tastei apsate i a codului su i
determinarea adresei subrutinei asociat tastei apsate.
Aceste sarcini, dintre care cea de determinare a existenei unei taste apsate poate lipsi, pot
fi realizate ca subrutine distincte sau ca secvene distincte n cadrul programului din MONITOR
destinat supravegherii claviturii.

Exemplu
Fie un sistem cu microprocesor avnd o claviatur matriceal supravegheat prin baleere de
linii i format din 24 taste dispuse pe 3 linii i 8 coloane, 16 taste fiind taste cifrice hexazecimale,
iar 8 taste fiind funcionale, reprezentat n fig.4.




Fig.4 Tastatur cu 16 taste cifrice i 8 taste funcionale
R8 R7 R6 R5 R4 R3 R2 R1
PA6 PA7 PC4 PC5 PC6 PA0 PA1 PA2 PA3 PA4 PA5
7
PA PC4-7
F
0 1 2 3 4 5 6
STORE
8 9 A B C D E
RUN RET SET STEP READ WRITE LOAD
DATA
BUS
ADDRESS
BUS
+Vcc=+5V
PPI
8255
RESET, WR , RD CS , A0, A1
D0..D7
CONTROL
BUS
9-4


Fig.5 Organigrama aplicaiei de control a tastaturii
START
(PPICOM)92H
(PA i PC4-7)
E3=nr.linii
B0=cod tast 0
CEFH=cod de
baleaj prim linie
AC
(PPIPC)A
A(PPIPA)
AAFFH
EE+1
RRA
BB+1
AB
AA+8
BA
AC
RLC A
CA
DB
CALL TIME
(timer 9,1 msec)
AD
AA10H
NUMBER
SUBRUTINE
AD
AA+A
AC
B0
HLTABEL
HLHL+BC
A(HL)
HLHL+1
H(HL)
LA
PCHL
STOP
Z=0?
Z=1?
Z=1?
CY=1?
=1 =0
=1
=1
=1
=0
=0
=0
KEY:
SCAN:
LOOP:
COUNT:
SAVE:
NUMBER:
9-5
Organigrama aplicaiei de control al unei claviaturi din 16 taste cifrice i 8 taste funcionale
este prezentat n fig.5.
n aceast aplicaie, adresele subrutinelor funcionale se afl situate ntr-un tabel n care
fiecare adres ocup cte dou locaii successive. Ca urmare, acest tabel va fi citit din dou n dou
locaii, poziia n tabel a adresei unei subrutine funcionale determinndu-se cu relaia:
TABEL+2cod tasta.
Spaiul de adresare alocat acestui tabel este:
TABEL + 216, , TABEL + 223 + 1,
eticheta TABEL fiind o constant de identificare a adresei de nceput a tabelului.

n limbajul de asamblare al microprocesorului Intel 8080 programul are urmtoarea form:

Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

PPICOM :
PPIPC :
PPIPA :
ORG 1800H;
EQU 03H;
EQU 02H;
EQU 00H;
Informare asamblor i definirea
notaiilor, prin pseudoinstruciuni.

1800

KEY : MVI A,92H;
OUT PPICOM;
Programare PPI 8255 n mod 0 cu
PA pe intrare i
4 7
PC

pe ieire.
SCAN : MVI B,0;
MVI E,3;
MVI C,0EFH;
Iniializare registre.
LOOP : MOV A,C;
OUT PPIPC;
Baleerea liniei indicate n C.
IN PPIPA;
XRI 0FFH;
JNZ COUNT;
Citire cuvnt stare coloane i Z=0
la tast apsat.
DCR E;
JZ SCAN;
Numrare etap i la sfrit ciclu
reluare bleere.
MOV A,B;
ADI 8;
MOV B,A;
Pregtire etap urmtoare formnd
n registrul B codul primei taste
din linia urmtoare.
MOV A,C;
RLC ;
MOV C,A;
Pregtire etap urmtoare formnd
n registrul C codul de baleere al
liniei urmtoare.
JMP LOOP; Salt la etapa urmtoare.
COUNT :



SAVE :
RRA ;
JC SAVE;
INR B;
JMP COUNT;
MOV D,B;
Formare a codului tastei apsate n
registrul B prin incrementri
repetate i salvare cod tast
apsat n registrul D.
CALL TIME; Temporizare 9,1 msec pt. vibraii.
MOV A,D;
ADI 10H;
JZ NUMBER;
Dac tasta apsat este cifric
atunci salt la subrutina NUMBER
de tratare cifric a tastei.
MOV A,D;
ADD A;
MOV C,A;
MVI B,0;
Dac tasta apsat este
funcional, se formeaz n
registrul BC dublul codului tastei
apsate.
LXI H,TABLE;
DAD B;
Se formeaz n registrul HL adresa
ce indic subrutina funcional.
9-6
Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU
MOV A,M;
INX H;
MOV H,M;
MOV L,A;
PCHL;
Se extrage din tabel, n registrul
HL, adresa subrutinei funcionale
care plasat n registrul PC
determin declanarea efecturii
subrutinei funcionale.
TIME :
CYCLE :
LAP :
MVI L,48H;
MVI B,0CH;
DCR B;
JNZ LAP;
DCR L;
JNZ CYCLE;
Subrutin de temporizare 9,1 msec
RET; Revenire n programul apelant.
END; Informare asamblor.

Completare
n limbajul de asamblare al microprocesorului Zilog Z80 programul are urmtoarea form:

Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

PPICOM :
PPIPC :
PPIPA :
ORG 1800H;
EQU 03H;
EQU 02H;
EQU 00H;
Informare asamblor i definire
etichete cu pseudoinstruciuni.

1800

KEY : LD A,92H;
OUT (PPICOM),A ;
Programare PPI 8255 n mod 0 cu
PA pe intrare i
4 7
PC

pe ieire.
SCAN : LD B,0;
LD E,3;
LD C,0EFH;
Iniializare registre.
LOOP : LD A,C;
OUT (PPIPC),A;
Baleerea liniei indicate n C.
IN A,(PPIPA);
XOR 0FFH;
JP NZ,COUNT;
Citire cuvnt stare coloane i Z=0
la tast apsat.
DEC E;
JP Z,SCAN;
Numrare etap i la sfrit ciclu
reluare bleere.
LD A,B;
ADD A,8;
LD B,A;
Pregtire etap urmtoare formnd
n registrul B codul primei taste
din linia urmtoare.
LD A,C;
RLC A;
LD C,A;
Pregtire etap urmtoare formnd
n registrul C codul de baleere al
liniei urmtoare.
JP LOOP; Salt la etapa urmtoare.
COUNT :



SAVE :
RR A;
JP C,SAVE;
INC B;
JP COUNT;
LD D,B;
Formare a codului tastei apsate n
registrul B prin incrementri
repetate i salvare cod tast
apsat n registrul D.
CALL TIME; Temporizare 9,1 msec pt. vibraii.
LD A,D;
AND 10H;
JP Z,NUMBER;
Dac tasta apsat este cifric
atunci salt la subrutina NUMBER
de tratare cifric a tastei.
9-7
Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU
LD A,D;
ADD A,A;
LD C,A;
LD B,0;
Dac tasta apsat este
funcional, se formeaz n
registrul BC dublul codului tastei
apsate.
LD HL,TABLE;
ADD HL,BC;
Se formeaz n registrul HL adresa
ce indic subrutina funcional.
LD A,(HL);
INC HL;
LD H,(HL);
LD L,A;
LD PC,HL;
Se extrage din tabel, n registrul
HL, adresa subrutinei funcionale
care plasat n registrul PC
determin declanarea efecturii
subrutinei funcionale.
TIME :
CYCLE :
LAP :
LD L,48H;
LD B,0CH;
DEC B;
JP NZ,LAP;
DEC L;
JP NZ,CYCLE;
Subrutin de temporizare 9,1 msec
RET; Revenire n programul apelant.
END; Informare asamblor.


Teme
1. S se completeze programele la rubrica ADRES.
2. S se determine frecvena tactului sistemului din subrutina de temporizare cu eticheta
TIME, considernd c fiecare ciclu de maina are trei stri.
3. Cu frecvena tactului determinat la punctul 2. , s se determine timpul de execuie al
programului.

10-1
CONTROLUL UNEI TASTATURI. METODA INVERSRII

Prin metoda inversrii, identificarea tastei apsate dintr-o claviatur matricial se realizeaz
n dou etape, indiferent de mrimea matricii claviaturii, linia i coloana la a cror intersecie se afl
tasta apsat fiind identificat fiecare n cte o etap.
Astfel, ntr-o etap, linia tastei apsate se identific prin starea logic 0 din cuvntul de
stare linii, citit la biii de intrare la care-s conectate liniile, cnd coloanele matricii claviaturii sunt
aduse n starea logic 0 prin biii de ieire la care sunt conectate. n urmtoarea etap, dup
inversarea sensului de transfer pentru toi biii de supraveghere la care matricea claviaturii este
conectat, se determin coloana tastei apsate prin starea logic 0 din cuvntul de stare coloane,
citit la biii din intrare la care sunt conectate coloanele, cnd pe biii de ieire la care sunt conectate
liniile, se aplic fie stri logice 0, fie cuvntul de stare al liniilor din etapa anterioar n care doar
bitul liniei tastei apsate este n stare logic 0.
Cele dou cuvinte, de stare linii i de stare coloane, identific precis tasta apsat prin linia
i coloana la a cror intersecie se afl, fiind folosite n determinarea codului tastei apsate.
Metoda inversrii este exemplificat n fig.1 pentru cazul unei claviaturi matriceale din 16
taste, dispuse pe 4 linii i 4 coloane.




Fig.1 Etapele metodei inversrii

Metoda inversrii necesit ns schimbarea sensului de transfer al tuturor biilor de
supraveghere a claviaturii matriceale, prin reprogramarea interfeei cu transfer paralel de date,
notat PIO, naintea fiecrei etape.

TASTATURI CODATE
Aceste claviaturi sunt prevzute cu un bloc logic ce asigur funcia de identificare a tastei
apsate cu generarea codului tastei i se conecteaz la sistemul cu microprocesor printr-o interfa
paralel, aa cum se arat n fig.2.
R1 R2 R3 R4 R5 R6 R7 R8
0 0 0 0 1 1 1
PIO Z80
CONTROL
BUS
ADDRESS
BUS
DATA
BUS
cuvnt stare coloane
0
+Vcc=+5V
R1 R2 R3 R4 R5 R6 R7 R8
0 0 0 0 1 0 1 1
DATA
BUS
cuvnt stare linii
PIO Z80
CONTROL
BUS
ADDRESS
BUS
+Vcc=+5V
PB PB
PA
PA
1 1 1 0
D0..D7 D0..D7 RD , M1,.. CE , A/ B, C/ D
PA0 PA3 PB0 PB3
CE , A/ B, C/ D
RD , M1,..
10-2


Fig.2 Claviatur codat folosind o interfa paralel

La apsarea unei taste, claviatura codat o identific i genereaz codul tastei pe care-l
aplic la portul PA, unde-i memorat sub aciunea semnalului ASTB 0 = aplicat interfeei de logic
asociat claviaturii codate. Starea ASTB 0 = , testat de microprocesor prin bitul de intrare PB0, cu
rol de fanion al claviaturii, indic existena n portul PA a codului unei taste apsate pe care
microprocesorul l citete. La citirea portului PA, interfaa emite automat semnalul ARDY=1 ce
determin claviatura s emit ASTB 1 = i s treac apoi la identificarea unei noi taste apsate.
Prin folosirea unei claviaturi codate, programul de supraveghere a claviaturii se simplific,
realiznd doar supravegherea fanionului claviaturii i determinarea adresei subrutinei tastei apsate.
Programul de control a claviaturii codate din fig.2 s-a realizat, n limbajul de asamblare al
microprocesorului Zilog Z80, dup organigrama din fig.3.

Adres Etichet : Simbolizare ; Comentariu

CPA :
CPB :
PA :
PB :
ORG 1800H;
EQU addr1;
EQU addr2;
EQU addr3;
EQU addr4;
Informare asamblor
CPA,CPB=registre comand port PB, respectiv PB;
PA, PB=adres port PA, respectiv PB;
1800H KEY : LD A,4FH;
OUT (CPA),A;
programare port PA pe intrare; KEY=1800H i
numrtor locaii asamblor 1800H
LD A,0BFH;
OUT (CPB),A;
programare port PB n mod control;
LD A,0FFH;
OUT (CPB),A;
programare port PB cu toi biii pe intrare;

TEST-1 :
IN A,(PB);
BIT 0,A;
JR Z,TEST-1;
detectare stare logic 1 pentru bitul PB0;

TEST-0 :
IN A,(PB);
BIT 0,A;
JR NZ, TEST-0;
detectare satare logic 0 pentru bitul PB0;
IN A,(PA);
JP TASK;
preluare cod tast n A i salt la subrutina de
identificare a subrutinei sarcinii asociate tastei;
END; informare asamblor
8R
B/ A
C/ D
CE
PB7
PB0
D0..D7
...
PB
ASTB
ARDY
PA
ADDRESS
BUS
CONTROL
BUS
DATA
BUS Cod tast
PIO Z80
+Vcc=+5V
RD, IORQ
INT, M1

10-3


Fig.3 Organigrama sarcinii de supraveghere a unei claviaturi codate


Observaii
1. n metoda baleerii fiecare din biii de intrare prin care se supravegheaz claviatura
matriceal se protejeaz la zgomote prin conectarea la sursa de alimentare Vcc=+5V cu un rezistor
R, dimensionat pentru ncrcarea unui bit de ieire n starea logic 0 cu maxim o sarcin TTL
standard (=1,6 mA), ce este capacitatea maxim de comand a unui bit de ieire n tehnologie MOS:

TTL
Vcc 5V
R 3, 3k
i 1, 6mA
= = .
2. n metoda inversrii fiecare din biii de supraveghere a claviaturii matriceale, lucrnd
ntr-o etap ca bit de intrare, va trebui protejat la zgomote prin conectarea la sursa de alimentare
Vcc=+5V cu un rezistor R, dimensionat pentru ca la ncrcarea unui bit de ieire n starea logic 0
cu dou rezistoare R n paralel s nu se depeasc o sarcin TTL standard (=1,6 mA), ce este
capacitatea maxim de comand a unui bit de ieire n tehnologie MOS:

TTL
R Vcc 5V
3, 3k
2 i 1, 6mA
= = .



START
APB
BIT 0,A


APB
BIT 0,A

APA
JP TASK
STOP
PA
PB
Citire port PB i ZPB0
Programare interfa
Citire port PB i ZPB0
Preluarea cod tast n A i salt
la identificarea subrutinei tastei
Z=0? =0
=1
=1
=0
Z=1?
KEY:
TEST-1:
TEST-0:
10-4
Tem
1. S se scrie programul de supraveghere prin metoda inversrii a unei tastaturi matriceale
din 32 taste dispuse pe 8 coloane, cu identificarea tastei cu numrul de ordine cel mai mare, avnd
ca exemplu programul de identificare a tastei apsate cu numrul de ordine cel mai mic ntr-o
tastatur matriceal din 64 taste dispuse pe 8 linii, prezentat mai jos, n limbajul de asamblare al
microprocesorului Intel 8080, pentru urmtoarea alocare de registre:




Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

PPICOM :
PPIPB :
PPIPA :
ORG 1800H;
EQU 03H;
EQU 01H;
EQU 00H;
Informare asamblor i definirea
notaiilor, prin pseudoinstruciuni.

1800

KEY : MVI A,83H;
OUT PPICOM;
Programare PPI 8255 n mod 0 cu
PA pe ieire i PB pe intrare.
MVI A,0;
OUT PPIPA;
Baleerea liniilor matricei tastaturii
prin portul PA
IN PPIPB;
MOV D,A;
DPB (=cuvnt starea coloane)
MVI A,91H;
OUT PPICOM;
Programare PPI 8255 n mod 0 cu
PB pe ieire i PA pe intrare.
MVI A,0;
OUT PPIPB;
Baleerea coloanelor matricei
tastaturii prin portul PB
IN PPIPA;
MOV E,A;
EPA (=cuvnt stare linii)
XRI 0FFH;
JZ KEY;
Reluarea unui nou ciclu de baleere
dac nu exist tast apsat.
CALL TIME; Temporizare 9,1 msec pentru
protecie la vibraii ale contactelor
tastei apsate.
MVI C,000Q; C000Q (=codul primei taste)
LOOPL : MOV A,E;
RAR;
MOV E,A;
JNC LOOPC;
MOV A,C;
ADI 8;
MOV C,A;
JMP LOOPL
Formarea n C a codului primei
taste de pe linia tastei apsate.
LOOPC : MOV A,D; Formarea codului tastei apsate n
B Timer 9,1 msec Cod tast apsat C

D Octet stare coloane Octet stare linii E

H L

A
CY 7 6 0

10-5
Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU



RAR ;
MOV D,A;
JNC LAST;
INR C;
JMP LOOPC;
registrul C.
MOV A,C;
ADD A;
MOV C,A;
MVI B,0;
Se formeaz n registrul BC dublul
codului tastei apsate.
LXI H,TABLE;
DAD B;
Se formeaz n registrul HL adresa
ce indic subrutina tastei apsate.
MOV A,M;
INX H;
MOV H,M;
MOV L,A;
PCHL;
Se extrage din tabel, n registrul
HL, adresa subrutinei funcionale
a crei execuie se declaneaz
prin transferul ei n registrul PC.
TIME :
CYCLE :
LAP :
MVI L,90H;
MVI B,0CH;
DCR B;
JNZ LAP;
DCR L;
JNZ CYCLE;
Subrutin de temporizare 9,1 msec
RET; Revenire n programul apelant.
END; Informare asamblor.

2. S se completeze programul prezentat la punctul 1., la rubrica ADRES.
3. S se determine, din programul prezentat la punctul 1., frecvena tactului sistemului din
subrutina de temporizare cu eticheta TIME, considernd c fiecare ciclu de maina are trei stri.
4. Cu frecvena tactului determinat la punctul 3., s se determine timpul de execuie al
programului prezentat la punctul 1.

11-1

AFIAREA PE CELULE CU APTE SEGMENTE

O diod luminescent, notat LED, emite lumin la alimentare direct, intensitatea
luminoas crescnd la creterea curentului prin diod. Aprinderea unei diode LED poate fi realizat
fie conectndu-i anodul la Vcc=+5V i comandnd starea logic 0 n katodul nseriat cu o
rezisten de limitare a curentului, conexiune numit anod comun, fie conectnd katodul la mas i
comandnd starea logic 1 n anodul nseriat cu o rezisten de limitare a curentului, conexiune
numit katod comun i fiind cea mai utilizat.
O diod LED poate fi aprins i printr-o alimentare direct, n regim dinamic, cu impulsuri de
curent n intervalul 2mA.50mA i frecven de sute de heri, datorit ineriei ochiului i a
comutrii rapide a diodelor LED.
Prin reunirea a apte diode LED ca segmente, se obine o celul de afiare cu apte segmente,
iluminarea unui segment realizndu-se prin polarizarea direct a diodei din care-i format. Sunt
celule de afiare n care reeaua de apte segmente este urmat de un punct, realizat tot cu o diod
LED. Obinuit, o celul de afiare din apte segmente i punct se comand printr-un registru de 8
bii aa cum se arat n figura urmtoare.




Fig.1 Organizarea i comanda unei celule de afiare


Diodele din componena unei celule de afiare au conectai n comun fie anozii, fie katozii,
cele mai utilizate fiind celulele de afiare cu katod comun.
Celulele de afiare cu apte segmente sunt larg folosite deoarece, pe o diod LED, se pot afia
un numr mare de caractere, aa cum este exemplificat n tabelul urmtor pentru celule de afiare
cu anod comun.
O celul de afiare cu apte segmente i punct, necesitnd comanda diodelor sale printr-un
port de 8 bii, rezult c ntr-o alimentare n regim permanent numrul porturilor necesare
controlului afirii este egal cu numrul celulelor de afiare utilizate.
n cazul unei afiri dinamice, n care celulele de afiare i vizualizeaz caracterele n mod
succesiv i nu simultan, prin baleere cu frecven ridicat, comanda tuturor celulelor de afiare se
face printr-un singur port, n condiia ca fiecre celul s dispun de cte un bit separat de validare a
alimentrii conectat la terminalul comun al diodelor LED componente. Astfel, pentru ca o celul cu
apte segmente s afieze un caracter, doar acestei celule i se va conecta alimentarea prin terminalul
su de validare, iar codul caracterului de afiat va fi nscris n portul de comand conectat tuturor
celulelor de afiare.
ntr-o afiare dinamic pe n celule de afiare, numrul biilor de comand a afirii s-a redus
la 8+n, dintre care 8 bii sunt pentru comanda caracterului de afiat i n bii pentru comanda
validrii celulelor, fa de 8n bii de comand ci ar fi fost necesari ntr-o alimentare n regim
permanent.
ntr-o afiare dinamic, comenzile de validare a celulelor de afiare se fac fie cu o logic
suplimentar, caz prezentat n exemplul urmtor, fie cu bii de ieire distinci.

d h c b a f g e
D7 D6 D5 D4 D3 D2 D1 D0

a
b
c
d
e
f
g
h
11-2
CODE BD 30 9B BA 36 AE AF 38 BF
DATA 0 1 2 3 4 5 6 7 8
DISP.


CODE BE 3F AF 8D B3 BF 0F AD 37
DATA 9 A B C D E F G H
DISP.






CODE 89 B1 9F 85 2B 23 A3 1F 3E
DATA I J K L M N O P Q
DISP.






CODE 03 A6 BF B5 B7 A9 07 B6 8A
DATA R S T U V W X Y Z
DISP.






CODE B3 A2 32 02 C0 00
DATA ( ) + - ,
DISP.








Exemplu
S se scrie programul de afiare n regim dinamic, cu schema ce urmeaz, a caracterelor a
cror coduri de comand sunt situate n spaiul de adrese 0040H.....0049H.

Rezolvare
Schema circuitului de afiare, organigrama aplicaiei i programul aferent sunt prezentate mai
jos cu urmtoarele precizri:
- La fiecare nscriere a portului PB, la terminalele BRDY i BSTB, scurtcircuitate ntre ele,
se genereaz un impuls numrat cu numrtorul divizor cu zece i determinnd comutarea validrii
pe urmtoarea celul de afiare.
- Iniial, se nscrie n PB codul caracterului de afiat cu prima celul, validat prin resetarea
11-3
numrtorului.





Fig.2 Schema electric







Fig.4 Organigrama aplicaiei


START
HL0040H
B9
CPB

CALL TIME
STOP
(C)(HL)
(HLHL+1,
BB-1)
Z=0?
=1 =0
DISP:
FIRE:

0 9
DECODER

D0..D7
DATA
BUS
ADDRESS
BUS
CONTROL
BUS
PB
BRDY
:10
CE, A/ B,
C/ D

RD, INT,
M1, IORQ

BSTB
RESET
PIO Z80
8 COMMAND BITS
10 ENABLE BITS
11-4
Adres
(H)
ETICHET: SIMBOLIZARE ; COMENTARIU



PB :
ORG 1800H ;
EQU 01H;
Informare asamblor : Nr. locaii 18.00H.
PB=1 (=01H).
18.00
18.03
18.05
DISP :


LD HL,0040H ;
LD B,9 ;
LD C,PB ;
Iniializare registre : HL=0040H =adresa
primului caracter de afiat, B= numrtor de
etape, CPB= adresa portului PB.
18.07 FIRE : OUTI ; Afieaz caracterul indicat n registrul HL,
numr etapa i pregtete etapa urmtoare.
18.09 CALL TIME ; Menine 1msec validarea celulei.
18.0C JR NZ,FIRE ;

Continu cu urmtoarea etap a ciclului n
curs; FIRE= -7=0F9H
18.0E JR DISP ; Continu cu un nou ciclu; DISP= -16=0F0H.
18.10
18.11
TIME :

EXX AF,AF ;
EXX ;
Salvare registre afectate.

18.12
18.14

$ :
LD B,0AAH ;
DJ NZ,$ ;
Iniializeaz registru numrtor B i
temporizeaz 1msec la f=2MHz.
$= -2=0FEH
18.16
18.17
18.18
EXX ;
EX AF,AF;
RET ;
Refacere registre i revenire.


END ; Informare asamblor.

Tem
1. S se realizeze tabela codurilor de comand a afirii pentru conexiunea katod comun.
2. S se deduc reprezentarea numerelor negative n complement fa de 2.

12-1
BALEERE TASTATUR I CONTROL AFIARE

Funcia de baz a sistemului cu microprocesor prezentat, realizeaz simultan att sarcina de
afiare dinamic pe ase celule cu apte segmente i punct, ct i sarcina de supraveghere prin
baleere de coloan a claviaturii matriceale din 36 taste dispuse pe ase linii i ase coloane.
Codurile de comand a celor ase caractere de afiat, stabilite la sfritul fiecrei sarcini
efectuate, sunt stocate ntr-o tabel din ase locaii succesive de memorie RAM, a crei prim
adres se afl n registrul index IX : (IX), (IX+1), , (IX+5).
Pentru a nu se afecta afiarea dinamic, fiecare ciclu de baleere a claviaturii se realizeaz
integral i doar la sfrit de ciclu fiind semnalat existena n registrul A a codului tastei apsate
prin starea logic 0 a bistabilului CY cu rol de fanion al claviaturii.
Conectarea la sistemul cu microprocesor a afirii i a claviaturii se face prin circuitul de
interfa cu transfer paralel de date PPI 8255 (=Programmable Peripheral Interface), aa cum se
arat n schema electric din fig.1. Porturile interfeei PPI 8255 sunt utilizate astfel:
- Portul PB, cu adresa etichetat SEG7, este utilizat ca port de ieire pentru
generarea celor 8 bii de comand a afirii unui character, fiecare bit de ieire al portului PB, ce
poate fi ncrcat cu maxim 1,5 mA (= sarcin TTL standard), fiind amplificat n putere cu o poart
logic neinversoare CDB 407, deoarece amplitudinea impulsului de curent pentru aprinderea n
regim dinamic a unui LED este de 20 mA, curent fixat cu un rezistor de 220 ohmi;
- Portul PC, cu adresa etichetat DIGIT, este folosit ca port de ieire de date, biii
si PC0.. PC5 fiind utilizai att pentru baleerea celor 6 coloane din matricea claviaturii, ct i
pentru validarea celor 6 celule de afiare n regim dinamic printr-o amplificare n putere cu pori
logice neinversoare CDB 405, deoarece, n cazul cel mai defavorabil al aprinderii tuturor celor 8
diode LED dintr-o celul de afiare, curentul de validare este de 160 mA (=820 mA/LED), n timp
ce un bit de ieire al portului PC poate fi ncrcat cu maxim o sarcin TTL standard;
- Portul PA, cu adresa etichetat KIN, este folosit ca port de intrare de date, la biii
PA0.. PA5 fiind conectate liniile matricei claviaturii, iar fiecare bit de intrare al portului este
protejat la perturbaii prin conectare la Vcc=+5V cu un rezistor de 10 k;
- Bitul de intrare PA6, protejat protejat la perturbaii prin conectare la Vcc=+5V cu un
rezistor de 10k, este destinat supravegherii tastei utilizatorului (=USER KEY), utilizatorul avnd
astfel posibilitatea de a completa programul MONITOR cu o aplicaie proprie
- Bitul de intrare PA7, protejat la perturbaii prin conectare la Vcc=+5V cu un rezistor
de 10k, este folosit pentru citirea programelor de pe band magnetic, impulsurile de tensiune
necesare fiind formate dintr-un semnal sinusoidal, alternativ i de mare amplitudine (preluat de pe
ieirea de difuzor suplimentar a casetofonului i aplicat la intrarea IN printr-un condensator), limitat
n intervalul -0,6V.. +5,6V cu diodele D- i D+ i amplificat cu dou pori neinversoare CDB 407,
care n regiunea liniar asigur o amplificare de aproximativ 2500 (=5050);
- Bitul de ieire PC6 genereaz semnalul de BREAK pentru o linie de ntrziere cu
dou pori neinversoare CDB 407, fiind astfel, att protejat la perturbaii, prin circuitul de intrare al
primei pori din linia de ntrziere, ct i amplificat n putere;
- Bitul de ieire PC7 este folosit att pentru generarea semnalelor de control vizual i
sonor, prin amplificare n putere cu tranzistorul T n conexiune repetor pe emitor i un curent
maxim de emitor de 50 mA, ct i pentru generarea semnelor de salvare pe band magnetic la
intrarea unui filtru cu banda de trecere 500Hz...3kHz, format din condensatoarele C=10nF,
rezistoarele R=10k, rezistorul Re=330 i a crui ieire OUT se conecteaz la intrarea de
nregistrare a unui casetofon (reportofon) cu impedana de 330.
Semnalul CE, de selecie a interfeei PPI 8255, este generat la terminalul Q0 al circuitului
MMN 8205, ce este un decodor 1 din 8, ct timp A6=A7=0 i IORQ=0. Terminalul CE este
protejat la perturbaii prin conectare la Vcc=+5V cu un rezistor de 10k.

12-2



Fig.1 Conectare tastatur i afiare la sistemul de dezvoltare
6 x 10k
Rsp=100
PA1
PA7
Rp=10k
PC5
8 x 220
Vcc=+5V
Q2
PC7
C
10nF
D+
SN 5407

Ci
10nF
Q1
LED
Ri=330
D-
8 x 10k
D0 .. D7
PA0
Rp=10k
Vcc=+5V USER KEY
A0
Rled
520
SPEAKER
8
T=BC178
C
10nF
Cp3=470pF
PIO
Q7
PA5
RD
A0
RD
D0 .. D7
SN 5407
WR
A1
WR
CE
Q0
A0
IORQ
IN
+5V
E1
A2
A6
E2
A1
SN 5405

Vcc=+5V
OUT
R
10k
Re
330
MMN 8205
E3
A7
CTC
PC0
PC1
BREAK
SN 5407

A1
PC6
PB
(SEG7)
PC
(DIGIT)
PA
(KIN)
Vcc=+5V
PPI 8255
8 COMMAND BITS
6 = 4 ADDRESS +
+ 2 DATA

RESET RESET
PA6



66 KEYS


Vcc=+5V

5 1 0

6 CEL ENABLE BITS


R
10k
R
a
=
1
0
k

Vcc=+5V


12-3
Prin conectarea fiecrei linii a magistralei de date, la Vcc=+5V, prin cte un rezistor de
10k, se face protecia la perturbaii a biilor de intrare din circuitul de destinaie al unui transfer
realizat prin magistrala de date.
Dimensionarea rezistorului de protecie la perturbaii a unui bit de intrare se face pentru a
asigura bitului de ieire la care este conectat o ncrcare total de maxim o sarcin TTL standard
(=1,6 mA), avnd n vedere c fiecare circuit CMOS, aflat n starea logic 1 sau n starea de
nalt impedan Z, ncarc cu circa 40 A bitul de ieire la care-i conectat.
Schema electric de salvare pe band magnetic este dat n fig.2, unde sursa de semnal
g
u
genereaz semnale rectangulare de 1kHz i 2 kHz de circa 5V amplitudine, iar tensiunea
out
u de la
ieirea filtrului trece band este sinusoidal cu amplirudinea de circa 5mV.



Fig.2 Schema electric a filtrului trece band


Funcia de transfer i caracteristicile filtrului trece band se determin astfel:

out g
2 2 2
1
R
j C
1
R
j RC j C
u u
1
1 R C j3 RC
R
1 j C
R
1
j C
R
j C

+

= = =
+

+ +


j RC
; 0
1 j3 RC


+


1
;
3 j RC


+



min
3 RC 1 =
min
4 8
1 1
f 500Hz
2 3RC
2 3 10 10 F

= =




max
RC 3 =
max
4 8
1 3
f 3000Hz
2 RC
2 10 10 F

= =





c
c c
j RC 1
| | | | ( )
1 j3 RC 3 j
0,3 4
RC
1

= =
+ +

c
4 8
1 1
f 1500Hz
2 RC
2 10 10 F

= =





Organigrama aplicaiei i programul n limbajul de asamblare al microprocesorului Zilog
Z80 sunt prezentate mai jos.





C
10nF
C
10nF
OUT
R
10k
Re
330
R
10k

g
PC7 u

out
u
Zi
330
Casetofon
12-4


Fig.3 Organigrama aplicaiei
START
EXX
EXX AF,AF
CY1, C0
EC1H, H6
(DIGIT)AE
(SEG7) A(IX)
BCOLDEL
STOP
BB-1

(SEG7)AA
(DIGIT)E +C0H
B6/col, D(KIN)

BC=cod tast
CYCY=1

CC+1
IXIX+1
AE+3FH
RLC
EA+C0H
HH-1
IXIX-6
EXX, EXX AF,AF
RET
RR D
SCAN1:
KCOL:
NOKEY:
$:
KROW:
Salvare registre

Iniializare registre
Validare i comand a
celulei din E
Afiare 1,5 msec pe
celula validat
Stingere cellule
Baleere coloan i citire
cuvnt stare linii.
Testare taste din
coloana baleat.
Salvare cod tast apsat n A
i CY=0 (=fanion tastatur)
Pregtire etap urmtoare:
- (IX+1)=cod comand urmtor
- E=cod validare celul urmtoare

Numrare etap de baleere.
Iniializare IX.
Refacere register
Revenire n programul apelant.
Z=0?
CY=1?
Z=0?
Z=0?
=0
=0
=0
=1
=1
=0
=1
=1
12-5
Adres Cod Etichet : Simbolizare ; Comentariu
00.DE MAIN : ;
;
;
;
Scaneaz displayul i tastatura,
detecteaz tasta apsat, emite
semnal sonor BEEP i efectueaz
sarcina.
00.DE 31.AF.1F LD SP,SYSSTK ; Iniializare stiv sistem.
00.E1 CD.FE.05 CALL SCAN ;
;
Scaneaz displayul i tastatura i
cnd revine A=cod tast apsat.
00.E4 CD.CB.06 CALL BEEP ;
;
;
La tast apsat emite semnal sonor
BEEP i efectueaz sarcina tastei
apsate.
00.E7 18.F5 JR MAIN ; Reia scanarea.
05.FE SCAN : ;
;
;
;
Scaneaz tastatura i afiajul. Tabela
de afiare: (IX)... (IX+15). La ieire:
CY=0=exist tast apsat i A=cod
tast apsat .
05.FE
06.00
06.03
06.05
06.07
DD.E5
21.E6.1F
CB.7E
28.04
DD.21.A5.07





PUSH IX ;
LD HL,TEST ;
BIT 7,(HL) ;
JR Z,SCPRE ;
LD IX,BLANK ;
Dac s-a apsat o tast greit
7
(TEST) 1 = , stinge afiajul pe
durata apsrii.


06.0B SCPRE : ;
;
Ateapt 40 msec, pn ce tastele
sunt eliberate .
06.0B 06.04 LD B,4 ; Iniializeaz B=4 .
06.0D SCNX : ;
06.0D
06.10
CD.24.06
30.F9
CALL SCAN1 ;
JR NC,SCPRE ;
;
Scaneaz tastatura i afiajul i dac
exist tast apsat reia ciclul de 40
msec.
06.12 10.F9 DJNZ SCNX ; Continu msurarea.
06.14
06.16
CB.BE
DD.E1
RES 7,(HL) ;
POP IX ;
tergere indicator eroare i
refacere IX.
06.18 SCLOP : ; Scaneaz pn la tast apsat.
06.18 CD.24.06 CALL SCAN1 ;
06.1D KEYMAP: ;
;
Cnd exist tast apsat (CY=0),
genereaza codul intern al tastei.
06.1D
06.20
06.21
06.22
06.23
21.7B.07
85
6F
7E
C9
LD HL,KEYTAB;
ADD A,L ;
LD L,A ;
LD A,(HL) ;
RET ;
Codul intern al tastei apsate se
obine n A, din tabelul KEYTAB.
06.24 SCAN1 : ;
;
;
;
Realizeaz un ciclu de scanare a
tastaturii i displayului, de 10 msec,
C7=0 indic tast apsat i A=codul
tastei (la ieire din subrutin).
06.24
06.25
06.26
37
08
D9
SCF ;
EX AF,AF;
EXX ;
Salvare registre i CY=1=lips tast
apst (CY=fanion claviatur).
06.27
06.29
06.2B
0E.00
1E.C1
26.06
LD C,O ;
LD E,OC1H ;
LD H,6 ;
Iniializare registre: C=0=cod prim
tast, E=C1H=cod validare prim
celul, H=6=numrtor a 6 etape.
12-6
Adres Cod Etichet : Simbolizare ; Comentariu
06.2D KCOL : ;
06.2D
06.2E
7B
D3.02
LD A,E ;
OUT (DIGIT),A ;
Valideaz celula indicat n E.
06.30
06.33
DD.7E.00
D3.01
LD A,(IX) ;
OUT (SEG7),A ;
Cod caracter de afiat pe celulele cu
7 segmente.
06.35
06.37
06.C9
10.FE

$ :
LD B,COLDEL ;
DJ NZ,$ ;
Menine afiarea timp de 1,5 msec;
$= -2=FEH (complement fa de 2)
06.39
06.3A
AF
D3.01
XOR A ;
OUT (SEG7),A ;
Stinge afiajul.
06.3C
06.3D
06.3E
06.40
7B
2F
F6.C0
D3.02
LD A,E ;
CPL ;
OR OCOH ;
OUT (DIGIT),A ;
Formare din codul de validare din
registrul E a codului de baleere i
baleere coloan aferent.
06.42 06.06 LD B,6 ;
;
Iniializare B=6=numr taste de pe o
coloan.
06.44
06.46
DB.00
57
IN A, (KIN) ;
LD D,A ;
Cuvnt stare linii preluat n D i A.
06.47 KROW : ;
;
Pe coloana baleat testeaz fiecare
tast i genereaz codul ei.
06.47
06.49
CB.1A
38.02
RR D ;
JR C,NOKEY ;
Pentru tast neapsat (CY=1) salt la
adresa NOKEY; NOKEY=+2=02H.
06.4B
06.4C
79
08
LD A,C ;
EX AF,AF;
;
La tast apasat n A=codul tastei i
n CY(=fanion ce indic tast
apsat)=0.
06.4D NOKEY: ;
06.4D 0C INC C ; Generare cod tast urmtoare.
06.4E 10.F7 DJ NZ,KROW ;
;
Verific toate cele ase taste din
coloana baleat; KROW= -9=F7H
06.50
06.52
06.53
06.55
06.57
06.59
DD.23
7B
E6.3F
CB.07
F6.C0
57
INC IX ;
LD A,E ;
AND 3F ;
RLC A ;
OR OCOH ;
LD E,A ;
Pregtire etap urmtoare: n IX
adresa codului urmtorului caracter
de afiat i n E octetul de validare a
celulei urmtoare.
06.5A
06.5B
25
20.D0
DEC H ;
JR NZ,KCOL ;
;
Numr etapa consumat i continu
pn la ncheiere ciclu.
KCOL= -49=D0H
06.5D
06.60
06.62
06.63
06.64
11.FA.FF
DD.19
D9
08
C9
LD DE,-6 ;
ADD IX,DE ;
EXX ;
EX AF,AF;
RET ;
La sfrit de ciclu reiniializeaza IX
pentru un nou ciclu i A=cod tast
apsat dac CY=0 , apoi se revine
n programul apelant.
-6=FAH (complement fa de 2)
07.A5
07.A6
07.A7
07.A8
00
00
00
00
BLANK: DEFB 00H ;
DEFB 00H ;
DEFB 00H ;
DEFB 00H ;
07.A9
07.AA
00
00
-ERR : DEFB 00H ;
DEFB 00H ;
Octei de comand a stingerii
afiajului cnd s-a apsat o tast
greit, ultimii doi octei de comand
fiind apelai i la afiarea mesajului
-ERR.
07.AB 03 DEFB 03H ; R
12-7
Adres Cod Etichet : Simbolizare ; Comentariu
DEFB 03H ;
DEFB 8FH ;
07.AC
07.AD
07.AE
03
8F
02
DEFB 02H ;
R
E
-
07.7B KEYTAB : ; Tabela codurilor interne ale tastelor.
07.7B 03 K00 : DEFB 03H ; HEX_3
07.7C 07 K01 : DEFB 07H ; HEX_7
07.7D 0B K02 : DEFB 0BH ; HEX_B
07.7E 0F K03 : DEFB 0FH ; HEX_F
07.7F 20 K04 : DEFB 20H ;
07.80 21 K05 : DEFB 21H ;
07.81 02 K06 : DEFB 02H ; HEX_2
07.82 06 K07 : DEFB 06H ; HEX_6
07.83 0A K08 : DEFB 0AH ; HEX_A
07.84 0E K09 : DEFB 0EH ; HEX_E
07.85 22 K0A : DEFB 22H ;
07.86 23 K0B : DEFB 23H ;
07.87 01 K0C : DEFB 01H ; HEX_1
07.88 05 K0D : DEFB 05H ; HEX_5
07.89 09 K0E : DEFB 09H ; HEX_9
07.8A 0D K0F : DEFB 0DH ; HEX_D
07.8B 13 K10 : DEFB 13H ; STEP
07.8C 1F K11 : DEFB 1FH ; RDTAPE
07.8D 00 K12 : DEFB 004 ; HEX_0
07.8E 04 K13 : DEFB 044 ; HEX_4
07.8F 08 K14 : DEFB 08H ; HEX_8
07.90 0C K15 : DEFB 0CH ; HEX_C
07.91 12 K16 : DEFB 12H ; GO
07.92 1E K17 : DEFB 1EH ; WRTAPE
07.93 1A K18 : DEFB 1AH ; CBR
07.94 18 K19 : DEFB 18H ; PC
07.95 1B K1A : DEFB 1BH ; REG
07.96 19 K1B : DEFB 19H ; ADDR
07.97 17 K1C : DEFB 17H ; DEL
07.98 1D K1D : DEFB 1DH ; RELA
07.99 15 K1E : DEFB 15H ; SBR
07.9A 11 K1F : DEFB 11H ; -
07.9B 14 K20 : DEFB 14H ; DATA
07.9C 10 K21 : DEFB 10H ; +
07.9D 16 K22 : DEFB 16H ; INS
07.9E 1C K23 : DEFB 1CH ; MOVE

Teme
1. Pentru instruciunea de la adresa hexazecimal 06.5D s se determine modul de
reprezentare a operandului -6 .
2. S se determine frecvena tactului sistemului tiind c timpul de afiare pe o celul este de
1,5 msec.
3. S se determine timpul de efectuare a programului SCAN1, cuprins n cmpul de
adrese hexazecimale 0624 .. 0664 .
13-1
TRANSFERUL DE DATE CU BANDA MAGNETIC

Pe band biii unui octet vor fi nregistrai succesiv ntre un bit de START i unul de STOP,
printr-un transfer serial, ncepnd cu bitul de pondere minim, fiecare stare logic fiind nregistrat
ca o combinaie ce ncepe cu un numr de perioade de 1kHz i sfrind cu un numr de perioade de
2kHz. Alegerea frecvenelor de 1kHz i 2kHz, s-a fcut avndu-se n vedere c aceste frecvene
sunt suficient de distanate ntre ele i sunt situate n banda de trecere a oricrui tip de casetofon.
Astfel, n cele ce urmeaz, s-a convenit ca, folosind frecvenele de 2kHz i 1kHz, strile
logice 0 i 1 s fie marcate pe band n forma:
2kHz 1kHz
"0" 8 T 2 T = +
2kHz 1kHz
"1" 4 T 4 T = + .
Printr-un proces de numrare folosind registrul E i realizat cu subrutina PERIOD, o perioad
de 2kHz sau de 1kHz va fi detectat prin numrul 28 i respective 56, iar printr-o comparare a
rezultatului numrrii cu numrul N:
28 56
N 42 2AH
2
+
= = = ,
o perioad citit, de 2kHz sau 1kHz, va fi identificat prin starea logic 0 i respectiv 1, a
bistabilului de transport CY.
Obinerea din nregistrarea de pe band a strii logice corecte, se realizeaz cu subrutina
GETBIT, prin bitul de semn al registrului L, care, dup iniializare n 00H, va fi incrementat cu 1
pentru fiecare perioad de 2kHz detectat i decrementat cu 2 la fiecare perioad de 1kHz detectat.
Astfel, n registrul L, la citirea strii logice 0 se va obine numrul:
0 0
N 8 1 2 2 4 0, cu sgn N 0 = = > = ,
n timp ce la detectarea strii logice 1 va rezulta numrul:
1 1
N 4 1 4 2 4 0, cu sgn N 1 = = < = .
Bitul de semn al registrului L, care indic starea logic citit de pe band, va fi transferat la
sfritul subrutinei n bistabilul de transport CY.
Dac n procesul numrrii cu subrutina PERIOD a rezultat un numr mai mare ca 255,
atunci prin subrutina TERR se va indica comiterea unei erori prin punerea n starea logic 1 a
bistabilului de transport auxiliar CY, cu rol de fanion de eroare.
Asamblarea n octei a biilor citii cu subrutina GETBIT, se face n registrul E, cu subrutina
GETBYTE, care elimin biii de START i de STOP ce ncadreaz fiecere octet.
Preluarea n memoria sistemului a unui ntreg program de pe band se realizeaz cu subrutina
TAPEIN, care necesit ca date de intrare adresa de nceput a zonei de memorie n care se va prelua
programul citit i numrul octeilor din componena nregistrrii. Citirea de pe band magnetic a
unui program reprezint un exemplu de ierarhizare a sarcinilor realizate cu subrutinele TAPEIN,
GETBYTE, GETBIT, TERR, PERIOD, indicate n ordinea apelrii lor.
Similar, salvarea unui program pe band magnetic se realizeaz cu subrutinele TAPEOUT,
OUTBYTE, OUTBIT, TONE, indicate n ordinea apelrii lor.

Adres COD ETICHET: SIMBOLIZARE; COMENTARIU
053A GETPTR:

















Ia parametrii din locaiile
STEPBF+2,, STEPBF+5 :
(STEPBF+2) i (STEPBF+3)
reprezint adresa de start, iar
(STEPBF+4) i (STEPBF+5) pe
cea de stop pentru programul de
salvat. HL=adres de start;
BC=lungimea n octei a
programului de salvat; CY=0 dac
13-2
Adres COD ETICHET: SIMBOLIZARE; COMENTARIU


BC pozitiv i CY=1 dac BC
negativ.
Afecteaz: AF, BC, DE, HL.
053A 21B11F LD HL,STEPBF+2;
053D GETP :
053D
053E
053F
5E
23
56
LD E,HL;
INC HL;
LD D,(HL);
Extrage n DE adresa de start.
0540
0541
0542
0543
0544
23
4E
23
66
69
INC HL;
LD C,(HL);
INC HL;
LD H,(HL);
LD L,C
Extrage n HL adresa de stop.
0545
0546
0548
0549
054A
B7
ED52
4D
44
03





OR A;
SBC HL,DE;
LD C,L;
LD B,H;
INC BC;
CY=0.
Formeaz n BC lungimea n octei
a programului de salvat.


054B EB EX DE,HL; Reface n HL adresa de start.
054C C9 RET
054D TAPEIN :





ncarc un bloc de memorie de pe
band.
Intrri: HL=adresa de start a
blocului; BC=mrimea n octei a
blocului.
Ieire: CY=1 dac este eroare la
citire.
Afecteaz registrele: AF, BC, DE,
HL, AF, BC, DE, HL.
054D
054E
AF
08
XOR A;
EX AF,AF;
Se pornete cu lipsa erorii de citire.
054F TLOOP :
054F
0553
CD5A05
73
CALL GETBYTE;
LD (HL),E;
Citete un octet i l preia n
memorie, octet furnizat n E de
subrutina GETBYTE.
0553
0555
EDA1
EA4F05
CPI;
JP PE,TLOOP;
Generez n HL adresa pentru un
nou octet, numr octetul citit i
continu pn BC=0.
0558 08 EX AF,AF; CYCY; CY= fanion de eroare
0559 C9 RET
055A GETBYTE:



Citete un octet de pe band.
Ieire: E=octetul citit; CY=0 la
eroare de citire.
Afecteaz registrele: AF, DE, AF,
BC, DE, HL.
Pe band un octet are formatul:
BIT START =0
BIT O
BIT 1

13-3
Adres COD ETICHET: SIMBOLIZARE; COMENTARIU
BIT 7
BIT STOP =1
055A CD6B05 CALL GETBIT; Citete bitul de START cu
subrutina GETBIT.
055D LD D,08H ; Iniializeaz D ca numrtor de bii
ai octetului de citit.
055F
0562
CD6B05
CB13
BLOOP :

CALL GETBIT ;
RR E ;
Bitul citit, furnizat de GETBIT n
CY, este asamblat n E.
0564
0565
15
20F8
DEC D ;
JR NZ,BLOOP ;
Numr etapa i citete cei 8 bii ai
octetului; BLOOP=0F8H=-8
0567 CD6B05 CALL GETBIT ; Citete i neglijeaz bitul de STOP.
056A C9 RET
056B GETBIT : Citete un singur bit de pe band.
Ieiri: CY=bitul citit; CY=1 la
eroare de citire.
Afecteaz registrele: AF, AF, BC,
DE, HL.
Formatul unui bit este
2kHz 1kHz
"0" 8 T 2 T = + i
2kHz 1kHz
"1" 4 T 4 T = + .
Starea unui bit citit este bitul de
semn al registrului L iniializat n
00H i apoi incrementat cu 1 la
fiecare
2kHz
T i decrementat cu 2
la fiecare
1kHz
T . Prin bitul H0=0 se
indic
2kHz
T , iar prin H0=1 se
indic
1kHz
T .
056B D9 EXX Salvare registre.
056C 210000 LD HL,0 L=0 i H0=0=detectare perioad
2kHz
T .
056F CD8C05 COUNT : CALL PERIOD ;
PERIOD indic prin CY=1
2kHz
T
i cu CY=0
1kHz
T i E=mrime
perioadei.
0572
0573
0574
14
15
2011
INC D ;
DEC D ;
JR NZ,TERR ;
La eroare, cnd D0, salt la
subrutina TERR ; TERR = +17 =
=11H).
0576 3806 JR C,SHORTP ;
La
2kHz
T detectat salt la
SHORTP (=06H= +6).
0578
0579
057A
057C
2D
2D
CBC4
18F1
DEC L ;
DEC L ;
SET 0,H ;
JR COUNT ;
La fiecare
1kHz
T detectat, se
decrementeaz L cu 2; COUNT=
=0ECH= -20
057E 2C SHORTP : INC L ;
La fiecare
2kHz
T detectat, se
incrementeaz L cu 1.
057F
0581
CB44
28EC
BIT 0,H ;
JR Z,COUNT ;
H0=1 la sfritul secvenei unui bit
(reapare frecvena de 2 kHz).
COUNT=0ECH= -20
13-4
Adres COD ETICHET: SIMBOLIZARE; COMENTARIU
RL L ; Starea bitului citit apare ca signum
L i este transferat n CY.
0585
0586
D9
C9
EXX
RET
Refacere registre i revenire n
programul apelant.
0587 TERR : La eroare de citire cnd D0
realizeaz CY=1.
Ieire: CY=1 la eroare.
0587
0588
0589
058A
058B
08
37
08
D9
C9
EX AF,AF ;
SCF ;
EX AF,AF ;
EXX ;
RET

058C PERIOD : Msoar cu DE o perioad de
semnal detectat; DE=28 pentru
2kHz
T i DE=56 pentru
1kHz
T .
Ieiri: D0 la eroare, CY=1 la
2kHz
T i CY=0 la
1kHz
T .
Afecteaz: AF, DE.
058C 110000 LD DE,0 ; Anulare numrtor.
058F DB00 LOOPH : IN A,(KIN) ; Citete port KIN cu bit de rang 7
pentru citire.
0591 13 INC DE ; O incrementare n numrare.
0592
0593
17
38FA
RL A ;
JR C,LOOPH ;
Msoar intreaga alternan
pozitiv; LOOPH=0FAH= -6
0595
0597
3EFF
D302
LD A,0FFH ;
OUT (DIGIT),A ;
Genereaz alternana pozitiv
pentru semnalul de control sonor.
0599
059B
059C
059D
DB00
13
17
30FA
LOOPL : IN A,(KIN) ;
INC DE ;
RL A ;
JR NC,LOOPL ;
Continu msurtoarea cu DE i a
alternanei negative.

LOOPL=0FAH= -6
059F
05A1
3E7F
D302
LD A,7FH ;
OUT (DIGIT),A ;
Genereaz alternana negativ
pentru semnalul de control sonor.
05A3
05A4
7B
EE2A
LD A,E ;
CP MPERIOD ;
CY=1 la
2kHz
T i CY=0 la
1kHz
T .
05A6 C9 RET
05A7 TAPEOUT : Salveaz un program pe band.
Intrri: HL= adresa de start
program BC=mrime n octei a
programului
Afecteaz: AF, BC, DE, HL, BC,
DE, HL.
05A7 5E LD E,(HL) ; Data de salvat e transferat n
registrul E.
05A8 CDB105 CALL OUTBYTE ; Salveaz pe band octetul din E.
05AB
05AD
CPI ;
CALL PE,TAPEOUT;
Numr transferul fcut, genereaz
n HL adresa urmtorului octet de
salvat i continu pn BC=0.
05B0 C9 RET
05B1 OUTBYTE: Salveaz un octet pe band n
13-5
Adres COD ETICHET: SIMBOLIZARE; COMENTARIU
formatul:
BIT START=0
BIT 0
BIT 1
...
BIT 7
BIT STOP=1.
Intrare: E=octetul de salvat.
Afecteaz: AF, BC, DE, HL.
05B1 1608 LD D,8 ; D=numrtor de bii ai octetului de
salvat.
05B3
05B4
B7
CDC405
OR A
CALL OUTBIT ;
Salveaz bitul START=0.
05B7
05B9
CB1B
CDC405
OLOOP : RR E ;
CALL OUTBIT ;
Salveaz un bit util.
05BC
05BD
15
20F8
DEC D ;
JR NZ,OLOOP ;
Salveaz toi cei 8 bii ai octetului.
OLOOP=0F8H= -8
05BF
05C0
37
CDC405
SCF :
CALL OUTBIT ;
Salveaza bitul STOP = 1.
05C3 C9 RET ;
05C4 OUTBIT : Salveaz un bit pe band.
Intrare: CY=starea logic de salvat
Distruge: AF, BC, DE, HL.
05C4 D9 EXX ; Salvare registre.
05C5 2600 LD H,0 ; Anuleaz octet maxim din registrul
HL.
05C7 3809 JR C,OUT1 ; Salveaz starea 1 de la adresa
OUT1 (=+9).
05C9
05CB
2E08
CDE205
OUT0 : LD L,8 ;
CALL TONE2K ;
Genereaz 8
2kHz
T cu subrutina
TONE2K.
05CE
05D0
2E02
1807
LD L,2 ;
JR BITEND ;
Genereaz 2
1kHz
T cu subrutina
TONE1K; BITEND=+7=07H
05D2
05D4
2E04
CDE205
OUT1 : LD L,4 ;
CALL TONE2K ;
Pentru starea 1 genereaz
4
2kHz
T .
05D7
05D9
2E04
CDDE05

BITEND :
LD L,4 ;
CALL TONE1K ;
Genereaz pentru starea 1
4
1kHz
T .
05DC
05DD
D9
C9
EXX
RET

05DE TONE1K : Genereaz semnal dreptunghiular
Intrare: C=determin perioad
semnal cu relaia:
Perioad semnal=2(44+13C) stri,
HL coninnd numrul de perioade.
Distruge: AF, BC, DE, HL.
05DE
05E0
05E2
0E41
1802
0E1F
TONE1K :

TONE2K :
LD C,F1K ;
JR TONE ;
LD C,F2K ;
Iniializare C pentru generare
1kHz
T sau
2kHz
T ; TONE=+2=02H;
(7+12+7 stri)
05E4
05E5
29
110100
TONE : ADD HL,HL ;
LD DE,1 ;
2HL=numr semiperioade
Iniializare DE n 1 pentru
13-6
Adres COD ETICHET: SIMBOLIZARE; COMENTARIU
decrementare; (14+10 stri)
05E8
05EA
3EFF
D302

SQWAVE :
LD A,0FFH ;
OUT (DIGIT),A;
Genereaz alternana indicat cu
A7; (7+11 stri)
05EC
05ED
41
10FE

$ :
LD B,C ;
DJ NZ,$ ;
Temporizare dup C.
$= -2=FEH; (4+13 stri)
05EF EE80 XOR 80H ; Indic alternana complementar:
A7 A7; (7 stri)
05F1
05F3
ED52
20F5
SBC HL,DE ;
JR NZ,SQWAVE ;
Numr alternana generat i
continu pn la terminarea
secvenei; SQWAVE= -11=F5H ;
(15+7 stri)
05F5 C9 RET; (10 stri)

Observaii
1. Durata unei stri logice de pe banda magnetic se determin cu relaiile:
-
bit 0 2kHz 1kHz 1kHz
T 8 T 2 T 6 T 6msec = + = =
-
bit1 2kHz 1kHz 1kHz
T 4 T 4 T 6 T 6msec = + = =
2. Durata unui octet de pe band este

byte bit
T 10 T 10 6msec 60msec = = =
3. Din subrutina TONE, perioadele de 1kHz i de 2 kHz se genereaz astfel:
-
1kHz
T 2 (44 13 F1k) stri 2 (44 13 65) stri 1778stri = + = + =
-
2kHz
T 2 (44 13 F2k)stri 2 (44 13 31) stri 894stri = + = + =

Tem
1. S se realizeze organigramele urmtoarelor subrutine: TAPEIN, GETBYTE, GETBIT,
TERR, PERIOD, TAPEOUT, OUTBYTE, OUTBIT, TONE.
2. S se determine timpul de execuie al fiecrei subrutine, dac tactul sistemului are frecvena
de 2 MHz.
3. Cum se opereaz n adresarea relativ a unui operand ?
14-1
INTERFA DE PROGRAMAT MEMORII EPROM




Fig.1 Schema electric interfa de programat memorii EPROM
28 pin EPROM 24 pin EPROM__________
2764(= 8KB)
27128(=16KB)
27256(=32KB) 2716(=2KB) 2732(=4KB)
R4
4k7
Ai R1 R2 Ai R1 R2
Vcc
A14
A13.............Vcc......... Vcc
A8
A9
A11.............Vpp
OE .......................... OE /Vpp
A10
CS
D7
D6
D5
D4
D3
0
D2
A B C D
28
7
6
5
4
3
2
1
20
9
8
7
6
15
OE CE A12 A13 A14 +5V Vpp
A B C D
Vcc
0
Vpp =
12..23V
R3
22k
Vpp
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND
D1
0
0
1
2
3
4
5
6
7
8
9
10
1
2
A0 ............ A11
R1
4k7
R6
4k7
EPROM
T1
A5
A6
A7

PIO Z80
D0..D7
B / A
C / D
PB0
PB1
PB4
PB7
PB6
PB5
PB3
PB2
+5V
PA
CE
CLK
M1
RD
IORQ
24
3
2
21
20
19
8
7
6
5
4
13
EPROM Socket
(Top View)
D0..D7 R2
2k2

T3
R5
4k7
A B C D
1
2
3
4
5
6
7
8
9
10
11
12
T2
3
CDB493
Ai R1 R2
0
D0..D7
Dpp
3
14
PB
Vcc
M1
RD
IORQ
14-2
Cu aceast interfa se pot programa memorii EPROM cu o capacitate ntre 2 Koctei i 32
Koctei, controlul sarcinilor facndu-se cu un sistem cu microprocesor la al crui conector de
extensie este conectat interfaa de programat memorii EPROM.
n realizarea programelor s-au folosit urmtoarele notaii:
- PA, PB = adresele portului circuitului PIO Z80;
- CPA, CPB = adresele registrelor de comand asociate porturilor PA i PB din circuitul PIO
Z80;
- ERROR = adresa ce conine octetul de pondere minim al numrului erorilor comise ntr-o
sarcin, adres iniializat n registrul index 1X; octetul maxim de eroare se formeaz la adresa
ERROR+1 (=IX+1);
- IX02 (notat i IX+2) = adresa la care se pstreaz octetul de comand EPROM, ce are
urmtoarea structur:

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
A14 A13 A12 Vpp
CS OE
Reset Pulse
(IX02)=(IX+2)=octet comand EPROM

- LENGTH = IX+3 = adresa octetului n care printr-un singur bit n stare logic 1 se indic
tipul memoriei EPROM de prelucrat astfel:

D7 D6 D5 D4 D3 D2 D1 D0
27128 2764 2732 2716 0 0 0
27256
(27128H)
(LENGTH)=(IX+3)=octetul tipului de EPROM

n programarea sarcinilor se folosesc subrutinele: INCRE (de incrementare), INIT (de
iniializare), REPEAT (de repetare a sarcinii pe un nou octet) i END (de sfrit de sarcin).
Capacitatea memoriei EPROM de prelucrat se exprim ca multiplu de 2 koctei, factorul de
multiplicare fiind pstrat n registrul A i generat prin rotirea cu patru poziii la dreapta a octetului
tipului de EPROM de la adresa LENGTH.

A7 A6 A5 A4 A3 A2 A1 A0
0 0 0
27256
(27128H)
27128 2764 2732 2716
A=factorul de multiplicare


ADRES ETICHET: SIMBOLIZARE; COMENTARII
INCRE :
Incrementeaz numrtorul extern i registrul HL n care se obine adresa din
memorie implicat n urmtorul transfer.
INCRE : LD A,(IX02) ;
INC A ;
OUT (PB),A ;
DEC A ;
OUT (PB),A ;
Incrementeaz numrtorul extern cu un
impuls la PB0 avnd durata ultimelor dou
instruciuni.
INC HL ;
RET ;

INIT :
Iniializeaz: IX=ERROR, HL=8000H, (ERROR)=(ERROR+1)=00H, BC=0800H=
14-3
ADRES ETICHET: SIMBOLIZARE; COMENTARII
=numrtor de 2 kilooctei, A=factor de multiplicare i A=octetul din locaia
adresat din EPROM.
INIT : DI ; Protejare programare EPROM la ntreruperi
ulterioare.
LD IX,ERROR ;
LD HL,8000H ;
LD (IX),0 ;
LD (IX+1),0 ;
LD (IX+2),12H ;
Iniializare:HL=8000H; (ERROR)=00H;
(ERROR+1)=00H; n octetul de comand
Vpp=Reset=1.

LD A,(LENGTH);
AND 0FEH ;
JR NZ,STD ;
LD A,80H ;
EPROM 27256 este prelucrat de 2 ori ca
EPROM 27128 i de aceea octetul (LENGTH)
este nlocuit pentru 27256H (ultimii 16
Koctei) cu octetul pentru EPROM 27128.
STD : RRC A ;
RRC A ;
RRC A ;
RRC A ;
EX AF,AF ;
Din octetul tipului de EPROM aflat n A, se
formeaz n A factorul de multiplicare .
LD A,1CH ;
OUT (PB),A ;
LD A,1EH ;
OUT (PB),A ;
Se comand memoria EPROM cu semnalele
OE CS Vpp 1 = = = i se reseteaz numrtorul
extern cu un impuls avnd durata ultimelor
dou instuciuni.
LD A,(LENGTH);
AND 0C1H ;
JR Z,SKIP ;
SET 7,(IX+2) ;
Pentru EPROM 27256H, 27128 i 2764, ce
sunt memorii cu 28 pini, se face A14=1.
SKIP : LD A,(IX+2) ;
OUT (PB),A ;
Se comand memoria EPROM cu
OE CS 0; Vpp 1 = = = .

LEXT :
EX AF,AF ;
EX AF,AF ;
Aceste 2 instruciuni sunt fr efect n INIT,
cea cu eticheta LEXT fiind necesara ntr-o
ramificare din REPEAT.
LD BC,0800 H ; Iniializare BC ca numrtor de 2 kilooctei.
LINT : IN A,(PA) ;
RET ;
Transfer n A octetul locaiei adresate din
memoria EPROM.
REPEAT :
Pregtete repetarea sarcinii pentru urmtorul octet i numr octetul prelucrat.
COA6H REPEAT : DEC SP ;
DEC SP ;
Pregtirea revenirii n programul sarcinii
imediat dup instruciunea CALL INIT.
CALL INCRE ; Incrementarea numrtorului extern i a
adresei din HL.
DEC BC ;
LD A,B ;
OR C ;
Numrare octet prelucrat i la 2 kilooctei
prelucrai afectare Z=1 prin anulare BC.
JR NZ,LINT ; Dac BC0 se continu de la LINT cu
prelucrarea unui nou octet.
EX AF,AF ;
DEC A ;
La fiecare 2 kilooctei prelucrai se
decrementeaz factorul de multiplicare din A.
JR Z,END ; La sfrit de sarcin (cnd factorul de
multiplicare este nul) se efectueaz subrutina
END.
14-4
ADRES ETICHET: SIMBOLIZARE; COMENTARII
BIT 0,A ;
JR NZ,LEXT ;
Bitul minim n starea 0 din factorul de
multiplicare indic prelucrarea unui multiplu
de 4 kilooctei, continundu-se de la LEXT
pn la prelucrarea unui multiplu de 4
kilooctei.
EX AF,AF ;
LD A,(IX+2) ;
ADD A,20H ;
LD (IX+2),A ;
OUT (PB),A ;
La fiecare 4 kilooctei prelucrai se
incrementeaz cu 1 numrul A14 A13 A12
din octetul de comand, noile stri A14, A13,
A12 fiind aplicate EPROM-ului .
EX AF,AF ;
JP LEXT ;
Continu de la LEXT cu prelucrarea
urmtorilor 2 kilooctei.
END :
La sfritul unei sarcini realizeaz: inhibare numrtor extern, transferul n BC a
numrului erorilor comise, valideaz ntreruperile.
END : INC SP ;
INC SP ;
La sfrit de sarcin ignor revenirea n
subrutina sarcinii.
LD A,1CH ;
OUT (PB),A ;
Comand EPROM cu OE CS Vpp 1 = = = i
generare prin Reset=0 a impulsului de resetare
a numrtorului extern.
LD A,(LENGTH);
AND 0C1H ;
Afectare Z=1 pentru EPROM 2764, 27128,
27256H , ce sunt memorii cu 28 pini.
LD A,1EH ; Formeaz n A cuvnt comand EPROM cu
OE CS Vpp Reset 1 = = = = .
JR Z,PASS ;
SET 7,A ;
Realizeaz A14=1 pentru EPROM 27256H,
27128, 2764, ce sunt memorii cu 28 pini.
PASS : OUT (PB),A ; Comand EPROM cu :
OE CS Vpp Reset 1 = = = = ; sfrit impuls
reset numrtor extern.
LD C,(IX) ;
LD B,(IX+1) ;
Tranfer n BC numrul erorilor comise pentru
c registrul BC este afiat la sfrit de sarcin.
EI ;
RET ;

COPY :
Transfer coninutul memoriei EPROM n memoria sistemului de la adresa HL =
=80000H.
COE6H COPY : CALL INIT ; Iniializare cu INIT, coninutul primei locaii
din EPROM aprnd n A.
LD (HL),A ; Coninutul locaiei adresate din EPROM i
aflat n A , este preluat n memorie.
JP REPEAT ; Repet sarcina de copiere pentru un nou octet.
CTRL :
Controleaz tergere EPROM de nscris i numr ca erori locaiile incorect terse .
CO2DH CTRL : CALL INIT ; Iniializare cu INIT, coninutul primei locaii
din EPROM aprnd n A .
INC A ;
JR Z,CLEAN ;
Afectez Z=1 pentru locaie corect tears, al
crei coninut FF hexa genereaz prin
incrementare rezultat nul.
INC (IX); Pentru fiecare locaie incorect tears se
14-5
ADRES ETICHET: SIMBOLIZARE; COMENTARII
JR NZ,CLEAN ;
INC (IX+1) ;
incrementeaz numrul de eroare.
CLEAN : JP REPEAT ; Continu cu verificarea urmtoarei locaii din
EPROM
VERIFY :
Verific nscrierea unui EPROM prin comparare cu datele nscrise i aflate n
memoria sistemului de la adresa HL=8000H.
C15EH VERIFY : CALL INIT ; Iniializare cu INIT, octetul primei locaii din
EPROM aprnd n A.
CP (HL) ;
JR Z,OK ;
Afecteaz Z=1 dac octetul locaiei adresate
din EPROM i aflat n A este cel corect .
INC (IX) ;
JR NZ,OK ;
INC (IX+1) ;
Incrementeaz numrul de eroare din 16 bii
pentru fiecare eroare detectat.
OK : JP REPEAT ; Continu cu verificarea urmtorului octet din
EPROM.
PROG :
nscrie n locaia adresat din EPROM octetul aflat n memoria sistemul la adresa din
HL , i n loc de eroare numr locaiile nscrise din EPROM.
COFEH PROG : CALL INIT ; Iniializare a programului cu subrutina INIT .
CP (HL) ;
JR Z,NONEED ;
Dac locaia de nscris conine deja data,
continu cu urmtoarele locaii (este util la
repetarea nscrierii).
PULSE : LD A,(IX+2) ;
SET 2,A ;
OUT (PB),A ;
Comand memoria EPROM cu octetul:
A14 / A13/ A12 / Vpp / CS/ OE / Reset /
A14 / A13/ A12 / 1 / 0 / 1
Pulse
/ 1 / 0

LD A,0FFH ;
OUT (CPA),A ;
LD A,00H ;
OUT (CPA),A ;
Programare port PA.

LD A,(HL) ;
OUT (PA),A ;
Aplic memoriei EPROM data de nscris.
LD A,(LENGTH);
AND 0D0H ;
LD A,(IX+2) ;
JR Z,T256 ;
Salt la T256 pentru EPROM 27256H i 2732
(2716, 2764, 27128) i transfer octetul de
comand n A; LENGTH = IX + 3.
BIT 4,(LENGTH);
JR NZ,T2716 ;
RES 7,A ;
JR T256 ;
Pentru memorii EPROM diferite de 2716 i
27256H realizeaz A14=0.
T2716 : SET 3,A ;
Pentru EPROM 2716 se face CS=1.
T256 : SET 2,A ;
RES 4,A ;
OUT (PB),A ;
Comand memoria EPROM:
A14/A13/A12/Vpp/ CS/ OE /Reset/Pulse
A14/A13/A12/ 0 / 1 / 1 / 1 / 0 (2716)
A14/A13/A12/ 0 / 0 / 1 / 1 / 0 (2732;
27256H)
0 /A13/A12/ 0 / 0 / 1 / 1 / 0 (restul)
LD DE,TAB ;
EX DE,HL ;
Se identific i se extrage n DE valoarea
constantei de temporizare la programare,
14-6
ADRES ETICHET: SIMBOLIZARE; COMENTARII
LD A,(TIME) ;
ADD A,A ;
ADD A,L ;
LD L,A ;
LD A,(HL) ;
INC HL ;
LD H,(HL) ;
LD L,A ;
EX DE,HL ;
folosind variabila (TIME) ce indic poziia n
tabel a constantei din doi octei, asociat
memoriei EPROM; TAB=prima adresa a
tabelei constantelor de temporizare.
LOOP : DEC DE ;
LD A,D ;
OR E ;
JR NZ,LOOP ;
Temporizare pentru meninerea supratensiuni
Vpp pe memoria EPROM.

LD A,(IX+2) ;
SET 2,A ;
OUT (PB),A ;
La sfrit temporizare comand EPROM
OE Reset Vpp 1 = = = .
LD A,0FFH ;
OUT (CPA),A ;
OUT (CPA),A ;
Programare pentru PA.
INC (IX) ;
JR NZ,NONEED ;
INC (IX+1) ;
Numr ca eroare locaia programat.
NONEED : JP REPEAT ; Continu cu locaia urmtoare.
C005H CONST : DEFW 0217H ;
DEFW 053EH;
DEFW 0A80H;
DEFW 1A47H ;
Tabela constantelor de temporizare: 1702H=
=4 msec, 3E05H=10 msec, 800AH=20 msec i
471AH=50 msec. Poziia n tabel a
constantei de temporizare se face cu variabila
(TIME) = 0, 1, 2, 3.
END

Tem
1. S se completeze rubrica adrese, iar pentru fiecare instruciune din program s se fac
descrierea sintetic.
2. S se calculeze timpul de efectuare a fiecrei subrutine din aplicaia de programare a
memoriilor EPROM.
3. Pentru fiecare subrutin s se fac organigrama aferent.
15-1

BIBLIOGRAFIE


Ioan DANCEA: MICROPROCESOARE. ARHITECTUR INTERN. PROGRAMARE.
APLICAII. Editura DACIA, Cluj-Napoca, 1979.
GRANINO A. KORN: Microprocesoare, minicalculatoare, microcalculatoare. Editura
TEHNIC, Bucureti, 1981.
T. MUREAN: MICROPROCESORUL 8080 N APLICAII. Editura FACLA, Timioara,
1981.
MULTITECH INDUSTRIAL CORP.: MPF-1. EXPERIMENT MANUAL (SOFTWARE /
HARDWARE). TAIPEI, 1981.
MULTITECH INDUSTRIAL CORP.: MPF-1. MONITOR PROGRAM, SOURCE LISTING.,
TAIPEI, 1981.
MULTITECH INDUSTRIAL CORP.: MPF-1. USERS MANUAL., TAIPEI, 1981.
A. PETRESCU : MICROCALCULATOARELE FELIX M18, M18B, M118. Editura
TEHNIC, Bucureti, 1984.
Gheorghe TOACE: INTRODUCERE N MICROPROCESOARE. Editura TIINIFIC I
ENCICLOPEDIC, Bucureti, 1985.
Horia DUMITRACU: S NVM BASIC, Editura ALBATROS, Bucureti, 1987.
INSTITUTUL DE CERCETARE TIINIFIC I INGINERIE TEHNOLOGIC PENTRU
TEHNIC DE CALCUL I INFORMATIC. SECTOR TEHNIC DE CALCUL:
COBRA BASIC. MANUAL DE UTILIZARE, Braov, 1988.
A. PATRUBANY: TOTUL DESPRE MICROPROCESORUL Z80. Editura TEHNIC,
Bucureti, 1989.
Florian MORARU, Mihai ATODIROAEI: PROGRAMAREA MICROCALCULATOARELOR
N SISTEMUL DE OPERARE CP/M. Editura TIINIFIC I ENCICLOPEDIC,
Bucureti, 1989.
R. FONTENAY: NUMERIQUE-ANALOGIQUE.CONVERTISSEURS.ANALOGIQUE-
NUMERIQUE. LES MEILLEURS SCHEMAS DAPPLICATIONS. Editions
RADIO, Paris.
Irina ATHANASIU: MICROPROCESOARELE 8086, 286, 386. Editura TEHNIC,
Bucureti, 1992.
James HOLLIDGE: Introduction to Z80 Assembler, MHTML Document (Windows Explorer)
Mostek: Z80 PROCESSOR (z80-mostek.pdf)
Zilog : Z80 DATA BOOK (Z80_DataBook.pdf)









15-2

CUPRINS

1. Limbaje de programare. 1.1
2. Asambloare: tipuri, caracteristici. 2.1
3. Pseudoinstruciuni. Macroinstruciuni. 3.1
4. Adunarea a dou numere din 16 cifre zecimale. 4.1
5. nmulirea a dou numere de 8 bii. 5.1
6. mprirea a dou numere de 8 bii. 6.1
7. Transfer handshaking. 7.1
8. Convertor analog-numeric pe 8 bii, cu registru cu aproximaii succesive. 8.1
9. Controlul unei tastaturi: metoda baleerii. 9.1
10. Controlul unei tastaturi: metoda inversrii, tastaturi codate. 10.1
11. Afiarea pe celule cu 7 segmente. 11.1
12. Baleere tastatur i control afiare. 12.1
13. Transferul de date cu banda magnetic. 13.1
14. Interfa de programat memorii EPROM. 14.1
15. Bibliografie 15.1

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