Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N5 Praca laboratoryjna N 5 TEMAT: PROGRAMOWANIE GŁOŚNIKA KOMPUTERA Celem niniejszego ćwiczenia jest zapoznanie się ze sposobem generacji dźwię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 dźwię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 dźwię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 dźwięk wysoki występuje jako pierwszy a kolejne są coraz niższe. Zadbaj o to aby poszczególne dźwię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 dźwię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 dźwię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 KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N5 b) 01 – zapis lub odczyt tylko młodszego bajtu rejestru-licznika; Tabela wariantów Dolna częstotliwość sekwencji (Hz) Ilość dźwięków / Ilość powtórzeń w sekwencji Górna częstotliwość sekwencji (Hz) Sekwencja rewersyjna? Lp. 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óźniej 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 KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ć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 KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ć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 |
Menu
|