Programy pro obsluhu sériové linky

Práce se sériovou linkou spočívá v těchto základních bodech:
1) nastavení sériové linky
2) samotný přenos po sériové lince, přičemž ten může být řešen
    a)bez využití přerušovacího systému
    b)s využitím přerušovacího systému

Nastavení sériové linky
Nejprve je důležité se rozhodnout, s jakými parametry bude přenos probíhat. Volba parametrů závisí především na tom,jaký "komunikační protokol" si zvolíme a je nutné je volit i v návaznosti na parametry zařízení,s kterým bude mikroprocesor komunikovat.
Jedná se především o nastavení:
- komunikační rychlosti
- délce datového slova (počet přenášených datových bitů)
- počet stop bitů
- typ parity
Tato nastavení se provádějí volbou pracovního módu sériové linky. Tady je třeba prostudovat možnosti sériové linky 8051 v některé literatuře uvedené na této stránce.
Pro dosažení některé ze standardních komunikačních rychlostí (2400,4800,9600,19200 b/s) je nejvhodnější zvolit krystal o frekvenci 11,0592MHz. Těchto rychlostí je totiž možné dosáhnout pouze v režimech 1 a 3, kde je přenosová rychlost odvozena od periody přetečení časovače/čítače 1. Přenosová rychlost je zde odvozena dle vztahu:
Vzorec pro přenosovou rychlost
Příklad:
Chceme přenášet data přes sériovou linku s těmito parametry:
- přenosová rychlost 19200 b/s, 8 datových bitů, bez parity, 1 stop bit
- přenos bude prováděn bez využití přerušení od sériové linky
- data budeme pouze vysílat
          org 0
          jmp zacatek
          org 30H
zacatek:  mov sp,#35H
          mov scon,#01010000B   ;nastavení ser.linky+časovače1
          mov tmod,#00100000B   ;19200 bps,8 databit,1 stopbit,bez parity
          mov 87H,#10000000B    ;zdvojnásobení rychlosti (nastaví bit SMOD)
          mov th1,#253          ;časovač mód 2,ser.linka mód 1
          setb ea               ;povolení přerušení
          setb et1
          setb tr1              ;spuštění časovače1
           .
           .
call vysilani
           .
           .
vysilani:
          clr ti                  ;nulování příznaku dokončeného odvysílání
          mov sbuf,r0             ;vysílání obsahu R0
          jnb ti,$                ;čekání na odvysílání
          clr ti                  ;nulování příznaku dokončeného odvysílání
          mov sbuf,r1             ;vysílání obsahu R1
          jnb ti,$
          clr ti
          ret
end

POZN: Způsob nastavení bitu SMOD >>> Místo příkazu MOV 87H,#10000000B ve výše uvedeném příkladě je vhodnější použít logický součet - tedy ORL 87H,#10000000B. Neovlivníme tak ostatní bity v registru PCON. Vždy ale musíme pracovat s celým bytem, protože registr PCON není bitově adresovatelný. Místo přímé adresy 87H lze psát MOV PCON,#10000000B. Přímá adresa je zde uvedena proto, že ne všechny překladače symbolické označení PCON akceptují.
Dále je nutné zajistit stejné nastavení komunikační parametrů u protějšího zařízení, s kterým bude mikroprocesor komunikovat. Omezíme se zde pouze na případ, který se mi jeví jako často využívaný a praktický, a to případ komunikace 8051 s osobním počítačem PC. Tady je vhodné prostudovat problematiku sériového rozhraní PC, kde jsou obvykle přítomny dva porty standardu RS-232C.
Doporučené zapojení konektorů
V uvedeném příkladě si ukážeme zapojení tzv. bezmodemové - bez řízení toku dat (bez žádného tzv. handshakingu-viz rozhraní RS-232C) Pro spojení 8051 s PC lze v tomto případě použít kabel sestávající ze 3 vodičů s konektory CANNON na obou koncích kabelu. Můžeme použít např. 9-pinový CANNON konektor, nic nám ale nebrání použít i 25-pinový. Na straně 8051 budeme potřebovat 3 signály (RxD,TxD,GND), na straně PC jich bude trochu více. Nejlépe je způsob zapojení vidět na obrázku č.1.
Čísla ve sloupci D25 nebo D9 znamenají čísla vývodů v 25-pinovém nebo 9-pinovém konektoru.

Strana
8051
Spojení 8051 s RS232
Strana PC
(RS-232C)
Obr.1 Spojení 8051 s PC (RS-232C)

SG = signálová zem (GND)


Softwarová obsluha na straně PC
Je možná jak v DOSu, tak ve Windows 95/98. Uvedeme si zde příklad obsluhy programem napsaným v Turbo Pascalu 7.0. Programová obsluha sestává z programové jednotky ibmcom, která obsahuje procedury využívající služeb DOSu, příp. "sahá" přímo na hardware, a z hlavního programu, který volá tyto procedury se zde nastavenými parametry. Původní verze programu byla stažena ze zajímavé stránky o programování, kde najdete obsluhy sériového rozhraní i v jiných programovacích prostředcích (Delphi,Visual Basic,C++).
Zde si můžete stáhnout verzi k našemu příkladu výše uvedenému.

Zpět na hlavní stránku

Copyright © Michal Fuksa 2001