Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51, kompilatora SDCC i środowiska MIDE-51
|
|
- Stanisława Laskowska
- 9 lat temu
- Przeglądów:
Transkrypt
1 Grzegorz Cygan Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51, kompilatora SDCC i środowiska MIDE-51 wydanie 2
2 1.Spis treści 1. Przygotowanie komputera do pracy z DSM Pierwszy program dla systemu DSM-51 z wykorzystaniem MIDE Zmienne Typy proste Typy złożone Organizacja pamięci mikrosterownika Instrukcje zmieniające przebieg wykonywania programu Pętle for i while Typowe zastosowania pętli for Wybrane funkcje z biblioteki stdio Funkcja putchar dla wyświetlacza LCD Funkcja putchar dla sygnalizatora dźwiękowego Funkcja printf Programowanie wyświetlacza LCD systemu DSM Wyświetlanie znaków bez korzystania z podprogramów systemu DSM Korzystanie z instrukcji sterujących sterownika HD Programowanie układów wewnętrznych mikrosterownika Programowanie portów Programowanie układu transmisji szeregowej SIO Programowanie sterownika przerwań Miernik refleksu Programowanie zewnętrznych układów peryferyjnych Przetwornik A/C Silnik krokowy Wyświetlacz siedmiosegmentowy Dodatak A - Wybrane rejestry mikrosterownika Rejestr konfiguracyjny układów czasowo-licznikowych TCON - drugi rejestr układów czasowo-licznikowych Rejestr konfiguracyjny układu transmisji szeregowej Rejestr sterowania poborem mocy Rejestr sterownika przerwań Dodatek B - Niezbędne pliki Plik nagłówkowy DSM Koder morse'a dla MCS Miernik refleksu...25 Grzegorz Cygan Krótki kurs programowania... 2
3 1 Przygotowanie komputera do pracy z DSM-51 Do wykonania ćwiczeń potrzebny będzie komputer z kompilatorem języka C generujący kod w języku maszynowym mikrosterowników standardu MCS-51. Wszystkie programy zostały sprawdzone kompilatorem sdcc, który jest rozpowszechniany na licencji Open Source. Niezbędne jest także oprogramowanie systemu DSM-51. W systemie operacyjnym musi być zdefiniowana zmienna Path ze ścieżkami dostępu do programów wykonywalnych kompilatora, aby możliwe było korzystanie z kompilatora z wiersza poleceń. Ćwiczenie 1 1. Połącz komputer z systemem DSM-51 poprzez port COM1 i włącz zasilanie systemu DSM Uruchom systemu Windows i zaloguj się na swoje konto. 3. Sprawdź czy jest zainstalowane oprogramowanie systemu DSM-51 oraz środowisko programistyczne MIDE Sprawdź, czy w katalogu C:\MIDE\sdcc\bin znajduje się plik dsm51run.exe. 5. Uruchom wiersz poleceń cmd i wydaj w nim polecenie sdcc. Komunikat podobny do takiego: Nazwa 'sdcc' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy. świadczy, że albo nie zainstalowano wymienionych programów, albo nie ma ustawionej zmiennej środowiskowej Path. Zmienna ta powinna zawierać ścieżkę do kompilatora C:\MIDE\sdcc\bin. 6. W swoim folderze domowym utwórz folder KursC przeznaczony na pliki tworzone podczas zajęć. Skopiuj do tego folderu pliki: dms51.h i mors.asm. 2 Pierwszy program dla systemu DSM-51 z wykorzystaniem MIDE-51 MIDE-51 to środowisko programistyczne, które posiada edytor tekstu z kolorowaniem składni. Środowisko MIDE-51 musi zostać skonfigurowane. W tym celu należy: wcisnąć F12 i w zakładce Programmer, w polu Execute file wpisać lub wskazać C:\MIDE\sdcc\bin\dsm51run.exe należy także zaznaczyć opcje ShortPathname 8.3 format oraz Output with.hex Extension. Rysunek 1: Okno konfiguracji środowiska MIDE-51 Grzegorz Cygan Krótki kurs programowania... 3
4 Po napisaniu programu wystarczy nacisnąć Ctrl+F9, aby program został skompilowany i uruchomiony w systemie DSM-51. Program źródłowy zostaje poddany kompilacji, w wyniku której otrzymujemy plik wynikowy (z rozszerzeniem ihx lub hex). Plik wynikowy jest przesyłany do systemu DSM-51 za pomocą programu dsm51run.exe. Rysunek 2 pokazuje, co się dzieje po wciśnięciu Ctrl+F9. Program źródłowy Kompilacja (sdcc) Program wynikowy Uruchomienie (dsm51run) DSM-51 Ćwiczenie 2 1. Uruchom MIDE-51. Rysunek 2: Proces tworzenia programu dla systemu DSM Przepisz program z listingu 1 i zapisz go w pliku z rozszerzeniem c. Pamiętaj o zapisywaniu w folderze KursC. Listing 1 #include <8051.h> P1_7 = 0; 3. Uruchom program skrótem Ctrl+F9. Program składa się tylko z funkcji main (program główny), która ustawia stan niski na porcie P1.7. Dyrektywa #include dołącza plik nagłówkowy zawierający deklarację portu P1_7. 3 Zmienne Zmienne służą do przechowywania danych (liczb, tekstu). Każda zmienna ma określony typ. Do kodowania zmiennych stałoprzecinkowych używa się najczęściej naturalnego kodu dwójkowego NBC lub kodu uzupełnień do dwóch U2. Liczby zmiennoprzecinkowe kodowane są zgodnie ze standardem IEEE754. Do kodowania znaków korzysta się z kodu ASCII. Każda zmienna musi zostać zadeklarowana. Podczas deklaracji podaje się typ i nazwę zmiennej. 3.1 Typy proste Niestety w C nie określono rozmiaru poszczególnych typów. Wiadomo jedynie, że rozmiar typu char jest mniejszy lub równy rozmiarowi typu short, short int jest mniejszy lub równy int, itp. Można to zapisać, za pomocą operatora sizeof i operatorów relacji włąściwych dla języka C, Grzegorz Cygan Krótki kurs programowania... 4
5 następująco: sizeof char <= sizeof short <= sizeof int <= sizeof long Rozmiary poszczególnych typów używane w kompilatorze sdcc, którego będziemy używać na zajęciach, przedstawiono w tabeli. Dla porównania podano także rozmiary typów w języku Java, w którym są one zdefiniowane. Tabela 1: Porównanie typów prostych w języku C i Java i i ich rozmiar Nazwa typu bit Rodzaj Język C (kompilator sdcc) Język Java 1 Nie występuje char 8 16 byte Nie występuje 8 stałoprzecinkowy short int long float zmiennoprzecinkowy double Liczba bitów decyduje oczywiście o zakresie dopuszczalnych wartości. Jeżeli np. typ jest 16 bitowy liczby mogą być z zakresu od ( ) do (2 15-1), czyli od do Modyfikator unsigned zmienia zakres typu int na liczby dodatnie z zakresu od 0 do (65535). W języku Java modyfikator unsigned nie występuje. Typ char w języku C ma najczęściej 8 bitów więc jest używany do przechowywania bajtów (odpowiednik typu byte z języka Java). Warto wiedzieć, że procesor 8-bitowy będzie pracował najefektywniej na liczbach 8- bitowych. Dlatego pisząc programy dla systemu DSM-51 do zapisu liczb będzie często używany typ char, jeśli zakres od -128 do 127 jest wystarczający. Do przechowywania liczb dodatnich będziemy korzystali z typu unsigned char, którego zakres wartości wynosi od 0 do Typy złożone Typy złożone składają się z typów prostych, są to struktury, unie, tablice, a także pola bitowe. Tych ostatnich nie polecam! Ze względu na to, że niniejsza publikacja to tylko "krótki kurs programowania", nie będę omawiał struktur oraz unii. Tak deklarujemy tablicę o nazwie napis, w której można przechowywać 10 zmiennych typu char. char napis[10]; Tablice przechowujące zmienne typu char pełnią w języku C ważną rolę, ponieważ służą do przechowywania napisów (stringów). W tablicy 10-elementowej można przechowywać napis 9- literowy, bo na końcu napisu musi się znaleźć element o wartości 0 (NUL) oznaczający koniec napisu. 3.3 Organizacja pamięci mikrosterownika W komputerach PC do przechowywania zmiennych służy pamięć operacyjna. W systemach z mikrosterownikami MCS-51 nie ma pamięci operacyjnej. Wyróżnia się tu oddzielną pamięć dla danych i dla programów. Ponadto pamięć danych składa się z kilku niezależnych przestrzeni adresowych, które wynieniono poniżej: Tabela 2: Przestrzenie adresowe mikrosterowników standardu MCS-51 Przestrzeń Opis rozmiar sfr rejestry specjalnego przeznaczenia Obszar nieciągły (omówienie wybranych Grzegorz Cygan Krótki kurs programowania... 5
6 data wewnętrzna pamięć danych o dostępie bezpośrednim 128 B idata wewnętrzna pamięć danych o dostępie pośrednim 128 B pdata xdata zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrami Ri) zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrem DPTR) rejestrów w dodatku A) maks. 256 B* w jednym banku maks. 64 KiB = B * code pamięć programu maks. 64 KiB = B * * - poza mikrosterownikiem, rozmiar zależy od zastosowanych ukłądów pamięciowych Zmienne mogą być przechowywane we wszystkich wymienionych przestrzeniach, kompilator decyduje o przeznaczeniu poszczególnych przestrzeni adresowych. Programista może wpływać na decyzje kompilaltora umieszczając przed deklaracjami zmiennych słowa kluczowe: sfr, data, idata, pdata, xdata, code. Zauważ, że nazwy zaczynają się od dwóch znaków podkreślenia, dlatego że nie są to standardowe słowa języka C. Kompilator w miarę możliwości będzie korzystał rejestrów roboczych zlokalizowanych w przestrzeni data. Przestrzeń ta jest najbardziej cenna, ponieważ dostęp do niej jest najszybszy. Jeżeli w programie występują tzw stałe, czyli "zmienne", których wartość nie zmienia się, należy korzystać z modyfikatora const. Dla zilustrowania tego zagadnienia przedstawiam program, w którym jedna linia decyduje o wykorzystaniu poszcególnych obszarów pamięci. Zadaniem programu jest wyświetlenie tekstu, którego treść się nie zmienia w czasie działania programu. Przy nieumiejętnym zadeklarowaniu zmiennej napis: char napis[] = "Ala ma kota, a Ola ma psa."; treść napisu (łącznie 27 bajtów) zostanie umieszczona w cennej pamięci wewnętrznej. Wystarczy użyć modyfikatora const, aby systuację poprawić. const char napis[] = "Ala ma kota, a Ola ma psa."; Ćwiczenie 3 1. Uruchom program przykładowy. 2. Po każdej zmianie deklaracji zmiennej napis sprawdzaj wykorzystanie poszcególnych przestrzeni adresowych, zaglądając do odpowiednich plików mem. Wypróbuj kolejno: 1. char napis[] = "Ala ma kota, a Ola ma psa."; 2. const char napis[] = "Ala ma kota, a Ola ma psa."; 3. const char * napis = "Ala ma kota, a Ola ma psa."; 4. const char * const napis = "Ala ma kota, a Ola ma psa."; 3. Odpowiedź znajduje się w tabeli 2. Tabela 3: Zajętość pamięci dla programu z listingu 2 w zależności od sposobu delaracji zmiennej (informacje uzyskane z plku z rozszerzeniem mem) Deklaracja stringu Przestrzeń data (Internal RAM) Zajętość pamięci Przestrzeń code (ROM/EPROM/ FLASH) char napis[] = "Ala ma kota, a Ola ma psa."; const char napis[] = "Ala ma kota, a Ola ma psa."; const char * napis = "Ala ma kota, a Ola ma psa."; const char * const napis = "Ala ma kota, a Ola ma psa."; Grzegorz Cygan Krótki kurs programowania... 6
7 Listing 2 #include <stdio.h> #include <ctype.h> char napis[] = "Ala ma kota, a Ola ma psa."; void putchar (char c) if (isprint (c)) WRITE_DATA (c); LCD_CLR; puts (napis); 4 Instrukcje zmieniające przebieg wykonywania programu Instrukcje if, else, switch, while, do, for, continue, break i goto umożliwiają wykonanie fragmentu programu w zależności od spełnienia określonego warunku, np wciśnięcie klawisza. Możliwe jest także wielokrotne powtórzenie fragmentu, itp. Rysunek 3a pokazuje działanie instrukcji if. Rysunek 3b przedstawia działanie pętli. Do budowy pętli wykorzystujemy instrukcje for i while. W algorytmie przedstawionym na rysunku 3b sprawdzanie warunku odbywa się na początku (przed wykonaniem pętli), ale możliwe jest także sprawdzenie warunku na końcu pętli za pomocą pętla do... while. Fragment poprzedzający warunek Fragment poprzedzający pętlę Warunek Blok instrukcji wykonane warunkowo Warunek Blok instrukcji wykonane warunkowo Dalsza część programu Dalsza część programu a) b) Rysunek 3: Algorytm programu a) z instrukcją warunkową, b) z pętlą. Grzegorz Cygan Krótki kurs programowania... 7
8 4.1 Pętle for i while Dla omówienia poszczególnych instrukcji warunkowych wykonajmy zadanie polegające na wydrukowaniu kolejny liczb. Najlepiej do tego zadania nadaje się pętla for, ale dla porównania zastosojemy także pętlę while. Po słowie kluczowym for w nawiasie podaje się 3 wyrażenia oddzielone średnikami. Listing 3 unsigned char i; WRITE_INSTR (1); for (i = 0; i < 5; i++) WRITE_DATA (i + '0'); Pierwsze wyrażenie (i = 0) służy do inicjalizacji zmiennej, czyli nadania zmiennej początkowej wartości. Drugie wyrażenie (i < 5), to warunek wykonania pętli. Trzecie wyrażenie mówi co należy po każdym wykonaniu pętli. W tym przykładzie i++ to postinkrementacja, czyli zwiększenie wartości zmiennej o jeden. Pętla while, podobnie jak for, umożliwia wielokrotne powtórzenie fragmentu programu. Po słowie kluczowym while w nawiasie podaje się jedno wyrażenie - warunek wykonania pętli. Można osiągnąć taki sam efekt, jak w przypadku pętli for, ale inicjalizację zmiennej trzeba wykonać przed pętlą, a inkrementację zmiennej wewnątrz pętli. Listing 4 unsigned char i = 0; WRITE_INSTR (1); while (i < 5) WRITE_DATA (i + '0'); i++; 4.2 Typowe zastosowania pętli for W ćwiczeniu pokazano dwa typowe zastosowania pętli for: do zbudowania pętli nieskończonej i do wygenerowania zwłoki czasowej. Listing 5 #include <8051.h> unsigned int i; for ( ; ; ) for (i = 0; i < 65535; i++) P1_7 =!P1_7; Grzegorz Cygan Krótki kurs programowania... 8
9 Pętla nieskończona (for ( ; ; )) nie zawiera ani inicjalizacji zmiennej, ani warunku, ani inkrementacji zmiennej. Pętlę nieskończoną można zrealizować także za pomocą instrukcji while (1). W języku C każda wartość niezerowa, np. 1, oznacza prawdę, dlatego pętla nigdy się nie kończy. Pętla generująca opóźnienie (for (i = 0; i < 65535; i++)) nie zawiera żadnych instrukcji, ponieważ chodzi tylko o zajęcie procesorowi czasu. Oczywiście jest to swoiste marnowanie mocy obliczeniowej, ale jest to zarazem najprostszy sposób osiągnięcia zwłoki czasowej. Ponieważ, jak już wspomniałem, pętla nie zawiera instrukcji (nawiasy klamrowe są puste) można pętlę zapisać krócej tak: for (i = 0; i < 65535; i++); Ćwiczenie 4 1. Przetestuj program przykładowy. 2. Spróbuj zwiększyć dziesięciokrotnie wartość zwłoki. 3. Zastąp zęwnętrzną pętlę for pętlą while. 5 Wybrane funkcje z biblioteki stdio Program w języku C składa się z pewnej (praktycznie nieograniczonej) liczby funkcji. Funkcja main jest uruchamiana jako pierwsza, czyli jest programem głównym. Z funkcji main można wywołać inne funkcje. Można samodzielnie pisać funkcje, albo korzystać z funkcji bibliotecznych. Aby skorzystać z funkcji bibliotecznych należy dołaczyć odpowiedni plik nagłówkowy. Aby korzystać z biblioteki stdio dołączamy plik stdio.h w taki sposób: #include <stdio.h> Funkcję puts można wykorzystywać do drukowania napisów na różnego typu urządzeniach. W komputerze PC jest to zwykle monitor, a w mikrosterownikach wyświetlacz i interfejs szeregowe wystarczy napisać odpowiednią funkcję putchar. 5.1 Funkcja putchar dla wyświetlacza LCD Ćwiczenie 5 1. Uruchom następujący program. 2. Poeksperymentuj z programem usuwając linie, których działanie chcesz sprawdzić. Zamiast usuwania lepiej te linie zakomentować, czyli poprzedzić je dwoma ukośnikami. W zasadzie taki typ komentarza pojawił się dopiero w języku C++, ale występują we wszystkich nowych kompilatorach języka C. W środowisku MIDE komentarze są oznaczone kolorem zielonym. Poniżej przedstawiono przykład zastosowania komentarza. // WRITE_DATA (c); Listing 6 #include <stdio.h> #include <ctype.h> void putchar (char c) if (isprint (c)) WRITE_DATA (c); Grzegorz Cygan Krótki kurs programowania... 9
10 LCD_CLR; puts ("CENTRUM EDUKACJI ZAWODOWEJ"); Dyrektywy include powodują dołączenie plików nagłówkowych (z rozszerzeniem h). W plikach nagłówkowych znajdują się deklaracje funkcji bibliotecznych, np.: w pliku stdio.h są zadeklarowane funkcje putchar i puts, w ctype.h funkcja isprint. W pliku dsm51.h zdefiniowano makroinstrukcje LCD_CLR i LCD_DATA. Zauważ, że nazwy makroinstrukcji, w odróżnieniu od funkcji, piszemy wielkimi literami. Nagłówek funkcji putchar informuje, że funkcja zwraca typ void, oraz że funkcja przyjmuje jeden argument typu char. Funkcja putchar wywołuje funkcję isprint, aby sprawdzić, czy znak da się wydrukować. Do drukowania poszczególnych znaków wykorzystuje się makroinstrukcję WRITE_DATA, która z kolei wywołuje odpowiedni podprogram systemu DSM-51. Nagłówek funkcji main informuje, że funkcja ta, ani nie przyjmuje, ani nie zwraca argumentów. Do drukowania napisu korzystamy z funkcji puts, ta korzysta z putchar, aby drukować poszczególne litery. 5.2 Funkcja putchar dla sygnalizatora dźwiękowego Ćwiczenie 6 1. Podobnie jak poprzednio utwórz następujący plik z programem w języku C. Możesz skorzystać z edytora środowiska MIDE-51, notatnika lub innego. Zauważ, że program jest podobny do poprzedniego. Zapisz program w pliku hellomors.c. 2. Druga część programu napisana jest w języku Asemblera w pliku mors.asm. 3. Teraz należy skompilować program, który jest napisany w języku C, zasemblować program w języku Asemblera, połączyć obie części w cały program za pomocą konsolidatora i wysłać do systemu DSM-51, wykonując poniższe polecenia: sdcc -c hellomors.c sdas8051 -l -o mors.asm sdcc hellomors.rel mors.rel dsm51run hellomors.ihx 4. Zapoznaj się z plikami wygenerowanymi w poszczególnych etapach tworzenia pliku wynikowego. Listing 7 /* Ten program sklada sie z dwoch plikow: hellomors.c i mors.a51 Program nalezy kompilowac z wiersza polecen: sdcc -c hellomors.c sdas8051 -l -o mors.asm sdcc hellomors.rel mors.rel dsm51run hellomors.ihx */ #include <stdio.h> #include <ctype.h> #include <8051.h> extern void mors_putchar (char); void putchar (char c) if (isprint (c)) WRITE_DATA (c); Grzegorz Cygan Krótki kurs programowania... 10
11 mors_putchar (c); void main () for (;;) puts ("CENTRUM EDUKACJI ZAWODOWEJ"); 5.3 Automatyzacja procesu tworzenia programu przy użyciu make Zarządzanie budową programu składającego się z kilku plików omówimy na przykładzie programu składającego sie z dwóch plików źródłowych, napisanych w dwóch językach: w języku C hellomors.c i w Asemblerze mors.asm. Proces tworzenia pliku wynikowego hellomors.ihx przedstawia rysunek.na rysunku wymieniono polecenia, które należy wydać z wiersza poleceń. hellomors.c mors.asm Kompilacja sdcc -c hellomors.c Asemblacja sdas8051 -l -o mors.asm hellomors.rel mors.rel Konsolidacja sdcc hellomors.rel mors.rel hellomors.ihx Uruchomienie dsm51run hellomors.ihx Po dokonaniu zmian w pliku hellomors.c należy ponownie skompilować ten plik, następnie skonsolidować i uruchomić program. Polecenia można zapisać w pliku z rozszerzeniem cmd. Oto zawartość pliku: sdcc -c hellomors.c if errorlevel 1 goto stop sdas8051 -l -o mors.asm if errorlevel 1 goto stop sdcc hellomors.rel mors.rel dsm51run hellomors.ihx :stop pause Pracę znacznie usprawnia program make, który sprawdza, w których plikach dokonano zmian i wykonuje odpowiednie polecenia. Program czyta plik Makefile, którego zawartosć może być następująca: hellomors.ihx : hellomors.rel mors.rel sdcc hellomors.rel mors.rel hellomors.rel : hellomors.c sdcc -c hellomors.c Grzegorz Cygan Krótki kurs programowania... 11
12 mors.rel : mors.asm sdas8051 -l -o mors.asm run : hellomors.ihx dsm51run hellomors.ihx W pliku zapisane są nastęujące cele: hellomors.ihx, hellomors.rel, mors.rel oraz sztuczny cel run. Po nazwie celu umieszczony jest dwukropek, po którym wymienione są warunki budowy celu. Czyli, aby zbudować hellomors.ihx musi być plik hellomors.rel i mors.rel. W następnych liniach znajdują sie polecenia budowy celu poprzedzone tabulatorem. Uruchomienie programu make następuje przez wydania polecenia make. Sztuczny cel run umożliwia uruchomienie programu w systemie DSM-51. Należy po prostu wywołać program make z nazwą tego celu, czyli napisać w wierszu poleceń, czyli: make run Ćwiczenie 7 1. Zbuduj program "koder morse'a" korzystając z make. 2. Dodaj sztuczny cel o nazwie clean, który usunie wszystkie niepotrzebne pliki powstałe podczas tworzenia programu wynikowego. 5.4 Funkcja printf Standardową funkcja wyjścia printf jest dużo bardziej uniwersalna od funkcji puts. Oprócz statycznych napisów można za jej pomocą drukować wartości zmiennych w różnych systemach liczbowych. Podobnie jak puts funkcja printf korzysta z funkcji putchar do drukowania poszczególnych znaków. Siła funkcji polega na zastosowaniu specyfikatorów formatowania (z prefiksem %), które można umieszczać w dowolnym miejscu stringu formatującego. Każdemu specyfikatorowi odpowiada jedna zmienna lub wyrażenie na liście argumentów funkcji printf. Poniżej przedstawiono wybrane specyfikatory przydatne zwłaszcza w programach dla mikrosterowników. %d wartość zmiennej w postaci dziesiętnej ze znakiem; %u wartość zmiennej w postaci dziesiętnej bez znaku; %x wartość zmiennej w postaci szesnastkowej; %c znak o kodzie ASCII równym wartość zmiennej ośmiobitowej; %04.3f wartość liczby zmiennoprzecinkowej typu float w polu o szerokości 4 znaków części całkowitej i 3 - części ułamkowej. Wolne pola poprzedzające będą wypełnione zerami. %s string; Listing 8 #include <stdio.h> #include <ctype.h> void putchar (char c) if (isprint (c)) WRITE_DATA (c); char wiek = 25; LCD_CLR; printf ("Mam %d lat%c", wiek, (wiek < 5)? 'a' : ' '); W przykładowym programie %d formatuje sposób wyświetlania wartości zmiennej wiek, %c pokazuje wartość wyrażenia (wiek < 5)? 'a' : ' ', którego wynikiem jest zmienna typu char przyjmująca wartości a (kod ASCII litery a ) lub kod spacji. Grzegorz Cygan Krótki kurs programowania... 12
13 Ćwiczenie 8 1. Zamień specyfikator %d na %u, a następnie na %x. Zastanów się dlaczego takie a nie ine wartość są wyświetlane. 2. Napisz program korzystający i innych specyfikatorów. 6 Programowanie wyświetlacza LCD systemu DSM-51 Na pierwszych zajęciach korzystaliśmy z wyświetlacza LCD, ale używaliśmy do tego gotowego podprogramu z pamięci stałej systemu DSM-51. W systemie DSM-51 zastosowano wyświetlacz z popularnym sterownikiem HD Sterownik ten ma cztery rejestry, które w systemie DSM-51 są widziane w przestrzeni adresowej PDATA pod następującymi adresami. Tabela 4: Rejestry wyświetlacza LCD Adres Nazwa rejestru Kierunek Operacji 80H LCDWC wpis rozkazów 81H LCDWD wpis danych 82H LCDRC odczyt stanu 83H LCDRD odczyt danych 6.1 Wyświetlanie znaków bez korzystania z podprogramów systemu DSM-51 Użycie makroinstrukcji WRITE_DATA, WRITE_INSTR oznacza wykorzystanie podrogramów z systemu DSM-51. Jeśli piszemy program dla własnego systemu, to nie mamy żadnych gotowych podprogramów. W tym rozdziale nauczysz się jak obsłużyć wyświetlacz LCD bezpośrednio przez rejestry wyświetlacza. Ćwiczenie 9 1. Uruchom program przykładowy. 2. Zmodyfikuj go tak, aby wyświetlić więcej znaków. Listing 9 pdata at(0x81) unsigned char LCDWD; void main () LCDWD = 'a'; W zadaniu pierwszym pojawi się problem gubienia znaków. Wynika to z tego, że znaki będą drukowane poza obszarem widocznym na wyświetlaczu. Po prostu program LCD_DATA automatycznie przenosi kursor na początek. Zatem trzeba skasować wyświetlacz wpisując rozkaz o kodzie 1 (Clear display) do rejestru rozkazów. Pewnie zauważysz, że nadal nie są drukowane wszystkie znaki wyświetlacz nie nadąża. Najprostszym rozwiązaniem będzie zastosowanie pętli opóźniającej for. 3. Zamiast pętli opóźniającej dokonaj odczytu rejestru stanu. Najstarszy bit w tym rejestrze informuje, że wyświetlacz jest zajęty. Tabela 5: Instrukcje sterujące sterownika HD44780 (HITACHI) Nazwa oryginalna Opis kod Clear display Kasuj wyświetlacz Grzegorz Cygan Krótki kurs programowania... 13
14 Return home Ustaw kursor na początku X Entry mode set Ustawienie tryb wprowadzania danych I/D S Display ON/OFF control Cursor and display shift Sterowanie włączaniem i wyłączaniem D C B Przesunięcie kursora i (lub) wyświetlacza S/C R/L X X Function set Ustawienie funkcji wyświetlacza DL N F X X Set CG_RAM address Ustawienie adresu generatora znaków 0 1 A5 A4 A3 A2 A1 A0 Set DD_RAM address Ustawienie adresu danych 1 A6 A5 A4 A3 A2 A1 A0 Przed każdym wpisaniem danych LCDWD lub rozkazów LCDWC należy sprawdzać bit BYSY, jest to najstarszy bit w rejestrze LCDRC. Jeśli ten bit jest ustawiony, to oznacza, że wyświetlacz jest zajęty. Listing 10 void main () while (LCDRC & 0x80); LCDWC = 1; while (LCDRC & 0x80); LCDWD = 'D'; while (LCDRC & 0x80); LCDWD = '-'; //Pokaz znak - //Czekaj na gotowosc wyswietlacza //Clear display //Pokaz litere 'D' 6.2 Korzystanie z instrukcji sterujących sterownika HD44780 W poprzednim ćwiczeniu korzystaliśmy tylko z instrukcji sterującej Clear Display. Program przykładowy z listingu??? pokazuje zastosowanie rozkazu Cursor and display shift. Program jest zmodyfikowaną wersją programu z listingu 9. Na końcu dodano pętlę w której następuje przesuwanie napisu. Ćwiczenie Uruchom program przykładowy. 2. Zamień rozkaz Cursor and display shift na rozkaz Display ON/OFF control. Wartość bitu D powinna się zmianiać tak, aby napis migał. Listing 11 #include <stdio.h> #include <ctype.h> void putchar (char c) if (isprint (c)) WRITE_DATA (c); unsigned int i; LCD_CLR; Grzegorz Cygan Krótki kurs programowania... 14
15 puts ("CENTRUM EDUKACJI ZAWODOWEJ"); for (;;) for (i = 0; i < 50000; i++); //Zwloka czasowa WRITE_INSTR (0x18); //Cursor and display shift 7 Programowanie układów wewnętrznych mikrosterownika Mikrosterownik to coć więcej niż procesor (inna nazwa mikrosterownika to komputer jednoukładowy). Każdy mikrosterownik zawiera szereg układów sprzętowych, które wykonują określone zadania niezależnie od procesora. Wyjaśnię to na przykładzie licznika. Po zaprogramowaniu trybu pracy licznika i uruchomieniu, licznik zlicza impulsy doprowadzone do wejścia, na przykład zlicza impulsy z czujnika położenia wału korbowego w samochodzie. Praca licznika jest niezależna od pracy procesora, który może w tym czasie wykonywać na przykład obliczenie prędkości. 7.1 Programowanie portów Mikrosterowniki posiadają porty umożliwiające bezpośrednie sterowania elementów wykonawczymi, np. włączenia żarówki, przekaźnika, diody LED. Mikrosterownik 8051 posiada cztery porty ośmiobitowe, więc można sterować na przykład 32 diodami LED. Włączanie elementu sterowanego z portu odbywa się przez podanie zera na wymagany bit w porcie, co w języku Asemblera może wyglądać tak CRL P1.7 Po ludzku rozkaz ten mówi wyzeruj (clear) bit 7 portu P1. W systemie DSM-51 do tego portu dołączona jest dioda TEST. Niestety w języku C rozwiązanie nie jest równie proste. Asembler to język procesora, dlatego Asembler wie co co to P1.7. Programowanie portów nie jest zdefiniowane w standardzie języka C. Oczywiście kompilator SDCC posiada odpowiednie instrukcje umożliwiające wykonanie zadania. Instrukcje takie zaczynają się dwoma znakami '_'. Program przykładowy pokazuje jak zadeklarować zmienną specjalnego typu sbit. Po słowie at w nawiasie podaje się adres portu. Podobny program uruchamiałeś na pierwszym ćwiczeniu, ale zamiast deklaracji bitu dołączaliśmy plik nagłówkowy 8051.h, w którym ta deklaracja występuje. Listing 12 sbit at (0x97) P1_7; void main () P1_7 = 0; Sześciopozycyjny wyświetlacz siedmiosegmentowy sterowany jest z portów zewnętrznych znajdujących się w przestrzeni adresowej PDATA mikrosterownika, pod adresami 30 oraz 38. Włączeniem całego wyświetlacza steruje port P1.6. Listing 13 sbit at (0x96) P1_6; pdata at(0x30) unsigned char CSDS; pdata at(0x38) unsigned char CSDB; void main () unsigned char i; P1_6 = 0; while (1) Grzegorz Cygan Krótki kurs programowania... 15
16 CSDS = 0x01; CSDB = 0x7f; for(i = 0; i < 200; i++); CSDS = 0x02; CSDB = 0x06; for(i = 0; i < 200; i++); CSDS = 0x04; CSDB = 0x07; for(i = 0; i < 200; i++); 7.2 Programowanie układu transmisji szeregowej SIO Układ transmisji szeregowej umożliwia współpracę systemu DSM-51 z komputerem PC poprzez fizyczny port szeregowy RS-232 lub poprzez wirtualny port szeregowy, połączony fizycznie, np łączem USB, LAN, bluetooth. Zastosowania potru są praktycznie nieograniczone. Warto jeszcze wspomnieć o interfejsie MIDI, który jest stosowany w elektronicznych instrumentach muzycznych. Ćwiczenie Uruchom program przykładowy. 2. Uruchom program program Putty i ustaw następujące parametry transmisji: prędkość v BR = b/s, 8 bitów danych, 1 bit stopu. 3. Zmień ustawienia szybkości transmisji i wypróbuj działanie programu. Listing 14 #include <stdio.h> #include <8051.h> void putchar (char c) while (!TI); TI = 0; SBUF = c; Grzegorz Cygan Krótki kurs programowania... 16
17 void main () unsigned char i; TMOD = 0x20; SCON = 0x52; PCON = 0x80; TH1 = 253; TR1 = 1; for (i = 0; ; i++) DELAY_100MS (20); printf ("Minela wlasnie %u\r", i); Instrukcja Omówienie TMOD = 0x20 T1: 8 bitowy czasomierz bez bramkowania. SCON = 0x52 REN=1, SM0=1, TI=1. Tryb 1 asynchroniczny, 8 bitów danych, szybkość regulowana układem T1 PCON = 0x80 SMOD = 1 TH1 = 253 TH1=256 f OSC 2 SMOD ( 1 ) 384v BR Częstotliwość zegarową f OSC można odczytać z rezonatora kwarcowego systemu DSM-51lub z dokumentacji. TR1 = 1 Uruchom układ czasowo-licznikowy T1 7.3 Programowanie sterownika przerwań Systemu przerwań umożliwia zrealizowanie systemu wielozadaniowego. W programie przykładowym w funkcji main w pętli while (1) następuje naprzemienne zapalanie i gaszenie diody TEST. Drugie (niezależne) zadanie włączanie i wyłączanie brzęczyka, wykonywane jest w programie obsługi przerwania od układu czasowo licznikowego. Dla przypomnienia program główny to funkcja main. Programy obsługi przerwania (ang. interrupt service routine, isr) mają w nagłówku funkcji słowo interrupt. Po nim podaje się numer układu, np. T0 ma numer 1. Nazwa ISR może być dowolna, ale dobrze jeśli coś mówi. Słowo using określa numer banku rejestrów. Ze wzoru można obliczyć czas, co jaki będzie się uruchamiał program obsługi przerwania od układu czasowego. bitow 12 2liczba T = = f OSC 11,0592MHz =71,1ms ( 2 ) Listing 15 #include <8051.h> //Program glowny TMOD = 0x01; //Konfiguracja ukladow czasowo-licznikowych TR0 = 1; //Uruchomienie ukladu czasowo-licznikowego T0 ET0 = 1; //Wlaczenie zezwolenia na przerwania od T0 EA = 1; //Wlaczenie zezwolenia ogolnego while (1) P1_7 =!P1_7; DELAY_100MS(5) //Program z pamieci EPROM systemu DSM-51 Grzegorz Cygan Krótki kurs programowania... 17
18 //Program obslugi przerwania od ukladu czasowo-licznikowego T0 void t0_isr () interrupt 1 using 1 P1_5 =!P1_5; 7.4 Miernik refleksu Na podsumowanie przedstawiam gotowy program (listing znajduje się w dodatku B), w którym wykorzystano wszystkie układy wewnętrzne mikrosterownika omawiane w tym rozdziale. Miernik wykorzystuje złącze ISOLATED I/O, do którego dołączone są niektóre porty mikrosterownika. Port P3.4 do dołączenia "pedału hamulca" i port P1.2 do dołączenia "świateł stop". Rysunek 4: Złącze izolowane galwanicznie (rysunek z dokumenntacji DSM-51) Grzegorz Cygan Krótki kurs programowania... 18
Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC
Grzegorz Cygan Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC wydanie 3 1.Spis treści 1. Wprowadzenie do programowania systemu
Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC
Grzegorz Cygan Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC wydanie 3 1.Spis treści 1. Wprowadzenie do programowania systemu
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
Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1
Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą
4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.
13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,
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ę
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
MIKROPROCESORY architektura i programowanie
Systematyczny przegląd. (CISC) SFR umieszczane są w wewnętrznej pamięci danych (80H 0FFH). Adresowanie wyłącznie bezpośrednie. Rejestry o adresach podzielnych przez 8 są też dostępne bitowo. Adres n-tego
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,
4 Transmisja szeregowa, obsługa wyświetlacza LCD.
1 4 Transmisja szeregowa, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy, - ramka transmisyjna, - przeznaczenie buforów obsługi
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
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
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ć
MIKROPROCESORY architektura i programowanie
Struktura portów (CISC) Port to grupa (zwykle 8) linii wejścia/wyjścia mikrokontrolera o podobnych cechach i funkcjach Większość linii we/wy może pełnić dwie lub trzy rozmaite funkcje. Struktura portu
Architektura mikrokontrolera MCS51
Architektura mikrokontrolera MCS51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Architektura mikrokontrolera
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,
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
Architektura mikrokontrolera MCS51
Architektura mikrokontrolera MCS51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Architektura mikrokontrolera
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
TECHNIKA MIKROPROCESOROWA
LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART MCS'51 Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM
ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów
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,
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.
1. Mechanizm przerwań w procesorze C51 Przerwania są mechanizmem umożliwiającym połączenie zdarzeń (sygnałów) z odpowiednim wykonaniem fragmentu programu - wywoływanymi niezależnie od aktualnie wykonywanego
Programowanie Mikrokontrolerów
Programowanie Mikrokontrolerów Wyświetlacz alfanumeryczny oparty na sterowniku Hitachi HD44780. mgr inż. Paweł Poryzała Zakład Elektroniki Medycznej Alfanumeryczny wyświetlacz LCD Wyświetlacz LCD zagadnienia:
Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.
1. Przerwania na procesorze 80C51 Przerwania są mechanizmem umożliwiającym połączenie zdarzeń (sygnałów) z odpowiednim wykonaniem fragmentu programu - wywoływanymi niezależnie od aktualnie wykonywanego
Szkolenia specjalistyczne
Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com
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 w języku C++ Grażyna Koba
Programowanie w języku C++ 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 zasad
ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna
Technika Mikroprocesorowa Laboratorium 4 Obsługa liczników i przerwań Cel ćwiczenia: Celem ćwiczenia jest nabycie umiejętności obsługi układów czasowo-licznikowych oraz obsługi przerwań. Nabyte umiejętności
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portu szeregowego laboratorium: 05 autor: mgr inż. Michal Lankosz dr hab.
Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH
Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 1 Podstawy Wprowadzenie do programowania w języku C Kraków 2010 Twój pierwszy program w C Program w języku C, jak i w wielu innych językach
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
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
Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
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
lekcja 8a Gry komputerowe MasterMind
lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych
Poradnik programowania procesorów AVR na przykładzie ATMEGA8
Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Microsoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
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
Wstęp...9. 1. Architektura... 13
Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości
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
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe
Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/
Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura
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)...
Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Jak napisać program obliczający pola powierzchni różnych figur płaskich?
Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy
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
Języki i metodyka programowania. Wprowadzenie do języka C
Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Warsztaty dla nauczycieli
WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne
Ć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
PMiK Programowanie Mikrokontrolera 8051
PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0
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
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
2. Architektura mikrokontrolerów PIC16F8x... 13
Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
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.
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
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C
Systemy wbudowane Mikrokontrolery AVR Wprowadzenie do programowania w C dr inż. Maciej Piechowiak Wprowadzenie język C jest językiem strukturalnym wysokiego poziomu, jednak działającym blisko sprzętu i
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
GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu
Programowanie wyświetlacza LCD według: http://radziu.dxp.pl Wyświetlacz graficzny 2 x 16 ma 2 wiersze, 16 znaków w wierszu, każdy znak jest wyświetlany w matrycy 5 x 8 pikseli. (2*8 wierszy * 5*16 kolumn
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()
Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli
Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)
Laboratorium Techniki Mikroprocesorowej Informatyka studia dzienne Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z możliwościami zastosowania mikrokontrolerów
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
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:
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ż.
Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?
Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Pytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
Język C - podstawowe informacje
Język C - podstawowe informacje Michał Rad AGH Laboratorium Maszyn Elektrycznych 2014-12-05 Outline Program w języku C Funkcje Składnia Instrukcje sterujace Na koniec... Po kolei napisać program (zwykły
Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD
Języki C i C++ Wykład: 2 Wstęp Instrukcje sterujące 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
INFORMATYKA Studia Niestacjonarne Elektrotechnika
INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl
Programowanie mikrokontrolerów AVR
Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem
Pracownia elektryczno-elektroniczna klasa IV
Ćwiczenie nr 5 Cel ćwiczenia: Ćwiczenie ma na celu zaznajomienie z metodami odliczania czasu z wykorzystaniem układów czasowo - licznikowych oraz poznanie zasad zgłaszania przerwań i sposobów ich wykorzystywania
Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat
02 Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat 2012.10.07 Program w języku C Program w języku C jest pisany w pliku tekstowym, następnie przetwarzany przez kompilator do pliku
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
Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego
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
Wprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Dodatek A Wyświetlacz LCD. Przeznaczenie i ogólna charakterystyka Wyświetlacz ciekłokrystaliczny HY-62F4 zastosowany w ćwiczeniu jest wyświetlaczem matrycowym zawierającym moduł kontrolera i układ wykonawczy
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,
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
/* 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
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,