Urz Zew Cw5, 1 STUDIA - Informatyka Politechnika Koszalińska, muniol, II rok, 3sem, Laborki systemy cyfrowe, sc paczka zadań, Systemy Cyfrowee, !

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
 
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.