Sunteți pe pagina 1din 8

LUCRAREA NR.

Studiul circuitului de interfata paralela.


Utilizarea acestor circuite in sistemele de achizitie a datelor.

1. Obiectivul lucrării:

Familiarizarea studenţilor cu o serie de elemente legate de proiectarea si simularea unor


scheme de interfatare folosind circuitul de interfata paralela precum si cu modul de realizare a
unor programe de lucru cu acest circuit folosind microprocesorul I8086 si microcontrolerul
I8051. Deprinderea studenţilor cu modul de realizare a unei aplicaţii din acest domeniu folosind
mediul de dezvoltare PROTEUS si mediul de dezvoltare a programelor KEIL microvision..

2. Consideraţii teoretice

Rolul circuitelor de interfata este in esenta acela de a asigura schimbul de date (intrari/iesiri)
al microprocesorului, cu exteriorul.

Microprocesoarele poseda un spatiu de intrari/iesiri separat de spatiul de memorie si


instructiuni de transfer al datelor intre unitatea centrala si dispozitivele periferice. Spatiul I/O
la I8086 suporta pina la 64 k porturi de 8 biti si 32 k porturi de 16 biti.

Cele mai utilizate circuite de interfata programabile sint :


-interfata seriala (SIO pentru Z80, si I8251,I8250, etc.
pentru I8086);
-interfata paralela (PIO pentru Z80 si I8255 pentru I8086);
-circuit contor/temporizator (CTC Z80, I8253);
-circuite de tip controller (I-8272 pentru floppy disk,
I-8237 pentru transfer DMA, etc.).

Pentru selectia circuitelor de interfata in spatiul de adresare I/O se foloseste un decodificator


care genereaza semnalele "chip select" pornind de la liniile de adresa si control.
Obiectul laboratorului il constituie utilizarea circuitelor de interfata in cadrul unui
microsistem. Aceasta presupune cunoasterea prealabila a procesoarelor centrale cu setul de
instructiuni aferent.

Din setul de instructiuni al procesorului (de transfer, aritmetice, logice, salt, etc.) vom folosi
pentru programarea interfetelor periferice si pentru transferul de date
instructiunile IN si OUT pentru procesorul 8086 (se foloseste in acest caz tehnica de lucru cu
porturi izolate de memorie) si MOV si MOVX pentru procesorul din 8051 (in acest caz se
foloseste tehnica de lucru cu porurile memory-map I/O .

Obiectul acestui laborator il constituie circuitului de interfata paralela I8255.


I8253.
Prezentarea generala a circuitului I-8255

In general orice circuit de interfata are doua interfete:


-interfata cu microprocesorul
-interfata cu logica externa

Interfata cu logica externa:

Circuitul numarator/temporizator 8255 este alcatuit in principal din trei porturi paralele care
permit transferul de date catre logica externa in paralel in general pe 8 biti cu exceptia
portului PC care poate fi impartit in doua parti de cate 4 biti.

Interfata cu microprocesorul:

Conectarea la busul de date al microsistemului se face prin intermediul bufer-ului pe 8 biti,


bidirectional, 3 stari (D0-D7).

Tot in partea de interfata cu microprocesorul exista semnalele A0, A1, RD, WR, CS, functie
de combinatia acestora rezultind toate operatiile posibile ale circuitului 8255.

Un circuit de interfata contine in general


◦ -registre de date
◦ -registre de stare
◦ -registre de comanda
Registrele de date ale circuitului I8255
◦ -port A (pe 8 biti)
◦ -port B (pe 8 biti)
◦ -port C (ce poate fi impartit in doua subporturi pe patru biti: PC0-3 si PC4-7)
Registrul de comanda este folosit in programarea circuitului I8255
Programarea modului de functionare a circuitului I8255 se face prin inscrierea unui
cuvant de comanda in registrul de comanda.

Formatul cuvantului de comanda este dat in figurile urmatoare:

Fig.2 Formatul cuvantului de comanda pentru definirea modului de lucru


Fig.3 Formatul cuvantului de comanda pentru pozitionarea individuala a bitilor portului PC
Circuitul I 8255 are trei moduri de lucru :
-modul 0 (fara sincronizare)
-modul 1 (unidirectional cu sincronizare)
-modul 2 (bidirectional cu sincronizare)

In cazul in care nu exista semnale de sincronizare portul PC poate fi configurat fie ca


un port pe 8 biti fie ca doua porturi separate pe 4 biti (PC0-3 si PC4-7)
Portul PC poate lucra doar in modul 0
In cazul in care se utilizeaza semnale de sincronizare, bitii ramasi nefolositi din portul
PC pot fi inscrisi individual folosind un cuvant de comanda special

Modul 0 de lucru

In acest mod transferul de date se face in paralel pe 8 biti fara sincronizare


Transferurile de date in acest caz sunt unidirectionare (porturile pot fi programate fie
pe intrare, fie pe iesire
◦ Se pot folosi in acest mod PA, PB si PC0-3,PC4-7
Deoarece transferurile de date nu sunt sincronizate -la transmisie:
 data transmisa trebuie mentinuta valida pana in momentul
receptionarii ei
 -la receptie:
 Data trimisa de periferic va trebui mentinuta valida pana la
receptionarea ei de catre port

Modul 1 de lucru

In acest mod transferurile de date se fac tot in paralel, pe 8 biti, dar cu sincronizare. Si
in acest mod transferul se face in mod unidirectionar (pe intrare sau pe iesire)
Se pot folosi in acest mod porturile PA si PB
Pentru sincronizarea transferurilor cu portul PA se folosesc 2 biti ai portului PC4-7 .
Inca un bit al portului PC4-7 se poate folosi pentru a genera o intrerupere catre procesor
Pentru sincronizarea transferurilor cu portul PB se folosesc 2 biti ai portului PC0-3.
Inca un bit al portului PC0-3 se poate folosi pentru a genera o intrerupere catre procesor
Modul 2 de lucru

In acest mod se realizeaza transferul de date sincronizat in mod bidirectional


Se poate folosi in acest mod doar portul PA folosind toate semnalele de sincronizare (si
cele folosite in modul 1 pe intrare cat si pe iesire)
Dintre cele trei moduri de lucru, cel mai utilizat in practica este modul 0 in care se dispune
de doua porturi de 8 biti (A si B) si doua porturi de patru biti PC0-3 si PC4-7. Aceste porturi pot
fi configurate individual pe intrare sau iesire.

Aplicatia 1

Programul propus spre studiu este o aplicatie pentru circuitele


I8255 si I8253. Acest exemplu creeaza un sunet cu frecventa
ascendenta. Circuitul I8255 are rolul de a cupla si decupla
difuzorul calculatorului in timp ce cu ajutorul circuitului I8253
se genereaza un semnal cu o frecventa variabila, care produce
sunetul dorit.
Iata o schema bloc a circuitelor implicate:

I8255 I8253

PB0
PB1 OUT2
GATE2

AND AMPLIF DIFUZOR

Adresele porturilor implicate sunt:

Portul B I8255 61h


Contor 2 I8253 42h

In programul de mai jos trebuie urmarite urmatoarele probleme:


- modul de formare al adresei la operatia de citire port
PB I8255 pe magistrala de date a calculatorului;
- modificarea bitilor, PB0, PB1, care valideaza semnalul
de la timer si conecteaza difuzorul la timer, prin operatia de
scriere la portul B;
- modul de formare al adresei la operatia de scriere pentru
incarcarea contorului 2 cu noua constanta de divizare;
- identificarea buclei principale a programului, cu 10000
pasi, in care se face modificarea constantei de divizare prin
decrementare.

.model small
;---------------------------------
sound equ 61h ;adresa pentru 8255
timer equ 42h ;adresa pentru 8253
on equ 00000011b ;bitul 0 programat 1 semnifica
;validare generare semnal
;dreptunghiular de catre I8253
;vezi semnalul TIM2GATE
;bitul 1 programat 1 semnifica
;dirijare catre difuzor a
;semnalului
;vezi semnalul SPKDATA
.code
;----------------------------------inceput standard
start: mov ax,@data
mov ds,ax
;----------------------------------
in al, sound ;pozitioneaza portul I-8255
or al, on ;activeaza difuzor si
out sound, al ;conecteaza timer

;----------------------------------
mov al, 100 ;programare timer
sounder: out timer,al ;trimite octetul la timer
;----------------------------------
mov cx,10000 ;intirziere
hold: loop hold
dec al
jnz sounder
in al,sound
and al,NOT on
out sound,al
;----------------------------------terminare standard
mov ah,4ch
int 21h
end start

Dupa lansare veti constata producerea semnalului in difuzor cu o frecventa


variabila o perioada de timp, dupa care se revine la continutul anterior al portului 8255 si deci
se produce deconectarea difuzorului.
3. Desfãşurarea lucrãrii

1. Sa se editeze in Borland C programul in limbaj de asamblare pentru aplicatia 1 si se


salveaza cu numele lab4xx.asm, unde xx reprezinta initialele numelui
2. Sa se asambleze programul folosind comanda
TASM /la /zi lab4xx
3. Se linkediteaza programul folosind comanda
TLINK /v /s lab4xx
4. Se urmareste executia programului prin incarcarea sa in Turbo Debugger

5. Se realizeze schema de interfatare a circuitului I8255 la microcontrolerul 8051

Fig.4 Schema de interfatare a circuitului I8255 la microcontrolerul 8051

In Fig.4 se arata modul de interconectare a circuitului I8255 la microcontrolerul 8051. Se


va folosi tehnica de lucru cu porturile “memory map I/O”.
Semnalele folosite in lucrul cu circuitul I8255 sunt cele folosite in lucrul cu circuitele de
memorie exterioare si sunt urmatoarele:
 ALE- (Address Latch Enable) folosit pentru demultiplexarea datelor si
adreselor
 -WR pwntru comanda de strobare a datelor in circuitele de memorie sau
porturi
 -RD pentru activarea iesirilor circuitelor de memorie sau a circuitelor ce
contin porturile
Pentru proiectarea circuitelor de selectie a circuitelor de memorie se pleaca de la Harta
de alocare a memoriei. In cazul nostru, ilustrat in Fig.5, harta de alocare a memoriei este
data in Fig.5.
A15 A14 A13 A12 .... A0
0 0 0 0 ..... 0 RAM0
1 ..... 1
0 0 1 0 ... 0 RAM0
1 .... 1 virtual
0 1 0 0 … 0 I8255
0 1 1 1 … 1
0 ... 0 RAM 1
1 0 0
1 ... 1
1 0 1 0 .... 0 RAM 1
1 ..... 0 virtual

1 1 0 Nu e alocat
1 1 1

Fig.5 Harta de alocare a memoriei


6. Se creaza fisierul cu codul sursa al programului ca in figura

urmatoare :

Se salveaza programul in directorul de lucru cu numele dorit. In cazul nostru Test.s.


6. Sa se stearga semnalul CS dela circuitul I8255 de sus (conectat la iesirea Y1) a circuitului
74LS139 din stanga sus si sa se lege la iesirea Y2.
7. Sa se determine noile adrese ale porturilor asociate cu circuitul I8255 de sus.
8. Sa se modifice programul in Micro Vision pentru a accesa noile porturi
9. Sa se schimbe modul de lucru al circuitului I8255 de sus si sa se modifice data care se
trimite la logica externa.

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