Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC

Wielkość: px
Rozpocząć pokaz od strony:

Download "Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51 i kompilatora SDCC"

Transkrypt

1 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

2 1.Spis treści 1. Wprowadzenie do programowania systemu DSM Pierwsze programy w język Asemblera i w języku C Złożone programy w języku C Operacje arytmetyczne Operacje logiczne Programowania standardowego wyjścia Specyfikatory formatowania funkcji printf Funkcja putchar dla sygnalizatora dźwiękowego Zwłoki czasowe Zmienne 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 Niskopoziomowe programowanie wyświetlacza LCD systemu DSM Przetwornik A/C Silnik krokowy Wyświetlacz siedmiosegmentowy 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ń...21 Grzegorz Cygan Krótki kurs programowania... 2

3 1 Wprowadzenie do programowania systemu DSM-51 Do wykonania ćwiczeń niezbędny jest system Operacyjny Windows 1 oraz następujące programy: sdcc (kompilator), sdas8051 (asembler), make, dsm51run (dostarczony z systemem DSM-51), rm, oraz edytor tekstu z kolorowaniem składni (polecam program Far Manager z wtyczką Far Colorer). Do usuwania niepotrzebnych plików można używać polecenia del, ale z pewnych nieomawianych tu powodów, użyjemy Linuksowego polecenia rm. Program w języku C zapiszemy w pliku main.c. Podprogramy odwołujące się do sprzętu (elementów systemy DSM-51) będziemy tworzyć w języku Asemblera i zapisywać w pliku dsm51.a51. Asembler to język procesora (mikrosterownika), tyle że dostosowany dla ludzi, ponieważ liczbowe kody rozkazów zastąpiono nazwami. W języku maszynowym program jest ciągiem liczb, które można zapisać w systemie dwójkowym lub szesnastkowym. Posługując się nazwami rozkazów, zamiast kodami liczbowymi, trudniej jest się pomylić. Rysunek pokazuje proces tworzenia programu wynikowego main.ihx, oraz jego jego uruchomienie w systemie DSM-51. main.c dsm.a51 Kompilacja Asemblacja main.rel dsm.rel Konsolidacja main.ihx Rysunek 1: Proces tworzenia programu dla DSM-51 Aby zautomatyzować proces tworzenia programu, użyjemy programu make. Wystarczy napisać stosowny plik Makefile, którego zawartość dla omawianego procesu może być taka. Listing 1 main.ihx: main.rel dsm.rel sdcc $^ %.rel: %.c sdcc -c $< %.rel: %.a51 sdas8051 -l -o $< DSM-51 Uruchomienie 1 Właściwie prawie wszystkie programy, z wyjątkiem dsm51run, wywodzą się z systemu Unix/Linux. Grzegorz Cygan Krótki kurs programowania... 3

4 run: main.ihx dsm51run $< clean: rm -f *.asm *.lnk *.lst *.rel *.mem *.map *.sym *.rst *.ihx Pliki źródłowe main.c, dsm.a51 oraz Makefile muszą się znajdować w tym samym katalogu (Folderze). Oto zawartość pliku main.c Listing 2 extern void write_data (unsigned char); extern void write_instr (unsigned char); extern void clrscr (void); void main (void) clrscr (); write_data ('S'); write_instr (0xc4); write_data ('o'); write_instr (0x88); write_data ('s'); while (1); W języku C podprogramy te należy zadeklarować. Słowo extern oznacza, że funkcje te są zdefiniowane innym module (pliku), unsigned char jest typem zmiennej; unsigned char w nawiasie oznacza, że funkcja przyjmuje liczbę typu unsigned char, a unsigned char przed nazwą funkcji informuje, że funkcja zwraca liczbę typu unsigned char. Jeżeli typ zmiennej jest nieokreślony (void) to funkcja odpowiednio nie przyjmuje lub nie zwraca wartości. A oto zawartość pliku dsm.a51 Listing 3.area HOME (CODE) _clrscr:: mov a,#1 lcall 0x8106 ;Wywolanie podprogramu WRITE_INSTR systemu DSM-51 ret _write_data:: mov a,dpl lcall 0x8102 ret _write_instr:: mov a,dpl lcall 0x8106 ret W pliku dsm.a51 są zaimplementowane trzy podprogramy w języku Asemblera. Nazwy podprogramów to etykiety, czyli symboliczne nazwy komórek pamięci. 1. _clrscr czyszczenie wyświetlacza 2. _write_data wypisywanie znaków na wyświetlaczu 3. _write_instr wpisywanie instrukcji do wyświetlacza Aby otrzymać program dla systemu DSM-51 napisz w konsoli: make aby uruchomić na DSM-ie make run Grzegorz Cygan Krótki kurs programowania... 4

5 a w celu posprzątania make clean 2 Pierwsze programy w język Asemblera i w języku C Ćwiczenie 1 1. Stwórz pliki main.c, dsm.a51 oraz Makefile zgodnie z opisem w rozdziale Dołącz system DSM-51 do komputera. Uruchom program poleceniem make run. Opisz efekt działania programu. Zapoznaj się z komunikatami w plikach z rozszerzeniem lst. 3. Przenieś wszystkie deklaracje funkcji do pliku dsm.h. W pliku main.c dopisz na początku poniższą linię. Sprawdź czy program nadal działa. #include dsm.h 4. Bardzo często posługujemy się typem unsigned char, dlatego proponuję umieścić na początku pliku dsm.h następującą definicję i zastąpić wszystkie wystąpienia unsigned char nazwą U08. typedef unsigned char U08; 5. Zmień położenie litery s. Ustawienie kursora realizujemy za pomocą funkcji write_instr. Argument funkcji write_instr decyduje o pozycji kursora. Przykładowo liczba 88 (szesnastkowo) = (dwójkowo) ma następujące znaczenie Tabela 1: Struktura rozkazu Set DD_RAM address Kod instrukcji Set DD_RAM address (zawsze 1) Numer wiersza 0 górny 1 dolny Pozycja w wierszu Włącz migający kursor. Wszystkie instrukcje wyświetlacza zebrano w tabeli 2. Tabela 2: Rozkazy wyświetlacza LCD ze sterownikiem HD44780 Nazwa oryginalna Opis kod Clear display Kasuj wyświetlacz Return home Ustaw kursor na początku X Entry mode set Display ON/OFF control Cursor and display shift Function set Set CG_RAM address Ustawienie tryb wprowadzania danych Sterowanie włączaniem i wyłącz. wyświetlacza i kursora Przesunięcie kursora i (lub) wyświetlacza Ustawienie funkcji wyświetlacza Ustawienie adresu generatora znaków I/D S D C B S/C R/L X X DL N F X X 0 1 A5 A4 A3 A2 A1 A0 Set DD_RAM address Ustawienie adresu danych 1 A6 A5 A4 A3 A2 A1 A0 7. W pliku dsm.h zadeklaruj funkcję test_on. extern void test_on (void) i zaimplementuj tę funkcję w Asemblerze za pomocą instrukcji clr p Analogicznie, jak w poprzednim punkcie, stwórz funkcję test_off. Wskazówka: musisz znaleźć na liście Grzegorz Cygan Krótki kurs programowania... 5

6 rozkazów rozkaz, który działa odwrotnie w stosunku do rozkazu clr. 9. Stwórz funkcję, która wczytuje liczbę z zakresu od 0 do 255 (unsigned char) z klawiatury systemu DSM-51. W pamięci stałej ROM systemu pod adresem 0x811e znajduje się się podprogram GET_NUM, który umożliwia wprowadzenie liczby w systemie BCD, jednak proponuję przedstawiony poniżej program, który umożliwi wprowadzenie liczby w systemie dziesiętnym. Listing 4 _read_dec:: mov dpl,#0 sjmp rd loop: mov dph,a add a,#'0 lcall 0x8102 ;Wywolanie podprogramu WRITE_DATA s. DSM-51 mov a,dpl mov b,#10 mul ab add a,dph mov dpl,a rd: lcall 0x811c ;Wywolanie podprogramu WAIT_KEY sys. DSM-51 cjne a,#15,loop ret 10.I jeszcze przyda się podprogram, który drukuje bajt w systemie dziesiętnym. Listing 5 _print_dec:: mov a,dpl mov b,#100 div ab add a,#'0 lcall 0x8102 ;Wywolanie podprogramu WRITE_DATA sys.dsm-51 mov a,b mov b,#10 div ab add a,#'0 lcall 0x8102 mov a,b add a,#'0 lcall 0x8102 ret 3 Złożone programy w języku C 3.1 Operacje arytmetyczne W poniższej tabeli zebrano zaimplementowane do tej pory funkcje w języku Asemblera. Deklaracja funkcji w C (w pliku dsm.h) Odpowiednik w Asemblerze systemu DSM-51 i adres w pamięci DSM-51 Opis void write_data (U08); WRITE_DATA Zapis danych do LCD Grzegorz Cygan Krótki kurs programowania... 6

7 void write_instr (U08); void clrscr (void); void test_on (void); void print_dec (U08); U08 read_dec (void); (0x8102) WRITE_INSTR (0x8106) Zapis instrukcji do LCD Czyszczenie ekranu LCD Włączenie diody TEST Wyświetlenie bajtu w systemie dziesiętnym na LCD Odczyt bajtu w systemie dziesiętnym z klawiatury U08 wait_key (void); WAIT_KEY (0x811c) Czeka na klawisz i zwraca jego kod Za pomocą tych funkcji możemy wreszcie napisać prosty program obliczeniowy. Listing 6 #include "dsm.h" void main (void) U08 a, b; while (1) clrscr (); a = read_dec (); write_data ('+'); b = read_dec (); write_data ('='); print_dec (a+b); wait_key (); Ćwiczenie 2 1. Sprawdź działanie innych operatorów: arytmetycznych: -, *, /, %, oraz logicznych &,. 3.2 Operacje logiczne Iloczyn logiczny (koniunkcja, AND) Suma logiczna (alternatywa, OR) Operacje logiczne wykonywane są na każdym bicie, niezależnie od pozostałych bitów w danym bajcie. Mikrosterowniki mają dodatkowo rozkazy wykonujące operacje logiczne na pojedynczych bitach. Iloczyn logiczny może być zastosowany do wyzerowania wybranych bitów, a suma do ustawienia, np.: Liczba a Maska AND Wynik a Jeżeli potraktujemy pierwszą liczbę jako liczbę przetwarzaną drugą liczbę jako tzw. maskę, to jak widać bity, dla których w masce są zera (cztery najmłodsze) zostają wyzerowane. Asembler Listing 7.GLOBL _READ_DEC.GLOBL _PRINT_DEC.AREA CSEG (CODE) Grzegorz Cygan Krótki kurs programowania... 7

8 POWTARZAJ: LCALL ANL LCALL SJMP _READ_DEC DPL,#0x07 _PRINT_DEC POWTARZAJ Język C Listing 8 extern unsigned char read_dec (void); extern void print_dec (unsigned char); void main (void) unsigned char a; while (1) a = read_dec (); a &= 0x07; print_dec (a); Operacje logiczne mogą niekiedy zastąpić operacje arytmetyczne, powyższy program oblicza resztę z dzielenia przez 8. Ćwiczenie 3 1. Napisz odpowiedni program w języku Asemblera. 2. Sprawdź czy tak samo działa program z normalną operacją arytmetyczną. W programie w języku C trzeba zmienić odpowiednią linię na taką: a %= 8; W języku Asemblera program obliczający resztę z dzielenia przez 8 może wyglądać tak. Listing 9.GLOBL _READ_DEC.GLOBL _PRINT_DEC.AREA CSEG (CODE) POWTARZAJ: LCALL MOV MOV DIV MOV LCALL SJMP _READ_DEC A,DPL B,#8 AB DPL,B _PRINT_DEC POWTARZAJ Ćwiczenie 4 1. Jak widać dzielenie jest dużo bardziej kosztowne. Sprawdź czy kompilator wykorzysta rozkaz dzielenia DIV czy bardziej optymalny rozkaz iloczynu logicznego ANL. 3.3 Programowania standardowego wyjścia Korzystanie z wyświetlacza LCD znacznie ułatwia biblioteka stdio. Poniższy przykład pokazuje użycie najbardziej uniwersalnej funkcji z tej biblioteki printf. Funkcja printf korzysta z funkcji putchar, która jest odpowiedzialna za drukowanie znaków. Wywoływanie poszczególnych funkcji pokazano na poniższym schemacie: Grzegorz Cygan Krótki kurs programowania... 8

9 printf putchar _write_data 0x8102 Każde wywołanie funkcji związane jest z odłożeniem na stos adresu powrotu. Zaimplementuj funkcję putchar w Asemblerze, a ciąg wywołań będzie krótszy. printf _putchar 0x8102 Listing 10 #include <stdio.h> #include "dsm.h" void putchar (char c) write_data (c); void main (void) char imie[] = "Janek"; U08 wiek; char koncowka; wiek = read_dec(); koncowka = (wiek < 5)? 'a' : ' '; clrscr (); printf ("%s ma %d lat%c.", imie, wiek, koncowka); W programie z p. 10 do zmiennej koncowka zostanie przypisana wartość 'a' (kod ASCII litery a) lub spacja. Można zrezygnować ze zmiennej koncowka i całą konstrukcję warunkową umieścić bezpośrednio jako argument funkcji printf. Ćwiczenie 5 1. Zmodyfikuj program kalkulatora z punktu 9, zamieniając wszystkie funkcję korzystające z wyświetlacza funkcją printf. Porównaj zajętość pamięci FLASH (w pliku.mem). 3.4 Specyfikatory formatowania funkcji printf Siła funkcji prontf 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; Ćwiczenie 6 1. W programie z listingu 7 zamień specyfikator %d na %u, a następnie na %x. Zastanów się dlaczego takie a nie inne wartość są wyświetlane. 3.5 Funkcja putchar dla sygnalizatora dźwiękowego Standardowym wyjściem wcale nie musi być wyświetlacz. Często wyjściem jest łącze szeregowe. W ćwiczeniu poznasz zastosowanie brzęczyka jako elementu wysyłającego komunikaty morse'a. Grzegorz Cygan Krótki kurs programowania... 9

10 Ćwiczenie 7 1. Napisz program źródłowy w języku C według listingu 8 i zapisz program w pliku hellomors.c. Druga część programu znajduje się w pliku mors.a51. Listing 11 #include <stdio.h> void main () puts ("CENTRUM EDUKACJI ZAWODOWEJ"); 3.6 Zwłoki czasowe W programach często potrzebne są opóźnienia (zwłoki) czasowe, przykładowo aby uzyskać miganie lampki. Algorytm działania takiego programu jest następujący: 1. Zapal lampkę (diodę), 2. Poczekaj, 3. Zgaś, 4. Poczekaj, 5. Wróć do punktu 1. W pamięci DSM-51 znajdują się programy opóźnień czasowych, ale nie będziemy z nich korzystać, ponieważ docelowo chcemy się uniezależnić od gotowych programów. Do implementacji opóźnień zastosujemy pętle for. Oto przykład prostego programu. Listing 12 #include "dsm.h" void main (void) unsigned int i; while (1) test_on(); //1. Zapal diodę test for (i = 0; i < 0xffff; i++); //2. Poczekaj test_off(); //3. Zgaś for (i = 0; i < 0xffff; i++); //4. Poczekaj //5. Wróć do punktu 1 Ćwiczenie 8 1. Napisz funkcję opóźnienia czasowego o nazwie delay z wykorzystaniem pętli for. Wywołaj podprogram delay w miejscach oznaczonych komentarzem Poczekaj (zamiast pętli for). Spróbuj zmniejszyć dwukrotnie opóźnienie. 2. Zmniejsz dwukrotnie opóźnienie. 3. Zwiększ dwukrotnie opóźnienie. 3.7 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. 1.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, 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 3. Dla porównania podano także rozmiary typów w języku Java, Grzegorz Cygan Krótki kurs programowania... 10

11 w którym są one zdefiniowane. Tabela 3: 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. 1.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 wymieniono poniżej: Tabela 4: Przestrzenie adresowe mikrosterowników standardu MCS-51 Przestrzeń Opis rozmiar sfr rejestry specjalnego przeznaczenia Obszar nieciągły (omówienie wybranych rejestrów w dodatku A) 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 zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrami Ri) maks. 256 B* w jednym banku Grzegorz Cygan Krótki kurs programowania... 11

12 xdata zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrem DPTR) maks. 64 KiB = B * code pamięć programu maks. 64 KiB = B * * - poza mikrosterownikiem, rozmiar zależy od zastosowanych układó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 poszczegó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 9 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 5: 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."; Listing 13 #include <stdio.h> #include "dsm.h" char napis[] = "Ala ma kota, a Ola ma psa."; Grzegorz Cygan Krótki kurs programowania... 12

13 void main (void) clrscr(); puts (napis); 4 Programowanie układów wewnętrznych mikrosterownika Mikrosterowniki zawierają 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. 4.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 14 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 15 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) CSDS = 0x01; CSDB = 0x7f; Grzegorz Cygan Krótki kurs programowania... 13

14 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++); 4.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. Rysunek 2: Okno programu Putty Listing 16 #include <stdio.h> #include <8051.h> void delay (void) unsigned int i; for (i = 0; i < 0xffff; i++); void putchar (char c) while (!TI); TI = 0; Grzegorz Cygan Krótki kurs programowania... 14

15 SBUF = c; void main () unsigned char i; TMOD = 0x20; SCON = 0x52; PCON = 0x80; TH1 = 253; TR1 = 1; for (i = 0; ; i++) delay(); 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 4.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 17 #include <8051.h> void delay (void) unsigned int i; for (i = 0; i < 0xffff; i++); //Program glowny void main (void) TMOD = 0x01; //Konfiguracja ukladow czasowo-licznikowych Grzegorz Cygan Krótki kurs programowania... 15

16 TR0 = 1; ET0 = 1; EA = 1; while (1) P1_7 =!P1_7; delay (); //Uruchomienie ukladu czasowo-licznikowego T0 //Wlaczenie zezwolenia na przerwania od T0 //Wlaczenie zezwolenia ogolnego //Program obslugi przerwania od ukladu czasowo-licznikowego T0 void t0_isr () interrupt 1 using 1 P1_5 =!P1_5; 4.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 3: Złącze izolowane galwanicznie (rysunek z dokumenntacji DSM-51) Grzegorz Cygan Krótki kurs programowania... 16

17 5 Programowanie zewnętrznych układów peryferyjnych Jeden z układów zewnętrznych już programowaliśmy, to jest wyświetlacz LCD. To oczywiste ponieważ trudno było by nauczyć się podstaw programowania bez korzystania z wyświetlacza. W tym rozdziale zajmiemy się układami, które występują w systemie DSM-51 i nie są częścią mikrosterownika. Nie będą omawiane wszystkie układy. Przy okazji poznamy także nowe możliwości funkcje niestandardowe funkcję wyjścia printf_fast_f, która została stworzona specjalnie dla mikrosterowników. 5.1 Niskopoziomowe 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. 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. 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 6: Rejestry wyświetlacza LCD Ćwiczenie 11 Adres Nazwa rejestru Kierunek Operacji 80H LCDWC wpis rozkazów 81H LCDWD wpis danych 82H LCDRC odczyt stanu 83H LCDRD odczyt danych 1. Uruchom program przykładowy. 2. Zmodyfikuj go tak, aby wyświetlić więcej znaków. Listing 18 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 7: Instrukcje sterujące sterownika HD44780 (HITACHI) Nazwa oryginalna Opis kod Clear display Kasuj wyświetlacz Return home Ustaw kursor na początku X Grzegorz Cygan Krótki kurs programowania... 17

18 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 19 #include "dsm_io.h" void main () while (LCDRC & 0x80); LCDWC = 1; while (LCDRC & 0x80); LCDWD = 'D'; while (LCDRC & 0x80); LCDWD = '-'; //Pokaz znak Przetwornik A/C //Czekaj na gotowosc wyswietlacza //Clear display //Pokaz litere 'D' Przetwornik A/C przetwarza napięcie na liczbę. W systemie DSM-51 do wejścia przetwornika dołączony jest multiplekser analogowy, umożliwiający podanie na wejście przetwornika napięcia z jednego z ośmiu wejść. Wejścia multipleksera zlokalizowane są w złączu "ANALOG I/O". Multiplekser programujemy za pomocą portu CSMX, a przetwornik - CSAD. Obydwa porty zadeklarowane są w pliku dsm51.h. Ćwiczenie Wypróbuj programy z listingów 17 i Zmień specyfikator formatowania (%d) w funkcji printf, aby uzyskać wynik w systemie szesnastkowym (tak jak w programie z listingu Zmień sposób prezentacji wyniku tak, aby na wyświetlaczu pojawiała się wartość napięcia wyrażona w woltach. Zakres przetwarzania wynosi od 0V do 5V. Do wyświetlenia wyniku użyj funkcji printf_fast_f ("Napiecie %01.2f V", (float)csad * 5.0 / 255.0); Listing 20 #include <8051.h> #include "dsm.h" #include "dsm_io.h" void delay (void) unsigned int i; for (i = 0; i < 0xffff; i++); void main (void) Grzegorz Cygan Krótki kurs programowania... 18

19 while (1) CSMX = 0; //Wejscie 1 przetwornika a/c CSAD = 1; //Zainicjuj pomiar clrscr (); print_dec (CSAD); Listing 21 #include <8051.h> #include <stdio.h> #include "dsm.h" #include "dsm_io.h" void delay (void) unsigned int i; for (i = 0; i < 0xffff; i++); void main (void) while (1) CSMX = 0; CSAD = 1; delay (); clrscr (); printf ("%03d", CSAD); 5.3 Silnik krokowy Silnik dołączony jest do portu A układu 8255 (CS55A). Program główny konfiguruje ten port jako wyjście poprzez wpisanie liczby 0x80 ( B) do rejestru konfigurującego układu 8255 (CS55D). Listing 22 #include <8051.h> #include "dsm_io.h" typedef unsigned char U08; //Program glowny void main (void) TMOD = 0x01; TR0 = 1; ET0 = 1; EA = 1; CS55D = 0x80; while (1); //Program obslugi przerwania od ukladu czasowo-licznikowego T0 void t0_isr (void) interrupt 1 using 1 code static U08 sekwencja[]=1, 3, 2, 6, 4, 12, 8, 9; Grzegorz Cygan Krótki kurs programowania... 19

20 static U08 kat; TH0 = 248; CS55B &= 0xf0; CS55B = sekwencja[kat & 0x7]; kat++; 5.4 Wyświetlacz siedmiosegmentowy W tym programie putchar zapisuje w buforze, z którego napis do wyświetlenia pobiera funkcja obsługi przerwania. Listing 23 #include <stdio.h> #include <8051.h> #include <ctype.h> #include "dsm_io.h" void main (void) TMOD &= 0xf0; TMOD = 0x02; TR0 = 1; ET0 = 1; EA = 1; puts ("1234"); volatile unsigned char _seg7buf[6]; void timer0_isr (void) interrupt 1 using 1 code static unsigned char kody [] = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f; static unsigned char nrwysw; if (++nrwysw > 5) nrwysw = 0; P1_6 = 1; CSDS = 1 << nrwysw; CSDB = kody[_seg7buf[nrwysw]]; P1_6 = 0; void putchar (char c) if (isdigit(c)) _seg7buf[5] = _seg7buf[4]; _seg7buf[4] = _seg7buf[3]; _seg7buf[3] = _seg7buf[2]; _seg7buf[2] = _seg7buf[1]; _seg7buf[1] = _seg7buf[0]; _seg7buf[0] = c - '0'; Grzegorz Cygan Krótki kurs programowania... 20

Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51, kompilatora SDCC i środowiska MIDE-51

Krótki kurs programowania w języku C mikrosterowników standardu MCS-51 z wykorzystaniem systemu DSM-51, kompilatora SDCC i środowiska MIDE-51 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 1.Spis treści 1. Przygotowanie komputera

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

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

Bardziej szczegółowo

Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1

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ą

Bardziej szczegółowo

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

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,

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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ę

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

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

Bardziej szczegółowo

MIKROPROCESORY architektura i programowanie

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

Bardziej szczegółowo

Ć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 Ć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

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

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

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

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

Bardziej szczegółowo

Szkolenia specjalistyczne

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

Bardziej szczegółowo

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, 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

Bardziej szczegółowo

Wstęp. do języka C na procesor 8051. (kompilator RC51)

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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++ 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

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

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

Bardziej szczegółowo

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/ 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

Bardziej szczegółowo

Kompilator języka C na procesor 8051 RC51 implementacja

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

Bardziej szczegółowo

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

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

Bardziej szczegółowo

Wstęp...9. 1. Architektura... 13

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

Bardziej szczegółowo

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ść 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

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

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

Bardziej szczegółowo

Język ludzki kod maszynowy

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

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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++)

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR

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

Bardziej szczegółowo

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. 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

Bardziej szczegółowo

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

Ć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

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

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

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ć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

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32) Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32) wersja 0.4 (20 kwietnia 2015) Filip A. Sala W niniejszym, bardzo krótkim opracowaniu, postaram się przedstawić

Bardziej szczegółowo

#include void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd)

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ą standardu RS232 np.: z komputerem PC. Rysunek 1. pokazuje format wymiany danych w fizycznej

Bardziej szczegółowo

Kurs Podstawowy S7. Spis treści. Dzień 1

Kurs Podstawowy S7. Spis treści. Dzień 1 Spis treści Dzień 1 I System SIMATIC S7 - wprowadzenie (wersja 1401) I-3 Rodzina sterowników programowalnych SIMATIC S7 firmy SIEMENS I-4 Dostępne moduły i ich funkcje I-5 Jednostki centralne I-6 Podstawowe

Bardziej szczegółowo

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. 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

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Politechnika Warszawska

Politechnika Warszawska Politechnika Warszawska Wydział Elektryczny Laboratorium Podstaw Techniki Mikroprocesorowej Skrypt do ćwiczenia M.43 Obliczanie wartości średniej oraz amplitudy z próbek sygnału język C .Część teoretyczna

Bardziej szczegółowo

Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

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,

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ćwiczenie 3. Konwersja liczb binarnych 1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

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

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Ćwiczenie nr 6. Programowanie mieszane

Ćwiczenie nr 6. Programowanie mieszane Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym Instrukcja do ćwiczenia: Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym Materiał do samodzielnego opracowania: elementy języka C: typy danych i ich deklarowanie,

Bardziej szczegółowo

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON ĆWICZENIE TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON Wiadomości wstępne: Wszystkie sygnały analogowe, które mają być przetwarzane w systemach mikroprocesorowych są próbkowane, kwantowane

Bardziej szczegółowo

#include int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

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?

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

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

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

Bardziej szczegółowo

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

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

Bardziej szczegółowo

KURS C/C++ WYKŁAD 1. Pierwszy program

KURS C/C++ WYKŁAD 1. Pierwszy program KURS C/C++ WYKŁAD 1 Pierwszy program Tworzenie programu odbywa sie w dwóch etapach: 1. opracowanie kodu źródłowego 2. generowanie kodu wynikowego Pierwszy etap polega na zapisaniu algorytmu za pomocą instrukcji

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe System mikroprocesorowy 1. Przedstaw schemat blokowy systemu mikroprocesorowego.

Bardziej szczegółowo

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503) Spis treści Dzień 1 I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503) I-3 Rodzina sterowników programowalnych SIMATIC S7 firmy SIEMENS I-4 Dostępne moduły i ich funkcje I-5 Jednostki centralne I-6

Bardziej szczegółowo

Electronic Infosystems

Electronic Infosystems Department of Optoelectronics and Electronic Systems Faculty of Electronics, Telecommunications and Informatics Gdansk University of Technology Electronic Infosystems Microserver TCP/IP with CS8900A Ethernet

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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,

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programowanie mikrokontrolerów AVR z rodziny ATmega. Programowanie mikrokontrolerów AVR z rodziny ATmega. Materiały pomocnicze Jakub Malewicz jakub.malewicz@pwr.wroc.pl Wszelkie prawa zastrzeżone. Kopiowanie w całości lub w częściach bez zgody i wiedzy autora

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie Ćwiczenie nr l Podstawy programowania mikrokontrolerów rodziny AVR8 opracował dr inż. Wojciech

Bardziej szczegółowo

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są

Bardziej szczegółowo

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1 Instrukcja obsługi aplikacji 1 1./ instalacja aplikacji. Aplikacja służy do zarządzania, konfigurowania i testowania modułów firmy Advance Electronic wyposażonych w RS485 pracujących w trybie half-duplex.

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

interfejs szeregowy wyświetlaczy do systemów PLC

interfejs szeregowy wyświetlaczy do systemów PLC LDN SBCD interfejs szeregowy wyświetlaczy do systemów PLC SEM 08.2003 Str. 1/5 SBCD interfejs szeregowy wyświetlaczy do systemów PLC INSTRUKCJA OBSŁUGI Charakterystyka Interfejs SBCD w wyświetlaczach cyfrowych

Bardziej szczegółowo

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski Programowanie w C/C++ Instrukcje - konstrukcje powtórka LABORKA Piotr Ciskowski zadanie 1. Licz się ze sobą Napisz funkcję bez argumentów i bez wyniku, która za każdym wywołaniem będzie podawała, ile razy

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

MIKROKONTROLERY AVR JĘZYK C WYDAWNICTWO ATNEL PODSTAWY PROGRAMOWANIA. Miros aw Kardaś. Szczecin 2013. Mojej Żonie Kasi

MIKROKONTROLERY AVR JĘZYK C WYDAWNICTWO ATNEL PODSTAWY PROGRAMOWANIA. Miros aw Kardaś. Szczecin 2013. Mojej Żonie Kasi WYDAWNICTWO ATNEL MIKROKONTROLERY AVR JĘZYK C PODSTAWY PROGRAMOWANIA Miros aw Kardaś Szczecin 2013 Mojej Żonie Kasi Książka przeznaczona jest dla elektroników i hobbystów, którzy chcą szybko, opierając

Bardziej szczegółowo

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Standardy reprezentacji wartości całkowitoliczbowych

Bardziej szczegółowo

Akademia ETI Marcin Jurkiewicz

Akademia ETI Marcin Jurkiewicz Akademia ETI Marcin Jurkiewicz Fakt W informatyce nic nie robi się od zera! Zatem my również będziemy korzystali z szablonów. Najczęściej będziemy troszkę zmieniać programy już napisane na slajdach. Pierwszy

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

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

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych Przykłady wykorzystanie funkcji printf i scanf do wyświetlania danych na wyświetlaczu LCD oraz komunikacji sterownika mikroprocesorowego

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Ćwiczenie 1. (sd 2) 0x0000 0x0003 0x000B 0x0013 0x001B 0x0023

Ć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)

Bardziej szczegółowo

Przerwania w architekturze mikrokontrolera X51

Przerwania w architekturze mikrokontrolera X51 Przerwania w architekturze mikrokontrolera X51 (przykład przerwanie zegarowe) Ryszard J. Barczyński, 2009 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku

Bardziej szczegółowo

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA EGMONT INSTRUMENTS PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA EGMONT INSTRUMENTS tel. (0-22) 823-30-17, 668-69-75 02-304 Warszawa, Aleje Jerozolimskie 141/90 fax (0-22) 659-26-11

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Zgrywus dla Windows v 1.12

Zgrywus dla Windows v 1.12 Zgrywus dla Windows v 1.12 Spis treści. 1. Instalacja programu. 2 2. Pierwsze uruchomienie programu.. 3 2.1. Opcje programu 5 2.2. Historia zdarzeń 7 2.3. Opisy nadajników. 8 2.4. Ustawienia zaawansowane...

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro 1. Cel ćwiczenia Celem ćwiczenia jest zaprojektowanie sterowania układem pozycjonowania z wykorzystaniem sterownika VersaMax Micro oraz silnika krokowego. Do algorytmu pozycjonowania wykorzystać licznik

Bardziej szczegółowo

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI SPIS TREŚCI 04 Opis opcji terminala 05 SKANOWANIE 06 Skanowanie kod 07 Skanowanie kod ilość 08 Skanowanie kod ilość cena

Bardziej szczegółowo

1. Wprowadzanie danych z klawiatury funkcja scanf

1. Wprowadzanie danych z klawiatury funkcja scanf 1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),

Bardziej szczegółowo

Powtórka algorytmów. Wprowadzenie do języka Java.

Powtórka algorytmów. Wprowadzenie do języka Java. Powtórka algorytmów. Wprowadzenie do języka Java. Przypomnienie schematów blokowych BEGIN Readln(a); Readln(b); Suma := 0; IF Suma < 10 THEN Writeln( Suma wynosi:, Suma); ELSE Writeln( Suma większa niż

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Programowanie niskopoziomowe

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

Bardziej szczegółowo

1. Podstawowe wiadomości...9. 2. Możliwości sprzętowe... 17. 3. Połączenia elektryczne... 25. 4. Elementy funkcjonalne programów...

1. Podstawowe wiadomości...9. 2. Możliwości sprzętowe... 17. 3. Połączenia elektryczne... 25. 4. Elementy funkcjonalne programów... Spis treści 3 1. Podstawowe wiadomości...9 1.1. Sterowniki podstawowe wiadomości...10 1.2. Do czego służy LOGO!?...12 1.3. Czym wyróżnia się LOGO!?...12 1.4. Pierwszy program w 5 minut...13 Oświetlenie

Bardziej szczegółowo

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia Ćwiczenie VI LABORATORIUM MECHATRONIKI IEPiM Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy Przebieg ćwiczenia 1. Rozpoznać elementy modelu układu

Bardziej szczegółowo

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; }; Typy pochodne. Referencje Referencja jest inną nazwą zmiennej. KURS C/C++ WYKŁAD 7 Referencje tworzymy przy pomocy unarnego operatora &: int a; int &refer = a; // referencja musi być inicjowana Powyższe

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo