LABORATORIUM
TECHNIKA MIKROPROCESOROWA
Port transmisji szeregowej USART
MCS'51
Opracował:
Tomasz Miłosławski
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera
rodziny MCS-51 przez wbudowany port szeregowy USART z komputerem PC oraz
innymi urzÄ…dzeniam posiadajÄ…cymi synchroniczny lub asynchroniczny port szeregowy
oraz jego konfiguracjÄ… i oprogramowaniem.
2. Charakterystyka portu szeregowego USART MCS-51
Wbudowany port szeregowy umożliwia przesyłanie informacji szeregowej w jednym
z czterech trybów:
·ð tryb 0 półdupleksowa szeregowa transmisja synchroniczna 8-bitowych znaków
z prędkością fS = 1/12 FXTAL,
·ð tryb 1 dupleksowa szeregowa transmisja asynchroniczna 8-bitowych znaków
z prędkością ustalaną programowo,
·ð tryb 2 dupleksowa szeregowa transmisja asynchroniczna 9-bitowych znaków
z prędkością fS = 1/32 FXTAL lub 1/64 FXTAL,
·ð tryb 3 dupleksowa szeregowa transmisja asynchroniczna 9-bitowych znaków
z prędkością ustalaną programowo.
O konfiguracji portu szeregowego decydujÄ… bity rejestru SCON znajdujÄ…cego siÄ™
w obszarze SFR wewnętrznej pamięci danych mikrokomputera (adres 98H).
SCON.7 SM0 ustawienie trybu pracy,
SCON.6 SM1 ustawienie trybu pracy,
SCON.5 SM2 znacznik maskowania odbioru znaku,
SCON.4 REN uaktywnienie odbiornika,
SCON.3 TB8 dziewiąty bit wysyłanego znaku w trybie 2 i 3,
SCON.2 RB8 dziewiÄ…ty bit odebranego znaku w trybie 2 i 3,
SCON.1 TI wskaznik wysłania znaku, znacznik zgłoszenia przerwania,
SCON.0 RI wskaznik odebrania znaku, znacznik zgłoszenia przerwania.
Ustawienie trybu pracy zależne jest od stanu bitów SM0 i SM1, co przedstawia Tabela1:
Tabela 1
SM0 SM1 TRYB
0 0 0
0 1 1
1 0 2
1 1 3
W celu wysłania znaku przez port szeregowy, po uprzednim określeniu trybu pracy
i prędkości transmisji, należy zapisać go do rejestru wyjściowego, natomiast znaki odebrane
znajdują się w rejestrze wejściowym. Oba te rejestry występują pod tą samą nazwą SBUF
i adresem 99H w obszarze SFR wewnętrznej pamięci danych.
2
D0 D1 D2 D3 D4 D5 D6 D7
RxD dane wyj.
D0
TxD CLK
wyj.
Rys.1. Przebiegi czasowe portu szeregowego w trybie 0 nadawanie.
µC 8051
RxD X
SIPO
TxD CLK
Rys.2. Wykorzystanie portu szeregowego w trybie 0 - nadawanie.
D0 D1 D2 D3 D4 D5 D6 D7
RxD dane wej.
wyj. D0
TxD CLK
wyj.
Rys. 3. Przebiegi czasowe portu szeregowego w trybie 0 odbiór.
µC 8051
RxD Y
PISO
TxD CLK
Rys. 4. Wykorzystanie portu szeregowego w trybie 0 odbiór.
3
START D0 D1 D2 D3 D4 D5 D6 D7 STOP
D0
Rys.5. Format danych w trybie 1.
START D0 D1 D2 D3 D4 D5 D6 D7 D8 STOP
D0
Rys.6. Format danych w trybie 2 i 3.
µC8051
TxD
Konwerter
RS232
poziomów
RS-232"!TTL RxD
Rys. 7. PoÅ‚Ä…czenie µC8051 z komputerem PC za pomocÄ… interfejsu RS232C w trybie
1, 2 lub 3.
3. Określenie prędkości transmisji portu szeregowego USART MCS-51
w trybach 1 i 3
Do programowego określenia prędkości transmisji w trybie 1 i 3 wykorzystywany jest
sygnaÅ‚ przepeÅ‚nienia licznika T1 lub licznika T2 (np. w µC8052). W przypadku
wykorzystania licznika T1 w trybie 2, częstotliwość przepełnienia licznika wynosi:
fT1 = FXTAL / (12 * (256-TH1))
stąd prędkość transmisji
fS = fT1 / 32 dla SMOD = 0,
fS = fT1 / 16 dla SMOD = 1,
SMOD bit sterujÄ…cy w rejestrze PCON (adres 97H).
4
Wykorzystanie licznika T2 do określania prędkości transmisji wymaga w rejestrze T2CON
ustawienia bitów sterujących RCLK (T2CON.5) dla odbiornika i TCLK (T2CON.4) dla
nadajnika. Prędkość transmisji wynosi wówczas:
fS = FXTAL / (2 * 16 * (65536 RLD))
gdzie RLD jest wartością początkową wpisaną do rejestrów RLDH i RLDL.
4. Ćwiczenia programowe
Poniżej przedstawiono dwa przykładowe programy komunikacji modułu ABC-02
z komputerem PC za pomocą łącza pracującego w standardzie RS232 przez złącze COM1 lub
COM2 z wykorzystaniem programu Hyper Terminal. Port szeregowy µC51 pracuje
w trybie 1.
Pierwszy z programów wysyła w pętli nieskończonej jeden znak alfanumeryczny do
komputera PC. Działanie programu przedstawia następujący algorytm:
START
Konfiguracja portu szeregowego
tryb 1
Wyzerowanie wskaznika wysłania znaku
Zapis znaku do rejestru
SBUF
N
Znak wysłany ?
T
Rys.8. Algorytm programu wysyłającego znak w pętli nieskończonej.
5
1; ;LISTING 4-1
2: ;Program wysyłania znaku. 8-bitowe znaki 'a' transmitowane są do komputera PC przez
3: ;port szeregowy COM1 lub COM2 i wyświetlane na monitorze pomocą programu Hyper
4: ;Terminal lub podobnego.
5: ;Do określenia prędkości transmisji wykorzystano licznik T1 pracujący w trybie 2.
6: ;Dla fS = 4800bit/s, przy FXTAL = 11.0592MHz, TH1 = 0FAH
7:
8: ORG 0000H
9:
10: mov SCON,#01010000b ;konfiguracja portu szeregowego
11: ;tryb 1, uaktywniony odbiornik
12: mov TMOD,#00100000b ;tryb 2 licznika T1, wykorzystanie licznika T1
13: ;do określenia prędkości transmisji 4800bit/s
14: mov TH1,#0FAH ;wartość początkowa dla licznika T1
15: setb TR1 ;uruchomienie licznika T1
16:
17: PETLA:
18: clr TI ;wyzerowanie wskaznika wysłania znaku
19: mov SBUF,#'a' ;zapis znaku do rejestru SBUF
20: jnb TI,$ ;oczekiwanie na wysłąnie znaku
21:
22: sjmp PETLA ;przejście do wysłania następnego znaku
23:
24: END
6
Drugi program odbiera znaki transmitowane z komputera PC do modułu ABC-02
poprzez wpisywanie ich na klawiaturze w programie Hyper Terminal. Odebrany znak
wyświetlany jest w postaci binarnej za pomocą diod LED sterowanych przez port P2.
Algorytm programu przedstawiono poniżej:
START
Konfiguracja portu szeregowego
tryb 1
Wyzerowanie wskaznika odebrania znaku
N
Znak odebrany ?
T
Odczyt znaku z rejestru
SBUF i zapis do P2
Rys.9. Algorytm programu odbierajÄ…cego znak.
;LISTING 4-2
1: ;Program odbioru znaku. 8-bitowe znaki 'a' transmitowane sÄ… z komputera PC przez
2: ;port szeregowy COM1 lub COM2 za pomocÄ… programu Typer Terminal lub podobnego.
3: ;Odebrane znaki będą wyświetlane w postaci binarnej za pomocą diod LED podłączonych
4: ;do portu P2 modułu ABC-02.
5: ;Do określenia prędkości transmisji wykorzystano licznik T1 pracujący w trybie 2.
6: ;Dla fS = 4800bit/s, przy FXTAL = 11.0592MHz, TH1 = 0FAH
7:
8: org 0000H
9:
10: mov SCON,#01010000b ;konfiguracja portu szeregowego
11: ;tryb 1, uaktywniony odbiornik
12: mov TMOD,#00100000b ;tryb 2 licznika T1, wykorzystanie licznika T1
7
13: ;do określenia prędkości transmisji 4800bit/s
14: mov TH1,#0FAH ;wartość początkowa dla licznika T1
15: setb TR1 ;uruchomienie licznika T1
16:
17: PETLA:
18: clr RI ;wyzerowanie wskaznika odebrania znaku
19: jnb RI,$ ;oczekiwanie na odebranie znaku
20: mov P2,SBUF ;odczyt znaku i zapis do portu P2
21: sjmp PETLA ;przejście do oczekiwania na następny znak
22:
23: end
ZADANIE 1
Napisać program odbierający pojedynczy znak z terminala komputera PC i odsyłający ten
sam znak z powrotem do terminala, tzw. echo. Prędkość transmisji 2400bit/s, tryb 1 portu
szeregowego. Do wysyłania znaków z klawiatury komputera PC należy wykorzystać
program Hyper Terminal.
ZADANIE 2
Napisać program dekodujący znaki będące kodami ASCII przycisków 0, 1, 2, 3, 4, 5, 6, 7
klawiatury komputera PC przesyłane za pomocą łącza RS-232 do modułu ABC-02. Stan
wciśniętego przycisku powinien być sygnalizowany za pomocą odpowiedniej diody LED
podłączonej do portu P2 (0 - P2.0, 1 - P2.1, 2 - P2.2, 3 - P2.3, 4 - P2.4, 5 - P2.5, 6 - P2.6, 7 -
P2.7) w module ABC-02. Prędkość transmisji 4800bit/s, tryb 1 portu szeregowego.
ZADANIE 3
Napisać program odbierający i wysyłający komunikat wieloznakowy na zasadzie echa
z sumą kontrolną EX-OR. Komunikat powinien mieć następujący format:
$abc*[CHSH][CHSL][CR][LF]
gdzie:
$ - jeden znak ASCII, znacznik poczÄ…tku komunikatu
abc - trzy znaków ASCII, treść komunikatu,
* - jeden znak ASCII, znacznik końca treści komunikatu
[CHSH][CHSL] - dwa znaki ASCII reprezentujÄ…ce 8-bitowÄ… liczbÄ™ zapisanÄ… w
kodzie heksadecymalnym, bÄ…dÄ…cÄ… suma kontrolnÄ… EX-OR,
[CR] - pierwszy znacznik końca komunikatu,
[LF] - drugi znacznik końca komunikatu.
Suma kontrolna liczona jest w następujący sposób:
CHS = 0 xor a xor b xor c.
Do wysyłania komunikatu należy wykorzystać program Hyper Terminal wysyłanie pliku.
Prędkość transmisji 4800bit/s, tryb 1 portu szeregowego.
8
5. Przewód łączeniowy komputera PC i modułu ABC-02
1
5
6
9
2
4
Do Do
7
8
3
komputera 3 modułu
8
7
PC 4 ABC-02
2
9
6
5
1
DB9F
DB9F
Rys.10. Przewód łączeniowy do transmisji danych bez kontroli sprzętowej.
Pełny opis sygnałów gniazda DB9 łącza RS232:
1 DCD - Data Carrier Detected - sygnał wykrycia nośnej
2 RXD - Receive Data - odbiór danych
3 TXD - Transmit Data - transmisja danych
4 DTR - Data Terminal Ready - przetworzono dane (gotowość odbioru)
5 GND - Signal Ground - masa
6 DSR - Data Set Ready - wypełniony bufor (gotowość transmisji)
7 RTS - Request to Send Data - żądanie wysyłania
8 CTS - Clear to Send Data - gotowość wysyłania
9 RI - Ring indicator - wskaznik dzwonka
Uwaga
W celu transmisji danych za pomocą łącza RS232 do i z modułu ABC-02, należy
w module ABC-02 zewrzeć styki złącza JP1-1 z JP1-2 i JP2-1 z JP2-2.
9
6. Tablica kodów ASCII (American Standard Code for Information
Interchange)
yródło: www.LookupTables.com
Tablica kodów ASCII rozszerzona
yródło: www.LookupTables.com
10
Wyszukiwarka
Podobne podstrony:
TM UARTles09 page handling tmTM 08 termin IFanuc 11M [TM] CQ07 16 2les09 cre ui tmUlotka Pytania dotyczące TS, ETPCz, TM6 TM w1GST65 TM enjp wykl TM13tm gimp kulaTM etap 1BM w TM Stobiecka Technika drabinkowa wykład turystyka(1)Ener 4 TMFanuc 5T Mazak [TM] L275 82 2Fanuc 0M Roku [TM] MV35 15 1TM 9 1305 201 34 Small Arms Ammunition to 30 Millimeter Inclusiveinstrukcja TM cw02 ASMwięcej podobnych podstron