116 12. Port szeregowy
cykle maszynowe
wpis do SBUF
TI
r
Rys. 12-2. Wysyłanie i przyjmowanie danych w trybie pracy synchronicznej
Transmisja synchroniczna ma zastosowanie przy przesyłaniu danych pomiędzy mikrokontrolerami, a modułami zewnętrznymi takimi jak sterowniki pól odczytowych LCD lub LED, przetworniki A/C i C/A potencjometry cyfrowe,
itP- . ___
b) Tryb pracy 1.
W trybie pracy 1 dziesięć bitów jest wysyłanych przez wyprowadzenie TXD (P3.1) lub przyjmowanych przez wyprowadzenie RXD (P3.0). Są to: bit startu (stan 0), 8 bitów danych i bit stopu (stan 1). We wszystkich mikrokontrolerach rodziny '51 port szeregowy w tym trybie pracy może być taktowany z wyjścia licznika Tl. Ponadto w mikrokontrolerach 8xC52 można go taktować z licznika T2, a w mikrokontrolerach 80C515/535 z dodatkowego dzielnika :39. Schemat układu portu szeregowego pracującego w trybach transmisji asynchronicznej jest przedstawiony na rysunku 12-3.
Nadawanie rozpoczyna się w momencie przesłania do rejestru SBUF wysyłanej danej. Sygnał „wpis do SBUF". wpisuje 1 do przerzutnika D oraz uaktywnia kontroler nadajnika. Transmisja rozpoczyna się z momentem przepełnienia dzielnika :16. Na wyjściu NADAWANIE pojawia się stan 0 co powoduje wygenerowanie bitu startu (przy stanie 0 na wyjściu DANE). Kolejne przepełnienie licznika :16 zmienia stan na wyjściu DANE na 1 dzięki czemu jest otwarta bramka B3 dla bitów' z rejestru SBUF. Proces wysyłania bitów' danych jest dalej taki sam jak przy transmisji synchronicznej. Gdy zostanie wysłany ostatni bit H»nvrh na wviśrin DANF iest ustawiany stanf). a na wviśrill NADAWANIE stanl, co powoduje wytworzenie bitu stopu. Jednocześnie w stan 1 jest ustawiany znacznik TI. Jest to informacja o zakończeniu procesu wysyłania danych.
Rys. 12-3. Schemat układu portu szeregowego pracującego w trybach transmisji asynchronicznej.
Odbiór danej jest możliwy po ustawieniu w stan 1 znacznika REN oraz wyzerowaniu znacznika RI i rozpoczyna się w momencie wykrycia na wyprowadzeniu RXD zmiany stany z 1 na 0, co powoduje wyzerowanie dzielnika :16 i wpisanie do rejestru przesuwnego odbiornika stanu 111111111. Zerowanie dzielnika powoduje, że nadchodzące kolejno bity są testowane synchronicznie względem bitu startu.
Stan wejścia RXD jest testowany trzykrotnie w okresie czasu przeznaczonym dla każdego bitu, dzięki czemu zwiększa się odporność odbiornika na zakłócenia. Jeżeli test nie będzie pozytywny, to odbiornik rozpoczyna proces odbierania danych od początku oczekując na zmianę stanu na wejściu RXD z 1 na 0. Przy pozytywnym teście przyjęty bit danej jest wpisywany do rejestru przesuwnego, a zawartość rejestru jest przesuwana w lewo. Bity są przyjmowane tak długo, az bit startu znajdzie się na wyjściu rejestru przesuwnego. W tym momencie, podobnie jak przy transmisji synchronicznej, nastąpi przyjęcie jeszcze jednego bitu, po czym nastąpi przepisanie przyjętej danej do rejestru SBUF oraz ustawienie znacznika R1 w stan 1, co kończy proces przyjmowania danej przez port szeregowy. Bit stopu jest wpisywany do znacznika RB8.
Dana z rejestru SBUF musi być odczytana przed nadejściem bitu stopu kolejnej danej, inaczej będzie stracona.