Instrukcje do zajęć laboratoryjnych
|
|
- Teodor Podgórski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcje do zajęć laboratoryjnych Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
2 SZCZEGÓŁOWY PROGRAM LABORATORIUM. Zajęcia wprowadzające. (godz). Zapoznanie się z oprogramowaniem narzędziowym dla MCS5. (godz). Badanie moŝliwości arytmetycznych mikrokomputera 805 (godz) 4. Biblioteki procedur arytmetycznych. (4godz) 5. Podzadania oprogramowania sterowników mikroprocesorowych. (4godz) 6. Termin odróbkowy. (godz) 7. Laboratoryjny system modułowy z MCS5. (4godz) 8. Multipleksowana obsługa klawiatury i wyświetlacza (4godz) 9. System przerwań MCS5. (4godz) 0.Terminy odróbkowy-zaliczeniowy. (godz) LITERATURA:. P.i P.Gałka - Podstawy programowania mikrokontrolera 805 (MIKOM).. J.Janiczek, A.Stępień - Mikrokontrolery (WCKP).. J.Janiczek, A.Stępień - Laboratorium systemów mikroprocesorowych cz.i i II (WCKP). 4. H.Małysiak - Mikrokomputery jednoukładowe serii MCS48, MCS5, MCS96 (WPKJS). 5. T.Prokop - Wybrane mikrokomputery jednomodułowe firmy INTEL (skrypt PW). 6. A.Rydzewski - Mikrokomputery jednoukładowe rodziny MCS5 (PKE). 7. T.Starecki - Mikrokontrolery jednoukładowe rodziny 5 (NOZOMI). -
3 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Zapoznanie się z oprogramowaniem narzędziowym dla MCS5 Numer ćwiczenia: Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
4 . Wprowadzenie.. Asembler MCS5 Do podstawowych języków programowania mikroprocesorów zalicza się języki symboliczne, zwane takŝe językami asemblerowymi lub potocznie asemblerami. Języki te w swej składni odwołują się do elementarnych zasobów wewnętrznych mikroprocesora (rejestrów roboczych, pomocniczych, sterujących, flag, itd.). Obiekty te są w językach symbolicznych identyfikowane przez nazwy, charakterystyczne dla danego mikroprocesora. Zwykle są to identyfikatory nadane tym obiektom przez projektanta/producenta danego mikroprocesora. RównieŜ instrukcje języków symbolicznych są przetwarzane przez specjalne programy tłumaczące, zwane potocznie asemblerami, na kody binarne rozkazów rozpoznawalnych przez dekoder rozkazów mikroprocesora. Cechą charakterystyczną języków symbolicznych (asemblerowych) jest to, Ŝe ich instrukcje są przekładane na kody rozkazów w relacji :, tzn. jednej instrukcji języka symbolicznego odpowiada jeden rozkaz mikroprocesora. Rozkazy mikroprocesora realizują róŝne operacje: arytmetyczne, logiczne, zmiany sekwencji przetwarzania rozkazów (skoki i wywołania procedur), kontrolno-sterujące, itd.. Producenci mikroprocesorów zwykli nadawać tym rozkazom nazwy-identyfikatory. Z reguły nazwy te, zwane teŝ mnemonikami rozkazów, są tworzone jako anglojęzyczne skróty opisów działań poszczególnych rozkazów (np.: JNC - Jump if Not Carry, MOV - MOVe, CJNE - Compare & Jump if Not Equal). To dopasowanie nazewnictwa do realizowanych funkcji znakomicie ułatwia programistom posługiwanie się językami asemblerowymi. PoniewaŜ rozkazy na ogół odwołują się do wewnętrznych zasobów mikroprocesora lub innych składników systemu mikroprocesorowego, konieczne jest wskazanie tych zasobów w formie tzw. listy argumentów. Lista argumentów rozkazu jest zwykle, następującym po mnemoniku rozkazu, ciągiem identyfikatorów i stałych programowych, oddzielonych od siebie przecinkami (np.: MOV A,B; MOV DPTR,#). Tylko niewielki procent rozkazów nie wymaga Ŝadnych argumentów (np. RET, NOP) - ich lista argumentów jest wtedy pusta. Tekst programu w asemblerze składa się z szeregu linii o ustalonej składni - mówimy o występowaniu tzw. pól - fragmentów w ciągu znaków składających się na jeden wiersz tekstu programu. Długość tych pól (liczona w znakach) nie jest narzucona, ale wynika sama z przyjętego stylu pisania programu, zdefiniowanych mnemoników rozkazów i wymagań programu asemblującego. W ogólnym przypadku linia programu w asemblerze ma następującą budowę : <pole etykiety><pole mnemonika><pole argumentów><pole komentarza> gdzie: <pole etykiety> - obszar o szerokości min. znaku, przeznaczony na wpisywanie identyfikatorów tzw. etykiet (patrz dalej); po etykiecie musi występować dwukropek (':'), oddziela on opisane niŝej cechy składni asemblera odnoszą się do zastosowanego w środowisku Keil µvision programu asemblującego A5 -
5 wtedy etykietę od pozostałej zawartości linii i zwiększa czytelność programu; <pole mnemonika> - obszar przeznaczony na wpisanie symbolicznej nazwy rozkazu; w polu tym wpisuje się takŝe tzw. dyrektywy asemblera (patrz dalej); <pole argumentów> - obszar, którego wypełnienie jest opcjonalne - zaleŝne od wymagań wpisanego w <polu mnemonika> rozkazu, pole to jest przeznaczone na listę argumentów rozkazu; <pole komentarza> - opcjonalny obszar, którego początek jest identyfikowany przez znak średnika ( ; ), jest on przeznaczony do wpisywania dowolnego tekstu objaśniającego działania realizowane przy pomocy uŝytych rozkazów mikroprocesora; w szczególnym przypadku komentarz moŝe zaczynać w dowolnym miejscu linii programu, takŝe od pierwszej kolumny (z pominięciem pozostałych pól). Jakkolwiek nie ma wymagań co do szerokości poszczególnych pól w linii programu, zaleca się aby <pole etykiety> i <pole mnemonika> miały stałą długość. Zabieg ten istotnie poprawia czytelność programu, a nie jest trudny w realizacji - wystarczy odpowiednio wykorzystać w edytorze znaki tabulacji. Bardzo waŝnym elementem składni języka asemblerowego są etykiety, stałe i wyraŝenia. Przez etykiety rozumie się ciągi maksimum znaków (liter, cyfr, _ ) nie zaczynające się cyfrą i zakończone dwukropkiem (':'). Przeznaczenie etykiet w językach asemblerowych jest zaleŝne od sposobu ich uŝycia: Etykiety mogą słuŝyć jako identyfikatory adresów w przestrzeni adresowej mikroprocesora. Asembler podczas asemblacji programu przypisuje im wtedy wartości będące adresami początkowymi rozkazów, przed którymi je uŝyto, np.: tutaj: add A,P0 ;dodanie do Acc stanu portu P0 Etykiety mogą równieŝ reprezentować adresy początkowe struktur danych definiowanych przez programistę w treści programu, przy uŝyciu odpowiednich dyrektyw asemblera, np.: tablica: db,4,0, ;tablica 4 elementów -bajtowych. Etykiety moŝna wykorzystywać jako identyfikatory stałych programowych, uŝywanych później w treści programu. Asembler przypisuje wtedy etykietom wartości wynikające np. z uŝycia ich w połączeniu z dyrektywą EQU: CR EQU KaŜde późniejsze uŝycie w liście argumentów identyfikatora CR będzie równowaŝne z wpisaniem w jego miejsce wartości.. Etykiety mogą identyfikować zmienne programowe, poprzez przypisanie im np. dyrektywą EQU adresu początkowego, pod którym znajduje się pierwszy bajt interesującej nas zmiennej. Przykładowo: rok EQU 006h ;zmienna przechowujaca 4-cyfrowy rok... mov dptr,#rok ;DPTR <- adres zmiennej rok w zewn. RAM Stałe są to wartości liczbowe lub znakowe zdefiniowane na etapie asemblacji programu lub pobierane z innych programów w procesie łączenia (linkowania). Przykładowe stałe w rozumieniu asemblera przytacza poniŝsza tabela. -
6 Tab... Stałe akceptowane przez asembler MCS5 stała znaczenie reprezentacja binarna 'A' pojedynczy znak ASCII 4h 'tekst' ciąg znaków ASCII 74h,65h,6Bh,7h,74h 787 liczba dziesiętna 0h 787D liczba dziesiętna 0h 00B liczba binarna h 00b liczba binarna h AFh liczba szesnastkowa 0AFh A0H liczba szesnastkowa 0A0h 0F00h liczba szesnastkowa 0F00h 0xAF liczba szesnastkowa 0AFh $AF liczba szesnastkowa 0AFh 0457 liczba ósemkowa 0Fh 457Q liczba ósemkowa 0Fh 457q liczba ósemkowa 0Fh 457O liczba ósemkowa 0Fh 457o liczba ósemkowa 0Fh Przy określaniu niektórych wartości (definiowanie adresów zmiennych programowych, definiowanie stałych programowych, itp.) wygodnie jest posługiwać się wyraŝeniami. Dzięki nim moŝna bardzo ułatwić sobie późniejsze poprawki programu. Przykładowo, zamiast sekwencji deklaracji: zmienna equ 4500h zmienna equ 450h zmienna equ 4504h zmienna4 equ 4508h moŝemy zapisać: zmienna equ 4500h zmienna equ zmienna+ zmienna equ zmienna+ zmienna4 equ zmienna+4 Wynik asemblacji jest taki sam, ale przy tym drugim zapisie jeŝeli chcemy zmienić adres początkowy bloku zmiennych to wystarczy poprawić tylko jeden wiersz programu (deklarujący wartość zmienna ) - pozostałe adresy zmienią się automatycznie przy asemblacji. RównieŜ zmiany ewentualnej długości którejś ze zmiennych wymagają poprawki tylko w jednym wierszu. Dzięki temu przyśpieszamy sobie pracę w przyszłości i zmniejszamy ryzyko błędów przy kolejnych edycjach tekstu programu. Wykorzystywany na laboratorium makroasembler A5 dopuszcza następujące operatory w wyraŝeniach: -4
7 Tab... Operatory wyraŝeń akceptowane przez asembler MCS5 rodzaj operatory operacja $ bieŝąca wartość licznika rozkazów ( ) nawiasy kolejności operacji arytmetyczne x * y x / y x MOD y x + y x - y przesunięcia x SHL y x SHR y porównania x < y x LT y x <= y x LTE y x > y x GT y x >= y x GTE y x = y x EQ y x <> y x NE y logiczne NOT y x AND y x XOR y x OR y mnoŝenie x * y dzielenie x / y reszta z dzielenia (modulo) x / y dodawanie x + y odejmowanie x - y przesunięcie w lewo x o y bitów przesunięcie w prawo x o y bitów (y < ) x mniejsze y x mniejsze równe y x większe y x większe równe y x równe y x nie równe y negacja bitów y bitowy iloczyn logiczny x i y bitowa róŝnica symetryczna x i y bitowa suma logiczna x i y MoŜliwe jest równieŝ symboliczne wskazanie bieŝącego adresu programu - adresu, od którego zaczyna się kod aktualnie tłumaczonego rozkazu lub dyrektywy. Symbolem odwołującym się w tekście programu do takiego adresu jest $. MoŜna go na przykład wykorzystać zamiast etykiety w rozkazie skoku martwej pętli. Zamiast: petla:jmp petla piszemy: jmp $ Przy tworzeniu wyraŝeń naleŝy pamiętać o obowiązującej hierarchii operatorów: - nawiasy ( ); - NOT, HIGH, LOW; - +, - (jako znak argumentu wyraŝenia); - *, /, MOD; - +, - ; - SHR, SHL; - AND, OR, XOR; - <, <=, =, <>, >=, >, LT, LTE, EQ, NE, GTE, GT. Makroasembler A5 jako program tłumaczący język symboliczny rozpoznaje nie tylko mnemoniki rozkazów i listy ich argumentów, ale takŝe polecenia związane z samym procesem asemblacji, zwane dyrektywami asemblera. Do podstawowych dyrektyw wykorzystywanego na zajęciach asemblera A5 naleŝą: ORG, END, EQU, SET, DB, DD, DW, DS. Ich przeznaczenie zostanie omówione poniŝej. -5
8 dyrektywa składnia INCLUDE $INCLUDE (path_file) LIST $LIST lub $LI NOLIST $NOLIST lub $NOLI ORG etykieta: ORG wyraŝenie lub Tab... Dyrektywy asemblera MCS5 ORG wyraŝenie przeznaczenie wskazanie ścieŝki dostępu i pliku, którego zawartość ma być wstawiona w danym punkcie programu źródłowego; jeŝeli we wstawianym pliku znajduje się dyrektywa END, to asemblacja wszystkich plików źródłowych zostanie zakończona na tej dyrektywie włącza pełny raport z asemblacji w pliku *.LST wyłącza pełny raport z asemblacji w pliku *.LST określa adres od jakiego mają być alokowane kody następujących po nim rozkazów, za adres początkowy przyjmowana jest wartość wyraŝenia, które powinno być policzalne na etapie asemblacji END END wyznacza koniec tekstu programu do asemblacji, następujące po niej rekordy tekstu są ignorowane przez asembler EQU etykieta EQU wyraŝenie przypisuje identyfikatorowi etykieta wartość wyraŝenia, nazwa o tak określonej wartości nie moŝe być redefiniowana SET etykieta SET wyraŝenie przypisuje dynamicznie identyfikatorowi etykieta wartość wyraŝenia, nazwa o tak określonej wartości moŝe być redefiniowana inną dyrektywą SET DB etykieta: DB lista_wart_b lub DB lista_wart_b do zadeklarowania tablicy wartości jednobajtowych, lista_wart_b powinna zawierać minimum jedno wyraŝenie o wartości mieszczącej się na bajcie; wyjątkowo wyraŝeniem moŝe być ciąg znaków ASCII ujęty w podwójne apostrofy -6
9 DW DS etykieta: DW lista_wart_b lub DW lista_wart_b etykieta: DS wyraŝenie lub DS wyraŝenie DBIT etykieta: DBIT wyraŝenie dyrektywy alokacji zmiennych w obszarach pamięci lub DBIT etykieta BIT etykieta CODE etykieta DATA etykieta IDATA wyraŝenie adres adres adres adres etykieta XDATA adres do zadeklarowania tablicy wartości słów dwubajtowych, lista_wart_b powinna zawierać minimum jedno wyraŝenie o wartości mieszczącej się na bajtach, wartości są umieszczane w pamięci w kolejności młodszy / starszy bajt do zarezerwowania w obszarze pamięci ciągu bajtów w ilości określonej przez wartość wyraŝenie, bez ich wstępnego inicjowania do zarezerwowania w obszarze pamięci ciągu bitów w ilości określonej przez wartość wyraŝenie, bez ich wstępnego inicjowania do zadeklarowania początkowego adresu zmiennej o nazwie etykieta odpowiednio w przestrzeni adresowej pamięci: bitów bezpośr. adresowalnych (0x00-0xFF) - BIT programu (0x0000-0xFFFF) - CODE wewn. pamięci danych adresowalnej bezpośrednio (0x00-0xFF) - DATA wewn. pamięci danych adresowalnej pośrednio (0x00-0xFF) - IDATA zewn. pamięci danych (0x0000-0xFFFF) - XDATA SFR SFR nazwa_rej = adres do zadeklarowania rejestru bloku SFR o podanej nazwie nazwa_rej i lokalizacji adres SBIT SBIT nazwa_bit = adr_bit do zadeklarowania bitu bezpośrednio adresowalnego o nazwie nazwa_bit i lokalizacji określonej przez adr_bit gdzie adr_bit ma format: nazwa_rej ^nb lub adr_rej ^ nb (nb=0..7) Przy programowaniu mikrokontrolerów MCS5 często zachodzi potrzeba odwoływania się w liście argumentów rozkazu do bitów bezpośrednio adresowalnych. MoŜna to robić poprzez wskazanie numeru bitu w rejestrze, np.: 'P.4'. MoŜna teŝ predefiniować identyfikator takiego bitu jako etykietę, by później odwoływać się do niego poprzez wygodną dla nas nazwę, np.: 'T0'. Do nadania identyfikatorowi wartości, będącej w przypadku takiego bitu jego adresem, naleŝy uŝyć dyrektywy EQU albo SET. Poprawne definicje powinny wyglądać następująco: -7
10 T equ P.4 ;bit 4 w P albo T set P^4 ;bit 4 w P Jeśli chodzi o uŝycie małych i duŝych liter to większość asemblerów traktuje je równoprawnie w odniesieniu do standardowych nazw rozkazów, ich argumentów i dyrektyw - ich identyfikatory moŝna pisać zarówno małymi, jak i duŝymi literami. W przypadku tzw. etykiet bywa róŝnie - czasami nazwy: ETYKIETA i etykieta są traktowane jako dwa róŝne obiekty. W razie wątpliwości co do wymagań uŝytkowanego asemblera wystarczy przeasemblować na próbę następujący program: etykieta: ETYKIETA: END JeŜeli po drugim wierszu programu asembler zgłosi błąd w rodzaju ponowne uŝycie/deklaracja etykiety, to będzie to oznaczało, Ŝe nie odróŝnia on małych i duŝych liter takŝe w odniesieniu do etykiet. JeŜeli zaś asemblacja przebiegnie bez błędów to róŝnice pomiędzy małymi i duŝymi literami w etykietach są znaczące. Pełny opis makroasemblera A5 moŝna znaleźć w systemie pomocy środowiska Keil µvision (Help/Open Books Window - Assembler/Utilities)... Algorytm a program w asemblerze MCS5 Konwersja zawartości bloków wykonawczych schematu blokowego wydaje się najprostsza. Przykładowo, fragment schematu blokowego liczący średnią arytmetyczną dwóch zmiennych przy wysoko-poziomowym języku programowania wyglądałby jak na rysunku obok. Natomiast na potrzeby programowania w asemblerze, wygodnie byłoby rozpisać to wyraŝenie z uwzględnieniem moŝliwości docelowego procesora. NaleŜy teŝ wziąć pod uwagę w której z przestrzeni pamięci danych mają być umieszczone zmienne. Za identyfikatorami zm, zm i sr kryją się fizyczne adresy tych zmiennych w pamięci operacyjnej procesora. Zapis CyA oznacza potraktowanie flagi przeniesienia wraz z akumulatorem A procesora jako jednego słowa binarnego. Operator >> oznacza przesunięcie tego słowa o wskazaną ilość bitów w prawo, co jest równowaŝne z dzieleniem przez potęgę. W pierwszym przypadku załoŝono, Ŝe lokalizacja zmiennych zm i zm pozwala na uŝycie adresacji bezpośredniej zmienne te znajdują się w pierwszych 8 komórkach wewnętrznej pamięci danych. Przy lokalizacji tych zmiennych w dodatkowej wewnętrznej pamięci danych (o adresach 80h..0FFh) moŝliwe byłoby uŝycie tylko trybu adresowania rejestrowego pośredniego drugi wariant algorytmu. Dosyć podobnie wyglądałby algorytm przy ulokowaniu zmiennych w zewnętrznej pamięci danych sr:=(zm+zm)/ A M[zm] A:=A+ M[zm] CyA:=CyA>> M[sr] A R0:=zm A M[R0] R:=zm A:=A+ M[R] CyA:=CyA>> R:=sr M[R] A zamiast rejestrów R0 i R naleŝałoby uŝyć rejestru DPTR. Implementacja pierwszego wariantu algorytmu w asemblerze procesora MCS5 przedstawia się następująco: -8
11 MOV A,zm ;pobranie kopii zmiennej zm ADD A,zm ;sumowanie RRC A ;przesunięcie sumy o bit w prawo LD sr,a ;zapis wyniku w zmiennej Sr Dla wariantu drugiego mielibyśmy: MOV R0,#zm ;R0->zm MOV A,@R0 ;pobranie kopii zmiennej zm MOV R,#zm ;R->zm ADD A,@R ;sumowanie RRC A ;przesunięcie sumy o bit w prawo MOV R,#sr ;R->sr ;zapis wyniku w zmiennej Sr Natomiast przy zmiennych zlokalizowanych w zewnętrznej pamięci danych byłoby: MOV DPTR,#zm ;DPTR ->zm MOVX A,@DPTR ;pobranie kopii zmiennej zm MOV B,A ;do rej. B MOV DPTR,#zm ;DPTR ->zm MOVX A,@DPTR ;pobranie kopii zmiennej zm ADD A,B ;sumowanie RRC A ;przesunięcie sumy o bit w prawo MOV DPTR,#sr ;DPTR->sr ;zapis wyniku w zmiennej sr Trochę trudniejsza moŝe okazać się implementacja bloków decyzyjnych w asemblerze. Trzeba cały czas (nawet na etapie projektowania algorytmu) pamiętać o tym co oferuje docelowy procesor. Istotna jest dostępna lista rozkazów porównań słów binarnych oraz skoków warunkowych. Na ogół w procesorach znajdziemy od jednego do kilku rozkazów porównania słów binarnych o rozmiarze słowa maszynowego danego procesora. Wynik takiego porównania jest dostępny w postaci specyficznego ustawienia wybranych flag w rejestrze stanu procesora. Najczęściej jest to flaga przeniesienia (Carry Flag) uzupełniona o flagę zera (Zero Flag). Ich stan po wykonaniu rozkazu porównania jest taki jak po odejmowaniu drugiego argumentu tego rozkazu od pierwszego. W przypadku mikrokontrolera MCS5 nie dysponujemy flagą zera, a rozkaz porównania CJNE jest od razu połączony ze skokiem warunkowym wykonywanym gdy porównywane argumenty są róŝne. Przykładowo, blok decyzyjny porównujący dwie zmienne zm i zm: N zm < zm T przy uwzględnieniu moŝliwości języka maszynowego MCS5 naleŝałoby przekształcić do: N A M[zm] A<zm? T -9
12 Program w asemblerze, przy załoŝeniu Ŝe zmienne znajdują się w wewnętrznej pamięci danych poniŝej adresu 80h, wyglądałby wtedy następująco: MOV A,zm ;pobranie zmiennej zm do A CJNE A,zm,nier ;porównanie jej ze zm nier: JC mniejsze ;skok gdy A<zm PowyŜszy program wykorzystuje fakt, Ŝe rozkaz CJNE ustawia flagę CY, jeŝeli wartość pierwszego z argumentów jest mniejsza od wartości drugiego i realizuje skok gdy argumenty są róŝne. W tym przypadku skok ma być wykonany do następnego po CJNE rozkazu. Dlatego następujący po nim rozkaz skoku warunkowego JC został opatrzony etykietą nier. Ostatecznie jeŝeli A=zm<zm to nastąpi skok do etykiety mniejsze. Rozwiązaniem alternatywnym dla uŝycia rozkazu CJNE jest wykonanie odejmowania, poprzedzonego zerowaniem flagi przeniesienia: MOV A,zm ;pobranie zmiennej zm do A CLR C ;wstępne zerowanie CY SUBB A,zm JC mniejsze ;skok gdy A<zm Potrzebna do rozróŝnienia wyniku porównania flaga CY ustawia się identycznie, jedynie zmienia się zawartość akumulatora A przyjmuje on wartość róŝnicy porównywanych liczb. Taka utrata wartości jednego z argumentów moŝe być niekorzystna, jeŝeli mielibyśmy ją porównywać jeszcze z innymi zmiennymi. JeŜeli w programie wykorzystujemy liczby dłuŝsze niŝ słowo maszynowe procesora (w przypadku MCS5 dłuŝsze niŝ 8 bitów) ich porównanie takŝe jest moŝliwe. Uniwersalną metodą w takim przypadku jest policzenie róŝnicy tych liczb. RóŜnicę liczb wielobajtowych liczy się rozpoczynając odejmowanie od najmłodszych par bajtów, a kończąc na bajtach najbardziej znaczących. Stan flagi przeniesienia na koniec tych operacji informuje nas o relacji pomiędzy odejmowanymi liczbami. UŜycie bloku decyzyjnego o trzech wyjściach oznacza odpowiednie wykorzystanie dostępnych skoków warunkowych. Przykładowo, schematowi blokowemu: <0 zm-zm =0 >0 odpowiadałby następujący fragment programu: MOV A,zm ;pobranie zmiennej zm do A CJNE A,zm,nier ;porównanie jej ze zm ;brak skoku gdy zm=zm... SJMP kont nier: JC mniejsze ;skok gdy A<zm ; tu jeśli zm>zm... SJMP kont mniejsze:... -0
13 kont: JeŜeli naleŝy jedynie wykryć równość dwóch wartości (zmiennych) o dłuŝszej niŝ słowo maszynowe procesora reprezentacji, moŝna to zrobić następująco: ; zal: var, var adresy początkowe w wewnętrznej RAM ; k-bajtowych wartości MOV A,var ;A<--szy bajt wartości zm. var XRL A,var ;A:=A xor var JNZ rozne ;skok gdy bajty się róŝnią MOV A,var+ ;A<--gi bajt wartości zm. var XRL A,var+ ;A:=A xor var JNZ rozne ;skok gdy bajty się róŝnią... MOV A,var+k-;A<-k-ty bajt wartości zm. var XRL A,var+k-;A:=A xor var JNZ rozne ;skok gdy bajty się róŝnią rowne: ; tu jeśli var=var Szczególnym przypadkiem jest wykrycie czy jakieś wielobajtowe słowo jest wyzerowane. Optymalnym rozwiązaniem jest wtedy policzenie sumy logicznej składowych bajtów tego słowa i porównanie jej z zerem: LD A,zm4 ;A<--szy bajt 4-bajtowej zmiennej zm4 ORL A,zm4+ ;suma logiczna z następnymi bajtami ORL A,zm4+ ORL A,zm4+ JR NZ,niezerowa ;skok gdy zm4 jest niezerowa ; tu jeśli zm4=0 Kolejnym zagadnieniem z jakim musimy się zmierzyć programując w języku maszynowym jest organizacja pętli programowych. Pisząc w asemblerze musimy sami dobrać odpowiednie rozkazy procesora i jego zasoby wewnętrzne. Pętla programowa w schemacie blokowym algorytmu zwykle jest przedstawiana następująco: lp:= 0 T lp:=lp+ lp<l_powt Na powyŝszym schemacie lp oznacza licznik powtórzeń pętli, a l_powt jego wartość maksymalną (wartość z przedziału..55). O ile to jest moŝliwe licznik powtórzeń pętli (lp) powinien przez cały czas wykonania pętli programowej rezydować w rejestrach roboczych procesora. Dosłowne przeniesienie powyŝszego schematu organizacji pętli programowej na język asemblera MCS5 jest następujące: N -
14 MOV R,#0 ;zainicjowanie licznika lp w R na zero powt: ;etykieta początkowa pętli programowej ;... inne działania wewn. pętli INC R ;inkrementacja licznika lp CJNE R,#l_powt,powt ;porównanie lp z wartością l_powt Gdy umieszczenie licznika powtórzeń pętli w rejestrze roboczym jest niemoŝliwe, umieszcza się go w łatwo dostępnej pamięci danych. Zakładając, Ŝe licznik ten moŝe być adresowany rejestrowo pośrednio, odpowiedni fragment programu wyglądałby następująco: MOV R,#lp ;R->zmienna licznika pętli lp ;wyzerowanie zmiennej lp powt: ;etykieta początkowa pętli programowej ;... inne działania wewn. pętli ;inkrementacja licznika lp ;porównanie lp z wartością l_powt PoniewaŜ w językach maszynowych procesorów łatwiej jest porównać zmienną będącą licznikiem powtórzeń pętli z zerem niŝ z jej wartością maksymalną, zwykło się ustawiać licznik pętli na wartość maksymalną by wewnątrz pętli dekrementować go aŝ do zera. Odpowiadające temu postępowaniu schemat blokowy i fragment programu widoczne są poniŝej. lp:= l_powt T lp:=lp- lp 0 Mikrokontrolery MCS5 mają rozkaz DJNZ umoŝliwiający uŝycie jako dekrementowanego licznika powtórzeń pętli dowolnego rejestru roboczego lub komórki pamięci adresowanej bezpośrednio. W zaleŝności od wartości początkowej wpisanej do licznika pętli, moŝe być ona wykonana od do 56 razy. Przy korzystaniu z rejestru roboczego wyglądałoby to następująco: MOV R6,#l_powt;zainicjowanie licznika lp ;w R6 na l_powt powt: ;etykieta początkowa pętli programowej ;... inne działania wewn. pętli DJNZ R6,powt ;lp:=lp- i skok gdy lp>0 Umieszczając licznik pętli w komórce pamięci napisalibyśmy: MOV lp,#l_powt;zainicjowanie licznika lp ;w RAM na l_powt powt: ;etykieta początkowa pętli programowej N -
15 ;... inne działania wewn. pętli DJNZ lp,powt ;lp:=lp- i skok gdy lp>0 Wszystkie powyŝsze przykłady realizacji w asemblerze MCS5 zakładają, Ŝe liczba powtórzeń pętli nie przekracza 56. Gdy pętla programowa powinna mieć większą liczbę powtórzeń, naleŝy uŝyć zagnieŝdŝonych pętli. MOV R7,#(l_powt-)/56 ;licznik pętli zewn. na R7 MOV R6,#l_powt MOD 56 ;licznik pętli wewn. na R6 powt: ;etykieta początkowa pętli ;... inne działania wewn. pętli DJNZ R6,powt DJNZ R7,powt Potrzeba zagłębiania pętli programowych jedna w drugiej zachodzi równieŝ przy operowaniu na złoŝonych strukturach danych (np. tablice co najmniej dwuwymiarowe). i := 0 j := 0 T A tab[i,j] j := j + j < ilosc_kol N i := i + T i < ilosc_wier N W powyŝszym algorytmie tab oznacza dwuwymiarową tablicę o ilosc_wier wierszach i ilosc_kol kolumnach. Tablica jest indeksowana zmiennymi i oraz j. Wewnętrzna pętla algorytmu realizuje dostęp do kolejnych elementów w wierszu tablicy wskazanym przez wartość indeksu i, ustaloną przez pętlę zewnętrzną. Jedna z moŝliwych implementacji tego algorytmu, przy sekwencyjnym dostępie do kolejnych elementów tablicy umieszczonej w zewnętrznej pamięci danych jest następująca: ilosc_kol equ 0 ilosc_wier equ XSEG ORG 0x000 tablica:ds lk*lw;rezerwacja 660 bajtów od adresu 000h ;w zewnętrznej pamięci danych -
16 CSEG ;... MOV DPTR,#tablica MOV R7,#ilosc_wier ;zainicjowanie licznika wierszy nast_wiersz: LD R6,#ilosc_kol ;zainicjowanie licznika kolumn nast_element: ;... ; dostęp do elementu tablicy, np.: MOVX A,@DPTR ;... INC DPTR ;następny element tablicy DJNZ R6,nast_element DJNZ R7,nast_wiersz.. Język C dla MCS5 Pamięć operacyjna MCS5 obejmuje nieulotną pamięć programu (wbudowaną lub zewnętrzną), wbudowaną pamięć danych oraz opcjonalną zewnętrzną pamięć danych. Występowanie wymienionych składników PAO zaleŝy od aplikacji mikrokontrolera. Dlatego kompilator języka C musi mieć moŝliwość dostosowywania się do róŝnych konfiguracji tej pamięci - wykorzystuje się tzw. modele pamięci. Do definiowania modeli pamięci wykorzystuje się podział PAO MCS5 na pewne charakterystyczne obszary. Są to: code - obszar kodu programu, obejmujący zarówno wewnętrzną jak i zewnętrzną pamięć nieulotną, z której mikrokontroler pobiera rozkazy do wykonania, kompilator umieszcza takŝe w tym obszarze stałe programowe; data - pierwsze 8B wewnętrznej pamięci danych; zmienne umieszczane przez kompilator w tym obszarze są adresowane bezpośrednio; idata - całe 56B wewnętrznej pamięci danych; zmienne ulokowane w tym obszarze są adresowane w trybie rejestrowym pośrednim (poprzez R0 i R); bdata - obszar 6B o adresach 0h..Fh zawierających bity bezpośrednio adresowalne; xdata - obszar 64kB zewnętrznej pamięci danych adresowanych zawartością DPTR; pdata - obszar 56B zewnętrznej pamięci danych adresowanych zawartością rejestrów R0 lub R przy ustalonej wartości rejestru P; far - rozszerzona (do 6MB) pamięć danych i programu, dostępna w niektórych wersjach MCS5. Wykorzystanie powyŝszych obszarów w róŝnych modelach pamięci ilustruje tabela.4. -4
17 model wielkość pamięci programu Tab..4. Modele pamięci kompilatora Cx5 cechy specyficzne programu small do kb uŝycie rozkazów: ACALL i AJMP compact do 64kB kod funkcji do kb, uŝycie rozkazów: LCALL i AJMP large do 64kB uŝycie rozkazów: LCALL i LJMP wielkość pamięci danych do 56B do 64kB do 64kB uŝywane obszary pamięci data idata bdata data idata bdata pdata data idata bdata xdata pdata Kolejna tabela prezentuje typy zmiennych dostępne w programie. cechy specyficzne pam. danych ograniczona dla stosu przestrzeń tylko do wewn. RAM zmienne domyślnie umieszczane są w wewn. RAM wszystkie zmienne są lokowane w zewn. RAM Tab..5. Typy danych dostępne w kompilatorze Cx5 firmy Keil typ zmiennej dłg. w bitach dłg w bajtach zakres wartości bit 0 lub signed char unsigned char enum 8/6 lub lub signed short unsigned short signed int unsigned int signed long unsigned long float 4 ±.75494E-8..±.408E+8 sbit 0 lub sfr sfr bit - zmienne bitowe w obszarze bitów bezpośrednio adresowalnych w wewn. SRAM; sbit - bity bezpośrednio adresowalne w rejestrach bloku SFR; sfr - 8-bitowe rejestry bloku SFR; sfr6 - pary rejestrów w bloku SFR, np. stany liczników. Kompilator umieszcza zmienne programowe w obszarach pamięci danych zgodnie z zadeklarowanym modelem pamięci. Adresy pamięci, pod którymi zostaną umieszczone poszczególne zmienne proste i strukturalne, zaleŝą zwykle od kolejności ich pojawiania się w tekście programu. Programista ma jednak moŝliwość wymuszenia na kompilatorze alokowania wybranych struktur danych pod określonymi adresami. UmoŜliwia to następująca konstrukcja deklarująca zmienną: typ_zmiennej [obszar_pamięci] nazwa_zmiennej _at_ adres gdzie: -5
18 typ_zmiennej - słowo kluczowe typu danej (Tabela 5) [obszar_pamięci] - opcjonalna deklaracja obszaru pamięci, w którym ma być alokowana deklarowana zmienna nazwa_zmiennej - identyfikator zmiennej _at_ - słowo kluczowe adres - wartość adresu początkowego zmiennej Tab..6. Podstawowe operatory i operacje akceptowane w wyraŝeniach przez kompilator Cx5 rodzaj operator przykład uŝycia opis arytmetyczny + += - -= * *= / /= % %= x+y x+=4 x-y x-=4 x*y x*= x/y x/=5 8% x%= dodawanie odejmowanie mnoŝenie dzielenie porównania > >= < <= ==!= bitowy = & &= ^ ^= << <<= >> >>= ~ logiczna &&! if (x > ) if (x >= ) if (x < 0) if (x <= 9) if (x == 5) if (x!= 0) x 0x0E P =0x07 x & 0xF0 P&=0xF0 x ^ 0x80 P^=0x80 x << x<<= x >> x>>= ~x x y x && y! x reszta z dzielenia całkowitego większe niŝ większe-równe mniejsze niŝ mniejsze-równe równość nierówność bitowa suma logiczna bitowy iloczyn logiczny bitowa róŝnica symetryczna (XOR) przesuniecie w lewo o k bitów przesunięcie w prawo o k bitów negacja bitów suma logiczna iloczyn logiczny negacja logiczna W celu przystosowania kompilatora do wersji docelowego mikrokontrolera (zastosowanego w systemie laboratoryjnym) naleŝy na początku programu uŝyć dyrektywy #include (pisanej od pierwszej kolumny wiersza) w postaci: #include < at89s5.h> Powoduje ona wczytanie pliku nagłówkowego at89s5.h znajdującego się w katalogu plików dołączanych (jedna z opcji ustawień µvision) i zawierającego definicje rejestrów specjalnych oraz ich bezpośrednio adresowalnych bitów. -6
19 Przydatną dyrektywą jest #define. Pozwala ona przypisać juŝ zdefiniowanemu obiektowi (np. standardowemu portowi Px) oryginalną nazwę, związaną z jego przeznaczeniem w uruchamianej aplikacji. Przykładowo: #define switche P //wejście sygnałów z przełączników #define ledy P //wyjście na ledy kontrolne Korzystając z mikrokontrolera będącego rozszerzeniem standardu MCS5, moŝemy wskazać kompilatorowi jego dodatkowe rejestry specjalne. SłuŜy do tego dyrektywa sfr: sfr rej = 0x85 //dodatkowy rejestr bloku SFR Podobnie moŝna definiować bezpośrednio adresowalne bity rejestrów z obszaru SFR. UŜywa się do tego dyrektywy sbit w postaci: sbit key0 = P^0 //klawisz key0 na bicie 0 portu P sbit key = P^ //klawisz key na bicie portu P albo: sbit key0 = 0xb0; //klawisz key0 na bicie 0 portu P o adresie 0xB0 sbit key = 0xb; //klawisz key na bicie portu P o adresie 0xB Dyrektywa typedef pozwala zdefiniować własne typy zmiennych. Przykładowo: typedef unsigned char byte; typedef unsigned int word;.4. Środowisko uruchomieniowe Keil µvision W laboratorium wykorzystuje się zintegrowane środowisko uruchomieniowe firmy Keil µvision V.0a. PoniŜej przedstawiono charakterystyczne cechy składni języka C w wykorzystywanej wersji..4.. Tworzenie nowego projektu Rozpoczynając pracę nad nowym projektem naleŝy:. Wybrać opcję Project / New Project i w odpowiednim polu pojawiającego się typowego okna dialogowego wpisać nazwę nowego projektu - powstanie plik z rozszerzeniem *.uv. Uwaga: projekty studenckie powinny być tworzone w indywidualnych katalogach załoŝonych wewnątrz katalogu D:\805\LAB.. Po wciśnięciu przycisku Zapisz, pojawi się kolejne okno dialogowe umoŝliwiające wskazanie typu mikrokontrolera docelowego. W przypadku programów laboratoryjnych naleŝy wskazać z grupy Atmel układ AT89S5 i wcisnąć przycisk OK.. Z kolei pojawi się okno z zapytaniem o dołączenie standardowego kodu rozruchowego rezygnujemy z niego wciskając Nie. 4. W kolejnym kroku otwieramy nowy plik opcją File / New, skrótem klawiszowym Ctrl+N albo przyciskiem szybkiego wyboru. 5. Pliki juŝ istniejące otwiera się do edycji opcją File / Open, skrótem klawiszowym Ctrl+O albo przyciskiem szybkiego wyboru. -7
20 6. W powstałym oknie edytora tekstu wpisujemy tekst naszego programu lub od razu wykonujemy działanie z następnego punktu. 7. Zapamiętujemy przygotowany tekst źródłowy przy pomocy opcji File / Save as: w typowym oknie dialogowym naleŝy podać nazwę pliku - wskazane jest by była to nazwa projektu z rozszerzeniem *.asm (dla pliku asemblerowego) albo *.c (dla pliku w języku C). 8. Kolejne zapisy zmodyfikowanego tekstu źródłowego realizujemy opcją File / Save, przyciskiem albo skrótem klawiaturowym Ctrl+S. 9. Dodajemy nasz plik *.asm lub *.c do zasobów projektu. W tym celu, w widocznym po lewej stronie oknie wybieramy zakładkę Files, rozwijamy + Target i klikamy prawym przyciskiem myszy na napis Source Group. Z pojawiającego się menu podręcznego wybieramy opcję Add Files to Group... i w kolejnym oknie dialogowym wskazujemy wcześniej zapisany plik *.asm (przyciski Add i Close). 0. JeŜeli tekst naszego programu jest podzielony na kilka plików, dodajemy je wszystkie do projektu w ten sam sposób.. Opcje edytora, wygląd okna edycji tekstu programu, dostępne skróty klawiaturowe moŝemy modyfikować przy pomocy opcji View / Options.. Chcąc wznowić pracę z juŝ istniejącym projektem z menu Project wybieramy Open Project i wskazujemy interesujący nas plik..4.. Kompilacja programu. Przed przystąpieniem do kompilacji programu naleŝy odpowiednio ustawić niektóre z opcji oprogramowania narzędziowego. W tym celu korzystamy z opcji: Project / Options for Target albo z przycisku skrótu, widocznego na lewo od okienka z napisem 'Target '.. Na zakładce Target wybieramy: model pamięci danych: small, compact albo large; model pamięci programu: small, compact albo large; wybór dla Operating System pozostawiamy na none; moŝemy równieŝ wpisać częstotliwość taktowania mikrokontrolera (w modułach laboratoryjnych jest to,059mhz); pole Use On-chip ROM zaznaczamy (dla programów ładowalnych do zewnętrznej pamięci SRAM jako pamięci programu - pozostawiamy niezaznaczone); w polach Off-chip Code memory wpisujemy parę wartości: Start:0x000 i Size:0x000, co oznacza, Ŝe zewnętrzna pamięć programu zaczyna się od adresu 000h i ma rozmiar 4kB; w polach Off-chip Xdata memory wpisujemy parę wartości: 0x8000 i 0x8000, co oznacza dostępność zewnętrznej pamięci danych w obszarze od 8000h do 0FFFFh;. Na zakładce Output wybieramy: w polu Name of Executable wpisujemy właściwą nazwę pliku; wybieramy znacznik Create Executable... i zaznaczamy pola przy opcjach: Debug Information, Browse Information oraz Create HEX File; -8
21 4. Na zakładce Listing: przyciskiem Select Folder for Listings ustawiamy właściwy katalog dla pliku *.LST (ten sam co projektu); zaznaczamy pole wyboru przy C Compiler Listing i wszystkie jego podrzędne pola wyboru; zaznaczamy pole wyboru przy Linker Listing; niezaznaczone pozostają pola przy C Preprocessor Listing oraz Assembler Listing; 5. Wprowadzone zmiany ustawień zatwierdzamy przyciskiem OK. 6. MoŜna przystąpić do kompilacji/asemblacji programu. Kompilację wywołuje się opcją: Project / Build Target albo przyciskiem szybkiego wyboru na pasku menu albo klawiszem F7. O wynikach kompilacji dowiadujemy się w dolnym oknie komunikatów. Powstaje równieŝ plik *.lst zawierający przedruk programu i raport z jego kompilacji. 7. W oknie komunikatów pojawiają się teŝ informacje o błędach kompilacji. 8. JeŜeli w oknie komunikatów dwukrotnie klikniemy na taką informację, to spowoduje to ustawienie kursora w oknie edycji programu na wierszu z sygnalizowanym błędem..4.. Symulacja programowa - debugowanie. Po poprawnym skompilowaniu programu moŝna uruchomić jego symulację opcją: Debug / Start/Stop Debug Session, przyciskiem szybkiego wyboru albo skrótem klawiaturowym Ctrl+F5. Pojawia się okienko ostrzegające o ograniczonych moŝliwościach pakietu (do kb kodu), które naleŝy zaakceptować przyciskiem OK.. Pasek narzędzi związanych z kompilacją zostaje zastąpiony paskiem narzędzi debugera. Uaktywnia się zakładka Regs w lewym oknie podglądu. Dzięki niej moŝna obserwować stan rejestrów: R0..R7 (aktywnego banku rejestrów), A, B, SP, DPTR, PSW, a takŝe upływający czas pracy mikrokontrolera. MoŜliwa jest równieŝ modyfikacja po dwukrotnym kliknięciu na wybraną wartość. Natomiast z boku okna z tekstem programu ukazuje się Ŝółty kursor wskazujący instrukcję do wykonania, dodatkowo wykonane przynajmniej raz instrukcje zostają oznaczone zielonym paskiem.. Program napisany w języku C moŝna debugować na poziomie składni języka C albo kodu wynikowego. W tym drugim przypadku naleŝy uŝyć opcji: View / Disassembly Window albo przycisku. Ponowne uŝycie tej opcji / przycisku powoduje przełączenie na okno z tekstem programu w C. Do przełączania pomiędzy oknami z programem C i zdeasemblowanym kodem moŝna takŝe uŝyć zakładek, pojawiających się u dołu okna edytora. 4. JeŜeli oprócz tekstu (kodu) programu i stanu podstawowych rejestrów chcemy takŝe śledzić zawartość wybranej pamięci naleŝy uŝyć opcji: View / Memory Window albo przycisku. Pojawi się wtedy (u dołu, po prawej) okno podglądu pamięci. Udostępnia ono 4 zakładki podglądu (Memory #.. Memory #4), które mogą mieć ustawione róŝne adresy początkowe i typy pamięci (poprzez wpis w pole Address). ZaleŜnie od typu obszaru pamięci, który chcemy podglądać, naleŝy uŝyć odpowiedniego formatu adresu początkowego: -9
22 0x000 lub C:0x000 - dla obszaru pamięci programu (CODE); I:0x0 - dla obszaru wewnętrznej pamięci danych adresowalnej w trybie rejestrowym pośrednim (IDATA) podstawowe 8B SRAM + opcjonalne 8B SRAM od adresu 0x80; D:0x0 - dla obszaru wewnętrznej pamięci danych adresowalnej w trybie bezpośrednim (DATA) - podstawowe 8B SRAM + blok SFR; X:0x dla obszaru zewnętrznej pamięci danych adresowanej 6-bitowo (XDATA) rejestrem DPTR. Ponadto, prawy przycisk myszy, uŝyty w obszarze wyświetlanej zawartości pamięci, uruchamia menu podręczne. UmoŜliwia ono wybór sposobu prezentacji zawartości komórek (bajty, słowa, liczby ze znakiem, itd.) oraz modyfikację wybranej komórki pamięci. 5. Uruchamiany program moŝe takŝe wykorzystywać peryferia wbudowane w strukturę mikrokontrolera. Do kontroli i "ręcznej" modyfikacji bieŝącego stanu wybranych peryferii naleŝy uŝyć menu Peripherals, wybierając z niego interesujące nas opcje (I/O Ports, Serial, Timer). Spowoduje to otwarcie odpowiednich okienek podglądu i modyfikacji stanu urządzenia zewnętrznego. 6. Do symulacji pracy programu moŝna wykorzystać szereg poleceń tabela.7. Tab..7. Główne polecenia związane z symulacją pracy programu opcja skrót klawiaturowy przycisk szybkiego wyboru Debug/Go F5 start ciągłej pracy funkcja Debug/Stop Running Esc zatrzymanie ciągłej pracy Debug/Step F praca krokowa Debug/Step Over F0 praca krokowa bez wchodzenia do wnętrza wywoływanych funkcji Debug/Step Out Ctrl+F dokończenie bez zatrzymania aktualnie wywołanej funkcji Debug/Insert/Remove Breakpoint Debug/Enable/Disable Breakpoint Debug/Disable All Breakpoints Debug/Kill All Breakpoints Debug/Breakpoints.. ustawienie/usunięcie pułapki we wskazanym miejscu włączanie/wyłączanie wskazanej pułapki wyłączenie wszystkich pułapek usunięcie wszystkich pułapek otwiera okno sterowania pułapkami, umoŝliwiające ustawienie szczegółów ich funkcjonowania -0
23 Ponadto, moŝliwe jest włączenie podglądu wartości zmiennych programowych, jak równieŝ wybranych fragmentów pamięci operacyjnej, rejestrów SFR, rejestrów roboczych.. Cele ćwiczenia Poznanie oprogramowania narzędziowego i zasad jego wykorzystania przy uruchamianiu systemów mikroprocesorowych na MCS5. Zweryfikowanie informacji dotyczących funkcjonowania przykładowego 8-bitowego mikrokomputera jednoukładowego. Zdobycie praktycznych umiejętności potrzebnych przy uruchamianiu systemów mikroprocesorowych opartych na MCS5.. Metodyka badań.. Stanowisko badawcze Ćwiczenie przeprowadzane jest w dwuosobowych grupach przy stanowisku komputerowym. Na komputerze jest zainstalowane środowisko uruchomieniowe Keil µvision. Studenci piszą i uruchamiają swoje programy w indywidualnych podkartotekach (np. pon5), załoŝonych w kartotece D:\805\LAB na zajęciach wprowadzających. Do tych podkartotek naleŝy skopiować oprogramowanie narzędziowe i pliki pomocnicze z głównego katalogu... Przebieg ćwiczenia Zajęcia są planowane jako -godzinne i obejmują:. Aktywne zapoznanie się z zasadami wykorzystania asemblera, linkera i symulatora ekranowego, obejmujące: przygotowanie przy pomocy edytora tekstu źródłowego zawierającego sekwencję rozkazów mikroprocesora dotyczących: inicjacji wskaźnika stosu SP i licznika pętli programowej; przesłań pomiędzy rejestrami roboczymi; przesłań między rejestrami i pamięcią wewnętrzną; zapisu i odczytu ze stosu; warunku końca pętli (DJNZ); przy uŝyciu odpowiednich dyrektyw asemblera (ORG, DB, DW, END); (szczegółowych wskazówek co do treści programu testowego udzieli kaŝdorazowo prowadzący zajęcia); dokonanie asemblacji powyŝszego programu z wygenerowaniem pliku raportu z asemblacji (*.LST) i pliku z kodem wynikowym (*.HEX): analiza zawartości pliku *.LST, ze zwróceniem uwagi na sposób przetłumaczenia języka symbolicznego na kody binarne zrozumiałe dla mikroprocesora; przeprowadzenie symulacji przygotowanego programu, w celu zapoznania się z moŝliwościami symulatora.. Analiza funkcjonowania mikroprocesora podczas wykonywania róŝnych operacji, polegająca na zaobserwowaniu kolejnych stanów mikroprocesora w -
24 pracy krokowej, ze zwróceniem uwagi na czasy wykonywania rozkazów, zmianę zawartości rejestrów mikroprocesora i pamięci danych... Prezentacja i analiza wyników badań. Wynikiem pracy grupy laboratoryjnej są programy na mikroprocesor 805. Wnioski i uwagi, jakie nasunęły się podczas wykonywania ćwiczenia naleŝy zamieścić w sprawozdaniu. 4. Wymagania BHP Warunkiem przystąpienia do ćwiczenia jest zapoznanie się z instrukcją BHP stosowaną w Laboratorium i ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje te powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. Pracownia powinna odpowiadać ogólnym wymaganiom BHP przewidzianym dla laboratorium komputerowego. 5. Sprawozdanie studenckie Sprawozdanie z ćwiczenia powinno zawierać: stronę tytułową zgodnie z obowiązującym wzorem; cel i zakres ćwiczenia; opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności; algorytm (opcjonalnie) i listing opracowanego programu; wnioski i uwagi. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją; program (algorytm i listing); wnioski i uwagi; terminowość i ogólna estetyka. Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później będą oceniane niŝej. 6. Literatura. A.Rydzewski - Mikrokomputery jednoukładowe rodziny MCS5(PKE).. H.Małysiak - Mikrokomputery jednoukładowe serii MCS48, MCS5, MCS96 (WPKJS).. T.Prokop - Wybrane mikrokomputery jednomodułowe firmy INTEL (skrypt PW). 4. P.i P.Gałka - Podstawy programowania mikrokontrolera 805 (MIKOM). 5. J.Janiczek, A.Stępień - Mikrokontrolery (WCKP). 6. J.Janiczek, A.Stępień - Laboratorium systemów mikroprocesorowych cz.i i II (WCKP). -
25 . Rozkazy arytmetyczne ADD A,Rr ADD A,dir ADD ADD A,#d8 A:=A+d8 ADDC A,Rr ADDC A,dir ADDC ADDC A,#d8 SUBB A,Rr SUBB A,dir SUBB SUBB A,#d8 Lista rozkazów MCS5 A:=A+Rr A:=A+dir A:=A+RAMw(Rj) A:=A+Rr+CY A:=A+dir+CY A:=A+RAMw(Rj)+CY A:=A+d8+CY A:=A-Rr-CY A:=A-dir-CY A:=A-RAMw(Rj)-CY A:=A-d8-CY Rr=R0,R,R,R,R4,R5,R6,R7 dir=adres bezpośredni RAMw Rj=R0,R d8=dana natychmiastowa B INC arg arg:=arg+ arg=a,rr,dir,@rj DEC arg arg:=arg- arg=a,rr,dir,@rj INC DPTR DPTR:=DPTR+ DA A korekcja dziesiętna A (tylko po dodawaniu) MUL AB BA:=A*B iloczyn bez znaku DIV AB A:=A/B, B:=A mod B. Rozkazy logiczne ANL A,Rr A:=A Rr Rr=R0,R,R,R,R4,R5,R6,R7 ANL A,dir A:=A dir dir=adres bezpośredni RAMw ANL A,@Rj A:=A RAMw(Rj) Rj=R0,R ANL A,#d8 A:=A d8 d8=dana natychmiastowa B ANL dir,a dir:=dir A ANL dir,#d8 dir:=dir d8 ORL A,Rr A:=A Rr ORL A,dir A:=A dir ORL A,@Rj A:=A RAMw(Rj) ORL A,#d8 A:=A d8 ORL dir,a dir:=dir A ORL dir,#d8 dir:=dir d8 XRL A,Rr A:=A Rr x y = /x y x /y XRL A,dir A:=A dir XRL A,@Rj A:=A RAMw(Rj) XRL A,#d8 A:=A d8 XRL dir,a dir:=dir A XRL dir,#d8 dir:=dir d8 CLR A A:=0 CPL A A:=not A -
26 . Rozkazy obrotów RL A 7 A 0 RLC A CY 7 A 0 RR A 7 A 0 RRC A CY 7 A 0 SWAP A A 7..4 A Rozkazy skoków AJMP a PC 0..0 a a-adres wewn. bieŝącej kb strony programu LJMP a6 PC a6 a6-adres pełny PC:=DPTR+A, A=0..55 ; przykład uŝycia rozkazu do realizacji skoku z przełącznikiem ; zał: numer skoku (0..k) znajduje się w akumulatorze... RL A ;podwojenie wartości k MOV DPTR,#jmptab ;DPTR tablica z adresami skoków jmptab: AJMP proc0 AJMP proc... AJMP... prock SJMP r8 PC:=PC+r8 r8:= JZ r8 if A=0 then PC:=PC+r8 JNZ r8 if A 0 then PC:=PC+r8 JC r8 if CY= then PC:=PC+r8 JNC r8 if CY=0 then PC:=PC+r8 JB bit,r8 if bit= then PC:=PC+r8 JNB bit,r8 if bit=0 then PC:=PC+r8 JBC bit,r8 if bit= then (PC:=PC+r8, bit:=0) CJNE arg,arg,r8 if arg < arg then CY:= else CY:=0 moŝliwe pary: if arg arg then PC:=PC+r8 arg arg A dir A #d8 Rr #d8 DJNZ arg,r8 arg := arg- arg = Rr, dir if arg 0 then PC:=PC+r8-4
27 5. Rozkazy operacji bitowych CLR C CY:=0 CLR bit bit:=0 bit - bit bezpośrednio adresowalny CPL C CY:=not CY CPL bit bit:=not bit ANL C, bit CY:=CY bit ANL C,/bit CY:=CY (not bit) ORL C, bit CY:=CY bit ORL C,/bit CY:=CY (not bit) MOV C,bit CY bit MOV bit,c bit CY 6. Rozkazy przesłań MOV A,Rr A Rr Rr=R0,R,R,R,R4,R5,R6,R7 MOV A,dir A dir dir= adres bezpośredni RAMw MOV A,@Rj A RAMw(Rj) Rj=R0,R MOV A,#d8 A d8 d8=dana natychmiastowa B MOV Rr,A Rr A MOV Rr,dir Rr dir MOV Rr,#d8 Rr d8 MOV dir,a dir A MOV dir,rr dir Rr MOV dir,@rj dir RAMw(Rj) MOV dir,#d8 dir d8 MOV dird,dirs dird dirs dird,dirs = dir RAMw(Rj) A RAMw(Rj) dir RAMw(Rj) d8 MOV DPTR,#d6 DPTR d6 d6=dana natychmiastowa B MOVC A,@A+DPTR A ROM(DPTR+A) MOVC A,@A+PC A ROM(PC+A) MOVX A,@DPTR A RAMz(DPTR) RAMz(DPTR) A MOVX A,@Rj A RAMz(Rj) RAMz(Rj) A XCH A,Rr A Rr XCH A,dir A dir XCH A,@Rj A RAMw(Rj) XCHD A,@Rj A..0 RAMw(Rj)..0 PUSH dir SP:=SP+, RAMw(SP) dir POP dir dir RAMw(SP), SP:=SP- NOP instrukcja pusta -5
28 7. Rozkazy wywołań i powrotów ACALL a SP:=SP+, RAMw(SP) PC L, SP:=SP+, RAMw(SP) PC H PC 0..0 a a-adres wewn. bieŝącej kb strony programu LCALL a6 SP:=SP+, RAMw(SP) PC L, SP:=SP+, RAMw(SP) PC H PC a6 a6-adres pełny RET PC H RAMw(SP), SP:=SP- PC L RAMw(SP), SP:=SP- RETI PC H RAMw(SP), SP:=SP- PC L RAMw(SP), SP:=SP-, odblokowanie aktualnego poziomu przerwań ; procedura zamiany liczby binarnej w A na znaki ASCII jako cyfry hex ; parametry: A = liczba w NB ; R bufor na znaki ASCII ; wyniki: M(R),M(R+) znaki ASCII hex ; zmiany: A,PSW,R:=R+ ; czas pracy: 8-0c.m. ; długość: B toascii: PUSH B ;przechowanie B na stosie MOV B,#6 DIV AB ;A:=A/6, B:=A mod 6 ORL A,#0h ;tworzenie znaku ASCII CJNE A,#Ah,ta ;dla starszej cyfry hex ta: JC ta ;skok przy znakach ADD A,#7 ;korekcja kodu znaku ta: ;znak do bufora INC R ;następna pozycja w buforze MOV A,B ORL A,#0h ;tworzenie znaku ASCII CJNE A,#Ah,ta ;dla młodszej cyfry hex ta: JC ta4 ;skok przy znakach ADD A,#7 ;korekcja kodu znaku ta4: ;znak do bufora INC R ;następna pozycja w buforze POP B ;odtworzenie stanu B RET -6
29 ; procedura realizująca programowo zadane opóźnienie ; parametry: R7 = liczba w NB ; wyniki: czas wykonania procedury zaleŝny od R7 ; zmiany: R7:=0 ; czas pracy: 4+6*R7 c.m. ; długość: 6B delay: PUSH B ;przechowanie B, A i PSW na stosie PUSH ACC ;poniewaŝ rozkaz MUL zmienia je PUSH PSW delay: MUL AB ;rozkaz zuŝywający czas" DJNZ R7,delay ;licznik pętli powtórzeń POP PSW ;odtworzenie PSW, A i B ze stosu POP ACC POP B RET PoniŜej przedstawiono alternatywną wersję tej procedury ; procedura realizująca programowo zadane opóźnienie ; parametry: R7 = liczba w NB ; wyniki: czas wykonania procedury zaleŝny od R7 ; zmiany: R7:=0 ; czas pracy: +6*R7 c.m. ; długość: 7B delay: NOP ;rozkazy zuŝywające czas NOP NOP NOP DJNZ R7,delay ;licznik pętli powtórzeń RET -7
30 ADD ADDC Wpływ rozkazów na stan flag PSW typ rozkazu CY AC OV P komentarz z z z z kaŝdy rozkaz traktujący PSW jako bajt pamięci lub bity bezpośrednio adresowalne z kaŝdy rozkaz zmieniający stan A A,... A,... z z z z CY - przy dodawaniu NB sygnalizuje nadmiar OV- ustawiania gdy jest przeniesienie z bitu 7 a nie ma z bitu 6 lub odwrotnie, zerowana w pozostałych przypadkach, przy dodawaniu U sygnalizuje nadmiar SUBB A,... z z z z CY - wymagana poŝyczka dla bitu 7 OV - ustawiana gdy jest poŝyczka dla bitu 7 a nie ma dla bitu 6 lub odwrotnie, zerowana w pozostałych przypadkach, przy odejmowaniu U sygnalizuje nadmiar MUL AB 0 z z OV - ustawiana gdy iloczyn > 55 DIV AB 0 z z OV - ustawiana gdy dzielenie przez 0 DA A z z RRC A z z RLC A CJNE arg,arg z CY:= gdy arg < arg CLR C 0 CY:=0 CPL C z CY:=not CY SETB C CY:= ANL C,... z zgodnie z wynikiem operacji ORL C,... z zgodnie z wynikiem operacji MOV C,... z zgodnie z wynikiem operacji flagi F0 i F w PSW są przeznaczone dla uŝytkownika -8
31 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Badanie moŝliwości arytmetycznych mikrokomputera 805 Numer ćwiczenia: Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
32 . Wprowadzenie Przy realizacji obliczeń matematycznych, a takŝe algorytmów sterowania (zwłaszcza wielkości ciągłych) zachodzi konieczność dokonywania złoŝonych operacji arytmetycznych. W takich przypadkach trzeba realizować nie tylko operacje dodawania i odejmowania, ale takŝe trudniejsze od nich - mnoŝenie i dzielenie. Co więcej, ze względu na konieczność reprezentacji wartości rzeczywistych naleŝy stosować arytmetykę liczb wielobajtowych ze znakiem. Ten rodzaj arytmetyki przy uŝyciu mikroprocesorów szesnasto- i więcej bitowych, współpracujących z koprocesorami arytmetycznymi lub wyposaŝonych we wbudowane jednostki zmiennoprzecinkowe (FPU) nie jest zbyt trudny. Sytuacja komplikuje się, gdy system mikroprocesorowy opiera się na stosunkowo prostym mikroprocesorze ośmiobitowym. Dla takiego mikroprocesora podstawowym rozmiarem słowa, na którym jest on w stanie operować, jest pojedynczy bajt. Czasami tylko, mikroprocesor ośmiobitowy potrafi zrealizować proste dodawanie lub odejmowanie liczb szesnastobitowych (moŝliwość taka wynika z konieczności obsługi adresów większych tablic). Arytmetyka liczb dwubajtowych z reguły jest za słaba wobec wymagań algorytmów sterowania. Trzeba wtedy realizować operacje arytmetyczne, zarówno te proste jak i bardziej złoŝone, algorytmami bazującymi na bajtach, jako podstawowych jednostkach informacji. Wśród układów peryferyjnych Intela moŝna znaleźć procesory arytmetyczne do systemów ośmiobitowych, ale w praktyce są one nieosiągalne. RównieŜ wbudowane w niektóre mikrokomputery jednoukładowe (np. C57, C57A Siemensa, C504 i C508 Philipsa) jednostki arytmetyczne stanowią wyjątek. Pozostaje więc stosować dla systemów ośmiobitowych programowe implementacje arytmetyki wielobajtowej. Dodawanie i odejmowanie wielobajtowych liczb całkowitych lub rzeczywistych w notacji stałopozycyjnej nie jest skomplikowane. Ogólne zasady realizacji takich operacji to: rozpoczynanie działania od najmniej znaczącego bajtu; właściwe wykorzystanie flagi przeniesienia/poŝyczki. Trudniejsze z oczywistych względów są operacje mnoŝenia i dzielenia. Ich realizacje wykorzystujące odpowiednio algorytmy wielokrotnego dodawania i odejmowania nie mają praktycznego znaczenia z uwagi na znaczną czasową złoŝoność obliczeniową. DuŜo efektywniejsze pod względem czasowym są algorytmy restytucyjne, będące przeniesieniem znanych ze szkoły metod pisemnego mnoŝenia i dzielenia liczb. Specyfika binarnego zapisu liczb sprawia, Ŝe implementacje tych algorytmów w asemblerze nie są aŝ tak złoŝone, jak się to wydaje na pierwszy rzut oka. PoniŜej zostaną przedstawione algorytmy mnoŝenia i dzielenia liczb całkowitych. Są one identyczne takŝe dla liczb w zapisie stałopozycyjnym. Algorytmy zostaną opisane w składni Pascala. -
33 MnoŜenie restytucyjne liczb wielobajtowych: { l - n-bitowy czynnik l - m-bitowy czynnik lw - k-bitowy iloczyn (k=n+m) i - licznik bitów czynnika l} begin lw:=0; i:=0; repeat if l i = then { l i oznacza i-ty bit liczby l} lw:=lw+l; end; l:=shl(l); i:=i; until i=n+m; { shl() jest operacją przesunięcia o bit w lewo} PowyŜszy algorytm zakłada testowanie pojedynczych bitów jednego z czynników i na podstawie ich stanu dodawanie lub nie stopniowo przesuwanego w lewo drugiego czynnika do sumy końcowej (iloczynu). JeŜeli mikroprocesor dysponuje rozkazami mnoŝenia bajt przez bajt, to algorytm ten moŝna uprościć: liczy się wtedy dwubajtowe iloczyny cząstkowe i dodaje do wyniku końcowego z odpowiednim przesunięciem wagowym. Pozycję, od której naleŝy rozpocząć dodawanie takiego iloczynu cząstkowego do wielobajtowego wyniku, oblicza się jako sumę pozycji mnoŝonych bajtów w liczbachczynnikach. Dzielenie restytucyjne liczb wielobajtowych: { l - n-bitowa dzielna l - m-bitowy dzielnik ld - k-bitowe słowo pomocnicze (k=n+m) i - licznik bitów dzielnej} begin i:=n; ld L :=l; { ld L - mniej znacząca n-bitowa część ld } ld H :=0; { ld H - bardziej znacząca m-bitowa część ld } repeat ld:=shl(ld); if ld H >= l then begin ld H := ld H -l; ld L := ld L +; end; i:=i-; until i = 0; { ld H = reszta z dzielenia, ld L = iloraz } end; -
34 Analiza algorytmu dzielenia restytucyjnego dla liczb wielobajtowych wskazuje, Ŝe dysponowanie rozkazem dzielenia bajt przez bajt nie pozwala, wbrew pozorom, na uproszczenie implementacji programowej, podobnie jak to jest w przypadku mnoŝenia. MnoŜenie i dzielenie liczb wielobajtowych w kodzie U wymaga oddzielnego ustalenia znaku wyniku i przeprowadzenia działań na liczbach dodatnich. Po zakończeniu algorytmu wynikowi nadaje się odpowiedni znak.. Cele ćwiczenia Opanowanie technik realizacji złoŝonych operacji arytmetycznych na poziomie asemblera. Doskonalenie praktycznych umiejętności w wykorzystaniu róŝnych technik przekazywania informacji pomiędzy procesem wywołującym, a procesem wywoływanym.. Metodyka badań.. Stanowisko badawcze Ćwiczenie przeprowadzane jest w dwuosobowych grupach przy stanowisku komputerowym. Na komputerze jest zainstalowane środowisko uruchomieniowe Keil µvision. Studenci piszą i uruchamiają swoje programy w indywidualnych podkartotekach (np. pon5), załoŝonych w kartotece D:\805\LAB na zajęciach wprowadzających. Do tych podkartotek naleŝy skopiować oprogramowanie narzędziowe i pliki pomocnicze z głównego katalogu... Przebieg ćwiczenia Zajęcia są planowane jako -godzinne i przewidują:. Przygotowanie procedur realizujących zadane przez prowadzącego obliczenia arytmetyczne, wykorzystujące operacje mnoŝenia lub dzielenia. Przykładowe zadania: mnoŝenie liczb wielobajtowych bez znaków; dzielenie liczby -bajtowej przez -bajtową bez znaków; mnoŝenie liczb -bajtowych ze znakiem; dzielenie liczby -bajtowej w U przez -bajtową w U;. Napisanie krótkiego programu wykorzystującego przygotowaną procedurę. NaleŜy zwrócić uwagę na właściwy dobór techniki wymiany informacji pomiędzy programem wywołującym a wywoływaną procedurą.. Dokonanie asemblacji powyŝszego programu z wygenerowaniem pliku raportu z asemblacji (*.LST) i pliku z kodem wynikowym (*.HEX): 4. Przeprowadzenie symulacji pracy przygotowanego programu name.hex w celu przetestowania poprawności rozwiązania postawionego zadania... Prezentacja i analiza wyników badań. Wynikiem pracy grupy laboratoryjnej są programy na mikroprocesor 805. Wnioski i uwagi, jakie nasunęły się podczas wykonywania ćwiczenia naleŝy zamieścić w sprawozdaniu. -4
35 4. Wymagania BHP Warunkiem przystąpienia do ćwiczenia jest zapoznanie się z instrukcją BHP stosowaną w Laboratorium i ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje te powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. Pracownia powinna odpowiadać ogólnym wymaganiom BHP przewidzianym dla laboratorium komputerowego. 5. Sprawozdanie studenckie Sprawozdanie z ćwiczenia powinno zawierać: stronę tytułową zgodnie z obowiązującym wzorem; cel i zakres ćwiczenia; opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności; algorytm (opcjonalnie) i listing opracowanego programu; wnioski i uwagi. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją; program (algorytm i listing); wnioski i uwagi; terminowość i ogólna estetyka. Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później będą oceniane niŝej. 6. Literatura. A.Rydzewski - Mikrokomputery jednoukładowe rodziny MCS5(PKE).. H.Małysiak - Mikrokomputery jednoukładowe serii MCS48, MCS5, MCS96 (WPKJS).. T.Prokop - Wybrane mikrokomputery jednomodułowe firmy INTEL (skrypt PW). 4. P.i P.Gałka - Podstawy programowania mikrokontrolera 805 (MIKOM). 5. J.Janiczek, A.Stępień - Mikrokontrolery (WCKP). 6. J.Janiczek, A.Stępień - Laboratorium systemów mikroprocesorowych cz.i i II (WCKP). -5
36 -6 Laboratorium Mikrokontrolerów cz.
37 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Biblioteki procedur arytmetycznych Numer ćwiczenia: Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
38 . Wprowadzenie Zakres stosowalności arytmetyki liczb całkowitych (ze znakiem lub bez) jest dosyć ograniczony: mechanizmy adresowania i indeksowania tablic i innych złoŝonych struktur danych; rozwiązywanie zadań programowania całkowitoliczbowego; zadania organizacyjne (zliczanie zdarzeń, przerwań, itp.). Bardzo rzadko udaje się sprowadzić problem obliczeń wartości rzeczywistych (związanych z pomiarami lub regulacją) do dziedziny liczb całkowitych. Wymaga to zwykle stosowania wydłuŝonej reprezentacji binarnej i odpowiednich współczynników skalowania. Dlatego teŝ niejednokrotnie trzeba korzystać z arytmetyki liczb rzeczywistych. Do obliczeń na liczbach rzeczywistych moŝna stosować dwa formaty ich zapisu : zapis stałopozycyjny, zakładający podział ciągu bitów reprezentujących wartość liczby na część całkowitą i ułamkową o stałych długościach: wagi bitów m- m (n+) -n m bitów części całkowitej n bitów części ułamkowej zakres reprezentowanych wartości (0.. m - -n ) zaleŝy od liczby bitów części całkowitej, a dokładność - od liczby bitów części ułamkowej (tabela ). Tab.. Przykładowe formaty stałopozycyjne format wartości ujemne wartości dodatnie rozdzielm.n min max min max czość 8.8 NB U -( 7 ) U -( 5 ) ( 5 ) U ( -8 ) -,9E- -( -8 ) -,9E- -( -6 ) -,56E-5 55, , , ,99998,9E- -8,9E- -8,9E- -6,56E-5 zapis zmiennopozycyjny, wykorzystujący moŝliwość wykładniczego zapisu dowolnej wartości rzeczywistej: L = m p C, gdzie: p - podstawa zliczania; c - cecha całkowita. m - mantysa o wartości z przedziału < 0, p 0 ), zwykle m {0} {< p -, p 0 )} i jest to tzw. mantysa znormalizowana, przy realizacji na liczbach binarnych p=, więc m {0} {< /, )}; zakres reprezentowanych wartości zaleŝy od liczby bitów cechy, a dokładność - od liczby bitów mantysy (przykładowe formaty w tabeli ). 5-
39 Tab.. Przykładowe formaty zmiennopozycyjne format wartości mantysy i cechy reprezentowane wartości rzeczywiste m {0} {< /, 55 / 56 >} 0, c U c < -8, 7 > 0,, , m NB m {0} {< /, - -6 >} Z c U +40h c < -64, 6 > m0 ZM m ZM ( -65 ),0, , ,7 0-0,0,, , 0 8 c U +80h m0 ZM m ZM m {0} {< /, - - >} c < -8, 7 > -( -) ,0, -9...( -) 04 -, ,47 0-9,0,, ,7 0 8 Z m ZM 6 m ZM m0 ZM m ZM m5 ZM Z c U +400h m ZM m4 ZM m6 ZM m ZM m0 ZM m ZM m ZM m5 ZM m4 ZM m7 ZM m6 ZM Z c U +4000h m {0} {< /, - -5 >} c < -04, 0 > m {0} {< /, >} c < -684, 68 > -( 9 -) ,0, ( 9 -) 995 -, , ,0,, , wartość 0 m=0 i c=0 -( 64 -) ,0, ( 64 -) 69-5, , 0-49,0 4, , Zasady realizacji obliczeń arytmetycznych na liczbach stałopozycyjnych są bardzo podobne do obliczeń na liczbach całkowitych. Warunkiem poprawnego ich przeprowadzenia jest uŝycie liczb o identycznych formatach (jednakowych ilościach bitów części całkowitej i ułamkowej). Operacje dodawania, odejmowania, a nawet dzielenia moŝna przeprowadzać według tych samych algorytmów co dla liczb całkowitych. RównieŜ mnoŝenie liczb w zapisie stałopozycyjnym realizuje się tak jak dla liczb całkowitych, naleŝy jedynie pamiętać o tym, Ŝe powstały iloczyn zawiera dwa razy więcej bitów części ułamkowej - konieczna jest operacja tzw. normalizacji liczby. 5-
40 Operacje dodawania i odejmowania liczb w zapisie zmiennopozycyjnym są bardziej złoŝone - wymagają wstępnego porównania cech obu liczb i takiej modyfikacji mantysy liczby o niŝszej cesze, by moŝliwe było bezpośrednie dodanie lub odjęcie obu mantys. Opisuje to poniŝszy wzór: Lw = mw p CW = L ± L = c c c (m± ( m : p )) p c > c c (m± m) p c= c c c c ((m: p ) ± m) p c< c Po zakończonej operacji naleŝy jedynie sprawdzić wartość mantysy wyniku i dokonać ewentualnie jej normalizacji. MnoŜenie i dzielenie nie wymaga wstępnego sprawdzania relacji pomiędzy cechami argumentów działań. Podstawowe wzory opisujące te działania są następujące: Lw = mw p CW Lw = mw p CW = L L = m m p C+C = L : L = m : m p C-C W przypadku tych działań równieŝ powinno się sprawdzić uzyskaną mantysę wyniku i dokonać ewentualnie jej normalizacji zgodnie z przyjętym formatem zmiennopozycyjnym.. Cele ćwiczenia Przećwiczenie zasad realizacji w asemblerze arytmetyki liczb w zapisie stało- i zmiennopozycyjnym.. Metodyka badań.. Stanowisko badawcze Ćwiczenie przeprowadzane jest w dwuosobowych grupach przy stanowisku komputerowym. Na komputerze jest zainstalowane środowisko uruchomieniowe Keil µvision. Studenci piszą i uruchamiają swoje programy w indywidualnych podkartotekach (np. pon5), załoŝonych w kartotece D:\805\LAB na zajęciach wprowadzających. Do tych podkartotek naleŝy skopiować oprogramowanie narzędziowe i pliki pomocnicze z głównego katalogu. Program ćwiczenia moŝe być realizowany wariantowo (zaleŝnie od decyzji prowadzącego) albo w oparciu o symulator ekranowy, albo przy wykorzystaniu modułowego systemu laboratoryjnego z MCS5 (w tym drugim przypadku ćwiczenie powinno być przeprowadzone pod koniec drugiej serii ćwiczeń)... Przebieg ćwiczenia Zajęcia są planowane jako 4-godzinne i przewidują:. Przygotowanie procedur realizujących zadane przez prowadzącego działania arytmetyczne na wybranych formatach liczb stało- albo zmiennopozycyjnych. Przykładowe operacje: mnoŝenie liczb stałopozycyjnych; dodawanie liczb zmiennopozycyjnych; 5-4
41 odejmowanie liczb zmiennopozycyjnych; mnoŝenie liczb zmiennopozycyjnych; dzielenie liczb zmiennopozycyjnych;. Napisanie krótkiego programu wykorzystującego przygotowaną procedurę. NaleŜy zwrócić uwagę na właściwy dobór techniki wymiany informacji pomiędzy programem wywołującym a wywoływaną procedurą.. Dokonanie asemblacji powyŝszego programu z wygenerowaniem pliku raportu z asemblacji (*.LST) i pliku z kodem wynikowym (*.HEX): 4. Przeprowadzenie symulacji pracy przygotowanego programu name.hex w celu przetestowania poprawności rozwiązania postawionego zadania... Prezentacja i analiza wyników badań. Wynikiem pracy grupy laboratoryjnej są programy na mikroprocesor 805. Wnioski i uwagi, jakie nasunęły się podczas wykonywania ćwiczenia naleŝy zamieścić w sprawozdaniu. 4. Wymagania BHP Warunkiem przystąpienia do ćwiczenia jest zapoznanie się z instrukcją BHP stosowaną w Laboratorium i ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje te powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. Pracownia powinna odpowiadać ogólnym wymaganiom BHP przewidzianym dla laboratorium komputerowego. 5. Sprawozdanie studenckie Sprawozdanie z ćwiczenia powinno zawierać: stronę tytułową zgodnie z obowiązującym wzorem; cel i zakres ćwiczenia; opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności; algorytm (opcjonalnie) i listing opracowanego programu; wnioski i uwagi. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją; program (algorytm i listing); wnioski i uwagi; terminowość i ogólna estetyka. Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później będą oceniane niŝej. 6. Literatura. A.Rydzewski - Mikrokomputery jednoukładowe rodziny MCS5(PKE).. H.Małysiak - Mikrokomputery jednoukładowe serii MCS48, MCS5, MCS96 (WPKJS). 5-5
42 . T.Prokop - Wybrane mikrokomputery jednomodułowe firmy INTEL (skrypt PW). 4. P.i P.Gałka - Podstawy programowania mikrokontrolera 805 (MIKOM). 5. J.Janiczek, A.Stępień - Mikrokontrolery (WCKP). 6. J.Janiczek, A.Stępień - Laboratorium systemów mikroprocesorowych cz.i i II (WCKP). 5-6
43 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Podzadania oprogramowania sterowników mikroprocesorowych Numer ćwiczenia: 4 Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
44 . Wprowadzenie Realizacja algorytmów sterowania ciągłego lub binarnego wymaga często dodatkowych operacji na strukturach danych opisujących kontrolowany proces. Wyniki tych operacji mogą być niezbędne do wyznaczenia nowych sterowań wysyłanych do obiektu. Mogą teŝ być potrzebne do realizacji zadań związanych z raportowaniem, archiwizacją informacji o procesie, czy teŝ obsługi protokołów komunikacyjnych w złoŝonych systemach automatyki i pomiarów. Do przykładowych operacji, które mogą mieć praktyczne znaczenie w oprogramowaniu mikroprocesorowych układów sterowania i pomiarów, naleŝą: * operacje na tablicach jednowymiarowych: sortowanie, wyliczanie wartości średniej; * operacje na dynamicznie zmieniających się ciągach liczb: wyliczanie średniej, filtracja cyfrowa; * obsługa łącza komunikacyjnego (portu szeregowego): kontrola poprawności transmisji pojedynczych znaków (bity kontrolne) i całych komunikatów (sumy kontrolne liczone na bieŝąco); * analiza odbieranych komunikatów jako ciągów znaków: wyszukiwanie słów w komunikacie, przeszukiwanie słowników; * budowanie komunikatów wyjściowych: składanie tekstu komunikatu ze standardowych słów, zamiana wartości binarnych na ustalony (najczęściej znakowy) format reprezentacji; * realizacja podstawowych obliczeń: standardowa procedura licząca regulator PID, procedura linearyzująca czujniki pomiarowe.. Cel ćwiczenia Doskonalenie umiejętności rozwiązywania prostych zadań przetwarzania informacji na potrzeby algorytmów sterowania.. Metodyka badań.. Stanowisko badawcze Ćwiczenie przeprowadzane jest w dwuosobowych grupach przy stanowisku komputerowym. Na komputerze jest zainstalowane środowisko uruchomieniowe Keil µvision. Studenci piszą i uruchamiają swoje programy w indywidualnych podkartotekach (np. pon5), załoŝonych w kartotece D:\805\LAB na zajęciach wprowadzających. Do tych podkartotek naleŝy skopiować oprogramowanie narzędziowe i pliki pomocnicze z głównego katalogu. 4-
45 .. Przebieg ćwiczenia Zajęcia są zaplanowane jako 4-godzinne i przewidują:. Opracowanie algorytmów i przygotowanie indywidualnych (dla zespołów) programów zgodnie z zadaniami wydanymi przez prowadzącego. Zlecone zadania winny być zrealizowane w formie procedur. Przykładowe zadania: zamiana liczby w kodzie U na ciąg znaków ASCII; zamiana ciągu znaków ASCII na liczbę w kodzie U; zamiana liczby w kodzie NB na ciąg znaków ASCII; zamiana ciągu znaków ASCII na liczbę w kodzie NB; konwersja liczb z kodu NB na BCD i odwrotnie; sortowanie tablicy liczb dwubajtowych; poszukiwanie słowa w słowniku; regulator PID; wyliczanie średniej ruchomej; filtracja ciągu liczb pochodzących np. z przetwornika A/C; histogram tablicy liczb;. Napisanie krótkiego programu wykorzystującego przygotowaną procedurę, w celu sprawdzenia poprawności jej pracy. NaleŜy zwrócić uwagę na właściwy dobór techniki wymiany informacji pomiędzy programem wywołującym a wywoływaną procedurą.. Dokonanie asemblacji powyŝszego programu z wygenerowaniem pliku raportu z asemblacji (*.LST) i pliku z kodem wynikowym (*.HEX): 4. Przeprowadzenie symulacji pracy przygotowanego programu name.hex w celu przetestowania poprawności rozwiązania postawionego zadania... Prezentacja i analiza wyników badań. Wynikiem pracy grupy laboratoryjnej są programy na mikroprocesor 805. Wnioski i uwagi, jakie nasunęły się podczas wykonywania ćwiczenia naleŝy zamieścić w sprawozdaniu. 4. Wymagania BHP Warunkiem przystąpienia do ćwiczenia jest zapoznanie się z instrukcją BHP stosowaną w Laboratorium i ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje te powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. Pracownia powinna odpowiadać ogólnym wymaganiom BHP przewidzianym dla laboratorium komputerowego. 4-
46 5. Sprawozdanie studenckie Sprawozdanie z ćwiczenia powinno zawierać: stronę tytułową zgodnie z obowiązującym wzorem; cel i zakres ćwiczenia; opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności; algorytm i listing opracowanego programu; wnioski i uwagi. Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją; program (algorytm i listing); wnioski i uwagi; terminowość i ogólna estetyka. Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później będą oceniane niŝej. 6. Literatura. A.Rydzewski - Mikrokomputery jednoukładowe rodziny MCS5(PKE).. H.Małysiak - Mikrokomputery jednoukładowe serii MCS48, MCS5, MCS96 (WPKJS).. T.Prokop - Wybrane mikrokomputery jednomodułowe firmy INTEL (skrypt PW). 4. P.i P.Gałka - Podstawy programowania mikrokontrolera 805 (MIKOM). 5. J.Janiczek, A.Stępień - Mikrokontrolery (WCKP). 6. J.Janiczek, A.Stępień - Laboratorium systemów mikroprocesorowych cz.i i II (WCKP). 4-4
47 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Laboratoryjny system modułowy z MCS5 Numer ćwiczenia: 5 Laboratorium z przedmiotu: Mikrokontrolery Elektrotechnika - studia stacjonarne I stopnia - sem V specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Kod: ESC50 0 Opracował dr inŝ. Lech Grodzki Białystok XI 05
48 . Wprowadzenie Do podstawowych składników systemów mikroprocesorowych zaliczamy: jednostkę centralną obejmującą: mikroprocesor wraz z układem generującym sygnał taktujący i podstawowe sygnały zewnętrzne, np. Z80+generator taktu, , 805+kwarc; bufory sygnałów zewnętrznych mikroprocesora - dwukierunkowe dla szyny danych, jednokierunkowe dla wyjść sterujących, rozdzielacze danych i adresów dla mikroprocesorów z multipleksowaną szyną danych. pamięć programu ROM, najczęściej EPROM, EEPROM lub Flash; pamięć danych RAM, najczęściej SRAM lub DRAM, takŝe: EEPROM, Flash lub podtrzymywany bateryjnie CMOS-SRAM jako pamięć konfiguracji; urządzenia peryferyjne: pamięci zewnętrzne; urządzenia operatorskie; urządzenia komunikacyjne; urządzenia obiektowe. układy kontroli systemu przerwań; dekodery adresów dla pamięci i urządzeń peryferyjnych; układy obsługujące pamięć operacyjną, np. obwody odświeŝania DRAM, układy DMA; zegar czasu rzeczywistego (astronomicznego) albo timer(y); magistrala systemowa będąca zbiorem połączeń pomiędzy wymienionymi komponentami systemu. W zaleŝności od sposobu wzajemnego połączenia składników systemu i ich wzajemnego rozmieszczenia w przestrzeni rozróŝniamy: Mikrokomputery jednopłytkowe. Płytka drukowana zawiera oprócz jednostki centralnej, pozostałe, niezbędne w danej aplikacji, składniki systemu. Układ taki moŝe być zaprojektowany jako system zamknięty albo otwarty - umoŝliwiający rozbudowę o dodatkowe płytki za pośrednictwem złącza systemowego. Systemy jednopłytkowe mają zastosowanie jako lokalne sterowniki, układy przeliczające o niewielkim zakresie zadań. Systemy modułowe. Ideą tego systemu jest podział sprzętu mikroprocesorowego na standardowe moduły (pakiety), z których kaŝdy realizuje sobie charakterystyczne funkcje. Architektura modułowa zapewnia: minimalną liczbę modułów o zdefiniowanych funkcjach, z których moŝna tworzyć róŝne konfiguracje sprzętowe zaleŝnie od potrzeb; zdefiniowaną konfigurację równoległej szyny systemowej, łączącej wszystkie moduły; łatwość rozbudowy, dołączania dodatkowych pakietów (sprzęgających z obiektem albo innych specjalizowanych); łatwość tworzenia nowych aplikacji na bazie juŝ posiadanego zestawu standardowych pakietów; ułatwiony serwis. 5-
49 .. Charakterystyka systemu dydaktycznego Stosowany w laboratorium modułowy system dydaktyczny (prod. WG- Electronics) jest oparty na mikrokomputerze jednoukładowym z rodziny MCS5. W jego skład wchodzą: * pakiet DBCPU zawierający: mikrokomputer jednoukładowy AT89S5 z dołączonym zewnętrznym generatorem o f OSC =059.kHz pracujący z wewnętrzną pamięcią programu; pamięć SRAM xkb, przeznaczoną na dane uŝytkownika (po wgraniu do pamięci Flash mikrokontrolera specjalnego programu ładującego, w pamięci tej umieszczane są takŝe programy uŝytkownika); interfejs łącza szeregowego na układzie MAX z 9-pinowym złączem; dekoder adresów dla pamięci i urządzeń peryferyjnych na układzie GAL6V8, realizuje on następującą mapę pamięci: pamięć programu 0000h wewn. pamięć programu 8kB układu AT89S5 FFFh 000h zewn. pamięć programu 4kB 7FFFh wspólny obszar SRAM zewn. pamięć danych 0000h zewn. pamięć danych kb 7FFFh 8000h kb adresów urz. zewn. 8FFh 8400h zewn. pamięć danych kb FFFFh Rys.5.. Mapa pamięci systemu dydaktycznego rozdzielacz magistrali (LS7) i bufory magistrali systemowej (5xLS45) z kontrolnymi diodami LED; przycisk RESET. pakiet DBDSP klawiatury i wyświetlacza LED, zawierający: matrycę 4 klawiszy; sześciopozycyjny 7-segmentowy wyświetlacz LED z uniwibratorem zabezpieczającym przed przepaleniem wyświetlaczy; układ 855 jako zestaw portów pośredniczących między magistralą systemu a klawiaturą i wyświetlaczem; lokalny dekoder adresów GAL6V8, rozpoznający adresy: 8000h - odczyt/zapis portu PA h - odczyt/zapis portu PB h - odczyt/zapis portu PC
50 800h - odczyt rejestru stanu/zapis rejestru sterującego FFh - wymuszenie resetu sprzętowego 855 pakiet DBLCD klawiatury i wyświetlacza LCD, zawierający matrycę 4 klawiszy; wyświetlacza LCD x6 znaków zintegrowanego z popularnym sterownikiem HD44780 (prod. Hitachi); lokalny dekoder adresów GAL6V8; 5-pozycyjny dip-switch do wyboru adresu bazowego pakietu. pakiet DBRTC wejść i wyjść binarnych, zawierający: ośmiobitowy port wejściowy z kontrolnymi diodami LED; ośmiobitowy port wyjściowy z kontrolnymi diodami LED; złącza śrubowe wejść i wyjść binarnych; zegar czasu rzeczywistego na układzie 857 (prod. Philips) z magistralą I C i baterią litową; pamięć EEPROM 858 (prod. Philips) z magistralą I C; lokalny dekoder adresu na układzie GAL6V8. pakiet DBADDA wejść i wyjść analogowych, zawierający: ośmiobitowy przetwornik A/C (ADC0804) z 8-kanałowym multiplekserem analogowym (na 405) o zakresie napięć wejściowych 0..5V; ośmiobitowy przetworniki C/A (DAC08) z 8-kanałowym demultiplekserem analogowym (na 405) i pamięciami analogowymi (na / 4 TL074), o zakresie napięć wyjściowych 0..5V; złącza śrubowe wejść i wyjść analogowych; lokalny dekoder adresu na układzie GAL6V8. Porty urządzeń zewnętrznych są adresowane w trybie jednolitym z pamięcią, tzn. są traktowane tak jak komórki zewnętrznej pamięci danych. Tabela 5. zawiera zestawienie adresów tych portów. Wykorzystanie adresów tych portów w programie pisanym w asemblerze moŝe polegać na zdefiniowaniu ich nazw z jednoczesnym przypisaniem im odpowiednich wartości adresów tych portów w przestrzeni zewnętrznej pamięci danych. MoŜna to wykonać przy pomocy dyrektyw EQU: dsppa equ 0x8000 dsppb equ 0x800 dsppc equ 0x800 dsppctrl equ 0x800 dspprst equ 0x80ff wtedy dostęp (odczyt/zapis) tak zadeklarowanych portów realizuje się za pośrednictwem rozkazu MOVX: mov dptr,#dspctrl ;DPTR->port sterujący 855 mov a,#9h ;bajt programujący tryby pracy ;zapis bajtu do portu... mov dptr,#dspc movx a,@dptr ;odczyt portu stanu klawiatury anl a,#0fh ;wydzielenie bitów jej stanu 5-4
51 Programując w języku C naleŝy zadeklarować odpowiednie zmienne w obszarze XDATA z jednoczesnym wymuszeniem ich adresu (poprzez _at_) i nadaniem im atrybutu volatile : volatile unsigned char xdata segmenty _at_ 0x800; volatile unsigned char xdata klawisze _at_ 0x800; volatile unsigned char xdata sterowanie _at_ 0x800; volatile unsigned char xdata dbdsp_rst _at_ 0x80FF; Atrybut volatile powoduje, Ŝe niezaleŝnie od ustawionej opcji optymalizacji kodu programu, kompilator nie pominie Ŝadnych operacji dostępu (zapisu) do tych portów. Przy tak zadeklarowanych portach odwołujemy się do nich jak do zwykłych zmiennych: segmenty=0x00; //zapis kodu segmentowego stan_klaw=(~klawisze)&0x0f; //odczyt stanu klawiatury Tabela 5.. Adresy urządzeń zewnętrznych systemu modułowego adres 8000h 800h 800h 800h 80FFh 8004h 800Ch 800Ch 800Dh 800Eh 8000h 8000h 800h 800h 8006h 8007h przeznaczenie adres bazowy modułu DB-DSP (z wyświetlaczem LED) - adres portu PA układu nieuŝywany port PB układu 855 na DB-DSP: rejestr sterowania segmentami wyświetlacza LED port PC układu 855 na DB-DSP: bity PC4..PC7 - wyjście kodu włączającego pozycję wyświetlacza i kolumnę matrycy klawiatury bity PC0..PC - wejście odczytu stanu matrycy klawiatury rejestr sterujący układu 855 na DB-DSP adres resetu sprzętowego dla układu 855 na module DB-DSP adres bazowy modułu DB-RTC (we/wy binarne): odczyt - odczyt stanu wejść binarnych zapis - zapis stanu wyjść binarnych adres bazowy modułu DB-ADDA (we/wy analogowe) port wyjściowy przetwornika C/A 8b port wyjściowy sterujący multiplekserami: bity kanał przetwarzania A/C bity kanał przetwarzania C/A bit 7 - blokada demultipleksera analogowego port wejściowy wyniku konwersji A/C 8b adres bazowy modułu DB-LCD (z wyświetlaczem LCD) port sterujący matryca klawiszy port zapisu słowa sterującego port zapisu do pamięci obrazu port odczytu rejestru stanu port odczytu pamięci obrazu.. Przygotowanie programów do uruchomienia w systemie dydaktycznym Podstawowym trybem pracy jest skompilowanie odpowiednio skonfigurowanego projektu programu (w asemblerze lub języku C) i 5-5
52 umieszczenie go w pamięci Flash mikrokontrolera AT89S5. Do zaprogramowania pamięci Flash mikrokontrolera wykorzystuje się program obsługujący zastosowany interfejs ISP (ISPcable I). Zaletą takiego rozwiązania jest moŝliwość pisania programu od razu w wersji docelowej. Ponadto, umieszczony w pamięci programu mikrokontrolera kod programu nie znika w przypadku zaniku zasilania lub zerowania systemu. Zasady pisania programów ładowanych do pamięci Flash mikrokontrolera: adresem początkowym (startowym) programu jest 0000h; wektory obsługi przerwań w programie studenckim znajdują się na adresach: 0h (/INT0), 0Bh (timer0), h (/INT), Bh (timer), h (SIO), Bh (timer); programy studenckie o pracy ciągłej powinny pracować w pętli programowej, a jednoprzebiegowe - kończyć się tzw. martwą pętlą. Start kodu programu od adresu 0000h odpowiada naturalnemu zachowaniu się mikrokontrolera po zerowaniu lub włączeniu zasilania i odpowiada mu domyślna postać generowanego przez kompilator kodu, zarówno dla programu w asemblerze, jak i w języku C. Na potrzeby programowania w C naleŝy odpowiednio ustawić niektóre z opcji projektu. Rys. 5.. Ustawienia środowiska Keil µvision dla systemu dydaktycznego przy programie ładowanym do pamięci Flash W tym celu naleŝy uruchomić opcję Options for Target (w sposób opisany w instrukcji #) i na zakładce Target ustawić częstotliwość taktowania na.059, wyłączyć zewnętrzną pamięć programu i zadeklarować obecność zewnętrznej pamięci danych o adresie startowym 0x8000 i rozmiarze 0x
53 (jak na rysunku 5.). Na zakładce Output okna konfiguracji projektu naleŝy zaznaczyć pole wyboru przy opcji Create HEX File (w okienku obok powinien być wskazany jako format pliku HEX-80). Natomiast u góry po prawej naleŝy, jako rdzeń nazwy pliku z kodem programu (Name of Executable), powtórzyć nazwę projektu i pliku z tekstem źródłowym (rys. 5.). Rys. 5.. Ustawienia środowiska Keil µvision dla systemu dydaktycznego przy programie ładowanym do pamięci Flash Warunek mówiący o lokalizacji wektorów obsługi przerwań spełnia się w zaleŝności od zastosowanego języka programowania. Przy programowaniu w asemblerze wystarczy uŝyć odpowiednio dyrektyw org, na przykład: org 0x0000 ajmp ini ;skok do sekcji startowej org 0x000 int0srv: ;początek obsługi /INT0... org 0x000b t0srv: ;początek obsługi timera#0... org 0x00 intsrv: ;początek obsługi /INT... Natomiast programując w języku C naleŝy wejść do zakładki C5 okna ustawień opcji projektu Options for Target, na której naleŝy zaznaczyć pole 5-7
54 wyboru przy Interrupt vectors at address i w okienku obok wpisać wartość 0x0000 (rys. 5.4). Rys Ustawienia środowiska Keil µvision dla systemu dydaktycznego przy programie ładowanym do pamięci Flash Oprogramowanie Keil µvision moŝna takŝe przystosować do automatycznego uruchamiania programu wysyłającego kod zawarty w pliku wynikowym do systemu laboratoryjnego. W tym celu naleŝy uruchomić opcję Options for Target (w sposób opisany w instrukcji #) i na zakładce Output zaznaczyć u dołu pole wyboru przy Run User Program #, wskazując jednocześnie w okienku obok lokalizację programu obsługującego łącze szeregowe (rys. 5.4). Alternatywnym rozwiązaniem jest wykorzystanie układu AT89S5 z zapisanym w jego pamięci Flash programem ładującym. UmoŜliwia on umieszczenie, przesłanego łączem szeregowym w formacie Intel-hex, kodu programu w przeznaczonym do tego obszarze pamięci SRAM (od adresu 000h). Pamięć ta jest traktowana przez AT89S5 jako zewnętrzna pamięć programu (rys.5.). Zastosowany format transmisji kodu jest zgodny z wynikami pracy makroasemblera A5 i umoŝliwia kontrolę poprawności przesyłu. JeŜeli program ładujący wykryje błąd sumy kontrolnej w odebranym rekordzie danych, przerywa dalszy odbiór i sygnalizuje to miganiem diod kontrolnych portu P mikrokontrolera (są one umieszczone na płytce DB-CPU w pobliŝu złącza magistrali). Po poprawnym odebraniu kodu programu, jest on uruchamiany z opóźnieniem ok. s. Pracę uruchomionego programu moŝna przerwać przyciskiem RESET mikrokontrolera. Ponowne uruchomienie programu jest 5-8
55 moŝliwe tylko po jego ponownym załadowaniu, a te - tylko po wciśnięciu przycisku RESET. Zasady pisania programów ładowanych łączem szeregowym do SRAM funkcjonującego jako zewnętrzna pamięć programu (pod warunkiem wcześniejszego wgrania do mikrokontrolera programu ładującego): adresem początkowym (startowym) programu jest 000h; wektory obsługi przerwań w programie studenckim znajdują się na adresach: 00h (/INT0), 00Bh (timer0), 0h (/INT), 0Bh (timer), 0h (SIO), 0Bh (timer); programy studenckie nie mogą korzystać z rejestru R7 w banku rejestrów (ma on adres Fh w przestrzeni wewnętrznej RAM mikrokontrolera); programy studenckie o pracy ciągłej powinny pracować w pętli programowej, a jednoprzebiegowe - kończyć się tzw. martwą pętlą. Przy programowaniu w asemblerze pierwszy z warunków moŝna spełnić wpisując dyrektywę: org 0x000 Przy programowaniu w języku C trzeba zadbać o odpowiednie ustawienia konfiguracji. W tym celu naleŝy uruchomić opcję Options for Target (w sposób opisany w instrukcji #) i na zakładce Target ustawić częstotliwość taktowania na.059, włączyć zewnętrzną pamięć programu ustawiając jej adres startowy na 0x000 i rozmiar np. 0x4000, a takŝe zewnętrzną pamięć danych o adresie startowym 0x8000 i rozmiarze 0x8000 (jak na rysunku 5.5). Warunek mówiący o lokalizacji wektorów obsługi przerwań spełnia się w zaleŝności od zastosowanego języka programowania. Przy programowaniu w asemblerze wystarczy uŝyć odpowiednio dyrektyw org, na przykład: org 0x000 ajmp ini ;skok do sekcji startowej org 0x00 int0srv: ;początek obsługi /INT0... org 0x00b t0srv: ;początek obsługi timera#0... org 0x0 intsrv: ;początek obsługi /INT... Natomiast programując w języku C naleŝy wejść do zakładki C5 okna ustawień opcji Options for Target, na której naleŝy zaznaczyć pole wyboru przy Interrupt vectors at address i w okienku obok wpisać wartość 0x000 (rysunek 5.6). Natomiast na zakładce Output okna konfiguracji projektu naleŝy zaznaczyć pole wyboru przy opcji Create HEX File (w okienku obok powinien być wskazany jako format pliku HEX-80). Natomiast u góry po prawej naleŝy, jako rdzeń nazwy pliku z kodem programu, powtórzyć nazwę projektu i pliku z tekstem źródłowym (rys. 5.). 5-9
56 Rys Ustawienia środowiska Keil µvision dla systemu dydaktycznego przy programie ładowanym do zewnętrznej pamięci programu typu SRAM Rys Ustawienia środowiska Keil µvision dla systemu dydaktycznego przy programie ładowanym do zewnętrznej pamięci programu typu SRAM 5-0
Programowanie mikrokontrolerów (CISC)
Repertuar instrukcji Operacje arytmetyczne Operacje logiczne Operacje logiczne na bitach Przesyłanie danych Operacje sterujące (skoki) NOTACJA: Rr rejestry R0... R7 direct - wewnętrzny RAM oraz SFR @Ri
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla
Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne
Programowanie mikrokontrolera 8051
Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady
Lista rozkazów mikrokontrolera 8051
Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
imei Instytut Metrologii, Elektroniki i Informatyki
PODSTAWY TECHNIKI MIKROPROCESOROWEJ Laboratorium Elektrotechnika, studia stacjonarne pierwszego stopnia Temat: Wprowadzenie do programowania mikrokontrolerów rodziny MCS-51 imei Instytut Metrologii, Elektroniki
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)
Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01 PRACA KROKOWA MIKROKONTROLERA Cel ćwiczenia: Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji symulatora. Operacje na plikach,
Asembler - język maszynowy procesora
UWAGA! Treść niniejszego dokumentu powstała na podstawie cyklu artykułów pt. Mikrokontrolery? To takie proste zamieszczonych w czasopiśmie Elektronika dla Wszystkich. Asembler - język maszynowy procesora
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Struktura programu w asemblerze mikrokontrolera 8051
Struktura programu w asemblerze mikrokontrolera 8051 Program w asemblerze, dający ten sam kod wynikowy, może być napisany na wiele sposobów. Źle napisany program po pewnym czasie (a być może już w czasie
Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4
Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest
Architektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:
Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)
Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP
Liczniki, rejestry lab. 08 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Wstęp do programowania w asemblerze laboratorium: 01 autor: mgr inż. Michał Lankosz
Struktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci
Laboratorium 1: Wprowadzenie do środowiska programowego oraz podstawowe operacje na rejestrach i komórkach pamięci Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portów wejścia/wyjścia mikrokontrolera laboratorium: 02 autor: mgr inż.
CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki
Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej
1. Operacje logiczne A B A OR B
1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Architektura Systemów Komputerowych, Wydział Informatyki, ZUT
Laboratorium: Wprowadzenie Pojęcia. Wprowadzone zostaną podstawowe pojęcia i mechanizmy związane z programowaniem w asemblerze. Dowiemy się co to są rejestry i jak z nich korzystać. Rejestry to są wewnętrzne
CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe
MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Programowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Politechnika Warszawska
Politechnika Warszawska Wydział Elektryczny Laboratorium Podstaw Techniki Mikroprocesorowej Skrypt do ćwiczenia M.38 Zbieranie pomiarów w czasie rzeczywistym - asembler 1.Wstęp W ćwiczeniach od M.38 do
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu
Informatyka, Ćwiczenie 1 1. Uruchomienie Microsoft Visual C++ I. ZałoŜenie nowego projektu Wybieramy menu: File>New>Files jak na rys. poniŝej Zapisujemy projekt pod nazwą LAN, w katalogu d:\temp\lab typu
Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51.
Ćwiczenie nr 4 Cel ćwiczenia: Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51. Wiadomości wstępne: Klawiatura sekwencyjna zawiera tylko sześć klawiszy.
Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Wstęp. do języka C na procesor 8051. (kompilator RC51)
Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje
TMiK Podstawy Techniki Mikroprocesorowej. Lidia Łukasiak
TMiK Podstawy Techniki Mikroprocesorowej Materiały pomocnicze do wykładu Lidia Łukasiak 1 Treść przedmiotu Wprowadzenie System mikroprocesorowy Mikroprocesor - jednostka centralna Rodzaje pamięci Mikrokontrolery
Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED
Ćwiczenie 2 Siedmiosegmentowy wyświetlacz LED 2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się studentów ze sposobem obsługi wielopozycyjnego 7-segmentowego wyświetlacza LED multipleksowanego programowo
WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2
- 1 - MS EXCEL CZ.2 FUNKCJE Program Excel zawiera ok. 200 funkcji, będących predefiniowanymi formułami, słuŝącymi do wykonywania określonych obliczeń. KaŜda funkcja składa się z nazwy funkcji, która określa
Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
EKSPLOATACJA SYSTEMÓW TECHNICZNYCH - LAB. Wprowadzenie do zajęć
Politechnika Śląska Wydział Organizacji i Zarządzania Katedra Podstaw Systemów Technicznych EKSPLOATACJA SYSTEMÓW TECHNICZNYCH - LAB. Ćwiczenie 1 Wprowadzenie do zajęć Plan ćwiczenia 1. Zapoznanie się
Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów
Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.
Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5. Klasa III Opracuj projekt realizacji prac związanych z badaniem działania cyfrowych bloków arytmetycznych realizujących operacje
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051
Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051 Katedra Automatyki, Wydział EAIiE Akademia Górniczo-Hutnicza w Krakowie Marcin Piątek Kraków 2008 1. Ważne uwagi i definicje Poniższy
CoDeSys 3 programowanie w języku drabinkowym LD
Notatka Aplikacyjna NA 03004PL Spis treści 1. Wstęp... 2 1.1. Wymagania programowe... 2 2. Tworzenie projektu i dodawanie programu w LD... 3 3. Organizacja okien dla języka LD... 5 4. Składnia języka LD
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
Techniki mikroprocesorowe i systemy wbudowane
Techniki mikroprocesorowe i systemy wbudowane Wykład 1 Procesory rodziny AVR ATmega. Wstęp Wojciech Kordecki wojciech.kordecki@pwsz-legnica.eu Państwowa Wyższa Szkoła Zawodowa im. Witelona w Legnicy Wydział
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Przerwania laboratorium: 04 autor: mgr inż. Michał Lankosz dr hab. Zbisław Tabor,
ZAPOZNANIE SIĘ Z ZESTAWEM DYDAKTYCZNYM ZD537, OPROGRAMOWANIEM µvision 2 ORAZ OPERACJE NA PAMIĘCIACH
PROWADZĄCY: mgr inż. Piotr Radochoński LABORATORIUM Z PODSTAW TECHNIK MIKROPROCESOROWYCH WYKONAWCY : GRUPA : 1 Dawid Pichen WYKONANO : Leszek Wiland 09.03.2005 NR ĆWICZ. TEMAT : 1 ROK AK. II ODDANO : 20.03.2005
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.
ASEMBLER MCS-51 Podstawowe informacje
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Zakład Cybernetyki i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA ASEMBLER MCS-51 Podstawowe informacje Opracował: mgr inŝ. Andrzej
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Programowanie niskopoziomowe
Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
IV PROGRAMOWANIE MIKROKOMPUTERA Technika Cyfrowa 2. Wykład 4: Programowanie mikrokomputera 8051
Technika Cyfrowa 2 Wykład 4: Programowanie mikrokomputera 81 dr inż. Jarosław Sugier Jaroslaw.Sugier@pwr.wroc.pl IIAR, pok. 227 C-3 4-1 IV PROGRAMOWANIE MIKROKOMPUTERA 81 1 REJESTRY Oprócz DPTR wszystkie
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych
Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie
Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.
Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA Instrukcja pomocnicza do laboratorium z przedmiotu Programowalne Struktury
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Wstęp do assemblera MA51
Wstęp do assemblera MA51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler Assembler to język programowania
Ćwiczenie 1. (sd 2) 0x0000 0x0003 0x000B 0x0013 0x001B 0x0023
Temat: Asembler i język C wprowadzenie w efektywne programowanie niskopoziomowe. 1.Zagadnienia architektury Ogólnie schemat blokowy mikrokontrolera 80C51 przedstawiono na rysunku 1. Ćwiczenie 1. (sd 2)
Temat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
imei Instytut Metrologii, Elektroniki i Informatyki
PODSTAWY TECHNIKI MIKROPROCESOROWEJ Laboratorium Elektrotechnika, studia stacjonarne pierwszego stopnia Temat: Konwersja danych i ich prezentacja na 7-segmentowych wyświetlaczach LED imei Instytut Metrologii,
Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1 PAMIĘCI SZEREGOWE EEPROM Ćwiczenie 3 Opracował: dr inŝ.
Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl
Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1 Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion,
Notatka Aplikacyjna NA 03006PL Maj 2016
Notatka Aplikacyjna NA 03006PL Spis treści 1. Wstęp... 2 1.1. Wymagania programowe... 2 2. Tworzenie projektu i dodawanie programu w... 3 3. Organizacja okien dla języka IL... 5 4. Składnia języka IL...
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW
Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW MIKROKONTROLER 85 - wiadomości podstawowe. Schemat blokowy mikrokontrolera 85 Obszar rejestrów specjalnych
architektura komputerów w 1 1
8051 Port P2 Port P3 Transm. szeregowa Timery T0, T1 Układ przerwań Rejestr DPTR Licznik rozkazów Pamięć programu Port P0 Port P1 PSW ALU Rejestr B SFR akumulator 8051 STRUKTURA architektura komputerów
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 1 (3h) Wprowadzenie do obsługi platformy projektowej Quartus II Instrukcja pomocnicza do laboratorium z przedmiotu
Kodowanie informacji. Kody liczbowe
Wykład 2 2-1 Kodowanie informacji PoniewaŜ komputer jest urządzeniem zbudowanym z układów cyfrowych, informacja przetwarzana przez niego musi być reprezentowana przy pomocy dwóch stanów - wysokiego i niskiego,
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Język programowania: Lista instrukcji (IL Instruction List)
Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Pracownia elektryczno-elektroniczna klasa IV
Ćwiczenie nr 2 Cel ćwiczenia: zapoznanie się z nowymi metodami adresowania portów, urządzeń do nich podpiętych (adresowanie pośrednie, bezpośrednie, rejestrowe) oraz poznanie struktury wewnętrznej pamięci
PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S
PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH ZATWIERDZAM Dziekan Wydziału Nauk Społecznych i Technik Komputerowych S Y L A B U S 1 Tytuł (stopień) naukowy oraz imię i nazwisko
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
CoDeSys 3 programowanie w języku CFC
Notatka Aplikacyjna NA 03003PL Spis treści 1. Wstęp... 2 1.1. Wymagania programowe... 2 2. Tworzenie projektu i dodawanie programu w... 3 3. Organizacja okien dla języka CFC... 5 4. Składnia języka CFC
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe
Język FBD w systemie Concept
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Podstawowe zasady tworzenia projektu w środowisku uvision 4.0, pisanie programów w asemblerze 8051
Podstawowe zasady tworzenia projektu w środowisku uvision 4.0, pisanie programów w asemblerze 8051 Aby móc skorzystad z możliwości środowiska uruchomieniowego uvision v.4.0, firmy Keil należy stworzyd
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Wykład 4. Środowisko programistyczne
Wykład 4 Dostępne kompilatory KEIL komercyjny GNU licencja GPL ARM komercyjny IAR komercyjny 2 Porównanie kompilatorów 3 Porównanie kompilatorów 4 Keil uvision Graficzny edytor Kompilator i linker Symulator
Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA
Metodyki i Techniki Programowania 1 1 ZAJ CIA 3. 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA IDE zintegrowane środowisko programistyczne, zawierające kompilator, edytor tekstu i linker,
Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu
Laboratorium z Grafiki InŜynierskiej CAD W przygotowaniu ćwiczeń wykorzystano m.in. następujące materiały: 1. Program AutoCAD 2010. 2. Graf J.: AutoCAD 14PL Ćwiczenia. Mikom 1998. 3. Kłosowski P., Grabowska