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 2003Dz U 2003 190 1864 zmiana z dnia 2003 09 122003 12 Szkoła konstruktorówid!7112003 12 Radiowy szukacz kabli2003 12 Transofon układ do zmiany wysokości dźwięku12 Ustawa z dnia 14 lutego 2003 r o zmianie ustawy o przezn gruntów rolnych do zal oraz ustWarunki techniczne zmiana 2002 12 16 Dz U 2003 33 2702003 12 Szkoła konstruktorów klasa IINiezależna holenderska komisja Inwazja na Irak w 2003 r była nielegalna (12 01 2010)2003 12 Docbook Using Openoffice Org to Produce Docbook FilesUstawa z dnia 12 grudnia 2003 r O ogólnym epieczeństwie produktów2003 12 Zamek szyfrowy na karty telefoniczneNajniższy bilans ofiar od 2003 roku (01 12 2009)2003 12 Bufor lampowy248 12Nov 2003 History Africa HL paper 3więcej podobnych podstron