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=refleks MODULES=dsm.rel DSM-51 $(MAIN).ihx: $(MAIN).rel $(MODULES) sdcc $^ %.rel: %.c sdcc -c $< %.rel: %.a51 sdas8051 -l -o $< run: $(MAIN).ihx 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 dsm51run $< clean: rm -f *.asm *.lnk *.lst *.rel *.mem *.map *.sym *.rst *.ihx *.lk 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); clrscr (); write_data ('S'); write_instr (0xc4); write_data ('o'); write_instr (0x88); write_data ('s'); 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 prog. 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 a w celu posprzątania make clean Grzegorz Cygan Krótki kurs programowania... 4

5 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 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- Grzegorz Cygan Krótki kurs programowania... 5

6 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) void write_data (U08); Odpowiednik w Asemblerze systemu DSM-51 i adres w pamięci DSM-51 WRITE_DATA (0x8102) Opis Zapis danych do LCD void write_instr (U08); WRITE_INSTR Zapis instrukcji do LCD Grzegorz Cygan Krótki kurs programowania... 6

7 void clrscr (void); void test_on (void); void print_dec (U08); U08 read_dec (void); (0x8106) 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" U08 a, b; while (1) clrscr (); write_data ('#'); 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 #include "dsm.h" unsigned char a; while (1) clrscr (); write_data ('#'); a = read_dec (); a &= 0x07; write_data ('-'); print_dec (a); wait_key (); 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 Grzegorz Cygan Krótki kurs programowania... 8

9 pokazano na poniższym schemacie: 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); char imie[] = "Janek"; U08 wiek; char koncowka; while (1) clrscr(); write_data('#'); wiek = read_dec(); koncowka = (wiek < 5)? 'a' : ' '; clrscr (); printf ("%s ma %d lat%c.", imie, wiek, koncowka); wait_key(); 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. Grzegorz Cygan Krótki kurs programowania... 9

10 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. Ć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 "dsm.h" #include <stdio.h> //Wymagany modul z definicja funkcji putchar, np mors.a51 void main () clrscr(); 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" 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. Grzegorz Cygan Krótki kurs programowania... 10

11 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, 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 Grzegorz Cygan Krótki kurs programowania... 11

12 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 xdata zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrami Ri) zewnętrzna pamięć danych (dostęp za pomocą indeksowania rejestrem DPTR) 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ł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."; Grzegorz Cygan Krótki kurs programowania... 12

13 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."; 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. Grzegorz Cygan Krótki kurs programowania... 13

14 Listing 15 /* a- f b g- e c dwys: */ 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; //wlacz wyswietlacze while (1) CSDS = 1<<0;//2^0 - wyswietlacz 0 CSDB = 0x7f;//cyfra 8 for(i = 0; i < 200; i++); CSDS = 1<<1;//2^1 - wyswietlacz 1 CSDB = 0x06;//cyfra 1 for(i = 0; i < 200; i++); CSDS = 1<<2;//2^2 - wyswietlacz 2 CSDB = 0x07;//cyfra 7 for(i = 0; i < 200; i++); CSDS = 1<<5;//2^5 - wyswietlacz 5 CSDB = 0x4f;//cyfra 9 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. Grzegorz Cygan Krótki kurs programowania... 14

15 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; 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 Grzegorz Cygan Krótki kurs programowania... 15

16 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,0592 MHz =71,1ms ( 2 ) Listing 17 #include <8051.h> void delay (void) unsigned int i; for (i = 0; i < 0xffff; i++); //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; while (1) P1_7 =!P1_7; delay (); //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 tego rozdziału przedstawiam program refleks.c, w którym wykorzystano wszystkie układy wewnętrzne mikrosterownika 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". Niestety, aby uruchomić program należy dołączyć wymagane elementy zewnętrzne, w czym pomoże rysunek 3. Ćwiczenie Zmień program, aby jako pedał hamulca służył przycisk Enter, a światłem STOP niech będzie dioda TEST. Grzegorz Cygan Krótki kurs programowania... 16

17 Rysunek 3: Złącze izolowane galwanicznie (rysunek z dokumenntacji DSM-51) 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 12 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 i 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. Grzegorz Cygan Krótki kurs programowania... 17

18 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. 2. Zamiast pętli opóźniającej dokonaj odczytu rejestru stanu LCDRC. Najstarszy bit w tym rejestrze informuje, że wyświetlacz jest zajęty. Wszystkie rozkazy wyświetlacza zawarte są w tabeli 2 w rozdziale 2. W programie skorzystamy z pliku dsm_io.h, w którym zadeklarowane są rejestry ukłądów zewnętrznych systemu DSM-51. 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 dwa kolejne programy. 2. 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++); while (1) CSMX = 0; //Wejscie 1 przetwornika a/c CSAD = 1; //Zainicjuj pomiar clrscr (); print_dec (CSAD); Grzegorz Cygan Krótki kurs programowania... 18

19 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++); 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 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; static U08 kat; TH0 = 248; CS55B &= 0xf0; CS55B = sekwencja[kat & 0x7]; kat++; Grzegorz Cygan Krótki kurs programowania... 19

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

21 6 Wybrane rejestry mikrosterownika Rejestr konfiguracyjny układów czasowo-licznikowych TMOD GATE C/T M1 M0 GATE C/T M1 M0 T1 T0 C/T = 1 licznik, C/T = 0 czasomierz GATE = 1 bramkowanie Tabela 7: Tryby pracy układów czasowo-licznikowych M1 M0 Opis trybu pracy 0 0 Licznik lub czasomierz 13 bitowy (8 bitów rejestru THi 5 bitów TLi) 0 1 Licznik lub czasomierz 16 bitowy (8 bitów rejestru THi 8 bitów TLi) 1 0 Licznik lub czasomierz 8 bitowy z przeładowaniem (8 bitów rejestru TLi) 1 1 (Jego omówienie wykracza poza zakres ćwiczenia) 6.2 TCON - drugi rejestr układów czasowo-licznikowych TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 6.3 Rejestr konfiguracyjny układu transmisji szeregowej SCON SM0 SM1 SM2 REN TB8 RB8 TI RI Tabela 8: Tryby pracy układów czasowo-licznikowych SM0 SM1 Opis trybu pracy 0 0 Tryb 0 synchroniczny 0 1 Tryb 1 asynchroniczny, 8 bitów danych, szybkość regulowana układem T1 1 0 Tryb 2 asynchroniczny, 9 bitów danych 1 1 Tryb 3 asynchroniczny, 9 bitów danych, szybkość regulowana układem T1 6.4 Rejestr sterowania poborem mocy PCON SMOD GF1 GF0 PD IDL Najstarszy bit SMOD steruje szybkością transmisji szeregowej 6.5 Rejestr sterownika przerwań IE EA - - ES ET1 EX1 ET0 EX0 Grzegorz Cygan Krótki kurs programowania... 21

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

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

Bardziej szczegółowo

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, obsługa wyświetlacza LCD.

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

Bardziej szczegółowo

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

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ą

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

Ć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

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

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

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

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

Architektura mikrokontrolera MCS51

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

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

Architektura mikrokontrolera MCS51

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

Bardziej szczegółowo

Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.

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

Bardziej szczegółowo

Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.

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

Bardziej szczegółowo

MIKROPROCESORY architektura i programowanie

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

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

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

Język C zajęcia nr 11. Funkcje

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

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

Programowanie w języku Python. Grażyna Koba

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

Bardziej szczegółowo

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Bardziej szczegółowo

TECHNIKA MIKROPROCESOROWA

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

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

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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,

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

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

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

Bardziej szczegółowo

Programowanie Mikrokontrolerów

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:

Bardziej szczegółowo

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

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ć

Bardziej szczegółowo

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

Bardziej szczegółowo

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość

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

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

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

lekcja 8a Gry komputerowe MasterMind

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

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

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.

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

Bardziej szczegółowo

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

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

Bardziej szczegółowo

Hardware mikrokontrolera X51

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)

Bardziej szczegółowo

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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

Bardziej szczegółowo

Warsztaty dla nauczycieli

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

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

2. Architektura mikrokontrolerów PIC16F8x... 13

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

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

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

Instytut Teleinformatyki

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.

Bardziej szczegółowo

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

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

Bardziej szczegółowo

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

Bardziej szczegółowo

imei Instytut Metrologii, Elektroniki i Informatyki

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

Bardziej szczegółowo

Utworzenie pliku. Dowiesz się:

Utworzenie pliku. Dowiesz się: Dowiesz się: 1. Jak rozpocząć pisanie programu 2. Jak wygląda szkielet programu, co to są biblioteki i funkcja main() 3. Jak wyświetlić ciąg znaków w programie 4. Jak uruchamiać (kompilować) napisany program

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

Zespół Szkół Technicznych. Badanie wyświetlaczy LCD

Zespół Szkół Technicznych. Badanie wyświetlaczy LCD Zespół Szkół Technicznych Badanie wyświetlaczy LCD WYŚWIETLACZE LCD CZĘSC TEORETYCZNA ZALETY: ) mały pobór mocy, 2) ekonomiczność pod względem zużycia energii (pobór prądu przy 5V mniejszy niż 2mA), 3)

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

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

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

Zmienne, stałe i operatory

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

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

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

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

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

Bardziej szczegółowo

Języki i metodyka programowania. Wprowadzenie do języka C

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

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Bardziej szczegółowo

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK.RD.01 Rok

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

Wprowadzenie do języka Java

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.

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

Programowanie w języku C++ Grażyna Koba

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

Bardziej szczegółowo

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33 Spis treści 3 1. Wprowadzenie...11 1.1. Wstęp...12 1.2. Mikrokontrolery rodziny ARM...13 1.3. Architektura rdzenia ARM Cortex-M3...15 1.3.1. Najważniejsze cechy architektury Cortex-M3... 15 1.3.2. Rejestry

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

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?

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

Mikrokontroler ATmega32. Język symboliczny Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami

Bardziej szczegółowo

architektura komputerów w 1 1

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

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

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

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń. Nazwa implementacji: Termometr cyfrowy - pomiar temperatury z wizualizacją pomiaru na wyświetlaczu LCD Autor: Krzysztof Bytow Opis implementacji: Wizualizacja działania elementu zestawu modułu-interfejsu

Bardziej szczegółowo

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

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

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

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania

Bardziej szczegółowo

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

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

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

PMiK Programowanie Mikrokontrolera 8051

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo