Instytut Teleinformatyki

Podobne dokumenty
Instytut Teleinformatyki

Instytut Teleinformatyki

Instytut Teleinformatyki

Instytut Teleinformatyki

Instytut Teleinformatyki

imei Instytut Metrologii, Elektroniki i Informatyki

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Instytut Teleinformatyki

Instytut Teleinformatyki

Instytut Teleinformatyki

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Instytut Teleinformatyki

ZAPOZNANIE SIĘ Z ZESTAWEM DYDAKTYCZNYM ZD537, OPROGRAMOWANIEM µvision 2 ORAZ OPERACJE NA PAMIĘCIACH

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

2. Architektura mikrokontrolerów PIC16F8x... 13

PRACA W ZINTEGROWANYM ŚRODOWISKU URUCHOMIENIOWYM - IDE Keil μvision 2

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Struktura programu w asemblerze mikrokontrolera 8051

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Podstawowe zasady tworzenia projektu w środowisku uvision 4.0, pisanie programów w asemblerze 8051

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Przerwania w architekturze mikrokontrolera X51

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Instytut Teleinformatyki

Projektowanie z użyciem procesora programowego Nios II

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Instytut Teleinformatyki

Instytut Teleinformatyki

Instytut Teleinformatyki

imei Instytut Metrologii, Elektroniki i Informatyki

1.Wstęp. 2.Generowanie systemu w EDK

Lista rozkazów mikrokontrolera 8051

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

Programowanie mikrokontrolera 8051

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

architektura komputerów w 1 1

Electronic Infosystems

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

MIKROKONTROLERY I MIKROPROCESORY

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

SYSTEM PRZERWA Ń MCS 51

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Programowanie Systemów Czasu Rzeczywistego

Instytut Teleinformatyki

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Konfiguracja pakietu CrossStudio for MSP

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

1. Dyrektywy asemblerowe

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Mikrokontrolery 8 bit - wprowadzenie

Instrukcja użytkownika. Aplikacja dla Comarch ERP XL

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Laboratorium Procesorów Sygnałowych

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Informatyka I : Tworzenie projektu

Programowanie w środowisku graficznym GUI

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Programowanie niskopoziomowe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Instrukcja użytkownika. Aplikacja dla Comarch Optima

Techniki mikroprocesorowe i systemy wbudowane

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Instytut Teleinformatyki

ApSIC Xbench: Szybki start wydanie Mariusz Stępień

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Asembler ASMX51 INSTRUKCJA OBSŁUGI

Sprzęt i architektura komputerów

AVR Asembler: Podstawy posługiwania się AVR Studio 4.

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. QuIDE Quantum IDE PODRĘCZNIK UŻYTKOWNIKA

Systemy wbudowane Pracownia specjalistyczna nr 1 Zapoznanie się ze środowiskiem MPLAB. 1. Wybór mikrokontrolera

Wykład 4. Środowisko programistyczne

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Politechnika Śląska w Gliwicach

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Ćwiczenie nr 6. Programowanie mieszane

Programowanie niskopoziomowe

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Loader LX51 INSTRUKCJA OBSŁUGI DK Wszystkie prawa zastrzeżone

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Politechnika Świętokrzyska

LABORATORIUM nr 1. Temat: Wstęp do mikrokontrolerów rodziny MCS-51

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Asembler - język maszynowy procesora

Politechnika Warszawska

Laboratorium 1 - Programowanie proceduralne i obiektowe

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

Problemy techniczne. Jak umieszczać pliki na serwerze FTP?

Certification Request Services

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Modelowanie obiektowe - Ćw. 1.

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Korzystanie z aplikacji P-touch Transfer Manager

Transkrypt:

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 dr hab. Zbisław Tabor, prof. PK Kraków, 2014

2 Spis treści Spis treści...2 1. Wiadomości wstępne...3 1.1. Niezbędne wiadomości...3 1.2. Szablon programu w asemblerze 8051...3 1.3. Środowisko programistyczne...4 2. Przebieg laboratorium...6 2.1. Zadanie 1. Na ocenę 3.0 (dst)...6 2.2. Zadanie 2. Na ocenę 4.0 (db)...7 2.3. Zadanie 3. Na ocenę 5.0 (bdb)...8

3 1. Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 1.1. Niezbędne wiadomości Pamięć programu, wewnętrzna pamięć RAM, mapa pamięci, rejestry, tryby adresowania: http://www.8052.com/tut8051. Lista instrukcji asemblera 8051: http://www.keil.com/support/man/docs/is51/is51_instructions.htm Laboratorium asemblera 8051 jest realizowane w środowisku developerskim Keil microvision (środowisko cross-kompilacji C51 i symulacji pracy 8051), do fizycznego oprogramowania mikrokontrolera używamy programator Flip 3.4.7. 1.2. Szablon programu w asemblerze 8051 ; Definicje używanych stałych ; LED EQU P1.6 ;przykładowa definicja stałej LED ; Wektory przerwań i resetu ; Reset Vector - do tego adresu wykonywany jest skok po resecie CSEG AT 00h LJMP Main ; Skok poza przestrzeń adresową wektorów przerwań ; Interrupt vectors - jeśli dodajemy swoją obsługę przerwań ; CSEG At 03h ; wektor przerwania INT0 - podpięta procedura handleint0

4 ; LJMP handleint0 ; segment głównej funkcji programu CSEG AT 0x100 Main: ; ; główna funkcja programu ; ACALL MyProcedure ; z funkcji głównej możemy wołać procedury ; SJMP Main ; pętla nieskończona - system wbudowany funkcjonuje tak długo jak długo jest ; zasilany ; definicje procedur ;MyProcedure: ; procedura wołana przez funkcję Main ; ;RET ; wyjście z procedury ;handleint0: ; ;RETI ; procedura obsługi przerwania INT0 ; wyjście z procedury obsługi przerwania ; definicje danych ;CSEG AT 20FFh ;squares: db 0,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3 ; przykładowe dane bajtowe zapisane pod adresem 20FFh END 1.3. Środowisko programistyczne

5 W trakcie laboratoriów z programowania kontrolera 8051 wykorzystywane jest środowisko µvision. Po uruchomieniu IDE zarządzanie projektami odbywa się z poziomu menu Project. Przy tworzeniu nowego projektu należy z reguły określić szereg opcji, które wpływają na proces budowania aplikacji dla docelowego procesora. Przede wszystkim należy określić rodzaj procesora: w przypadku używanego na laboratorium zestawu ZL2MCS51 jest to procesor Atmel, AT89C51RD2. Opcje te można zmieniać po utworzeniu projektu, wybierając projekt w oknie Project (jeśli niewidoczne, wybieramy polecenie View->Project) i wybierając polecenie Options for Target w menu Project (dostępne też pod prawym klawiszem myszy). Spośród innych opcji można zwrócić uwagę na możliwość określenia częstotliwości rezonatora kwarcowego: (menu Project, Options for Target, zakładka Target, pole Xtal). Laboratoryjne zastawy ZL2MCS51 posiadają rezonator kwarcowy o częstotliwości 11,0592MHz. Poprawne określenie częstotliwości pozwala w trybie debugowania wyznaczyć czas wykonywania fragmentów kodu. Kolejną opcją ważną przy oprogramowywaniu fizycznego kontrolera jest format wykonywalnego pliku, ustawiany na karcie Output okna Options for Target. Na karcie tej należy zaznaczyć opcję Create HEX file. Po stworzeniu nowego projektu można (czasami nawet należy) do niego dodać plik z kodem źródłowym (File->New...). Stworzony plik źródłowy należy dodać do projektu (prawy klawisz na nazwie projektu w oknie Project, lub menu Project, polecenie Manage). W celu kompilacji należy wybrać polecenie Build z menu Project (skrót klawiaturowy F7). Środowisko µvision umożliwia symulację działania programu. W tym celu należy z menu Debug wybrać opcje Start/Stop debug session. Symulator umożliwia podgląd stanu elementów mikrokontrolera, w tym rejestrów (View- >Registers Window), pamięci programu i IRAM (View->Memory Windows), wejść/wyjść (Peripherals->I/O Ports). Po starcie programu przejście do następnej instrukcji następuje w trybie debugowania po naciśnięciu klawisza F11 (lub menu Debug->Step lub odpowiedni przycisk na pasku narzędzi). Przy przeglądaniu mapy pamięci należy w oknie Memory wpisać w polu Address adres pierwszego wyświetlanego bajtu n.p. C:1000h jeśli chcemy wyświetlić zawartość pamięci programu od adresu 1000h lub I:20h jeśli chcemy wyświetlić zawartość wewnętrznej RAM od adresu 20h. Zawartość pamięci można w trybie debugowania modyfikować, klikając dwukrotnie na komórkę pamięci. Literatura: [1] http://www.8052.com/tut8051 [2] http://www.keil.com/support/man/docs/is51/is51_instructions.htm

6 2. Przebieg laboratorium Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia. 2.1. Zadanie 1. Na ocenę 3.0 (dst) Należy przeanalizować pracę mikrokontrolera poprzez wykonanie symulacji krokowej instrukcja po instrukcji na podstawie programu przedstawionego na Listingu 1. Listing 1 Stala EQU 1000 DanaL DATA 20h DanaH DATA 21h WynikL DATA 30h WynikH DATA 31h CSEG AT 0 JMP start CSEG AT 100h start: MOV A,DanaL ADD A,#low(Stala) MOV WynikL,A MOV A,DanaH ADDC A,#high(Stala) MOV WynikH,A END

7 Po załadowaniu programu w symulatorze należ.y zmienić zawartość komórek pamięci wewnętrznej RAM: pod adres 20h wpisać wartość 09h pod adres 21h wpisać wartość 0Ah Proszę prześledzić działanie programu w trybie debugowania, zwracając uwagę na wszystkie zmiany rejestrów i pamięci RAM. Proszę sprawdzić poprawność obliczeń (dodawania szesnastobitowego). W jaki sposób są zapisane liczby 16-bitowe w pamięci? Proszę po zresetowaniu programu, zmienić zawartość pamięci: pod adres 20h wpisać wartość 18h pod adres 21h wpisać wartość 00h i ponownie prześledzić działanie zwracając uwagę na flagę przeniesienia (CY). Proszę zmodyfikować program tak, aby w podobny sposób wykonywał odejmowanie dwóch liczb 16 bitowych (rozkaz SUBB) również. ze sprawdzeniem działania. 2.2. Zadanie 2. Na ocenę 4.0 (db) Proszę w trybie debugowania przeanalizować działanie programu kopiującego dane z jednego obszaru pamięci RAM do innego (Listing 2). Proszę zwrócić uwagę na adresowanie komórek pamięci. Listing 2 MY_KILLING_COPY SEGMENT CODE Zrodlo DATA 20h Cel DATA 30h IleDanych EQU 16 CSEG AT 0 JMP start RSEG MY_KILLING_COPY start: MOV R0,#Zrodlo MOV R1,#Cel

8 MOV R3,#IleDanych Petla: MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R3,Petla END W przykładzie przedstawionym na Listingu 2 kod programu nie jest umiejscawiany na sztywno w pamięci programu pod zadanym przez programistę adresem (dyrektywa CSEG na Listingu 1). Użyta tu dyrektywa RSEG w odniesieniu do segmentu kodu powoduje, że asembler ulokuje kod w najbardziej (według niego) wygodnym miejscu pamięci kodu. Proszę napisać program, który skopiuje dane z pamięci programu do wewnętrznej pamięci RAM. Przydatne instrukcje: MOV DPTR,#etykieta MOVC A,@A+DPTR Do umieszczenia danych w pamięci programu służy dyrektywa DB, na przykład użyta w taki sposób: etykieta: db 11,21,4,18,8 przy czym najprościej jest tą etykietę umieścić na końcu programu, czyli poniżej ostatniego rozkazu. Etykiety wskazują fizyczny adres wyrażenia znajdującego się tuż po niej, czyli w powyższym przypadku "etykieta" jest adresem komórki w pamięci programu, w której znajduje się pierwsza liczba tablicy danych - "11" i ten adres podajemy w instrukcji ładującej wskaźnik DPTR. 2.3. Zadanie 3. Na ocenę 5.0 (bdb) Generator liczb pseudolosowych oparty o opóźniony ciąg Fibonacciego jest opisany na stronie Wikipedii. Proszę napisać w asemblerze generator liczb pseudolosowych dla pary (j,k) = (7, 10) z operacją dodawania, generujący liczby całkowite w przedziale od 0 do 3. Dziesięć startowych liczb (ja używałem 4, 5, 3, 3, 3, 4, 6, 2, 6, 5) powinno być zapisanych w pamięci programu i skopiowanych do pamięci IRAM przez procedurę inicjalizującą generator. Procedura generująca liczby powinna zwracać liczbę pseudolosową w rejestrze A. Ponieważ każda nowo wygenerowana liczba będzie użyta do wygenerowania którejś z następnych liczb pseudolosowych, wynik losowania

9 musi również trafiać do pamięci IRAM, w której należy zorganizować bufor cykliczny na generowane liczby pseudolosowe.