Professional Documents
Culture Documents
MNAV nPC4
MNAV nPC4
4 1
Jako periférie nebude zvoleno specifické zařízení, ale druhý osobní počítač. Toto
umožní snadnou obsluhu komunikace oběma směry bez nutnosti komplikovaného
programování mikroprocesoru specifického periferního zařízení.
Dále popisovaný program bude schopen přenášet znaky ze standardního vstupu
místního počítače na standardní výstup vzdáleného počítače a obráceně. Takže znaky
natypované na klávesnici místního počítače jsou automaticky přeneseny na obrazovku
vzdáleného počítače a obráceně.
Do vysílacího okna „Sended data string:“ budou zobrazovány znaky natypované na
místním počítači, zároveň jsou to také znaky, které jsou automaticky odesílány na sériové
rozhraní. V přijímacím okně „Received data string:“ budou zobrazovány příchozí znaky ze
vzdáleného počítače (znaky přijaté skrze sériové rozhraní). Základní datovou jednotkou bude
1 byte, který bude představovat ASCII kód zmáčknuté klávesy. Datové jednotky se budou
odesílat okamžitě po jejich natypování. Ke komunikaci bude použit sériový port COM1 a
počítače musí být propojeny datovým kabelem Canon 9F/9F.
Zjednodušeně se dá algoritmus programu rozdělit na dvě základní smyčky:
• Obsluha zobrazení znaků natypovaných na místním počítači – budou obslouženy
všechny znakové klávesy, specificky bude obsloužena klávesa ESC (zobrazení
dotazu na ukončení programu), Enter (odřádkování psaných znaků), Backspace
(mazání již napsaných znaků). Pokud bude počet natypovaných řádků delší než
počet zobrazitelných řádků, text začne rolovat nahoru.
• Obsluha zobrazení znaků natypovaných na vzdáleném počítači – obsluha
jednotlivých jevů je zcela identická s tím rozdílem, že nebude ošetřena klávesa ESC
pro zobrazení dotazu na ukončení.
Součástí hlavní smyčky bude testování výskytu znaku v zásobníku standardního vstupu
(byla-li smáčknuta klávesa na místním počítači) a testování výskytu znaku v adresovém
prostoru sériového rozhraní (byl-li přijat znak ze vzdáleného počítače). Bezprostředně po
obsluze natypovaného znaku na standardním výstupu místního počítače bude tento znak vždy
odeslán na sériové rozhraní.
Zdrojový kód v prezentované podobě nebude zcela optimální. Optimalizace zdrojového
kódu většinou způsobí snížení jeho čitelnosti. Z tohoto důvodu bude obsluha znaků
inicializace inicializace
START seriového uživatelského
rozhraní rozhraní
odeslání
dat
-
zmáčknuta - přijata
klávesa? data?
+ +
+ smaž
esc?
+ backspace? znak
p.o.
- -
smaž + + odřádkuj
znak backspace? enter?
p.o.
v.o.
- -
+ zobraz
odřádkuj
enter? znak
v.o.
p.o.
-
zobraz dotaz
znak na KONEC
v.o. ukončení
• Smaž znak – v daném okně provede smazání posledního znaku a posune kursor
zpět, dodržuje velikost plochy pro zobrazování textu.
• Odřádkuj – v daném okně provede změnu polohy kursoru na začátek dalšího
řádku, dodržuje velikost plochy pro zobrazování textu.
• Zobraz znak – v daném okně zobrazí znak na aktuální poloze kursoru a následně
posune kursor za znak, dodržuje velikost plochy pro zobrazování textu.
• Odeslání dat – zajistí odeslání připraveného znaku na sériové rozhraní.
• Dotaz na ukončení – zobrazí dialog dotazu na ukončení z volbou y/n. Dále čeká na
smáčknutí klávesy “y“ nebo “n“. V případě “y“ je program korektně ukončen,
v případě “n“ dojde ke smazání dialogu dotazu a následuje návrat na začátek hlavní
smyčky programu.
a) b)
FG 1 1 1 1
SG 7 7 7 7
TD 2 2 2 2
RD 3 3 3 3
RTS 4 4 4 4
CTS 5 5 5 5
DSR 6 6 6 6
DTR 20 20 20 20
DCD 8 8 8 8
TC 15 15 15 15
RC 17 17 17 17
S 0 1 . . . . . n P Stop
n informačních bitů
Startovací bit
Paritní bit
Stop bity
Následuje popis registrů pro rozhraní COM1, rozhraní COM2 má význam registrů
stejný, jen jsou registry na adresách o 100h nižších. Hodnoty D0~D7 vždy představují
jednotlivé bity v aktuálním registru.
Inicializace rozhraní se provádí na začátku hlavní části programu. Před ukončením běhu
programu není nutné parametry nastavené v rámci inicializace uvádět do původních hodnot.
Během inicializace je nutné nastavit tyto parametry komunikace:
• výběr sériového portu – je dán používáním rozsahu adres, pro práci s COM1 se
použijí adresy 3XXh.
• nastavení rychlosti komunikace – provede se nastavením registrů 3F8h a 3F9h, do
registru 3F8h se uloží dolní byte dělitele, do 3F9h horní byte dělitele, před
nastavením je nutné uvést rozhraní do stavu nastavování rychlosti (DLAB = 1),
komunikace bude probíhat rychlostí 1200bps (dělitel 96).
• nastavení parametrů datového rámce – provede se nastavením registru 3FBh,
počet datových bitů 8, 1 stop bit a žádný paritní bit.
• přechod do stavu aktivní komunikace – registr 3F8h se nastaví jako
vstupně/výstupní registr komunikace, provede se nastavením DLAB = 0 v registru
3FBh.
Vyslání dat druhé straně je možné realizovat několika způsoby, které se liší množstvím
ověřovaných parametrů. Např. je možné ověřovat, zda byl vyslaný znak vůbec přijat na druhé
straně, zda byl přijat bez chyb nebo je možné ověřit, zda během komunikace nedošlo
k rozpojení kabelu apod. Tyto možnosti dává k dispozici registr stavu linky 3FDh.
Následující způsob vyslání dat je ten nejjednodušší možný, nekontroluje žádný z výše
uvedených parametrů, pouze ověřuje, zda byla vyslána z výstupního registru. Má dvě fáze:
• vyslání dat z datového registru do vstupně-výstupního registru rozhraní – byte
připravený v registru al je vyslán do registru 3F8h.
• čekání, dokud data neopustí vstupně-výstupní registr – dochází k testování bitu
D5 v registru stavu linky 3FDh. Dokud není tento bit nastaven na 1, data nebyla
odeslána ze vstupně-výstupního registru 3F8h.
Příjem dat z asynchronního rozhraní je jev, který musí být programem vhodným
způsobem ošetřen. V hlavní části programu dochází kromě testování standardního vstupu také
k testování výskytu nových dat ve vstupně-výstupním registru asynchronního rozhraní. Tedy
k samotnému příjmu dat z asynchronního rozhraní dochází pouze tehdy, pokud jsou data
přítomna ve vstupně-výstupním registru 3F8h. V jiném případě program pouze obsluhuje
standardní vstup (klávesnici).
Příjem dat z asynchronního rozhraní má dvě fáze:
• Testování výskytu přijatých dat – dochází k testování bitu D0 v registru stavu
linky. Pokud je bit nastaven na 1, ve vstupně-výstupním registru jsou připravena
přijatá data.
• Načtení dat – data ze vstupně-výstupním registru 3F8h jsou přenesena do registru
al.