Sériový kanál
Sériový kanál ,který mikroprocesor 8051 obsahuje, má v současné době velký význam.
V době uvedení 8051 na trh tomu možná tak nebylo, ale teď je situace jiná - pomocí sériového
kanálu lze mikroprocesor 8051 velmi jednoduše spojit s osobním počítačem PC.
A toho lze velmi efektivně využít k nejrůznějším účelům. Kromě spojení s PC lze dnes využít
sériový kanál v mnoha dalších aplikacích pro komunikaci se zařízeními komunikujících sériovou
linkou.
Sériový kanál je u 8051 plně duplexní (dokáže tedy současně data vysílat i přijímat),
umožňuje komunikovat ve standardním 8- a 9-bitovém asynchronním režimu nebo 8-bitovém
synchronním režimu.
Komunikační rozhraní tvoří 3 vodiče - RxD,TxD a zem.
Přijímací část sériového kanálu je vybavena vyrovnávacím registrem (bufferem), do kterého
je uložena právě přijatá hodnota, čímž je umožněn okamžitý příjem další hodnoty. Přijatá
hodnota však musí být z vyrovnávacího registru převzata dříve, než je dokončen příjem
následující hodnoty, který by způsobil přepsání původní hodnoty. Mikroprocesor není vybaven
příznaky, které indikují ztrátu přijaté hodnoty (chyba vzniklá přeplněním vyrovnávacího
registru), chybu rámce a parity nebo indikaci přerušení, které jsou obvyklé u specializovaných
obvodů.
Sériový kanál je tvořen dvěma registry, a to registrem SBUF a SCON.
SBUF - Registr sériového kanálu (Serial Data Buffer)
Představuje vysílací i přijímací registr (není tedy vyhražen jeden registr pro vysílání
a druhý pro příjem, ale existuje pouze jeden společný pro příjem i vysílání). Zápisem
hodnoty do SBUF se naplňuje vysílací registr, čtením z SBUF se přečte hodnota z vyrovnávacího
registru, do kterého byla přepsána z přijímacího registru po přijetí celého bytu.
Sériový kanál může pracovat ve čtyřech různých módech, které lze zvolit nastavením příslušných bitů v registru SCON a nejvyššího bitu v registru PCON.
SCON -Registr módu a řízení sériového kanálu (Serial Control)
Popis jednotlivých bitů registru SCON:
SM0, SM1 -režim sériového kanálu
SM0 0 0 1 1 |
SM1 0 1 0 1 |
Nastavený mód mód 0 mód 1 mód 2 mód 3 |
Režim 8bitový synchronní přenos 8bitový asynchronní přenos 9bitový asynchronní přenos 9bitový asynchronní přenos |
Přenosová rychlost OSC/12 čítač/časovač 1 OSC/64 neboOSC/32 čítač/časovač 1 |
SM2 - povolení víceprocesorové komunikace
REN - povolení příjmu
TB8 - vysílaný 9.bit (v režimech 2,3)
RB8 - přijímaný 9.bit (v režimech 2,3)
TI - indikace vyprázdnění vysílacího registru
v režimu 0 je aktivován na konci vysílání 8.bitu
v režimech 1,2,3 je aktivován na začátku STOP-bitu
tento bit se nastaví hardwarově, nuluje se programově
RI - indikace naplnění přijímacího registru
v režimu 0 je aktivován po přijetí 8.bitu
v režimech 1,2,3 je aktivován uprostřed STOP-bitu
tento bit se nastaví hardwarově, nuluje se programově
Mód 0 -8.bitový synchronní přenos s pevnou přenosovou rychlostí - data se vysílají nebo přijímají vstupem RxD (P3.0) synchronně s hodinovým signálem, vysílaným na výstupu TxD (P3.1). Přenášená 8-bitová informace se vysílá počínaje bitem s nejnižší váhou. Přenosová rychlost (v bitech za sekundu) je pevná a rovna 1/12 kmitočtu oscilátoru. Maximální přenosová rychlost je tedy 1Mbit/s při 12MHz krystalu. Protože je výstup TxD využit pro vysílání synchronizačního signálu, nelze v tomto módu uskutečnit plně duplexní přenos. Někdy bývá tento mód označován jako posuvný registr, protože takto tento mód vlastně pracuje.
Sériový kanál v módu 0 - časové průběhy
Mód 1
- 8.bitový asynchronní přenos s programovatelnou přenosovou rychlostí - data se vysílají
výstupem TxD, přijímají se vstupem RxD - celkem se vysílá nebo přijímá 10 bitů, z toho
je první bit vždy nulový - ten představuje start bit. Po něm následuje 8 datových bitů,
přičemž první bit je bit s nejnižší váhou. Poslední (desátý) přenášený bit je vždy
jedničkový - ten představuje stop bit. Při příjmu se stop bit ukládá do bitu RB8 v registru
SCON. Přenosová rychlost je v tomto módu programovatelná a je určena četností (periodou)
přetečení čítače/časovače 1 a hodnotou bitu SMOD v registru PCON.
Sériový kanál v módu 1 - časové průběhy
Mód 2
- 9.bitový asynchronní přenos s volitelnou přenosovou rychlostí - přijímá se (na vstupu RxD)
nebo vysílá se (na výstupu TxD) celkem 11 bitů, přičemž první bit je START bit (vždy log.0),
následuje 8 datových bitů , 9.datový bit a posledním přenášeným bitem je STOP
bit (vždy log.1). Při vysílání je do 9.datového bitu uložena hodnota bitu TB8, při příjímání
se získaný 9.datový bit ukládá do bitu RB8 přičemž stop bit se ignoruje. Oba bity RB8 a TB8
se nacházejí v registru SCON. Devátý datový bit může být při vysílání využit jako další,
normální datový bit nebo se může použít k přenosu paritního bitu příslušejícímu předchozím
8 bitům. Hodnotu paritního bitu získáme jednoduše tak, že vysílaný byte před samotným
přenosem uložíme do akumulátoru, čímž se v registru PSW aktualizuje hodnota paritního bitu P.
Obsah bitu P, který je přímo adresovatelný, pak před
začátkem vysílání uložíme do bitu TB8.
Přenosovou rychlost v tomto módu můžeme volit nastavením bitu SMOD v registru PCON.
Je-li SMOD=1, pak je přenosová rychlost rovna 1/32 frekvence oscilátoru; je-li SMOD=0,
pak je přenosová rychlost rovna 1/64 frekvence oscilátoru.
Sériový kanál v módu 2 a 3 - časové průběhy
Mód 3
- 9.bitový asynchronní přenos s programovatelnou přenosovou rychlostí - příjem i vysílání
dat probíhá stejně jako v módu 2 s tím rozdílem, že v tomto módu je přenosová rychlost
určena četností (periodou) přetečení čítače/časovače 1 a hodnotou bitu SMOD v registru PCON.
Vztahy pro výpočet přenosové rychlosti v módu 3 jsou shodné se vztahy pro mód 1.