Documente Academic
Documente Profesional
Documente Cultură
1. Obiectivul lucrării:
2. Consideraţii teoretice
Rolul circuitelor de interfata este in esenta acela de a asigura schimbul de date (intrari/iesiri)
si semnale cu exteriorul.
Din setul de instructiuni al procesorului (de transfer, aritmetice, logice, salt, etc.) vom folosi
pentru programareacircuitelor de interfata periferice si pentru transferul de date
instructiunile IN si OUT pentru 8086 (se foloseste tehnica de lucru cu porturi izolate de
memorie) si MOVX pentru 8051 (se foloseste in acest caz tehnica de lucru memory-map I/O
in care porturile sunt vazute ca locatii de memorie).
Obs. Maniera de lucru cu toate aceste circuite de interfata este oarecum similara deoarece
toate aceste circuite sunt vazute de processor ca un set de porturi de intrare/iesire.
Pentru fiecare contor exista un pin corespunzator semnalului de clock (CLK), semnalului de
validare GATE, si semnalului de iesire OUT.
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 8253.
__ __ __
CS RD WR A1 A0
--------------------------------------------
0 1 0 0 0 incarcare contor 0
0 1 0 0 1 incarcare contor 1
0 1 0 1 0 incarcare contor 2
0 1 0 1 1 scrierea cuvintului de control
0 0 1 0 0 citire contor 0
0 0 1 0 1 citire contor 1
0 0 1 1 0 citire contor 2
1 x x x x circuit neselectat
--------------------------------------------------------------
Programarea circuitului I8253
Modurile de lucru
Circuitul contor/temporizator poate lucra atat in modul numarator, in care caz numara
evenimente care activeaza semnalul de clock CLK al unuia din cele trei numaratoare cat si in
modul temporizator cand furnizeaza la iesirea Out al numaratorului cu care se lucreaza
semnale avand durate bine definite.
Selectia modului de lucru in modul temporizator se face cu ajutorul bitilor M0-M2 din
cuvantul de comanda.
In primul mod citirea se face in timpul decrementarii. Pentru aceasta, continutul contorului
care urmeaza sa fie citit se forteaza intr-un registru suplimentar din circuitul 8253,
contorul continuind operatia de decrementare. Bitii SC0,SC1 din cuvintul de comanda
specifica contorul al carui continut va fi salvat in vederea citirii iar bitii RL0,RL1 vor fi ambii
zero.
In al doilea mod de citire se blocheaza in prealabil clock-ul printr-o logica externa sau
controlind semnalul de comanda la poarta GATE.
Aplicatia 1
PB0
PB1 OUT2
GATE2
.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
Aplicatia 2
Calculul frecventei de ceas prin program se bazeaza pe masurarea duratei unei secvente
de instructiuni cunoscute. Metoda necesita un etalon de timp (sau de frecventa).
Acest etalon poate fi ceasul de timp real din sistem. Constructiv, acesta este realizat cu
ajutorul unui circuit 8253 (canalul 0) al carui semnal de tact are valoarea cunoscuta de
1.19 MHz (indiferent de modelul calculatorului compatibil IBM-PC XT, AT,
sau PS/2).
Instructiunile utilizate in secventa de test trebuie sa fie cit mai simple si executabile in
acelasi numar de tacte, indiferent de procesor. In plus, este preferabila o secventa liniara de
instructiuni, fata de una cu ramificatii care este greu controlabila. Metoda este supusa unor
erori inerente datorate: ciclurilor de reimprospatare a memoriei RAM dinamic, starilor de
asteptare (WAIT) caracteristice interfatarii cu circuite lente, cedarea ma-
gistralei catre un alt master (de exemplu DMA), etc. Aceste erori pot fi totusi minimizate. In
acest scop este bine sa se respecte urmatoarele recomandari:
In acest mod se inlatura efectul eventualelor stari WAIT introduse si a ciclurilor pierdute
datorita reimprospatarii memoriei RAM dinamic.
b. Se vor limita ramificatiile programului (instructiunile de salt).
Masurarea duratei unei secvente de instructiuni cunoscute se poate face cu ajutorul timerului
programabil 8253. Canalul 2 al acestuia (utilizat la generarea sunetelor) este cuplat tot la cea
sul de 1.19 MHz (intrarea CLK2). In plus, intrarea de autorizare a numararii (GATE2) poate
fi controlata prin program cu ajutorul unui port de control (portul B al circuitului 8255).
in al,61H
and al,11111110B
out 61H,al ;opreste numararea
sti ;activare sistem de intreruperi
in al,42H ;citire de la 8253
mov ah,al
in al,42H
xchg al,ah ;citeste cit a mai ramas in AX
mov bx,0FFFFH
sub bx,ax ;rezultatul se afla in BX
in care:
f = frecventa de tact a numaratorului 8253;
8253
f = frecventa de tact a procesorului;
CLK
d = numarul de stari al unei instructiuni NOP (3);
NOP
n = numarul de instructiuni NOP din secv. de test.
NOP
Problema 1
Prin programarea contorului 2 o perioada de timp cu o frecventa
dupa care aceeasi perioada cu alta frecventa, scrieti un program
prin care sint emise "simultan" doua sunete.
Problema 2
Incercati sa evidentiati separat actiunea celor doua iesiri PB0si PB1.
Problema 3
Cu ce alte moduri de lucru ale numaratorului puteti obtine semnale sonore? Evaluati
diferentele.
Anexa