kecatko - ZX gumak

Ondra Caha ondrej
Středa Březen 17 11:51:16 CET 2004


Ahoj všem

Tak tady máte popis ovladání reproduktoru v ZX.......   omluvte prosím možné
chyby..

Ondra

Ty soubory jsem nacpal na www.caha.cz/hlas.pgm  a www.caha.cz/hlas.bts


Reproduktor

Reproduktor ve Vašem počítači je připojen na výstup portu FE a přes něj je
také ovládán. Chcete-li vyslat na port FE například z registru A informaci
můžete to provést třeba instrukcí OUT (FE),A .  Každé takové stavové slovo
musí mít následující formát.

x      x     x   R   M   B   B   B
D7 D6 D5 D4 D3 D2 D1 D0


X  zcela libovolný stav
R  ovládá reproduktor
M výstup pro magnetofon MIC
B  border

R a M  jsou :   1 vypnuto  a   0 aktivní

Chceme-li vytvořit nějaký tón, je potřeba rozkmitat membránu reproduktoru.
To se provede střídáním  0 a 1 a vysíláním na port FE. Má-li mít tón určitou
frekvenci, je třeba,  aby bit D4 na
portu FE byl invertován vždy po určitém, ale stejném časovém úseku.

Nejvhodnějším měřidlem pro odstup jednotlivých změn stav. slova pro repro.
jsou samotné kroky mikroprocesoru, který pracuje na kmitočtu 3,5 MHz což
znamená, že za 1 sec. projde 3500000 taktů.
Jeden krok pak trvá      k= 1/3500000 sec.      =         k=0,285714 us
(mikrosekund)

Zadaný tón má frekvenci f, jedna jeho perioda pak trvá t=1/f a počet kroků,
ve kterých se musí uskutečnit 1 perioda tónu je     P=t/k = 3500000/f.

zde je jednoduchý obrázek

Jak je z periody tónu vidět, je potřeba invertovat vždy dvakrát za jednu
periodu "t". Počet kroků je tedy poloviční P,  tj. 1750000/f.

něco příkladů

v ROMce je rutina BEEP   na adrese 03B5

vstupy:   DE    doba    f*t    frekvence * čas
                 HL   počet kroků P/2 dělený 4 zmenšený o 30

vytvoření tónu C o délce 1 sekundy

tón C = 261,63 Hz    =   1750000/261,63   =   6689

HL =  (6689/4)-30  =  1642
DE = 261,63*1








Další informace o konferenci Hw-list