12 2003 98 100


K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 10
BudujÄ…c urzÄ…dzenie wykorzystujÄ…ce mikrokontroler, musimy
pomyÅ›leĘ rÛwnieÅ‚ o pewnej liczbie elementÛw
wspÛÅ‚pracujÄ…cych, ktÛre realizujÄ… potrzebne nam funkcje.
W niektÛrych sytuacjach wystarczajÄ…ce staje siÍ siÍgniÍcie do
zasobÛw sprzÍtowych wykorzystywanego mikrokontrolera, co jest
bardzo korzystne zarÛwno ze wzglÍdÛw komplikacji
i niezawodności urządzenia, jak i jego ceny.
do nadawania liniÍ TxD, sterujÄ…cych rejestru SCON moÅ‚na
a do odbioru liniÍ RxD. Dane znaleüĘ w specyfikacji 8051. Nas in-
transmitowane sÄ… w standardowym teresowaĘ tutaj bÍdÄ… jedynie bity:
formacie 10-bitowym (bit startu - 0, SM0 i SM1 - decydujÄ…ce o trybie
osiem bitÛw danych, bit stopu - 1). pracy - dla trybu 1 bÍdÄ… ustawio-
Jełeli ładne dane nie są przesyłane, ne odpowiednio na 0 i 1.
Chociał omawiane modele mikro- to obydwie linie pozostają w stanie REN - bit włączający (dla REN=1) od-
kontrolerÛw '51 to jedne z uboÅ‚szych wysokim. PrÍdkośĘ transmisji jest biornik ukÅ‚adu transmisji szeregowej.
reprezentantÛw tej rodziny, to czÍs- ustawiana programowo poprzez od- RI - bit ustawiany sprzÍtowo na
to ich mołliwości wystarczają zupeł- powiednie zaprogramowanie licznika 1 po odebraniu bajtu.
nie do zrealizowania caÅ‚ego urzÄ…dze- T1 - naleÅ‚y zatem zwrÛciĘ uwagÍ TI - bit ustawiany sprzÍtowo na
nia bez dodatkowych ukÅ‚adÛw pery- na czÍstotliwośĘ taktowania mikro- 1 po zakoÒczeniu nadawania bajtu.
feryjnych. SzczegÛÅ‚owe opisy funk- kontrolera, gdyÅ‚ nie zawsze bÍdzie Programowa realizacja wysÅ‚ania
cjonowania ukÅ‚adÛw peryferyjnych moÅ‚na uzyskaĘ standardowe prÍdkoÅ›- czy odebrania bajtu z ukÅ‚adu trans-
wbudowanych w mikrokontroler znaj- ci transmisji. W przypadku urzÄ…dzeÒ misji szeregowej jest niezmiernie
dzie Czytelnik w specyfikacjach pro- wykorzystujÄ…cych transmisjÍ szerego- prosta. Polega ona jedynie na odpo-
ducenta, tutaj przedstawimy pracÍ wÄ… najczÍÅ›ciej wykorzystuje siÍ czÍs- wiednim skonfigurowaniu portu oraz
tych ukÅ‚adÛw w najczÍÅ›ciej wyko- totliwośĘ kwarcu rÛwnÄ… 11,0592 sprawdzaniu stanu bitÛw RI i TI.
rzystywanych przypadkach. MHz pozwalającą na uzyskanie Przy odbiorze danych naleły spraw-
wiÍkszoÅ›ci standardowych prÍdkoÅ›ci dzaĘ stan bitu RI i w przypadku po-
Komunikacja szeregowa do 57600 bd. Dla ukÅ‚adu liczniko- jawienia siÍ stanu 1 naleÅ‚y odczytaĘ
W zwiÄ…zku z ogromnym rozpo- wego T1 wykorzystywanego w trybie odebranÄ… informacjÍ z rejestru SBUF
wszechnieniem siÍ komputerÛw klasy 2 (automatyczne przeÅ‚adowywanie) oraz wyzerowaĘ bit RI. W miarÍ
PC, budowane obecnie systemy mik- zawartośĘ rejestru TH1 (wartośĘ licz- bezzwłoczny odczyt odebranego baj-
roprocesorowe majÄ… zazwyczaj moÅ‚li- nika po przeÅ‚adowaniu) moÅ‚na wy- tu jest konieczny ze wzglÍdu na
wośĘ komunikacji z komputerem nad- znaczyĘ z zalełności (dla podanej mołliwośĘ zamazania jego zawartoś-
rzÍdnym. Czasami zachodzi teÅ‚ ko- czÍstotliwoÅ›ci kwarcu): TH1=256- ci przez kolejny odebrany bajt (na
niecznośĘ wspÛÅ‚pracy kilku komuni- 28800/V (dla bitu SMOD=0, V - odczyt mamy w najgorszym przypad-
kujÄ…cych siÍ mikrokontrolerÛw. W ta- prÍdkośĘ transmisji w bodach) lub ku czas rÛwny czasowi transmisji
kich wypadkach najczÍÅ›ciej wykorzys- TH1=256-57600/V (dla SMOD=1). Bit caÅ‚ego bajtu). W przypadku nadawa-
tuje siÍ transmisjÍ szeregowÄ… z wyko- SMOD (rejestr PCON) jest bitem nia wystarczy zapisaĘ danÄ… do trans-
rzystaniem wbudowanego w wiÍkszoÅ›- konfiguracyjnym ukÅ‚adu transmisji misji do rejestru SBUF - proces
ci mikrokontrolerÛw '51 ukÅ‚adu trans- szeregowej obsÅ‚ugujÄ…cym blokadÍ we- transmisji szeregowej rozpocznie siÍ
misji szeregowej. Wykorzystanie takie- wnÍtrznego dzielnika przez dwa
go, a nie innego Å›rodka komunikacji czÍstotliwoÅ›ci okreÅ›lajÄ…cej szybkośĘ Tab. 1
ma tÍ zaletÍ, Å‚e realizacja transmisji transmisji. W tab. 1 przedstawiono
szeregowej jest obsÅ‚ugiwana sprzÍtowo wartoÅ›ci przeÅ‚adowania licznika T1
- odpada zatem koniecznośĘ pisania w zaleÅ‚noÅ›ci od oczekiwanej prÍd-
odpowiednich procedur obsługi, a co kości transmisji.
za tym idzie nie musimy rezerwowaĘ Do programowej obsługi układu
odpowiedniej mocy obliczeniowej pro- transmisji szeregowej wykorzystywa-
cesora na obsłułenie transmisji. ne są rejestry: SCON - słułący do
W przypadku mikrokontrolerÛw konfiguracji i obsÅ‚ugi transmisji oraz
rodziny '51 najczÍÅ›ciej wykorzystuje SBUF - bÍdÄ…cy jednobajtowym bu-
siÍ ukÅ‚ad transmisji szeregowej skon- forem nadajnika i odbiornika. Dodat-
figurowany do pracy w trybie 1. Tak kowo wykorzystywany jest teÅ‚ omÛ-
zaprogramowany port szeregowy pra- wiony wcześniej bit SMOD rejestru
cuje asynchronicznie, wykorzystujÄ…c PCON. Znaczenie i poÅ‚oÅ‚enie bitÛw
Elektronika Praktyczna 12/2003
98
K U R S
ziomy napiÍĘ niÅ‚ stosowany przez
mikrokontrolery standard TTL. W ce-
lu poÅ‚Ä…czenia konieczne staje siÍ
wykorzystanie dodatkowego układu
zapewniajÄ…cego konwersjÍ. MoÅ‚na do
tego wykorzystaĘ rÛÅ‚ne metody, po-
czÄ…wszy od tranzystorÛw i bramek
CMOS, jednak obecnie najczÍÅ›ciej
wykorzystuje siÍ scalony konwerter
poziomÛw MAX232 (lub zamiennik),
ktÛry ma tÍ ogromnÄ… zaletÍ, Å‚e za-
silany standardowym napiÍciem +5V
sam troszczy siÍ o wytworzenie na-
piÍcia dodatniego i ujemnego zgod-
nego ze standardem RS-232 oraz jest
stosunkowo tani i Å‚atwo dostÍpny.
Schemat takiego konwertera pokaza-
no na rys. 34. Niekiedy do uzyska-
nia komunikacji mikrokontrolera
z komputerem PC naleły zadbaĘ
o połączenie ze sobą od strony
zÅ‚Ä…cza RS-232 PC-ta wyprowadzeÒ
Rys. 34
RTS-CTS oraz DTR-DSR-DCD (rys.
automatycznie. Po zakoÒczeniu trans- niem przeznaczonym dla prostego 35), informujÄ…cych komputer o goto-
misji zostanie ustawiony bit TI, ktÛ- ukÅ‚adu testera portu RS-232. Realizu- woÅ›ci mikrokontrolera do odbioru/
rego sprawdzanie pozwala na stwier- je on bardzo prosty algorytm polega- nadawania danych (układ transmisji
dzenie gotowości układu do trans- jący na odsyłaniu odebranego bajtu szeregowej '51 nie jest wyposałony
misji kolejnej danej. Po programo- i pozwalajÄ…cy w ten sposÛb sprawdziĘ w funkcjÍ sprzÍtowego blokowania
wym wyzerowaniu TI moÅ‚na do dziaÅ‚anie komunikacji pomiÍdzy urzÄ…- transmisji - transmisja moÅ‚e byĘ
SBUF wpisaĘ kolejną daną do prze- dzeniami. Po włączeniu zasilania na- kontrolowana jedynie na drodze pro-
sÅ‚ania (zerowanie TI nie jest ko- stÍpuje wysÅ‚anie przez ukÅ‚ad trans- gramowej). OczywiÅ›cie naleÅ‚y rÛw-
nieczne do rozpoczÍcia kolejnej misji szeregowej tekstu ìOKî. Trans- nieÅ‚ zadbaĘ o ustawienie identycz-
transmisji, umoÅ‚liwi nam jednak misja odbywa siÍ z prÍdkoÅ›ciÄ… 57600 nej prÍdkoÅ›ci transmisji, gdyÅ‚
okreÅ›lenie chwili jej zakoÒczenia). (dla kwarcu 11,0592 MHz). w przeciwnym wypadku prawidÅ‚owy
W mikrokontrolerach '51 ustawienie Przy wykorzystywaniu portu sze- przesyÅ‚ danych nie bÍdzie moÅ‚liwy.
bitÛw RI lub TI moÅ‚e rÛwnieÅ‚ byĘ regowego do poÅ‚Ä…czenia z kompute- JeÅ‚eli transmisja szeregowa bÍ-
ürÛdÅ‚em przerwania, jednak brak jest rem PC naleÅ‚y pamiÍtaĘ, Å‚e stan- dzie wykorzystywana do komunika-
sprzÍtowej moÅ‚liwoÅ›ci rozstrzygniÍ- dard RS-232 wykorzystuje inne po- cji pomiÍdzy dwoma mikrokontrole-
cia, ktÛry bit wywoÅ‚aÅ‚ przerwanie
(trzeba to sprawdziĘ programowo na
List. 13
początku procedury obsługi przerwa-
;Konfiguracja
nia, rÛwnieÅ‚ programowo trzeba wy-
MOV TMOD,#020H ;licznik T1 w trybie 2
zerowaĘ dany bit przed opuszcze-
MOV PCON,#080H ;ustawienie bitu SMOD=1 w rej. PCON
niem procedury obsługi przerwania).
MOV TL1,#250
Na list. 13 pokazano prosty program
MOV TH1,#250 ;prędkość transmisji 9600
przeznaczony do odbioru dwubajto-
CLR SM0 ;ustawienie
wych paczek danych.
SETB SM1 ;trybu pracy 1
KaÅ‚dy z dwÛch odebranych baj-
CLR RI ;wyzerowanie flagi
tÛw zostaje zapamiÍtany w odrÍbnej
SETB TR1 ;włączenie licznika T1
komÛrce pamiÍci. Do rozstrzygniÍcia,
ktÛry bajt jest odbierany, wykorzys- SETB REN ;wÅ‚Ä…czenie odbiornika
tywana jest zmienna bitowa BYL1
CLR BYL1 ;wyzerowanie flagi odbioru bajtu 1
ustawiana w chwili odebrania pierw-
;Podprogram obsługi odbioru
szego bajtu i zerowana po odebraniu
ODBIERZ:
drugiego. Program ten mÛgÅ‚by zostaĘ
JB RI,JEST1 ;sprawdzenie czy nadeszła dana
napisany tak, aby bezpośrednio po
RET ;i powrót do programu głównego jeśli nie
odebraniu pierwszego bajtu oczeki- JEST1:
CLR RI ;wyzerowanie flagi
waĘ na nadejście kolejnego, jednak
JB BYL1,JEST2 ;sprawdzenie czy wcześniej odebrano pierwszy bajt,
naleÅ‚y pamiÍtaĘ o tym, Å‚e prÍdkośĘ ;jeÅ›li tak to skok do odbioru bajtu 2
transmisji zawsze bÍdzie duÅ‚o niÅ‚-
SETB BYL1 ;ustawienie flagi odbioru pierwszego bajtu
sza od prÍdkoÅ›ci wykonywania pro- MOV PIERWSZY,SBUF ;zapamiÄ™tanie zawartoÅ›ci bufora w komórce pamiÄ™ci
;zadeklarowanej jako PIERWSZY
gramu, wiÍc takie bezczynne oczeki-
RET ;powrót do programu głównego
wanie jest bezcelowe i marnuje moc JEST2:
CLR BYL1 ;wyzerowanie flagi (następny będzie bajt pierwszy)
obliczeniowÄ… mikrokontrolera.
MOV DRUGI,SBUF ;zapamiętanie drugiego odebranego bajtu
Drugi przedstawiony program (list.
RET ;powrót do programu głównego
14) jest kompletnym oprogramowa-
Elektronika Praktyczna 12/2003
99
K U R S
rami, wÛwczas sposÛb ich poÅ‚Ä…cze-
List. 14
nia zalełny jest od odległości łą-
;;Program testujÄ…cy port szeregowy
czącego je przewodu. Jełeli ograni- ;;Konfiguracja
MOV TMOD,#020H ;licznik T1 w trybie 2
czymy siÍ do poÅ‚Ä…czenia nie dÅ‚uÅ‚-
szego nił 1...2m (zwłaszcza przy MOV PCON,#080H ;ustawienie bitu SMOD=1 w rej. PCON
MOV TL1,#255
niskich prÍdkoÅ›ciach, nieprzekracza-
MOV TH1,#255 ;prędkość transmisji 57600
jących 9600 bd), mołemy wtedy
CLR SM0 ;ustawienie
pozostaĘ przy standardzie TTL
SETB SM1 ;trybu pracy 1
i bezpoÅ›rednio poÅ‚Ä…czyĘ pomiÍdzy
CLR RI ;wyzerowanie flagi (nic nie odebrano)
sobÄ… wyprowadzenia RxD i TxD
SETB TI ;ustawienie flagi (gotowy do nadawania)
mikrokontrolerÛw (RxD jednego SETB TR1 ;wÅ‚Ä…czenie licznika T1
z TxD drugiego) oraz połączyĘ ma-
SETB REN ;włączenie odbiornika
sy obu urzÄ…dzeÒ. Dodatkowo naleÅ‚y
;;Transmisja  OK
zastosowaĘ rezystory podciągające te
MOV SBUF,#79 ;wysłanie kodu ASCII znaku  O
linie do Vcc o rezystancji 1...2k&!
CLR TI ;wyzerowanie flagi
ze wzglÍdu na koniecznośĘ szybsze-
JNB TI,$ ;oczekiwanie na zakończenie transmisji
;poprzedniego bajtu
go przeładowania stosunkowo dułej
MOV SBUF,#75 ;wysłanie kodu ASCII znaku  K
pojemności przewodu połączeniowe-
CLR TI ;wyzerowanie flagi
go. JeÅ‚eli odlegÅ‚ośĘ bÍdzie wiÍksza,
;;Pętla główna
to nic nie stoi na przeszkodzie, aby
PETLA:
zastosowaĘ dwa identyczne układy
konwertera omÛwionego wyÅ‚ej. Dla
JNB RI,$ ;sprawdzanie czy odebrano bajt, jeśli nie, to czekaj
duÅ‚o wiÍkszych odlegÅ‚oÅ›ci (powyÅ‚ej
CLR RI ;wyzerowanie flagi
20 m) moÅ‚e staĘ siÍ konieczne za-
MOV R7,SBUF ;zapamiętanie danej w rejestrze
stosowanie innego standardu - mo-
JNB TI,$ ;czekaj, jeśli jeszcze nadaje
łe to byĘ np. RS-485 lub inny wy-
MOV SBUF,R7 ;nadanie zapamiętanej danej
korzystujÄ…cy magistralÍ symetrycznÄ….
CLR TI ;wyzerowanie flagi
Paweł Hadam, EP
SJMP PETLA ;skok na poczÄ…tek
pawel.hadam@ep.com.pl
Elektronika Praktyczna 12/2003
100


Wyszukiwarka

Podobne podstrony:
A2 archiwizacyjna 12 2003
Dz U 2003 190 1864 zmiana z dnia 2003 09 12
2003 12 Szkoła konstruktorówid!711
2003 12 Radiowy szukacz kabli
2003 12 Transofon układ do zmiany wysokości dźwięku
12 Ustawa z dnia 14 lutego 2003 r o zmianie ustawy o przezn gruntów rolnych do zal oraz ust
Warunki techniczne zmiana 2002 12 16 Dz U 2003 33 270
2003 12 Szkoła konstruktorów klasa II
Niezależna holenderska komisja Inwazja na Irak w 2003 r była nielegalna (12 01 2010)
2003 12 Docbook Using Openoffice Org to Produce Docbook Files
Ustawa z dnia 12 grudnia 2003 r O ogólnym epieczeństwie produktów
2003 12 Zamek szyfrowy na karty telefoniczne
Najniższy bilans ofiar od 2003 roku (01 12 2009)
2003 12 Bufor lampowy
248 12
Nov 2003 History Africa HL paper 3

więcej podobnych podstron