Urz Zew Cw5


POLITECHNIKA KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ćwiczenie laboratoryjne N5
Praca laboratoryjna N 5
TEMAT: PROGRAMOWANIE GAOŚNIKA KOMPUTERA
Celem niniejszego ćwiczenia jest zapoznanie się ze sposobem generacji dzwięków z
wykorzystaniem bezpośredniego dostępu do portów generatora.
Przy tworzeniu i pracy z obecnym programem, przy użyciu aplikacji DOSBOX, proszę
zwrócić uwagę, że DOSBOX jest jedynie emulatorem DOS'u i dzwięki zamiast ze `speacker'a`
wydobywają się z głośników podłączonych do karty muzycznej. W sali laboratoryjnej nie wszystkie
komputery posiadają takie głośniki więc proszę to uwzględnić przy realizacji programu.
Przygotowanie pracy laboratoryjnej do wykonania przed ćwiczeniem.
Zapoznaj się z:
1. strukturą układu i zasadą działania układu i8253/8254,
2. sposobem doboru wartości częstotliwości podawanej do układu,
3. sposobem generacja dzwięku przy użyciu głośnika komputera.
Zadanie do wykonania w ćwiczeniu laboratoryjnym:
I. Napisz program spełniający warunki zadane w tablicy wariantów, przy czym sekwencja
rewersyjna = T oznacza, że dzwięk wysoki występuje jako pierwszy a kolejne są coraz
niższe. Zadbaj o to aby poszczególne dzwięki były dobrze słyszalne.
II. Wykorzystując odpowiednie programy wykonaj asemblację (tasm) i konsolidację (tlink)
przygotowanych programów. Popraw ewentualne błędy, wykorzystując do tego celu
debugger.
Żeby wydobyć z głośnika komputera dzwięk należy skorzysta z pomocy dwóch układów (patrz
Anatomia PC):
- programowalnego generatora i8253/8254.
- programowalnego peryferyjnego interfejsu i8255;
Podstawowa praca przy generowaniu dzwięku z głośnika jest wykonywana przez generator.
Posiada on 3 kanały z jednakową strukturą dla każdego kanału. Kanał z numerem 0 obsługuje
kontroler przerwań, z numerem 1  układ DMA, z numerem 2  głośnik komputera. Każdy kanał o
numerze X posiada dwa wejścia (CLK i GATE X) i jedno wyjście (OUT X). Wejścia CLK
wszystkich kanałów są połączone między sobą i podawane są na nie impulsy sygnału
synchronizującego o częstotliwości 1,19318 MHz. Podstawę każdego kanału stanowią 3 rejestry: 8-
bitowy rejestr wejścia-wyjścia (port 42h dla kanału 2), 16-bitowy rejestr-zatrzask i 16-bitowy
rejestr-licznik. Informacja wpisana do rejestru wejścia-wyjścia natychmiast jest przesyłana do
rejestru zatrzaskowego, w którym jest przechowywana do momentu pojawienia się kolejnej
wartości w rejestrze wejścia-wyjścia. Z rejestru-zatrzasku informacja trafia do rejestru-licznika. W
każdym układzie i8253 znajduje się jeden dla wszystkich kanałów rejestr sterujący (port 43h)
wykorzystywany do:
1) Określenia numeru wykorzystywanego kanału (bity 7-6, np. 10 określa 2 kanał);
2) Rodzaju wykonywanej operacji (bity 5-4):
a) 00  przepisanie zawartości rejestru-licznika do rejestru zatrzaskowego (można odczytać
zawartość licznika kanału);
1 z 4
POLITECHNIKA KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ćwiczenie laboratoryjne N5
b) 01  zapis lub odczyt tylko młodszego bajtu rejestru-licznika;
Tabela wariantów
Dolna Ilość dzwięków
Górna
częstotliwość / Ilość Sekwencja
Lp. częstotliwość
sekwencji powtórzeń w rewersyjna?
sekwencji (Hz)
(Hz) sekwencji
1 400 2300 2/6 T
2 450 2250 4/6 N
3 500 2200 6/3 T
4 550 2150 3/3 N
5 600 2100 5/6 T
6 650 2050 2/6 N
7 700 2000 4/3 T
8 750 1950 6/3 N
9 800 1900 3/6 T
10 850 1850 5/6 N
11 900 1800 2/3 T
12 950 1750 4/3 N
13 1000 1700 6/6 T
14 1050 1650 3/6 N
15 1100 1600 5/3 T
16 1150 1550 2/3 N
17 1200 1500 4/6 T
18 650 1800 6/6 N
19 700 1750 3/3 T
20 750 1700 5/3 N
10  zapis lub odczyt tylko starszego bajtu rejestru-licznika;
c) 11  zapis lub odczyt obydwu bajtów rejestru licznika (najpierw starszy pózniej młodszy);
3) Tryb pracy generatora(bity 3-1):
a) 000  tryb 0
b) ...
c) 011  tryb 3. Na wyjściu OUT? pojawia się sygnał o przebiegu prostokątnym. Jeśli wartość
N zapisywana do rejestru licznika jest parzysta, to poziom 1 utrzymywany jest tak samo
długo jak poziom 0  po N/2 impulsów synchronizujących na wejściu CLK. Jeśli wartość N
jest nieparzysta  poziom 1 trwa (N+1)/2 impulsów, poziom 0  (N-1)/2 impulsów.
d) ...
2 z 4
POLITECHNIKA KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ćwiczenie laboratoryjne N5
e) 101  tryb 5
4) Sposobu odliczania (0-zliczanie w kodzie binarnym(16 bitowym)FFFFh-0000h,1-zliczanie w
kodzie BCD 9999-0000);
Programowalny peryferyjny interfejs i8255 zawiera między innymi port o adresie 61h.
Przesłanie do tego portu bajtu informacji z ustawionym bitem o numerze 0 i 1 na wysoki poziom
logiczny uruchamia odpowiednio mechanizm zliczający w kanale, oraz podłącza wyjście OUT2 na
wejście głośnika.
W ten sposób aby uruchomić głośnik należy:
1) Kanał 2 generatora zaprogramować do pracy w trybie 3;
2) Podzielnik N ustawić na odpowiednią częstotliwość (uwzględniając możliwości akustyczne
głośnika);
3) Uruchomić generator ustawiając 1 w bicie 0 portu 61h i włączyć klucz ustawiając 1 w bicie 1
portu 61h.
Wyłączenie głośnika polega na przesłaniu do portu 61h informacji o strukturze xxxxxx00 lub
xxxxxx01 lub xxxxxx10(x  oznacza oryginalną wartość bitu odczytaną z portu 61h).
Pytania kontrolne:
1. Omów działanie napisanych programów.
2. Do czego służą porty 43h, 42h i 61h?
3. Czy częstotliwość zegara procesora ma wpływ na pracę generatora?
4. Czym różni się układ i8253 od i8254.
5. Czy do portu 42h podajemy wartość częstotliwości czy dzielnika częstotliwości i dlaczego?
Przykładowy program ilustruje sposób programowania głośnika.
;Program imitujacy dzwiek syreny
;zmiana czestotliwosci dzwieku od 450 Hz do 2100 Hz
;Opoznienie adekwatne dla procesora P5
.MODEL small ;model pamieci
.STACK 256 ;rozmiar stosu
.486p
;makro opoznienia
;Na wejsciu wartosc opoznienia (w mks)
delay macro time
local ext,iter
push cx
mov cx,time
ext:
push cx
;w cx jedna mks, te wartosc można zmienic w zaleznosci od wydajnosci procesora
mov cx,5000
iter:
loop iter
pop cx
loop ext
pop cx
endm
.data
tonelow dw 2651 ;dolna granica dzwieku 450 Hz
cnt db 0 ;licznik dla wyjscia z programu
temp dw ? ;gorna granica dzwieku
.code
main:
3 z 4
POLITECHNIKA KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ćwiczenie laboratoryjne N5
mov ax,@data
mov ds,ax
xor ax,ax
go:
mov al,0B6h ; slowo stanu 10110110b (0B6h)-wybor 2-ego kanalu portu (glosnik)
out 43h,al ;do portu 43h
in al,61h
or al,3
out 61h,al
mov cx,2083
musicup:
;wartosc dolnej granicy czestotliwosci w ax (1193000/2651=450 Hz), gdzie 1193000 - czestotliwosc glosnika
mov ax,tonelow
out 42h,al
mov al,ah
out 42h,a
add tonelow,1
delay 1
mov dx,tonelow
mov temp,dx
loop musicup
mov cx,2083
musicdown:
mov ax,temp
out 42h,al
mov al,ah
out 42h,al.
sub temp,1
delay 1
loop musicdown
nosound:
in al,61h
and al,0fch
out 61h,al
mov dx,2651 ;dla kolejnych petli
mov tonelow,dx
inc cnt ;inkrementacja ilosci przejsc
cmp cnt,10
jne go
exit:
mov ax,4c00h
int 21h
end main ;koniec programu
4 z 4


Wyszukiwarka

Podobne podstrony:
Urz Zew Cw09
Urz Zew Cw3
Urz Zew Cw2
Urz Zew Cw10
Urz Zew Cw1
W208 demontaż listwy szyby przedniej zew
14 EW ZEW Srodowisko do metody Johna
CW5 doc
Dz Urz Min Fin z dnia 10 września 2014 r poz
Ćw5
Biochemia(ŻCz)Ćw5 Właściwości fizyko chemiczne mono oligo i polisacharydów
borland cpp builder cw5
cw5 1

więcej podobnych podstron