OPROGRAMOWANIE APARATURY POMIAROWEJ OPROGRAMOWANIE APARATURY P Programowa obsługa klawiatury PC AT oraz odbiór informacji z pilota TV w kodzie RC- Laboratorium. Cel ćwiczenia Celem ćwiczenia jest zapoznanie studentów w sposób praktyczny z odbiorem informacji z standardowego pilota telewizyjnego nadającego w kodzie RC- (odbiór informacji z pilota telewizyjnego realizowany jest programowo poprzez czujnik sygnału podczerwonego), programową obsługą klawiatury PC AT oraz pokazanie darmowych narzędzi służących do uruchamiania systemów mikroprocesorowych na przykładzie programu monitora PAULMON. Wykorzystywana w ćwiczeniu makieta umożliwia również obsługę wyświetlacza LCD. Programowa obsługa wyświetlacza LCD Interfejs sterownika wyświetlacza LCD składa się z ośmiu linii danych D0..D oraz trzech linii sterujących: R/W, RS oraz E. Sterownik wyświetlacza LCD posiada dwa rodzaje pamięci RAM. Pamięć ekranu (DD RAM) zawiera kody znaków aktualnie wyświetlanych na polu odczytowym. Wyświetlenie znaku na odpowiedniej pozycji pola odczytowego wyświetlacza LCD polega więc na wpisaniu jego kodu do pamięci DD RAM. Kody poszczególnych znaków podano w tabeli (dodatek A). Linia R/W informuje sterownik wyświetlacza o pożądanym kierunku przepływu informacji, tj. zapisie do sterownika (R/W = 0) lub odczycie ze sterownika(r/w = ). Na podstawie stanu linii RS sterownik dokonuje interpretacji samej informacji przy zapisie (R/W = 0) jako: rozkaz do wykonania (RS = 0), kod znaku do wyświetlenia (RS = ), natomiast przy odczycie (R/W = ) wystawia na szynę danych: bajt w którym najstarszy bit informuje o zajętości sterownika, a pozostałe o aktualnym adresie w pamięci DDRAM lub CGRAM (RS = 0), kod znaku z pamięci DD RAM lub CG RAM (RS = ). Wyświetlacz LCD widziany jest jako komórki zewnętrznej pamięci danych. Zatem jego obsługa od strony programowej realizowana jest z wykorzystaniem instrukcji właściwych dla zapisu/odczytu zewnętrznej pamięci danych mikrokontrolera. Linie R/W i RS podłączone są bezpośrednio do linii A i szyny adresowej systemu mikroprocesorowego. Sterowanie nimi odbywa się zatem przez odpowiednie ustawienie dwóch najmłodszych bitów adresu podczas operacji zapisu/odczytu zewnętrznej pamięci danych mikrokontrolera (patrz punkt.). Linia E sterowana jest automatycznie w sposób sprzętowy i ustawienie jej odpowiedniego stanu nie wymaga ingerencji programowej. W tabeli (dodatek A) przedstawiono rozkazy dostępne przy sterowaniu wyświetlaczem LCD. Do poprawnej pracy wyświetlacza wymagane jest co najmniej ustawienie: parametrów pracy (ang. Function Set), sterowania wyświetlaniem (ang. Display on/off Control) i trybu wprowadzania znaków (ang. Entry Mode Set). Znaczenie poszczególnych bitów wymienionych rozkazów znajduje się również w tabeli. Przed wysłaniem jakiejkolwiek informacji do sterownika wyświetlacza, należy sprawdzić jego gotowość do jej przyjęcia przez odczytu informacji ze sterownika (przy RS = 0 i R/W = ) tak długo, aż najstarszy bit oznaczony BF nie przyjmie wartości 0. Na rys. (dodatek A) pokazano graficznie adresy odpowiadające poszczególnym pozycjom na polu odczytowym dla wyświetlacza x. Znak, którego kod zostanie wysłany do sterownika, pojawi się zawsze na pozycji określonej aktualną zawartością licznika adresu AC sterownika wyświetlacza, a następnie adres ten zostanie zwiększony lub zmniejszony w zależności od ustawienia bitu I/D rozkazu ustalającego tryb wprowadzania znaków (ang. Entry Mode Set). Bieżąca wartość licznika adresów AC sterownika wyświetlacza określa również pozycję, na której znajduje się kursor o ile został on włączony przez ustawienie odpowiedniego bit. Dlatego określenia adres pozycji znaku, adres kursora i adres DD RAM są jednoznaczne. W celu zmiany zawartości licznika adresu AC, a jednocześnie przemieszczenia kursora na odpowiednią pozycję pola odczytowego wyświetlacza, należy użyć funkcji ustawiającej adres kursora (ang. Set DDRAM address).
Pamięć generatora znaków (CG RAM) przechowuje matryce znaków (w pamięci przechowującej tablice kodów znaków odpowiadają im adresy 00H..0FH; patrz tabela, dodatek A), które można dowolnie zaprogramować. Każda matryca składa się z bajtów. Format zapisu przedstawiono w tabeli. Tabela. Format zapisu znaków użytkownika Adres CG RAM Dane dwójkowo dwójkowo n n n 0 0 0 0 0 0 0 0 0 0 0 n n n 0 0 0 0 0 0 0 n n n 0 0 0 0 0 0 0 0 n n n 0 0 0 0 0 0 0 n n n 0 0 0 0 0 0 0 0 n n n 0 0 0 0 0 0 0 n n n 0 0 0 0 0 n n n 0 0 0 0 0 0 0 0 nnn - określa numer jednego z ośmiu znaków użytkownika W celu zaprogramowania powyższego znaku pod adresem 0H w tablicy kodów znaków, należy wysłać rozkaz ustawiający adres pamięci CG RAM na wybraną wartość, a następnie sukcesywnie przesyłać kolejne dane określające wzorce linii znaku. W celu wyświetlenia tak zaprojektowanego znaku należy zapisać do pamięci DD RAM sterownika wyświetlacza jego kod (w rozpatrywanym przykładzie wynosi on 0H). Wysłanie rozkazu ustawiającego adres pamięci CG RAM powoduje, że każda następna operacja zapisu lub odczytu przy RS = będzie odnosiła się do wspomnianej pamięci. Jednocześnie adres po każdej takiej operacji będzie automatycznie inkrementowany. Identycznie następstwa dotyczą wysłania rozkazu ustawiającego adres pamięci DD RAM, dlatego po ewentualnym procesie programowania znaku (czyli odnoszenia się do pamięci CG RAM),a przed procesem wysyłania kodów znaków do wyświetlenia, należy wysłać rozkaz ustawiający odpowiedni adres w pamięci DD RAM. Znak. Odbiór informacji z pilota TV nadającego w kodzie RC Kodowanie RC jest popularnym sposobem formatowania cyfrowych sekwencji sterujących dla urządzeń audio-wideo, definiując sposób transmisji bitów, czasy, rozmiar ramki, a także znaczenie poszczególnych bitów. Kod RC umożliwia przekazanie rozkazów do różnych urządzeń (każde urządzenie ma przypisany właściwy dla swojego typu adres i reaguje tylko na przeznaczone dla niego rozkazy). Można też traktować rozkazy i adresy jako wspólny zbiór komunikatów, co umożliwia przesłanie do jednego urządzenia 0 poleceń. Twórca systemu RC (firma Philips) przyporządkował na stałe część adresów wybranym grupom urządzeń (tabela ), jak również część rozkazów wybranym poleceniom (tabela ). Tabela. Adresu urządzeń sterowanych kodem RC Adres (dziesiętnie) Urządzenie 00 Odbiornik telewizyjny 0 Odbiornik telewizyjny 0 Teletekst 0 Magnetowid 0 Magnetowid Przedwzmacniacz audio Radioodbiornik Magnetofon Przedwzmacniacz audio 0 Odtwarzacz CD Tuner Satelitarny 0,,,,,, Adresy zwykle niewykorzystane, które można przydzielić samodzielnie skonstruowanym urządzeniom Urządzenia fabryczne zawierają zazwyczaj wyspecjalizowane układy do nadawania np. SA0 i odbioru np. SA, które współpracują z pozostałymi blokami urządzenia. Ze względu na stosunkowo małą szybkość transmisji, odbiór ramki informacyjnej nadawanej w kodzie RC można przeprowadzić programowo z wykorzystaniem detektora promieniowania podczerwonego i mikrokontrolera.
Tabela. Numery rozkazów w kodzie RC (telewizor) Numer (dziesiętnie) Polecenie 00 0 Cyfry od 0 do, numery kanałów TV Stand by (wyłączenie telewizora z zapamiętaniem ustawionych parametrów Mute (wyciszenie dźwięku) Normalizacja Zwiększenie głośności Zmniejszenie głośności Zwiększenie jaskrawości Zmniejszenie jaskrawości 0 Zwiększenie nasycenia Zmniejszenie nasycenia Zwiększenie poziomu tonów niskich Zmniejszenie poziomu tonów niskich Zwiększenie poziomu tonów wysokich Zmniejszenie poziomu tonów wysokich Balans w prawo Balans w lewo.. Nadawanie i odbiór informacji Przesyłanie sygnału przy użyciu fali świetlnej w zakresie podczerwieni stosowane w pilotach TV i jego odbiór przedstawiono schematycznie na rys.. Sygnał prostokątny o zadanej częstotliwości steruje bramką tranzystora sukcesywnie zapalając i gasząc diodę emitującą światło w zakresie podczerwieni. Układ odbiornika posiada filtr, który wychwytuje tylko sygnał o zadanej częstotliwości. Dzięki wbudowanemu demodulatorowi wykrycie transmisji sygnału powoduje przełączenie wyjścia odbiornika w stan niski. Brak sygnału ustawia wyjście odbiornika w stan wysoki. +V +V Rys.. Schematyczne zobrazowanie nadawania i odbioru informacji przez pilot telewizyjny Każdy bit ramki informacyjnej nadawany jest w tzw. kodzie bifazowym (nazywanym również kodem Manchester), co przedstawiono na rys.. Kodowanie bifazowe polega na zmianie fazy sygnału na przeciwny w połowie czasu trwania bitu. Jeśli transmitowany bit ma wartość logiczną, to w pierwszej połowie czasu jego trwania wyjście odbiornika podczerwieni przyjmuje stan wysoki, natomiast w drugiej połowie stan niski. Podobnie przy transmisji bitu o wartości logicznej 0; w pierwszej połowie czasu na wyjściu odbiornika jest stan niski, w drugiej stan wysoki. nadajnik odbiornik a) b) okresy okresy okresy okresy Rys.. Sposób nadawania informacji logicznej w kodzie bifazowym: a) jedynki, b) zera W pilotach nadających w kodzie RC czas trwania pojedynczego bitu wynosi okresy sygnału sterującego pracą nadajnika. Ze względu na kodowanie bifazowe, stan wyjścia zmienia się na przeciwny po okresach. Dzięki określeniu wszystkich czasów w standardzie w powiązaniu z częstotliwością sygnału sterującego pracą nadajnika, możliwa jest praca w jednym pomieszczeniu kilku nadajników kodu RC o różnych częstotliwościach.
.. Ramka informacyjna Wciśnięcie dowolnego klawisza na pilocie TV powoduje wygenerowanie -bitowej ramki informacyjnej pokazanej schematycznie na rys., która przesyłana jest szeregowo do odbiornika podczerwieni. Dwa pierwsze bity S są bitami startu i zawsze mają wartość. Następny bit T jest nazywany bitem kontrolnym lub przełączania. Jego wartość zmienia się po każdorazowym wciśnięciu i zwolnieniu przycisku. Zatem przytrzymanie przycisku powoduje wygenerowanie ciągu identycznych ramek (w odstępach czasu równych czasowi trwania 0 bitów), w których bit T ma stale taką samą wartość. Pięć kolejnych bitów A określa adres urządzenia, dla którego przeznaczony jest rozkaz zakodowany na sześciu następnych bitach C0 C. 0 0 0 0 0 0 S S T A A A A A C C C C C C bitów Rys.. Przykładowa ramka informacyjna w kodzie RC bity 0 bitów bitów Rys.. Sukcesywne wysyłanie tej samej ramki informacyjnej.. Programowy odbiór ramki informacyjnej W makiecie dydaktycznej odbiór sygnału z pilota TV odbywa się z wykorzystaniem odbiornika podczerwieni TFMS0. Układ posiada w swojej strukturze wszystkie elementy potrzebne do odebrania zmodulowanego sygnału, wzmocnienia go i demodulacji, otrzymując na wyjściu podłączonym do wejścia INT mikrokontrolera ciąg impulsów prostokątnych (rys.) gotowych do dalszej obróbki i analizy. Tabela. Czasy związane z nadawaniem ramki informacyjnej w kodzie RC (częstotliwość fali nośnej khz) Opis Obliczenie Czas Okres sygnału, [μs] Czas trwania jednego bitu, [μs], [ms] Czas trwania ramki informacyjnej, [ms], [ms] Czas trwania przerwy pomiędzy ramkami 0, [ms], [ms] Najprostszy sposób poprawnego odczytu ramki informacyjnej wymaga wykrycia jej początku i interpretacji wartości poszczególnych bitów. Można tego dokonać sugerując się informacjami podanymi na rys.., bita bit, ms, ms bit, ms bit, ms bit, ms S = S = T = 0 S = S = T = 0 Rys.. Przykładowy sposób odczytu bitów ramki informacyjnej nadawanej w kodzie RC Przy braku transmisji ramki informacyjnej wyjściowa odbiornika podczerwieni (a tym samym INT mikrokontrolera, do której podłączone jest wyjście odbiornika podczerwieni w niniejszej makiecie dydaktycznej) znajduje się w stanie wysokim. Pierwszy transmitowany bit ramki ma wartość logiczną, dlatego wykrycie zmiany ze stanu wysokiego na niski daje informację, że właśnie znajdujemy się w połowie nadawania Dzięki bitowi T możliwe jest rozróżnienie, czy odebrana ramka została wygenerowana przez kolejne wciśnięcie tego samego przycisku, czy też jest wynikiem przytrzymania przycisku przez dłuższy okres czasu.
/ bita 0, ms / bita 0, ms / bita 0, ms / bita 0, ms / bita 0, ms / bita 0, ms / bita 0, ms 0, ms / bita pierwszego bitu startowego ramki. W celu poprawnego odczytania wartości kolejnych bitów należy sprawdzać stan linii INT w pierwszej połowie czasu trwania każdego kolejnego bitu, gdyż wtedy stan linii INT odpowiada wartości przesyłanego bitu informacji. W tym celu po wykryciu zmiany z stanu wysokiego na niski przy pierwszym bicie startowym, a tym samym wykryciu początku ramki, należy odmierzyć czas równy, bitu, jeśli kolejny bit startowy jest pomijany (patrz rys.) lub 0, bitu - jeśli nie jest. Odmierzając teraz kolejno czasy równe bitowi i sukcesywnie odczytując stan linii INT, możliwy jest odczyt wartości dalszych bitów ramki. Podczas nadawania ramki informacyjnej może dojść do zasłonięcia diody emitującej promieniowanie podczerwone w pilocie. Stosując sposób odbioru przedstawiony na rys. nie ma możliwości stwierdzenia, czy transmisja ramki została przerwana, co może spowodować błędną interpretację odebranej informacji. Aby się ustrzec przed opisaną sytuacją, konieczne jest próbkowanie linii INT zarówno w czasie trwania pierwszej, jaki i drugiej połowy bitu (rys.). Jeśli dwa odczytane stany mają wartości przeciwne to znaczy, że ramka informacyjna jest wciąż nadawana, a odczytana wartość bitu jest poprawna., bita, ms S = S = T = 0 S = S = T = 0 Rys.. Ulepszony sposób odczytu bitów ramki informacyjnej nadawanej w kodzie RC Również może dojść do sytuacji, w której odbiór ramki rozpoczęto nie od pierwszego, lecz od któregoś z dalszych bitów traktując go jako bit startu. Dlatego po stwierdzeniu zmiany stanu linii INT z wysokiego na niski zaleca się odmierzenie czasu większego od długości jednej ramki a krótszego niż czas równy połowie długości czasu trwania przerwy pomiędzy ramkami. W ten sposób niezależnie od tego, w jakiej chwili czasowej rozpoczęliśmy analizę ramki po odmierzeniu tego czasu znajdziemy się w przerwie pomiędzy ramkami (rys. ). Po tym czasie należy ponownie oczekiwać na zmianę stanu linii INT z wysokiego na niski, a więc na początek nowej ramki, co zapewni poprawny jej odczyt. bitów bitów Rys.. Ulepszony sposób rozpoczęcia odczytu ramki informacyjnej nadawanej w kodzie RC. Klawiatura PC AT Klawiatura PC AT podłączana jest do urządzeń przy wykorzystaniu czteroprzewodowego interfejsu. Tylko dwie z tych linii ( danych i zegarowa) służą do przesyłania informacji pomiędzy klawiatura a urządzeniem nadrzędnym (ang. host). Pozostałe dwie są mi zasilającymi. Jak można się zorientować po występowaniu linii zegarowej, przesyłanie informacji odbywa się synchronicznie Podłączenie linii odpowiedzialnych za przesyłanie informacji do systemu mikroprocesorowego makiety pokazano na schemacie elektrycznym. Sama klawiatura zawiera macierz klawiszy monitorowaną prze wewnętrzny procesor. Wykrycie wciśnięcia klawisza, jego przytrzymania lub puszczenia powoduje wysłanie informacji nazywanej kodem skaningowym (ang. scan codes). Rozróżniane są dwa typy kodów skaningowych: wysyłanych przy wciśnięciu lub przytrzymaniu klawisza (ang. make codes) oraz wysyłane przy zwolnieniu klawisza (ang. break codes). Kody skaningowe wysyłane z klawiatury do urządzenia nadrzędnego reprezentują tylko numer wciśniętego klawisza, natomiast nie reprezentują znaku, który jest na nim przedstawiony. Dlatego w ogólności kody skaningowe i kody ASCII odpowiadające poszczególnym znakom są różne. Urządzenie nadrzędne zmuszone jest więc do dekodowania odebranych kodów skaningowych. Kody skaningowe przypisane poszczególnym klawiszom pokazano na rys..
Rys.. Kody skaningowe klawiatury PC AT O ile przedstawione na rys. kody są wysyłane przy wciśnięciu lub przytrzymaniu klawisza, to przy jego zwolnieniu wysyłany jest również ten sam kod jednak poprzedzony wartością F0h. Pokazuje to poniższy przykład. Kod wysyłany przy wciśnięciu Kod przy zwolnieniu Wciśnięty klawisz lub przytrzymaniu klawisza klawisza A Ch F0h, Ch Prawy Ctrl E0h, h F0h, E0h, h Wysyłane kody skaningowe nie są buforowane w klawiaturze, dlatego w przypadku wciśnięcia więcej niż jednego klawisza, wysyłany jest kod ostatniego z wciśniętych klawiszy. Zwolnienia ostatnio wciśniętego klawisza i jednoczesne dalsze przytrzymywanie klawiszy wciśniętych wcześniej nie powoduje wysyłania ich kodów skaningowych... Odbiór kodów skaningowych z klawiatury Klawiatura może przesyłać dane do urządzenia nadrzędnego tylko wtedy, gdy zarówno danych, jak również zegarowa znajdują się w stanie logicznej jedynki. Transmisja danych odbywa się z wykorzystaniem bitowej ramki (rys.) składającej się z bitu startu, bitów danych, bitu parzystości i bitu stopu. zegarowa danych bit startu 0 P bit stopu Rys.. Protokół przesyłania informacji z klawiatury do urządzenia nadrzędnego Wartość bitu startu i stopu jest zawsze stała i wynosi odpowiednio 0 oraz. Bity danych przesyłane są od najmniej znaczącego do najbardziej znaczącego. Przebieg na linii zegarowej generuje zawsze klawiatura. Jego częstotliwość waha się w granicach od 0 do 0 khz. W protokole transmisyjnym zakłada się, że stan linii danych jest ustabilizowany, gdy sygnał zegarowy przyjmuje stan niski, dlatego stan każdego bitu powinien być odczytywany właśnie w tym przedziale czasowym. Linia zegarowa podłączona jest do wejścia INT0 mikrokontrolera, dlatego wykrycie opadającego zbocza na niej może być realizowane z wykorzystaniem systemu przerwań mikrokontrolera. Bit parzystości określa tzw. parzystość typu odd. Oznacza to, że jeśli w przesłanym bajcie informacyjnym jest parzysta liczba jedynek, to bit ten przyjmuje wartość... Przesyłanie rozkazów do klawiatury Proces przesyłania rozkazów z urządzenia nadrzędnego do klawiatury inicjowany jest przez wymuszenie stanu niskiego na linii danych. Aby zapobiec nadawaniu w tym samym czasie informacji z klawiatury do urządzenia nadrzędnego, powszechnie przed wymuszeniem stanu niskiego na linii danych wymusza się również stan niski na linii zegarowej na czas nie krótszy niż 0 s (rys.0). Po wymuszeniu stanu niskiego na linii danych przez urządzenie nadrzędne, klawiatura maksymalnie po czasie 0ms rozpoczyna generowanie sygnału zegarowego. Stan linii danych jest odczytywany przez klawiaturę przy opadającym zboczu sygnału zegarowego, dlatego po wykryciu pierwszego opadającego zbocza na linii zegarowej należy ustawić na linii danych stan odpowiadający pierwszemu (najmłodszemu) bitowi przesyłanego
klawiatura urządzenie nadrzedne bajta. Zostanie on odczytany przez klawiaturę przy następnym opadającym zboczu. W ten sam sposób należy postąpić z kolejnymi siedmioma bitami danej i bitem parzystości. min 0 s max 0ms zegarowa danych bit startu 0 P bit stopu ack Rys.0. Protokół przesyłania informacji z urządzenia nadrzędnego do klawiatury; grubszą linią zaznaczono fragmenty, kiedy stan danej linii wymusza urządzenie nadrzędne. Po wysłaniu tej informacji urządzenie nadrzędne powinno zwolnić linię danych poprzez wystawienia na niej logicznej jedynki. W kolejnym cyklu zegarowym klawiatura potwierdza przyjęcie danych przez wymuszenie na linii danych stanu niskiego, a następnie zwalnia linię wymuszając stan wysoki. Jeśli danych nie zostanie zwolniona po wysłaniu 0 bita (bita parzystości), to klawiatura nie zaprzestaje generowania sygnału zegarowego, aż do spełnienia tego warunku. zegarowa min 0 s danych bit startu 0 P bit stopu max 0ms zegarowa danych ack Rys.. Protokół przesyłania informacji z urządzenia nadrzędnego do klawiatury; podział na przebiegi generowane przez klawiaturę i urządzenie nadrzędne. nich. FDh EEh Fh FFh Urządzenie nadrzędne może wysyłać do klawiatury różnego rodzaju polecenia. Poniżej podano kilka z Ustawia stan diod LED w klawiaturze. Polecenie to jest używane do zapalania i gaszenia diod LED oznaczonych nazwami: Caps Lock, Num Lock i Scroll Lock. Po wysłaniu tego polecenia klawiatura odpowiada bajtem potwierdzającym (wartość FAh) i czeka na następny bajt określający status diod LED. Poszczególnym diodom są odpowiednio przyporządkowane bity b, b i b 0 wysyłanego bajta. Echo. Po wysłaniu tego polecenia klawiatura przesyła w odpowiedzi tą samą wartość (EEh). Ustawia wartość opóźnienia (czas uznania klawisza za stale naciskany) i częstość repetycji (powtórzenia wysłania kodu stale naciskanego klawisza na sekundę) przy wciskaniu danego klawiszy. Klawiatura odpowiada bajtem potwierdzającym (FAh), wstrzymuje przeglądanie klawiszy i oczekuje na jeden bajt parametru. Poszczególnym bitom przesyłanego bajta przypisane jest następujące znaczenia: b = 0, b i b określają opóźnienie w milisekundach według zależności: (+b b ) 0 b,...,b 0 określają częstość repetycji, gdzie okres powtórzeń w sekundach można określić na podstawie wzoru: (+b b b 0 ) bb 0,00 Żądanie inicjalizacji i wewnętrznego testu klawiatury. Klawiatura po odebraniu tego polecenia wysyła bajt potwierdzający (FAh) i oczekuje na ustawienie linii danych i zegarowej w stan wysoki na okres nie krótszy niż 00 s.
. Działanie makiety pod kontrolą programu monitora PAULMON jest darmowym programowym monitorem instalowanym w systemach bazujących na mikrokontrolerach rodziny MCS-. Umieszczenie opisywanego monitora w pamięci ROM mikrokontrolera pozwala na wczytywanie programów do pamięci RAM i wykonywanie ich, co jest znacznie wygodniejsze i szybsze, niż przeprogramowywanie pamięci EPROM. Do komunikacji z programem monitora można wykorzystać dowolny program pozwalający na komunikację za pomocą złącza RS-, np. HyperTerminal. Po uruchomieniu niniejszego programu na komputerze PC, oraz po wciśnięciu klawisza resetu makiety, monitor wysyła następujący komunikat: Welcome to PAULMON v., by Paul Stoffregen See PAULMON.DOC, PAULMON.EQU and PAULMON.HDR for more information. Program Name Location Type List 000 External command Single-Step 00 External command Memory Editor (VT00) 00 External command a następnie pojawia się znak zachęty PAULMON Loc:000 > _ Wartość 000 określa adres, na jaki wskazuje wewnętrzny wskaźnik monitora. Jego znajomość jest użyteczna przy wywoływaniu komend operujących na pamięci systemu. Poniżej zostaną przedstawione wybrane komendy monitora. Wielkość liter przy wprowadzaniu poleceń nie ma znaczenia... D (ang. Download) ładowanie programu Polecenie to pozwala na załadowanie do pamięci RAM systemu mikroprocesorowego pliku z programem w formacie Intel Hex. W formacie tym zawarte są informacje o adresie, pod który mają być zapisywane kolejne bajty przesyłanego programu, zatem wewnętrzny wskaźnik pamięci monitora nie jest brany pod uwagę. Załadowanie programu polega na wciśnięciu klawisza [D], co powoduje wyświetlenie następującej informacji PAULMON Loc:000 > Download Begin ascii transfer of Intel hex file, or ESC to abort Teraz należy z menu Transfer programu TyperTerminal wybrać Wyślij plik tekstowy..., a w otwartym oknie wskazać miejsce położenia pliku *.hex. Zatwierdzenie wyboru powoduje rozpoczęcie przesyłania danych. Za każdym razem, kiedy monitor odbierze pojedynczą linię z ładowanego pliku *.hex, na ekranie zostaje wyświetlona kropka. Jeśli z jakiś powodów konieczne jest przerwanie ładowania programu należy wtedy wcisnąć klawisz [Esc]. Po zakończeniu ładowania pliku z programem lub gdy ładowanie zostanie przerwane na życzenie użytkownika, na ekranie pojawia się podsumowanie....... Download completed Summary: lines received 0 bytes received 0 bytes written No errors detected Jeśli po wykonaniu polecenia wczytania pliku w informacji podsumowującej monitora raportowane są błędy o braku możliwości zapisu Summary: lines received bytes received 0 bytes written Errors:
0 bytes unable to write to oznacza, że plik HEX został odebrany poprawnie, jednak obszar pamięci wyspecyfikowany w kolejnych rekordach zawartych w pliku jest tylko do odczytu. W przypadku odebrania przez monitor danych o niepoprawnym formacie zostanie wyświetlone podsumowanie podobne do poniższego. Summary: lines received bytes received bytes written Errors: bad checksums unexpected begin of line unexpected hex digits unexpected non hex digits.. J (ang. Jump) skocz pod określony adres w pamięci Polecenie to pozwala na przejście do wykonywania wczytanego wcześniej programu użytkownika. Po wciśnięciu klawisza [J] pojawi się napis PAULMON Loc:000 > Jump to memory location Jump to memory location (000), or ESC to quit: _ W tym momencie należy wprowadzić wartość adresu, od którego został umieszczony program. Po wpisaniu ostatniego (czwartego) znaku na ekranie pojawi się napis running program: _ informując o rozpoczęciu wykonywania programu użytkownika. Przed przejściem pod wyspecyfikowany adres program monitora odkłada na stosie wartość 0000H, zatem programy, które kończą się instrukcją RET powodują ponowne wywołanie programu monitora. Jeśli program działa w nieskończonej pętli, to jedyną możliwością powrotu do programu monitora jest reset mikrokontrolera.. Wskazówki do ćwiczenia Wszystkie niezbędne informacje odnośnie układów wykorzystanych w makiecie znajdują się w dodatkach dołączonych do instrukcji: dodatek A: wyświetlacz ciekłokrystaliczny... Konfiguracja przestrzeni adresowej makiety monitor EPROM program RAM: dane RAM: obszar wspólny dla programu i danych:.. Adresy układów peryferyjnych 0000h FFFh, 000h FFFh, 0000h FFFh, 000h FFFh. wyświetlacz LCD FE00h, F E 0 X hex 0 0 0 0 0 0 0 R/W RS bin RS sterująca RS sterownika wyświetlacza R/W sterująca R/W sterownika wyświetlacza
. Literatura [] Rydzewski A.: Mikrokomputery jednoukładowe. WNT, Warszawa. [] Starecki T.: Mikrokontrolery jednoukładowe rodziny. NOZOMI, Warszawa. [] Starecki T.: Mikrokontrolery 0 w praktyce. BTC, Warszawa 00. [] Majewski, Kardach K.: Mikrokontrolery jednoukładowe 0. Programowanie w języku C w przykładach. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław. [] Kernighan W., Ritchie D.M.: ANSI C. WNT, Warszawa. [] Lach M.: Biblioteka mikroprocesorowych procedur standardowych. Elektronika Praktyczna ////, /. [] Hadam P.: Podstawy projektowania systemów mikroprocesorowych, cześć. Elektronika Praktyczna /00. [] Piotrowski S.: Klawiatury. klan, luty. [] Ziembicki J.: Moduły wyświetlaczy znakowych LCD ze sterownikami VLSI. Radioelektronik /. [0] Beach M.: C Primer, Hitex (UK) Ltd. www.esacademy.com/automation/docs/cprimer/cprim.htm 0
D C B A J DB S RESET R k C 0uF/V D N C pf Y MHz C pf 0 U X X RST P.0/T P./TEX P. P. P. P. P. P. P.0/RXD0 P./TXD0 P./INT0 P./INT P./T0 P./T 0C (AD0)P0.0 (AD)P0. (AD)P0. (AD)P0. (AD)P0. (AD)P0. (AD)P0. (AD)P0. (A)P.0 (A)P. ()P. (A)P. (A)P. (A)P. (A)P. (A)P. EA ALE PSEN P./WR P./RD 0 AD0 AD AD AD AD AD AD AD AD0 AD AD AD AD AD AD AD U D0 D D D D D D D LE OE Q0 Q Q Q Q Q Q Q HCT U IN 0/CLK IO 0 A IN IO A IN IO A LCD E IN IO A OEROM IN IO A OERAM IN IO CSRAM IN IO A CSRAM IN IO IN IN /OE GALV-LC(0) A A A A A A A A A A A A A A A A A A A A A A A A A A A 0 0 U A A A A A A A A A A A A A R/W OE CE C I/O 0 I/O I/O I/O I/O I/O I/O I/O AD0 AD AD AD AD AD AD AD A A A A A A A A A A A A A 0 0 U A A A A A A A A A A A A A R/W OE CE C P k I/O 0 I/O I/O I/O I/O I/O I/O I/O AD0 AD AD AD AD AD AD AD A A A A A A A A A A A A A A 0 0 U A A A A A A A A A A A A A A E G/VPP C WYŚWIETLACZ LCD DQ DQ DQ DQ DQ DQ DQ DQ AD0 AD AD AD AD AD AD AD Title Size Number Revision A Date: -Feb-00 Sheet of File: D:\Moje dokumenty\oap\instrukcje\makieta Drawn RC\KlawPC By: RC LCD.ddb VO RS R/W E DB0 DB DB DB DB DB DB DB R k U LCD DISPLAY Makieta dydaktyczna: klawiatura PC i odbiornik RC OUT U TFMS0 R 0k R 0k R 0R V- R IN R IN T OUT T OUT V+ R OUT R OUT T IN T IN C+ C- C+ C- 0 J DIN C,uF C uf C uf U MAX C uf C uf J DC IN C 00nF C0 00nF C 00nF C 00nF C 00nF C 00nF C 00nF A AD0 AD AD AD 0 AD AD AD AD D C B A