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