'
Zadaniem portu szeregowego jest zapewnienie komunikacji poprzez łącze szeregowe między mikrokontrolerem a urządzeniami zewnętrznymi. Dane są wysyłane bit po bicie poczynając od najmniej znaczącego bitu. Dane mogą być wysyłane i przyjmowane synchronicznie lub asynchronicznie.
Przy transmisji synchronicznej przesyłanym danym towarzyszy sygnał synchronizujący, względem którego określa się stany przesyłanych bitów. Zaletą transmisji synchronicznej jest jej odporność na dewiacje częstotliwości sygnału taktującego, natomiast wadą - dwie linie przesyłowe: jedna dla danych a druga dla sygnału taktującego.
Przy transmisji asynchronicznej (UART) przesyłane są tylko dane, a ‘sygnały taktujące są wytwarzane w nadajniku i odbiorniku niezależnie od siebie. Dlatego dla poprawnego odebrania danych nadajnik i odbiornik muszą być taktowane sygnałem o takiej samej częstotliwości. Wymaga to generatorów o wysokiej stabilności i uzgodnienia co do prędkości transmisji. Dla ułatwienia nawiązania łączności prędkości transmisji zostały unormowane. Są one podane w normie opisującej łącze szeregowe RS 232.
Opisany poniżej port szeregowy jest identyczny dla całej rodziny mikrokontrolerów iShjOprócz niego, w poszczególnych typach tej rodziny mogą występować urządzenia do innych rodzajów transmisji, takich jak CAN, I2C itp. W -mikrokontrolerach spoza rodziny '51 transmisja szeregowa może być realizowana zupełnie inaczej.
W rodzinie '51 port szeregowy może pracować w czterech trybach'! frryby pracy różnią się między sobą rodzajem transmisji (synchroniczną, asynchroniczna), liczbą przesyłanych bitów w.jednej ramce i źródłem sygnałów taktujących port szeregowy.
Tryb pracy portu szeregowego, źródło jego taktowania itd. są wybieranie poprzez odpowiednie ustawienie znaczników w rejestrze SCON:
rejestr
SCON
SMO | SM1 | SM2 [ REN fl TB8 | RB8 | TI | RI
^ /» .\ . . ‘. i \ I I
adres 98h rw = 0
n ~'i0 OcMrftiokU \
Rola znaczników jest następująca:
SMO, SM1 - wybór trybu pracy
j}VU)
tryb pracy rodzaj transmisji częstotliwość taktująca
synchroniczna, 8 bitów asynchroniczna, 8 bitów asynchroniczna, 9 bitów asynchroniczna, 9 bitów
zmienna
f<*/64 lub f^/32
zmienna
o