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 Cw09Urz Zew Cw3Urz Zew Cw2Urz Zew Cw10Urz Zew Cw1W208 demontaż listwy szyby przedniej zew14 EW ZEW Srodowisko do metody JohnaCW5 docDz Urz Min Fin z dnia 10 września 2014 r pozĆw5Biochemia(ŻCz)Ćw5 Właściwości fizyko chemiczne mono oligo i polisacharydówborland cpp builder cw5cw5 1więcej podobnych podstron